diff --git a/types/clearbladejs-client/clearbladejs-client-tests.ts b/types/clearbladejs-client/clearbladejs-client-tests.ts index bce39bee2a..03584b629f 100644 --- a/types/clearbladejs-client/clearbladejs-client-tests.ts +++ b/types/clearbladejs-client/clearbladejs-client-tests.ts @@ -3,7 +3,7 @@ // Definitions by: Jim Bouquet // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -let genericCallback = (error: boolean, response: Resp) => {}; +let genericCallback = (error: boolean, response: CbClient.Resp) => {}; /////////////////////////////////////// // ClearBlade object API invocations @@ -65,12 +65,12 @@ coll1.count(query1.query, genericCallback); /////////////////////////////////////// query1.addSortToQuery( query1, - QuerySortDirections.QUERY_SORT_ASCENDING, + CbClient.QuerySortDirections.QUERY_SORT_ASCENDING, "column1" ); query1.addFilterToQuery( query1, - QueryConditions.QUERY_GREATERTHAN, + CbClient.QueryConditions.QUERY_GREATERTHAN, "key", "value" ); diff --git a/types/clearbladejs-client/global.d.ts b/types/clearbladejs-client/global.d.ts index d6e2e88a70..b6f2dbcf59 100644 --- a/types/clearbladejs-client/global.d.ts +++ b/types/clearbladejs-client/global.d.ts @@ -1,5 +1,5 @@ declare global { - var ClearBlade: ClearBladeGlobal; + var ClearBlade: CbClient.ClearBladeGlobal; } export {}; diff --git a/types/clearbladejs-client/index.d.ts b/types/clearbladejs-client/index.d.ts index 4cb8c4744b..fa27a5d076 100644 --- a/types/clearbladejs-client/index.d.ts +++ b/types/clearbladejs-client/index.d.ts @@ -1,436 +1,456 @@ -// Type definitions for clearbladejs-client 1.0 +// Type definitions for clearbladejs-client 1.1 // Project: https://github.com/ClearBlade/JavaScript-API // Definitions by: Jim Bouquet // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 /// +declare namespace CbClient { + interface Resp { + error(msg: any): never; // todo: figure out if we can have the compiler throw an error if someone adds code after this + success(msg: any): never; + } -interface Resp { - error(msg: any): never; // todo: figure out if we can have the compiler throw an error if someone adds code after this - success(msg: any): never; + enum MessagingQOS { + MESSAGING_QOS_AT_MOST_ONCE = 0, + MESSAGING_QOS_AT_LEAST_ONCE = 1, + MESSAGING_QOS_EXACTLY_ONCE = 2 + } + + interface InitOptions { + systemKey: string; + systemSecret: string; + masterSecret?: string; + logging?: boolean; + callback?: CbCallback; + email?: string; + password?: string; + registerUser?: boolean; + useUser?: APIUser; + URI?: string; + messagingURI?: string; + messagingPort?: number; + defaultQoS?: MessagingQOS; + callTimeout?: number; + messagingAuthPort?: number; + } + + interface RequestOptions { + method?: string; + endpoint?: string; + body?: string; + qs?: string; + URI?: string; + useUser?: boolean; + authToken?: string; + timeout?: number; + user?: APIUser; + } + + interface APIUser { + email: string; + authToken: string; + } + + type CbCallback = (error: boolean, response: Resp) => void; + + interface ClearBladeGlobal extends ClearBladeInt { + MESSAGING_QOS_AT_MOST_ONCE: MessagingQOS.MESSAGING_QOS_AT_MOST_ONCE; + MESSAGING_QOS_AT_LEAST_ONCE: MessagingQOS.MESSAGING_QOS_AT_LEAST_ONCE; + MESSAGING_QOS_EXACTLY_ONCE: MessagingQOS.MESSAGING_QOS_EXACTLY_ONCE; + + request(options: RequestOptions, callback: CbCallback): void; + } + + interface ClearBladeInt { + systemKey: string; + systemSecret: string; + masterSecret: string; + URI: string; + messagingURI: string; + messagingPort: number; + logging: boolean; + defaultQoS: MessagingQOS; + + init(options: InitOptions): void; + setUser(email: string, password: string): void; + registerUser( + email: string, + password: string, + callback: CbCallback + ): void; + isCurrentUserAuthenticated(callback: CbCallback): void; + logoutUser(callback: CbCallback): void; + loginAnon(callback: CbCallback): void; + loginUser(email: string, password: string, callback: CbCallback): void; + loginUserMqtt( + email: string, + password: string, + callback: CbCallback + ): void; + registerMasterCallback(callback: CbCallback): void; + Collection( + options: + | string + | CollectionOptionsWithName + | CollectionOptionsWithID + ): Collection; + Query( + options: string | QueryOptionsWithName | QueryOptionsWithID + ): QueryObj; + Item(data: object, collectionID: string | ItemOptions): Item; + Code(): Code; + User(): AppUser; + Messaging(options: MessagingOptions, callback: CbCallback): Messaging; + MessagingStats(): MessagingStats; + sendPush( + users: string[], + payload: object, + appId: string, + callback: CbCallback + ): void; + getEdges(query: Query, callback: CbCallback): void; + Edge(): Edge; + Metrics(): Metrics; + Device(): Device; + Analytics(): Analytics; + Portal(name: string): Portal; + Triggers(): Triggers; + + getAllCollections(callback: CbCallback): void; + } + interface CollectionOptionsWithName { + collectionName: string; + } + + interface CollectionOptionsWithID { + collectionID: string; + } + + interface Collection { + name: string; + endpoint: string; + isUsingCollectionName: boolean; + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + fetch(query: Query, callback: CbCallback): void; + create(newItem: Item, callback: CbCallback): void; + update(query: Query, changes: object, callback: CbCallback): void; + remove(query: Query, callback: CbCallback): void; + columns(callback: CbCallback): void; + count(query: Query, callback: CbCallback): void; + } + + enum QuerySortDirections { + QUERY_SORT_ASCENDING = "ASC", + QUERY_SORT_DESCENDING = "DESC" + } + + enum QueryConditions { + QUERY_EQUAL = "EQ", + QUERY_NOTEQUAL = "NEQ", + QUERY_GREATERTHAN = "GT", + QUERY_GREATERTHAN_EQUAL = "GTE", + QUERY_LESSTHAN = "LT", + QUERY_LESSTHAN_EQUAL = "LTE", + QUERY_MATCHES = "RE" + } + + type QueryValue = string | number | boolean; + + interface QueryOptions { + offset?: number; + limit?: number; + } + + interface QueryOptionsWithName + extends CollectionOptionsWithName, + QueryOptions {} + interface QueryOptionsWithID + extends CollectionOptionsWithID, + QueryOptions {} + + interface Query { + SELECTCOLUMNS?: string[]; + SORT?: QuerySortDirections; + FILTERS?: QueryFilter[]; + PAGESIZE?: number; + PAGENUM?: number; + } + + interface QueryFilter { + [QueryConditions: string]: QueryFilterValue; + } + + interface QueryFilterValue { + [name: string]: QueryValue; + } + + interface QueryObj { + endpoint: string; + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + query: Query; + OR: Query[]; + offset: number; + limit: number; + + addSortToQuery( + query: QueryObj, + direction: QuerySortDirections, + column: string + ): void; + addFilterToQuery( + query: QueryObj, + condition: QueryConditions, + key: string, + value: QueryValue + ): void; + ascending(field: string): void; + descending(field: string): void; + equalTo(field: string, value: QueryValue): void; + greaterThan(field: string, value: QueryValue): void; + greaterThanEqualTo(field: string, value: QueryValue): void; + lessThan(field: string, value: QueryValue): void; + lessThanEqualTo(field: string, value: QueryValue): void; + notEqualTo(field: string, value: QueryValue): void; + matches(field: string, pattern: RegExp): void; + or(query: QueryObj): void; + setPage(pageSize: number, pageNum: number): void; + fetch(callback: CbCallback): void; + update(changes: object, callback: CbCallback): void; + columns(columnsArray: string[]): void; + remove(callback: CbCallback): void; + } + + interface ItemOptions extends CollectionOptionsWithID {} + + interface Item { + data: object; + + save(callback: CbCallback): void; + refresh(callback: CbCallback): void; + destroy(callback: CbCallback): void; + } + + interface Code { + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + callTimeout: number; + + create(name: string, body: string, callback: CbCallback): void; + update(name: string, body: string, callback: CbCallback): void; + delete(name: string, callback: CbCallback): void; + execute(name: string, params: object, callback: CbCallback): void; + getCompletedServices(callback: CbCallback): void; + getFailedServices(callback: CbCallback): void; + getAllServices(callback: CbCallback): void; + } + + interface AppUser { + user: APIUser; + URI: string; + endpoint: string; + systemKey: string; + systemSecret: string; + callTimeout: number; + + getUser(callback: CbCallback): void; + setUser(data: object, callback: CbCallback): void; + allUsers(query: Query, callback: CbCallback): void; + setPassword( + old_password: string, + new_password: string, + callback: CbCallback + ): void; + count(query: Query, callback: CbCallback): void; + } + + interface Messaging { + user: APIUser; + URI: string; + endpoint: string; + systemKey: string; + systemSecret: string; + callTimeout: number; + client: Paho.MQTT.Client; + + getMessageHistoryWithTimeFrame( + topic: string, + count: number, + last: number, + start: number, + stop: number, + callback: CbCallback + ): void; + getMessageHistory( + topic: string, + last: number, + count: number, + callback: CbCallback + ): void; + getAndDeleteMessageHistory( + topic: string, + count: number, + last: number, + start: number, + stop: number, + callback: CbCallback + ): void; + currentTopics(callback: CbCallback): void; + publish(topic: string, payload: object): void; + publishREST(topic: string, payload: object, callback: CbCallback): void; + subscribe( + topic: string, + options: MessagingSubscribeOptions, + messageCallback: MessageCallback + ): void; + unsubscribe(topic: string, options: MessagingSubscribeOptions): void; + disconnect(): void; + } + + interface CommonMessagingProperties { + cleanSession?: boolean; + useSSL?: boolean; + hosts?: string; + ports?: string; + onSuccess?: Function; + onFailure?: Function; + } + + interface MessagingOptions extends CommonMessagingProperties { + qos?: MessagingQOS; + } + + interface MessagingConfiguration extends CommonMessagingProperties { + userName: string; + password: string; + } + + type MessageCallback = (message: string) => void; + + interface MessagingSubscribeOptions { + qos?: MessagingQOS; + invocationContext?: object; + onSuccess?: Function; + onFailure?: Function; + timeout?: number; + } + + interface MessagingStats { + user: APIUser; + URI: string; + endpoint: string; + systemKey: string; + + getAveragePayloadSize( + topic: string, + start: number, + stop: number, + callback: CbCallback + ): void; + getOpenConnections(callback: CbCallback): void; + getCurrentSubscribers(topic: string, callback: CbCallback): void; + } + + interface Edge { + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + updateEdgeByName( + name: string, + object: object, + callback: CbCallback + ): void; + deleteEdgeByName(name: string, callback: CbCallback): void; + create(newEdge: object, name: string, callback: CbCallback): void; + columns(callback: CbCallback): void; + count(query: Query, callback: CbCallback): void; + } + + interface Metrics { + user: APIUser; + URI: string; + systemKey: string; + + setQuery(query: Query): void; + getStatistics(callback: CbCallback): void; + getStatisticsHistory(callback: CbCallback): void; + getDBConnections(callback: CbCallback): void; + getLogs(callback: CbCallback): void; + } + + interface Device { + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + getDeviceByName(name: string, callback: CbCallback): void; + updateDeviceByName( + name: string, + object: object, + trigger: boolean, + callback: CbCallback + ): void; + deleteDeviceByName(name: string, callback: CbCallback): void; + fetch(query: Query, callback: CbCallback): void; + update( + query: Query, + object: object, + trigger: boolean, + callback: CbCallback + ): void; + delete(query: Query, callback: CbCallback): void; + create(newDevice: object, callback: CbCallback): void; + columns(callback: CbCallback): void; + count(query: Query, callback: CbCallback): void; + } + + interface Analytics { + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + getStorage(filter: QueryFilter, callback: CbCallback): void; + getCount(filter: QueryFilter, callback: CbCallback): void; + getEventList(filter: QueryFilter, callback: CbCallback): void; + getEventTotals(filter: QueryFilter, callback: CbCallback): void; + getUserEvents(filter: QueryFilter, callback: CbCallback): void; + } + + interface Portal { + name: string; + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + fetch(callback: CbCallback): void; + update(data: object, callback: CbCallback): void; + } + + interface Triggers { + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + fetchDefinitions(callback: CbCallback): void; + create(name: string, data: object, callback: CbCallback): void; + update(name: string, data: object, callback: CbCallback): void; + delete(name: string, callback: CbCallback): void; + } + + let ClearBlade: ClearBladeGlobal; } - -declare enum MessagingQOS { - MESSAGING_QOS_AT_MOST_ONCE = 0, - MESSAGING_QOS_AT_LEAST_ONCE = 1, - MESSAGING_QOS_EXACTLY_ONCE = 2 -} - -interface InitOptions { - systemKey: string; - systemSecret: string; - masterSecret?: string; - logging?: boolean; - callback?: CbCallback; - email?: string; - password?: string; - registerUser?: boolean; - useUser?: APIUser; - URI?: string; - messagingURI?: string; - messagingPort?: number; - defaultQoS?: MessagingQOS; - callTimeout?: number; - messagingAuthPort?: number; -} - -interface RequestOptions { - method?: string; - endpoint?: string; - body?: string; - qs?: string; - URI?: string; - useUser?: boolean; - authToken?: string; - timeout?: number; - user?: APIUser; -} - -interface APIUser { - email: string; - authToken: string; -} - -type CbCallback = (error: boolean, response: Resp) => void; - -interface ClearBladeGlobal extends ClearBladeInt { - MESSAGING_QOS_AT_MOST_ONCE: MessagingQOS.MESSAGING_QOS_AT_MOST_ONCE; - MESSAGING_QOS_AT_LEAST_ONCE: MessagingQOS.MESSAGING_QOS_AT_LEAST_ONCE; - MESSAGING_QOS_EXACTLY_ONCE: MessagingQOS.MESSAGING_QOS_EXACTLY_ONCE; - - request(options: RequestOptions, callback: CbCallback): void; -} - -interface ClearBladeInt { - systemKey: string; - systemSecret: string; - masterSecret: string; - URI: string; - messagingURI: string; - messagingPort: number; - logging: boolean; - defaultQoS: MessagingQOS; - - init(options: InitOptions): void; - setUser(email: string, password: string): void; - registerUser(email: string, password: string, callback: CbCallback): void; - isCurrentUserAuthenticated(callback: CbCallback): void; - logoutUser(callback: CbCallback): void; - loginAnon(callback: CbCallback): void; - loginUser(email: string, password: string, callback: CbCallback): void; - loginUserMqtt(email: string, password: string, callback: CbCallback): void; - registerMasterCallback(callback: CbCallback): void; - Collection(options: string | CollectionOptionsWithName | CollectionOptionsWithID): Collection; - Query( - options: string | QueryOptionsWithName | QueryOptionsWithID - ): QueryObj; - Item(data: object, collectionID: string | ItemOptions): Item; - Code(): Code; - User(): AppUser; - Messaging(options: MessagingOptions, callback: CbCallback): Messaging; - MessagingStats(): MessagingStats; - sendPush( - users: string[], - payload: object, - appId: string, - callback: CbCallback - ): void; - getEdges(query: Query, callback: CbCallback): void; - Edge(): Edge; - Metrics(): Metrics; - Device(): Device; - Analytics(): Analytics; - Portal(name: string): Portal; - Triggers(): Triggers; - - getAllCollections(callback: CbCallback): void; -} -interface CollectionOptionsWithName { - collectionName: string; -} - -interface CollectionOptionsWithID { - collectionID: string; -} - -interface Collection { - name: string; - endpoint: string; - isUsingCollectionName: boolean; - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - fetch(query: Query, callback: CbCallback): void; - create(newItem: Item, callback: CbCallback): void; - update(query: Query, changes: object, callback: CbCallback): void; - remove(query: Query, callback: CbCallback): void; - columns(callback: CbCallback): void; - count(query: Query, callback: CbCallback): void; -} - -declare enum QuerySortDirections { - QUERY_SORT_ASCENDING = "ASC", - QUERY_SORT_DESCENDING = "DESC" -} - -declare enum QueryConditions { - QUERY_EQUAL = "EQ", - QUERY_NOTEQUAL = "NEQ", - QUERY_GREATERTHAN = "GT", - QUERY_GREATERTHAN_EQUAL = "GTE", - QUERY_LESSTHAN = "LT", - QUERY_LESSTHAN_EQUAL = "LTE", - QUERY_MATCHES = "RE" -} - -type QueryValue = string | number | boolean; - -interface QueryOptions { - offset?: number; - limit?: number; -} - -interface QueryOptionsWithName - extends CollectionOptionsWithName, - QueryOptions {} -interface QueryOptionsWithID extends CollectionOptionsWithID, QueryOptions {} - -interface Query { - SELECTCOLUMNS?: string[]; - SORT?: QuerySortDirections; - FILTERS?: QueryFilter[]; - PAGESIZE?: number; - PAGENUM?: number; -} - -interface QueryFilter { - [QueryConditions: string]: QueryFilterValue; -} - -interface QueryFilterValue { - [name: string]: QueryValue; -} - -interface QueryObj { - endpoint: string; - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - query: Query; - OR: Query[]; - offset: number; - limit: number; - - addSortToQuery( - query: QueryObj, - direction: QuerySortDirections, - column: string - ): void; - addFilterToQuery( - query: QueryObj, - condition: QueryConditions, - key: string, - value: QueryValue - ): void; - ascending(field: string): void; - descending(field: string): void; - equalTo(field: string, value: QueryValue): void; - greaterThan(field: string, value: QueryValue): void; - greaterThanEqualTo(field: string, value: QueryValue): void; - lessThan(field: string, value: QueryValue): void; - lessThanEqualTo(field: string, value: QueryValue): void; - notEqualTo(field: string, value: QueryValue): void; - matches(field: string, pattern: RegExp): void; - or(query: QueryObj): void; - setPage(pageSize: number, pageNum: number): void; - fetch(callback: CbCallback): void; - update(changes: object, callback: CbCallback): void; - columns(columnsArray: string[]): void; - remove(callback: CbCallback): void; -} - -interface ItemOptions extends CollectionOptionsWithID {} - -interface Item { - data: object; - - save(callback: CbCallback): void; - refresh(callback: CbCallback): void; - destroy(callback: CbCallback): void; -} - -interface Code { - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - callTimeout: number; - - create(name: string, body: string, callback: CbCallback): void; - update(name: string, body: string, callback: CbCallback): void; - delete(name: string, callback: CbCallback): void; - execute(name: string, params: object, callback: CbCallback): void; - getCompletedServices(callback: CbCallback): void; - getFailedServices(callback: CbCallback): void; - getAllServices(callback: CbCallback): void; -} - -interface AppUser { - user: APIUser; - URI: string; - endpoint: string; - systemKey: string; - systemSecret: string; - callTimeout: number; - - getUser(callback: CbCallback): void; - setUser(data: object, callback: CbCallback): void; - allUsers(query: Query, callback: CbCallback): void; - setPassword( - old_password: string, - new_password: string, - callback: CbCallback - ): void; - count(query: Query, callback: CbCallback): void; -} - -interface Messaging { - user: APIUser; - URI: string; - endpoint: string; - systemKey: string; - systemSecret: string; - callTimeout: number; - client: Paho.MQTT.Client; - - getMessageHistoryWithTimeFrame( - topic: string, - count: number, - last: number, - start: number, - stop: number, - callback: CbCallback - ): void; - getMessageHistory( - topic: string, - last: number, - count: number, - callback: CbCallback - ): void; - getAndDeleteMessageHistory( - topic: string, - count: number, - last: number, - start: number, - stop: number, - callback: CbCallback - ): void; - currentTopics(callback: CbCallback): void; - publish(topic: string, payload: object): void; - publishREST(topic: string, payload: object, callback: CbCallback): void; - subscribe( - topic: string, - options: MessagingSubscribeOptions, - messageCallback: MessageCallback - ): void; - unsubscribe(topic: string, options: MessagingSubscribeOptions): void; - disconnect(): void; -} - -interface CommonMessagingProperties { - cleanSession?: boolean; - useSSL?: boolean; - hosts?: string; - ports?: string; - onSuccess?: Function; - onFailure?: Function; -} - -interface MessagingOptions extends CommonMessagingProperties { - qos?: MessagingQOS; -} - -interface MessagingConfiguration extends CommonMessagingProperties { - userName: string; - password: string; -} - -type MessageCallback = (message: string) => void; - -interface MessagingSubscribeOptions { - qos?: MessagingQOS; - invocationContext?: object; - onSuccess?: Function; - onFailure?: Function; - timeout?: number; -} - -interface MessagingStats { - user: APIUser; - URI: string; - endpoint: string; - systemKey: string; - - getAveragePayloadSize( - topic: string, - start: number, - stop: number, - callback: CbCallback - ): void; - getOpenConnections(callback: CbCallback): void; - getCurrentSubscribers(topic: string, callback: CbCallback): void; -} - -interface Edge { - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - updateEdgeByName(name: string, object: object, callback: CbCallback): void; - deleteEdgeByName(name: string, callback: CbCallback): void; - create(newEdge: object, name: string, callback: CbCallback): void; - columns(callback: CbCallback): void; - count(query: Query, callback: CbCallback): void; -} - -interface Metrics { - user: APIUser; - URI: string; - systemKey: string; - - setQuery(query: Query): void; - getStatistics(callback: CbCallback): void; - getStatisticsHistory(callback: CbCallback): void; - getDBConnections(callback: CbCallback): void; - getLogs(callback: CbCallback): void; -} - -interface Device { - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - getDeviceByName(name: string, callback: CbCallback): void; - updateDeviceByName( - name: string, - object: object, - trigger: boolean, - callback: CbCallback - ): void; - deleteDeviceByName(name: string, callback: CbCallback): void; - fetch(query: Query, callback: CbCallback): void; - update( - query: Query, - object: object, - trigger: boolean, - callback: CbCallback - ): void; - delete(query: Query, callback: CbCallback): void; - create(newDevice: object, callback: CbCallback): void; - columns(callback: CbCallback): void; - count(query: Query, callback: CbCallback): void; -} - -interface Analytics { - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - getStorage(filter: QueryFilter, callback: CbCallback): void; - getCount(filter: QueryFilter, callback: CbCallback): void; - getEventList(filter: QueryFilter, callback: CbCallback): void; - getEventTotals(filter: QueryFilter, callback: CbCallback): void; - getUserEvents(filter: QueryFilter, callback: CbCallback): void; -} - -interface Portal { - name: string; - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - fetch(callback: CbCallback): void; - update(data: object, callback: CbCallback): void; -} - -interface Triggers { - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - fetchDefinitions(callback: CbCallback): void; - create(name: string, data: object, callback: CbCallback): void; - update(name: string, data: object, callback: CbCallback): void; - delete(name: string, callback: CbCallback): void; -} - -declare var ClearBlade: ClearBladeGlobal; diff --git a/types/clearbladejs-server/clearbladejs-server-tests.ts b/types/clearbladejs-server/clearbladejs-server-tests.ts index d240f181ea..5fe134b5c4 100644 --- a/types/clearbladejs-server/clearbladejs-server-tests.ts +++ b/types/clearbladejs-server/clearbladejs-server-tests.ts @@ -3,7 +3,7 @@ // Definitions by: Jim Bouquet // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -const genericCallback = (error: boolean, response: Resp) => {}; +const genericCallback = (error: boolean, response: CbServer.Resp) => {}; /////////////////////////////////////// // ClearBlade object API invocations @@ -66,12 +66,12 @@ const device = ClearBlade.Device(); ClearBlade.addToQuery(query1, "key", "value"); ClearBlade.addSortToQuery( query1, - QuerySortDirections.QUERY_SORT_ASCENDING, + CbServer.QuerySortDirections.QUERY_SORT_ASCENDING, "column1" ); ClearBlade.addFilterToQuery( query1, - QueryConditions.QUERY_GREATERTHAN, + CbServer.QueryConditions.QUERY_GREATERTHAN, "key", "value" ); @@ -177,7 +177,7 @@ ClearBlade.Trigger.Create( { system_key: "key", name: "triggername", - def_module: TriggerModule.DEVICE, + def_module: CbServer.TriggerModule.DEVICE, def_name: "someName", key_value_pairs: [], service_name: "ServiceName" diff --git a/types/clearbladejs-server/global.d.ts b/types/clearbladejs-server/global.d.ts index d6e2e88a70..8276b9da44 100644 --- a/types/clearbladejs-server/global.d.ts +++ b/types/clearbladejs-server/global.d.ts @@ -1,5 +1,5 @@ declare global { - var ClearBlade: ClearBladeGlobal; + var ClearBlade: CbServer.ClearBladeGlobal; } export {}; diff --git a/types/clearbladejs-server/index.d.ts b/types/clearbladejs-server/index.d.ts index fb3ef065ce..2f6e8d672b 100644 --- a/types/clearbladejs-server/index.d.ts +++ b/types/clearbladejs-server/index.d.ts @@ -1,335 +1,422 @@ -// Type definitions for clearbladejs-server 1.0 +// Type definitions for clearbladejs-server 1.1 // Project: https://docs.clearblade.com/v/3/4-developer_reference/platformsdk/ClearBlade.js/ // Definitions by: Jim Bouquet // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 /// +declare namespace CbServer { + interface BasicReq { + readonly isLogging: boolean; + readonly params: { + [id: string]: any; + }; + readonly systemKey: string; + readonly systemSecret: string; + readonly userEmail: string; + readonly userToken: string; + readonly userid: string; + } + type ReqTypes = BasicReq; -interface BasicReq { - readonly isLogging: boolean; - readonly params: { - [id: string]: any; - }; - readonly systemKey: string; - readonly systemSecret: string; - readonly userEmail: string; - readonly userToken: string; - readonly userid: string; + let req: ReqTypes; + interface Resp { + error(msg: any): never; + success(msg: any): never; + } + let resp: Resp; + + enum MessagingQOS { + MESSAGING_QOS_AT_MOST_ONCE = 0, + MESSAGING_QOS_AT_LEAST_ONCE = 1, + MESSAGING_QOS_EXACTLY_ONCE = 2 + } + + interface InitOptions { + systemKey: string; + systemSecret: string; + logging?: boolean; + callback?: CbCallback; + authToken?: string; + userToken?: string; + email?: string; + password?: string; + registerUser?: boolean; + useUser?: APIUser; + URI?: string; + messagingURI?: string; + messagingPort?: number; + defaultQoS?: MessagingQOS; + callTimeout?: number; + } + + interface APIUser { + email: string; + authToken: string; + user_id?: string; + } + + interface KeyValuePair { + [key: string]: any; + } + + type CbCallback = (error: boolean, response: Resp) => void; + + interface ClearBladeGlobal extends ClearBladeInt { + user: APIUser; + } + + interface ClearBladeInt { + Trigger: TriggerClass; + Timer: TimerClass; + + about(): string; + addToQuery(queryObj: QueryObj, key: string, value: string): void; + addFilterToQuery( + queryObj: QueryObj, + condition: QueryConditions, + key: string, + value: QueryValue + ): void; + addSortToQuery( + queryObj: QueryObj, + direction: QuerySortDirections, + column: string + ): void; + Code(): Code; + Collection( + options: + | string + | CollectionOptionsWithName + | CollectionOptionsWithID + | CollectionOptionsWithCollection + ): Collection; + Deployment(): Deployment; + Device(): Device; + edgeId(): string; + execute(error: object, response: object, callback: CbCallback): any; + getAllCollections(callback: CbCallback): void; + http(): object; + init(options: InitOptions | { request: BasicReq }): void; + isEdge(callback: CbCallback): boolean; + isCurrentUserAuthenticated(callback: CbCallback): void; + isObjectEmpty(obj: object): boolean; + Item(data: object, options: string | ItemOptions): Item; + logger(message: string): void; + loginAnon(callback: CbCallback): void; + loginUser(email: string, password: string, callback: CbCallback): void; + logoutUser(callback: CbCallback): void; + makeKVPair(key: string, value: string): KeyValuePair; + Messaging(options: MessagingOptions, callback: CbCallback): Messaging; + newCollection(name: string, callback: CbCallback): void; + Query( + options: + | QueryOptionsWithCollection + | QueryOptionsWithName + | QueryOptionsWithID + ): QueryObj; + parseOperationQuery(query: Query): string; + parseQuery(query: Query | QueryObj): string; + registerUser( + email: string, + password: string, + callback: CbCallback + ): void; + setUser(email: string, authToken: string, userId: string): void; + User(): AppUser; + + createDevice( + name: string, + data: object, + causeTrigger: boolean, + callback: CbCallback + ): void; + deleteDevice( + name: string, + causeTrigger: boolean, + callback: CbCallback + ): void; + updateDevice( + name: string, + data: object, + causeTrigger: boolean, + callback: CbCallback + ): void; + getDeviceByName(name: string, callback: CbCallback): void; + getAllDevicesForSystem(callback: CbCallback): void; + validateEmailPassword(email: string, password: string): void; + } + + interface CollectionOptionsWithCollection { + collection: string; + } + + interface CollectionOptionsWithName { + collectionName: string; + } + + interface CollectionOptionsWithID { + collectionID: string; + } + + interface Collection { + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + addColumn(options: object, callback: CbCallback): void; + dropColumn(name: string, callback: CbCallback): void; + deleteCollection(callback: CbCallback): void; + fetch(query: Query, callback: CbCallback): void; + create(newItem: Item, callback: CbCallback): void; + update(query: Query, changes: object, callback: CbCallback): void; + remove(query: Query, callback: CbCallback): void; + columns(callback: CbCallback): void; + count(query: Query, callback: CbCallback): void; + } + + enum QuerySortDirections { + QUERY_SORT_ASCENDING = "ASC", + QUERY_SORT_DESCENDING = "DESC" + } + + enum QueryConditions { + QUERY_EQUAL = "EQ", + QUERY_NOTEQUAL = "NEQ", + QUERY_GREATERTHAN = "GT", + QUERY_GREATERTHAN_EQUAL = "GTE", + QUERY_LESSTHAN = "LT", + QUERY_LESSTHAN_EQUAL = "LTE", + QUERY_MATCHES = "RE" + } + + type QueryValue = string | number | boolean; + + interface QueryOptions { + offset?: number; + limit?: number; + } + + interface QueryOptionsWithCollection + extends CollectionOptionsWithCollection, + QueryOptions {} + + interface QueryOptionsWithName + extends CollectionOptionsWithName, + QueryOptions {} + + interface QueryOptionsWithID + extends CollectionOptionsWithID, + QueryOptions {} + + interface Query { + SELECTCOLUMNS?: string[]; + SORT?: QuerySortDirections; + FILTERS?: QueryFilter[]; + PAGESIZE?: number; + PAGENUM?: number; + } + + interface QueryFilter { + [QueryConditions: string]: QueryFilterValue; + } + + interface QueryFilterValue { + [name: string]: QueryValue; + } + + interface QueryObj { + id: string; + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + query: Query; + OR: Query[]; + offset: number; + limit: number; + + ascending(field: string): void; + descending(field: string): void; + equalTo(field: string, value: QueryValue): void; + greaterThan(field: string, value: QueryValue): void; + greaterThanEqualTo(field: string, value: QueryValue): void; + lessThan(field: string, value: QueryValue): void; + lessThanEqualTo(field: string, value: QueryValue): void; + notEqualTo(field: string, value: QueryValue): void; + matches(field: string, pattern: QueryValue): void; + or(query: QueryObj): void; + setPage(pageSize: number, pageNum: number): void; + fetch(callback: CbCallback): void; + update(changes: object, callback: CbCallback): void; + columns(columnsArray: string[]): void; + remove(callback: CbCallback): void; + } + + interface ItemOptions extends CollectionOptionsWithID {} + + interface Item { + data: object; + + save(): void; + refresh(): void; + destroy(): void; + } + + interface Code { + user: APIUser; + systemKey: string; + systemSecret: string; + + execute( + name: string, + params: object, + loggingEnabled: boolean, + callback: CbCallback + ): void; + getAllServices(callback: CbCallback): void; + } + + interface DeploymentOptions {} + + interface Deployment { + user: APIUser; + systemKey: string; + systemSecret: string; + + create( + name: string, + description: string, + options: DeploymentOptions, + callback: CbCallback + ): void; + update( + name: string, + options: DeploymentOptions, + callback: CbCallback + ): void; + delete(name: string, callback: CbCallback): void; + read(name: string, callback: CbCallback): void; + readAll(query: QueryObj, callback: CbCallback): void; + } + + interface AppUser { + user: APIUser; + URI: string; + systemKey: string; + systemSecret: string; + + getUser(callback: CbCallback): void; + setUser(data: object, callback: CbCallback): void; + setUsers(query: QueryObj, data: object, callback: CbCallback): void; + allUsers(query: QueryObj, callback: CbCallback): void; + count(query: QueryObj, callback: CbCallback): void; + } + + interface Messaging { + user: APIUser; + systemKey: string; + systemSecret: string; + + getMessageHistoryWithTimeFrame( + topic: string, + count: number, + last: number, + start: number, + stop: number, + callback: CbCallback + ): void; + getMessageHistory( + topic: string, + start: number, + count: number, + callback: CbCallback + ): void; + getAndDeleteMessageHistory( + topic: string, + count: number, + last: number, + start: number, + stop: number, + callback: CbCallback + ): void; + getCurrentTopics(callback: CbCallback): void; + publish(topic: string, payload: string | ArrayBuffer): void; + } + + interface MessagingOptions {} + + interface Device { + URI: string; + systemKey: string; + systemSecret: string; + + fetch(query: Query, callback: CbCallback): void; + update(query: Query, changes: object, callback: CbCallback): void; + delete(query: Query, callback: CbCallback): void; + create(newDevice: object, callback: CbCallback): void; + } + + enum TriggerModule { + DEVICE = "Device", + Data = "Data", + MESSAGING = "Messaging", + USER = "User" + } + + interface TriggerCreateOptions { + system_key: string; + name: string; + def_module: TriggerModule; + def_name: string; + key_value_pairs: KeyValuePair[]; + service_name: string; + } + + interface TriggerClass { + Create( + name: string, + options: TriggerCreateOptions, + callback: CbCallback + ): void; + Fetch(name: string, callback: CbCallback): void; + } + + interface TimerCreateOptions { + description?: string; + start_time?: Date; + repeats?: number; + frequency?: number; + service_name?: string; + user_id?: string; + user_token?: string; + } + + interface TimerClass { + Create( + name: string, + options: TimerCreateOptions, + callback: CbCallback + ): void; + Fetch(name: string, callback: CbCallback): void; + } + + interface TriggerInstance { + name: string; + systemKey: string; + + Update(options: object, callback: CbCallback): void; + Delete(callback: CbCallback): void; + } + + interface TimerInstance { + name: string; + systemKey: string; + + Update(options: object, callback: CbCallback): void; + Delete(callback: CbCallback): void; + } + + let ClearBlade: ClearBladeGlobal; } -type ReqTypes = BasicReq; -declare var req: ReqTypes; -interface Resp { - error(msg: any): never; - success(msg: any): never; -} -declare var resp: Resp; - -declare enum MessagingQOS { - MESSAGING_QOS_AT_MOST_ONCE = 0, - MESSAGING_QOS_AT_LEAST_ONCE = 1, - MESSAGING_QOS_EXACTLY_ONCE = 2 -} - -interface InitOptions { - systemKey: string; - systemSecret: string; - logging?: boolean; - callback?: CbCallback; - authToken?: string; - userToken?: string; - email?: string; - password?: string; - registerUser?: boolean; - useUser?: APIUser; - URI?: string; - messagingURI?: string; - messagingPort?: number; - defaultQoS?: MessagingQOS; - callTimeout?: number; -} - -interface APIUser { - email: string; - authToken: string; - user_id?: string; -} - -interface KeyValuePair { - [key: string]: any; -} - -type CbCallback = (error: boolean, response: Resp) => void; - -interface ClearBladeGlobal extends ClearBladeInt { - user: APIUser; -} - -interface ClearBladeInt { - Trigger: TriggerClass; - Timer: TimerClass; - - about(): string; - addToQuery(queryObj: QueryObj, key: string, value: string): void; - addFilterToQuery(queryObj: QueryObj, condition: QueryConditions, key: string, value: QueryValue): void; - addSortToQuery(queryObj: QueryObj, direction: QuerySortDirections, column: string): void; - Code(): Code; - Collection(options: string | CollectionOptionsWithName | CollectionOptionsWithID | CollectionOptionsWithCollection): Collection; - Deployment(): Deployment; - Device(): Device; - edgeId(): string; - execute(error: object, response: object, callback: CbCallback): any; - getAllCollections(callback: CbCallback): void; - http(): object; - init(options: InitOptions | {request: BasicReq}): void; - isEdge(callback: CbCallback): boolean; - isCurrentUserAuthenticated(callback: CbCallback): void; - isObjectEmpty(obj: object): boolean; - Item(data: object, options: string | ItemOptions): Item; - logger(message: string): void; - loginAnon(callback: CbCallback): void; - loginUser(email: string, password: string, callback: CbCallback): void; - logoutUser(callback: CbCallback): void; - makeKVPair(key: string, value: string): KeyValuePair; - Messaging(options: MessagingOptions, callback: CbCallback): Messaging; - newCollection(name: string, callback: CbCallback): void; - Query(options: QueryOptionsWithCollection | QueryOptionsWithName | QueryOptionsWithID): QueryObj; - parseOperationQuery(query: Query): string; - parseQuery(query: Query | QueryObj): string; - registerUser(email: string, password: string, callback: CbCallback): void; - setUser(email: string, authToken: string, userId: string): void; - User(): AppUser; - - createDevice(name: string, data: object, causeTrigger: boolean, callback: CbCallback): void; - deleteDevice(name: string, causeTrigger: boolean, callback: CbCallback): void; - updateDevice(name: string, data: object, causeTrigger: boolean, callback: CbCallback): void; - getDeviceByName(name: string, callback: CbCallback): void; - getAllDevicesForSystem(callback: CbCallback): void; - validateEmailPassword(email: string, password: string): void; -} - -interface CollectionOptionsWithCollection { - collection: string; -} - -interface CollectionOptionsWithName { - collectionName: string; -} - -interface CollectionOptionsWithID { - collectionID: string; -} - -interface Collection { - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - addColumn(options: object, callback: CbCallback): void; - dropColumn(name: string, callback: CbCallback): void; - deleteCollection(callback: CbCallback): void; - fetch(query: Query, callback: CbCallback): void; - create(newItem: Item, callback: CbCallback): void; - update(query: Query, changes: object, callback: CbCallback): void; - remove(query: Query, callback: CbCallback): void; - columns(callback: CbCallback): void; - count(query: Query, callback: CbCallback): void; -} - -declare enum QuerySortDirections { - QUERY_SORT_ASCENDING = 'ASC', - QUERY_SORT_DESCENDING = 'DESC' -} - -declare enum QueryConditions { - QUERY_EQUAL = 'EQ', - QUERY_NOTEQUAL = 'NEQ', - QUERY_GREATERTHAN = 'GT', - QUERY_GREATERTHAN_EQUAL = 'GTE', - QUERY_LESSTHAN = 'LT', - QUERY_LESSTHAN_EQUAL = 'LTE', - QUERY_MATCHES = 'RE' -} - -type QueryValue = string|number|boolean; - -interface QueryOptions { - offset?: number; - limit?: number; -} - -interface QueryOptionsWithCollection extends CollectionOptionsWithCollection, QueryOptions {} - -interface QueryOptionsWithName extends CollectionOptionsWithName, QueryOptions {} - -interface QueryOptionsWithID extends CollectionOptionsWithID, QueryOptions {} - -interface Query { - SELECTCOLUMNS?: string[]; - SORT?: QuerySortDirections; - FILTERS?: QueryFilter[]; - PAGESIZE?: number; - PAGENUM?: number; -} - -interface QueryFilter { - [QueryConditions: string]: QueryFilterValue; -} - -interface QueryFilterValue { - [name: string]: QueryValue; -} - -interface QueryObj { - id: string; - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - query: Query; - OR: Query[]; - offset: number; - limit: number; - - ascending(field: string): void; - descending(field: string): void; - equalTo(field: string, value: QueryValue): void; - greaterThan(field: string, value: QueryValue): void; - greaterThanEqualTo(field: string, value: QueryValue): void; - lessThan(field: string, value: QueryValue): void; - lessThanEqualTo(field: string, value: QueryValue): void; - notEqualTo(field: string, value: QueryValue): void; - matches(field: string, pattern: QueryValue): void; - or(query: QueryObj): void; - setPage(pageSize: number, pageNum: number): void; - fetch(callback: CbCallback): void; - update(changes: object, callback: CbCallback): void; - columns(columnsArray: string[]): void; - remove(callback: CbCallback): void; -} - -interface ItemOptions extends CollectionOptionsWithID {} - -interface Item { - data: object; - - save(): void; - refresh(): void; - destroy(): void; -} - -interface Code { - user: APIUser; - systemKey: string; - systemSecret: string; - - execute(name: string, params: object, loggingEnabled: boolean, callback: CbCallback): void; - getAllServices(callback: CbCallback): void; -} - -interface DeploymentOptions {} - -interface Deployment { - user: APIUser; - systemKey: string; - systemSecret: string; - - create(name: string, description: string, options: DeploymentOptions, callback: CbCallback): void; - update(name: string, options: DeploymentOptions, callback: CbCallback): void; - delete(name: string, callback: CbCallback): void; - read(name: string, callback: CbCallback): void; - readAll(query: QueryObj, callback: CbCallback): void; -} - -interface AppUser { - user: APIUser; - URI: string; - systemKey: string; - systemSecret: string; - - getUser(callback: CbCallback): void; - setUser(data: object, callback: CbCallback): void; - setUsers(query: QueryObj, data: object, callback: CbCallback): void; - allUsers(query: QueryObj, callback: CbCallback): void; - count(query: QueryObj, callback: CbCallback): void; -} - -interface Messaging { - user: APIUser; - systemKey: string; - systemSecret: string; - - getMessageHistoryWithTimeFrame(topic: string, count: number, last: number, start: number, stop: number, callback: CbCallback): void; - getMessageHistory(topic: string, start: number, count: number, callback: CbCallback): void; - getAndDeleteMessageHistory(topic: string, count: number, last: number, start: number, stop: number, callback: CbCallback): void; - getCurrentTopics(callback: CbCallback): void; - publish(topic: string, payload: string | ArrayBuffer): void; -} - -interface MessagingOptions {} - -interface Device { - URI: string; - systemKey: string; - systemSecret: string; - - fetch(query: Query, callback: CbCallback): void; - update(query: Query, changes: object, callback: CbCallback): void; - delete(query: Query, callback: CbCallback): void; - create(newDevice: object, callback: CbCallback): void; -} - -declare enum TriggerModule { - DEVICE = "Device", - Data = "Data", - MESSAGING = "Messaging", - USER = "User" -} - -interface TriggerCreateOptions { - system_key: string; - name: string; - def_module: TriggerModule; - def_name: string; - key_value_pairs: KeyValuePair[]; - service_name: string; -} - -interface TriggerClass { - Create(name: string, options: TriggerCreateOptions, callback: CbCallback): void; - Fetch(name: string, callback: CbCallback): void; -} - -interface TimerCreateOptions { - description?: string; - start_time?: Date; - repeats?: number; - frequency?: number; - service_name?: string; - user_id?: string; - user_token?: string; -} - -interface TimerClass { - Create(name: string, options: TimerCreateOptions, callback: CbCallback): void; - Fetch(name: string, callback: CbCallback): void; -} - -interface TriggerInstance { - name: string; - systemKey: string; - - Update(options: object, callback: CbCallback): void; - Delete(callback: CbCallback): void; -} - -interface TimerInstance { - name: string; - systemKey: string; - - Update(options: object, callback: CbCallback): void; - Delete(callback: CbCallback): void; -} - -declare var ClearBlade: ClearBladeGlobal;