@spotto/contract 0.1.5-alpha.3 → 0.1.6-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/readers/constants.d.ts +0 -1
- package/dist/types/readers/constants.js +2 -4
- package/dist/types/readers/constants.js.map +1 -1
- package/dist/types/readers/post/request.d.ts +6 -1
- package/dist/types/readers/post/request.js +5 -1
- package/dist/types/readers/post/request.js.map +1 -1
- package/package.json +3 -3
|
@@ -30,5 +30,4 @@ declare type QuerySignature = {
|
|
|
30
30
|
export declare const getDeviceTypes: (query: QuerySignature) => IDeviceTypeDetail[];
|
|
31
31
|
export declare const getDeviceTypesForFormat: (deviceIdFormat: DeviceIdFormat) => DeviceType[];
|
|
32
32
|
export declare const getDeviceTypesForEndpoint: (endpoint: ConnectorEndpoint) => DeviceType[];
|
|
33
|
-
export declare const isIoTX3: (id: DeviceType) => boolean;
|
|
34
33
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getDeviceTypesForEndpoint = exports.getDeviceTypesForFormat = exports.getDeviceTypes = exports.getDeviceTypeById = exports.DEVICE_TYPE_DETAILS = exports.DEVICE_TYPES = exports.READER_TYPE_DETAILS = exports.READER_TYPES = void 0;
|
|
4
4
|
exports.READER_TYPES = [
|
|
5
5
|
'FIXED',
|
|
6
6
|
'ROVING',
|
|
@@ -129,7 +129,7 @@ const getDeviceTypes = (query) => exports.DEVICE_TYPE_DETAILS.filter(type => Obj
|
|
|
129
129
|
const testField = query[key];
|
|
130
130
|
const field = type[key];
|
|
131
131
|
return (testField === null || testField === void 0 ? void 0 : testField.constructor) === Array && (field === null || field === void 0 ? void 0 : field.constructor) === Array
|
|
132
|
-
?
|
|
132
|
+
? testField.every(item => field === null || field === void 0 ? void 0 : field.includes(item))
|
|
133
133
|
: testField === field;
|
|
134
134
|
}));
|
|
135
135
|
exports.getDeviceTypes = getDeviceTypes;
|
|
@@ -137,6 +137,4 @@ const getDeviceTypesForFormat = (deviceIdFormat) => exports.getDeviceTypes({ dev
|
|
|
137
137
|
exports.getDeviceTypesForFormat = getDeviceTypesForFormat;
|
|
138
138
|
const getDeviceTypesForEndpoint = (endpoint) => exports.getDeviceTypes({ endpoint }).map(({ id }) => id);
|
|
139
139
|
exports.getDeviceTypesForEndpoint = getDeviceTypesForEndpoint;
|
|
140
|
-
const isIoTX3 = (id) => exports.getDeviceTypesForEndpoint('iotx3').includes(id);
|
|
141
|
-
exports.isIoTX3 = isIoTX3;
|
|
142
140
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/types/readers/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/types/readers/constants.ts"],"names":[],"mappings":";;;AASa,QAAA,YAAY,GAAiB;IACxC,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;CACT,CAAC;AAUW,QAAA,mBAAmB,GAAwB;IACtD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,iFAAiF;QACnF,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,6GAA6G;QAC/G,OAAO,EAAE,KAAK;KACf;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,qEAAqE;QACvE,OAAO,EAAE,KAAK;KACf;CACF,CAAC;AAaW,QAAA,YAAY,GAAiB;IACxC,IAAI;IACJ,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,aAAa;CACd,CAAC;AA8BW,QAAA,mBAAmB,GAAwB;IACtD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,4BAA4B;QAClC,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;QAChB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,0BAA0B;QAChC,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;QAChB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,yBAAyB;QAC/B,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;QAChB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;QAChB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,4BAA4B;QAClC,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,4BAA4B;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QAClC,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,6BAA6B;QACnC,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,MAAM;QAChB,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,KAAK;KACf;CACF,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAAc,EAAE,EAAE,CAClD,2BAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAsB,CAAC;AAD/D,QAAA,iBAAiB,qBAC8C;AAIrE,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAE,EAAE,CACtD,2BAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAiC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAGxB,OAAO,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,MAAK,KAAK,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,MAAK,KAAK;QACrE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC;AAC1B,CAAC,CAAC,CACH,CAAC;AAXS,QAAA,cAAc,kBAWvB;AAEG,MAAM,uBAAuB,GAAG,CAAC,cAA8B,EAAE,EAAE,CACxE,sBAAc,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAD5C,QAAA,uBAAuB,2BACqB;AAElD,MAAM,yBAAyB,GAAG,CAAC,QAA2B,EAAE,EAAE,CACvE,sBAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AADtC,QAAA,yBAAyB,6BACa"}
|
|
@@ -13,7 +13,7 @@ export interface IAntennaRequest {
|
|
|
13
13
|
level?: string;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
export interface
|
|
16
|
+
export interface DefaultReaderRequest {
|
|
17
17
|
name: string;
|
|
18
18
|
type: ReaderType;
|
|
19
19
|
deviceType: DeviceType;
|
|
@@ -24,6 +24,11 @@ export interface PostReaderRequest {
|
|
|
24
24
|
saveNetwork?: boolean;
|
|
25
25
|
antennas?: IAntennaRequest[];
|
|
26
26
|
}
|
|
27
|
+
export declare type IFixedReaderRequest = Omit<DefaultReaderRequest, 'name' | 'type'> & {
|
|
28
|
+
type: 'FIXED';
|
|
29
|
+
name?: string;
|
|
30
|
+
};
|
|
31
|
+
export declare type PostReaderRequest = DefaultReaderRequest | IFixedReaderRequest;
|
|
27
32
|
export declare type PostReadersRequest = PostReaderRequest[];
|
|
28
33
|
export declare const upsertedLocationSchema: import("joi").ObjectSchema<IUpsertedLocation>;
|
|
29
34
|
export declare const antennaSchema: import("joi").ObjectSchema<IAntennaRequest>;
|
|
@@ -20,7 +20,11 @@ exports.portalAntennaSchema = shared_1.xArray(exports.antennaSchema.xor('locatio
|
|
|
20
20
|
.min(1);
|
|
21
21
|
exports.virtualAntennaSchema = shared_1.xArray(exports.antennaSchema.oxor('location', 'locationId'), 'port').min(1);
|
|
22
22
|
exports.postReadersRequestSchema = shared_1.xArray(joi_1.object({
|
|
23
|
-
name:
|
|
23
|
+
name: joi_1.when('type', {
|
|
24
|
+
is: 'FIXED',
|
|
25
|
+
then: shared_1.xString,
|
|
26
|
+
otherwise: shared_1.xString.required(),
|
|
27
|
+
}),
|
|
24
28
|
type: shared_1.xStringIsOneOf(...constants_1.READER_TYPES).required(),
|
|
25
29
|
deviceType: shared_1.xStringIsOneOf(...constants_1.DEVICE_TYPES).required(),
|
|
26
30
|
deviceId: joi_1.when('deviceType', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../src/types/readers/post/request.ts"],"names":[],"mappings":";;;AAAA,6BAAqD;AACrD,6CAAgE;AAChE,yCASsB;AACtB,4CAMsB;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../src/types/readers/post/request.ts"],"names":[],"mappings":";;;AAAA,6BAAqD;AACrD,6CAAgE;AAChE,yCASsB;AACtB,4CAMsB;AAmET,QAAA,sBAAsB,GAAG,YAAM,CAAoB;IAC9D,IAAI,EAAE,gBAAO;IACb,KAAK,EAAE,gBAAO;CACf,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,YAAM,CAAkB;IACnD,IAAI,EAAE,aAAI,CAAC,QAAQ,EAAE;IACrB,IAAI,EAAE,gBAAO;IACb,UAAU,EAAE,kBAAS;IACrB,QAAQ,EAAE,8BAAsB;CACjC,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,eAAM,CACvC,qBAAa,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,EAE3C,MAAM,CACP;KACE,QAAQ,EAAE;KACV,GAAG,CAAC,CAAC,CAAC,CAAC;AAEG,QAAA,oBAAoB,GAAG,eAAM,CACxC,qBAAa,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAC5C,MAAM,CACP,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEI,QAAA,wBAAwB,GAAG,eAAM,CAC5C,YAAM,CAAoB;IAExB,IAAI,EAAE,UAAI,CAAC,MAAM,EAAE;QACjB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,gBAAO;QACb,SAAS,EAAE,gBAAO,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,IAAI,EAAE,uBAAc,CAAC,GAAG,wBAAY,CAAC,CAAC,QAAQ,EAAE;IAChD,UAAU,EAAE,uBAAc,CAAC,GAAG,wBAAY,CAAC,CAAC,QAAQ,EAAE;IAGtD,QAAQ,EAAE,UAAI,CAAC,YAAY,EAAE;QAC3B,MAAM,EAAE;YACN;gBACE,EAAE,EAAE,uBAAc,CAAC,GAAG,mCAAuB,CAAC,KAAK,CAAC,CAAC;gBACrD,IAAI,EAAE,oBAAW;aAClB;YACD;gBACE,EAAE,EAAE,uBAAc,CAAC,GAAG,mCAAuB,CAAC,QAAQ,CAAC,CAAC;gBACxD,IAAI,EAAE,gBAAO;aACd;SACF;QACD,SAAS,EAAE,eAAS,EAAE;KACvB,CAAC;IAEF,UAAU,EAAE,UAAI,CAAC,MAAM,EAAE;QACvB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,kBAAS;aACZ,QAAQ,EAAE;aACV,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,WAAK,EAAE,EAAE,IAAI,EAAE,eAAS,EAAE,EAAE,CAAC;QACvD,SAAS,EAAE,eAAS,EAAE;KACvB,CAAC;IAEF,QAAQ,EAAE,UAAI,CAAC,MAAM,EAAE;QACrB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,8BAAsB;aACzB,QAAQ,EAAE;aACV,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,WAAK,EAAE,EAAE,IAAI,EAAE,eAAS,EAAE,EAAE,CAAC;QACzD,SAAS,EAAE,eAAS,EAAE;KACvB,CAAC;IAEF,WAAW,EAAE,cAAK;IAClB,OAAO,EAAE,wBAAa,EAAmB;IAEzC,QAAQ,EAAE,UAAI,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE;YACN;gBACE,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,2BAAmB;aAC1B;YAGD;gBACE,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,4BAAoB;aAC3B;SACF;QACD,SAAS,EAAE,eAAS,EAAE;KACvB,CAAC;CACH,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAClC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,OAAY,EAAE,EAAE,CACzD,0BAAiB,CAAqB,gCAAwB,EAAE,OAAO,CAAC,CAAC;AAD9D,QAAA,0BAA0B,8BACoC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spotto/contract",
|
|
3
3
|
"license": "ISC",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.6-alpha.0",
|
|
5
5
|
"description": "Spotto's API Contract",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"files": [
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@airtasker/spot": "^1.4.0",
|
|
20
|
-
"@spotto/core-lib": "^0.1.
|
|
20
|
+
"@spotto/core-lib": "^0.1.6-alpha.0",
|
|
21
21
|
"geojson-validation": "^1.0.2",
|
|
22
22
|
"joi": "^17.2.1",
|
|
23
23
|
"qs": "^6.9.4"
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
"jest": "^26.6.3",
|
|
27
27
|
"ts-jest": "^26.5.3"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "51d3f40def77602e7986260f454c7540a4ca007d"
|
|
30
30
|
}
|