@uengage.io/platform-sdk 0.8.0 → 0.12.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/README.md +94 -44
- package/dist/auth/index.d.ts +13 -3
- package/dist/auth/index.js +18 -5
- package/dist/auth/login.d.ts +30 -0
- package/dist/auth/login.js +36 -0
- package/dist/auth/otp.d.ts +43 -0
- package/dist/auth/otp.js +71 -0
- package/dist/business/client.js +3 -36
- package/dist/business/index.d.ts +1 -1
- package/dist/business/index.js +1 -1
- package/dist/business/schema.d.ts +161 -4
- package/dist/business/schema.js +17 -2
- package/dist/client.d.ts +77 -51
- package/dist/client.js +177 -142
- package/dist/http.d.ts +22 -0
- package/dist/http.js +39 -1
- package/dist/index.d.ts +2 -18
- package/dist/index.js +3 -23
- package/dist/token-source.d.ts +24 -0
- package/dist/token-source.js +65 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/zones/client.d.ts +51 -0
- package/dist/zones/client.js +156 -0
- package/dist/zones/index.d.ts +2 -0
- package/dist/zones/index.js +7 -0
- package/dist/zones/schema.d.ts +104 -0
- package/dist/zones/schema.js +16 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -14,9 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
17
|
+
exports.createClient = exports.DEFAULT_BASE_URL = exports.auth = void 0;
|
|
18
18
|
__exportStar(require("./audit"), exports);
|
|
19
19
|
__exportStar(require("./business"), exports);
|
|
20
|
+
__exportStar(require("./zones"), exports);
|
|
20
21
|
__exportStar(require("./errors"), exports);
|
|
21
22
|
var auth_1 = require("./auth");
|
|
22
23
|
Object.defineProperty(exports, "auth", { enumerable: true, get: function () { return auth_1.auth; } });
|
|
@@ -24,25 +25,4 @@ var config_1 = require("./config");
|
|
|
24
25
|
Object.defineProperty(exports, "DEFAULT_BASE_URL", { enumerable: true, get: function () { return config_1.DEFAULT_BASE_URL; } });
|
|
25
26
|
var client_1 = require("./client");
|
|
26
27
|
Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return client_1.createClient; } });
|
|
27
|
-
|
|
28
|
-
Object.defineProperty(exports, "withToken", { enumerable: true, get: function () { return client_1.withToken; } });
|
|
29
|
-
const audit_1 = require("./audit");
|
|
30
|
-
const business_1 = require("./business");
|
|
31
|
-
/**
|
|
32
|
-
* Default singleton clients. Both read defaults from the environment on
|
|
33
|
-
* every call:
|
|
34
|
-
* - UENGAGE_BASE_URL defaults to https://api.platform.uengage.io
|
|
35
|
-
* - UENGAGE_AUTH_TOKEN static Bearer token
|
|
36
|
-
* - UENGAGE_SERVICE_ID OAuth2 client_credentials clientId
|
|
37
|
-
* - UENGAGE_SERVICE_SECRET OAuth2 client_credentials clientSecret
|
|
38
|
-
* - UENGAGE_SERVICE_SCOPE optional space-separated scope list
|
|
39
|
-
*
|
|
40
|
-
* The chainable `.config({...})` / `.auth({...})` API on the audit and
|
|
41
|
-
* business clients is preserved for back-compat. `.auth({token})`
|
|
42
|
-
* accepts a static Bearer token; for OAuth2 client_credentials use the
|
|
43
|
-
* unified `createClient(...)` factory instead — that builds a
|
|
44
|
-
* TokenSource which handles caching + refresh dedup + 401 retry.
|
|
45
|
-
*/
|
|
46
|
-
exports.audit = (0, audit_1.createAuditClient)();
|
|
47
|
-
exports.business = (0, business_1.createBusinessClient)();
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDJDQUF5QjtBQUN6QiwrQkFBOEI7QUFBckIsNEZBQUEsSUFBSSxPQUFBO0FBUWIsbUNBTWtCO0FBRGhCLDBHQUFBLGdCQUFnQixPQUFBO0FBRWxCLG1DQU1rQjtBQUxoQixzR0FBQSxZQUFZLE9BQUE7QUFDWixrR0FBQSxRQUFRLE9BQUE7QUFDUixtR0FBQSxTQUFTLE9BQUE7QUFLWCxtQ0FBNEM7QUFDNUMseUNBQWtEO0FBRWxEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ1UsUUFBQSxLQUFLLEdBQUcsSUFBQSx5QkFBaUIsR0FBRSxDQUFDO0FBQzVCLFFBQUEsUUFBUSxHQUFHLElBQUEsK0JBQW9CLEdBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXVkaXQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXNpbmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgeyBhdXRoIH0gZnJvbSAnLi9hdXRoJztcbmV4cG9ydCB0eXBlIHtcbiAgUGtjZVBhaXIsXG4gIEF1dGhvcml6ZVVybElucHV0LFxuICBFeGNoYW5nZUNvZGVJbnB1dCxcbiAgUmVmcmVzaElucHV0LFxuICBUb2tlblBhaXIsXG59IGZyb20gJy4vYXV0aCc7XG5leHBvcnQge1xuICB0eXBlIFBsYXRmb3JtQXV0aCxcbiAgdHlwZSBQbGF0Zm9ybUF1dGhJbnB1dCxcbiAgdHlwZSBQbGF0Zm9ybUNvbmZpZyxcbiAgdHlwZSBQbGF0Zm9ybUNvbmZpZ0lucHV0LFxuICBERUZBVUxUX0JBU0VfVVJMLFxufSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQge1xuICBjcmVhdGVDbGllbnQsXG4gIHBsYXRmb3JtLFxuICB3aXRoVG9rZW4sXG4gIHR5cGUgQ2xpZW50Q29uZmlnLFxuICB0eXBlIFBsYXRmb3JtQ2xpZW50LFxufSBmcm9tICcuL2NsaWVudCc7XG5cbmltcG9ydCB7IGNyZWF0ZUF1ZGl0Q2xpZW50IH0gZnJvbSAnLi9hdWRpdCc7XG5pbXBvcnQgeyBjcmVhdGVCdXNpbmVzc0NsaWVudCB9IGZyb20gJy4vYnVzaW5lc3MnO1xuXG4vKipcbiAqIERlZmF1bHQgc2luZ2xldG9uIGNsaWVudHMuIEJvdGggcmVhZCBkZWZhdWx0cyBmcm9tIHRoZSBlbnZpcm9ubWVudCBvblxuICogZXZlcnkgY2FsbDpcbiAqICAgLSBVRU5HQUdFX0JBU0VfVVJMICAgICAgICAgIGRlZmF1bHRzIHRvIGh0dHBzOi8vYXBpLnBsYXRmb3JtLnVlbmdhZ2UuaW9cbiAqICAgLSBVRU5HQUdFX0FVVEhfVE9LRU4gICAgICAgIHN0YXRpYyBCZWFyZXIgdG9rZW5cbiAqICAgLSBVRU5HQUdFX1NFUlZJQ0VfSUQgICAgICAgIE9BdXRoMiBjbGllbnRfY3JlZGVudGlhbHMgY2xpZW50SWRcbiAqICAgLSBVRU5HQUdFX1NFUlZJQ0VfU0VDUkVUICAgIE9BdXRoMiBjbGllbnRfY3JlZGVudGlhbHMgY2xpZW50U2VjcmV0XG4gKiAgIC0gVUVOR0FHRV9TRVJWSUNFX1NDT1BFICAgICBvcHRpb25hbCBzcGFjZS1zZXBhcmF0ZWQgc2NvcGUgbGlzdFxuICpcbiAqIFRoZSBjaGFpbmFibGUgYC5jb25maWcoey4uLn0pYCAvIGAuYXV0aCh7Li4ufSlgIEFQSSBvbiB0aGUgYXVkaXQgYW5kXG4gKiBidXNpbmVzcyBjbGllbnRzIGlzIHByZXNlcnZlZCBmb3IgYmFjay1jb21wYXQuIGAuYXV0aCh7dG9rZW59KWBcbiAqIGFjY2VwdHMgYSBzdGF0aWMgQmVhcmVyIHRva2VuOyBmb3IgT0F1dGgyIGNsaWVudF9jcmVkZW50aWFscyB1c2UgdGhlXG4gKiB1bmlmaWVkIGBjcmVhdGVDbGllbnQoLi4uKWAgZmFjdG9yeSBpbnN0ZWFkIOKAlCB0aGF0IGJ1aWxkcyBhXG4gKiBUb2tlblNvdXJjZSB3aGljaCBoYW5kbGVzIGNhY2hpbmcgKyByZWZyZXNoIGRlZHVwICsgNDAxIHJldHJ5LlxuICovXG5leHBvcnQgY29uc3QgYXVkaXQgPSBjcmVhdGVBdWRpdENsaWVudCgpO1xuZXhwb3J0IGNvbnN0IGJ1c2luZXNzID0gY3JlYXRlQnVzaW5lc3NDbGllbnQoKTtcbiJdfQ==
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsK0JBQThCO0FBQXJCLDRGQUFBLElBQUksT0FBQTtBQVFiLG1DQU1rQjtBQURoQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUVsQixtQ0FBZ0Y7QUFBdkUsc0dBQUEsWUFBWSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdWRpdCc7XG5leHBvcnQgKiBmcm9tICcuL2J1c2luZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vem9uZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMnO1xuZXhwb3J0IHsgYXV0aCB9IGZyb20gJy4vYXV0aCc7XG5leHBvcnQgdHlwZSB7XG4gIFBrY2VQYWlyLFxuICBBdXRob3JpemVVcmxJbnB1dCxcbiAgRXhjaGFuZ2VDb2RlSW5wdXQsXG4gIFJlZnJlc2hJbnB1dCxcbiAgVG9rZW5QYWlyLFxufSBmcm9tICcuL2F1dGgnO1xuZXhwb3J0IHtcbiAgdHlwZSBQbGF0Zm9ybUF1dGgsXG4gIHR5cGUgUGxhdGZvcm1BdXRoSW5wdXQsXG4gIHR5cGUgUGxhdGZvcm1Db25maWcsXG4gIHR5cGUgUGxhdGZvcm1Db25maWdJbnB1dCxcbiAgREVGQVVMVF9CQVNFX1VSTCxcbn0gZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0IHsgY3JlYXRlQ2xpZW50LCB0eXBlIENsaWVudENvbmZpZywgdHlwZSBQbGF0Zm9ybUNsaWVudCB9IGZyb20gJy4vY2xpZW50JztcbiJdfQ==
|
package/dist/token-source.d.ts
CHANGED
|
@@ -26,6 +26,30 @@ export type TokenSource = {
|
|
|
26
26
|
clientSecret: string;
|
|
27
27
|
authBaseUrl: string;
|
|
28
28
|
scope?: string;
|
|
29
|
+
} | {
|
|
30
|
+
/**
|
|
31
|
+
* Caller hands the SDK a `(accessToken, refreshToken)` pair from
|
|
32
|
+
* a finished login flow (`auth.loginWithPassword(...)`,
|
|
33
|
+
* `auth.verifyOtp(...)`, etc). The SDK serves the access token
|
|
34
|
+
* until it expires, then rotates via `auth.refresh(...)`.
|
|
35
|
+
*
|
|
36
|
+
* `clientId` is the OAuth client id used during the original
|
|
37
|
+
* login — required by the refresh handler. `onRotate` is an
|
|
38
|
+
* optional hook the caller can use to persist the new pair
|
|
39
|
+
* (cookie, secure storage, etc) — fired with every successful
|
|
40
|
+
* rotation.
|
|
41
|
+
*/
|
|
42
|
+
kind: 'access-refresh-pair';
|
|
43
|
+
accessToken: string;
|
|
44
|
+
refreshToken: string;
|
|
45
|
+
/** Initial expiry timestamp (ms since epoch). Re-derived from each new access token. */
|
|
46
|
+
expiresAt: number;
|
|
47
|
+
clientId: string;
|
|
48
|
+
onRotate?: (pair: {
|
|
49
|
+
accessToken: string;
|
|
50
|
+
refreshToken: string;
|
|
51
|
+
expiresAt: number;
|
|
52
|
+
}) => void | Promise<void>;
|
|
29
53
|
};
|
|
30
54
|
export interface TokenSourceState {
|
|
31
55
|
source: TokenSource;
|
package/dist/token-source.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.makeTokenSourceState = makeTokenSourceState;
|
|
4
37
|
exports.getAccessToken = getAccessToken;
|
|
@@ -98,6 +131,37 @@ async function mintToken(state) {
|
|
|
98
131
|
expiresAt: ttl > 0 ? Date.now() + ttl : Date.now() + 5 * 60 * 1000,
|
|
99
132
|
};
|
|
100
133
|
}
|
|
134
|
+
case 'access-refresh-pair': {
|
|
135
|
+
// First call: serve the seed access token if it hasn't expired.
|
|
136
|
+
// Subsequent calls (or on a stale seed) rotate via auth.refresh().
|
|
137
|
+
const source = state.source;
|
|
138
|
+
if (Date.now() + state.expiryBufferMs < source.expiresAt) {
|
|
139
|
+
return { token: source.accessToken, expiresAt: source.expiresAt };
|
|
140
|
+
}
|
|
141
|
+
// Dynamic import keeps `auth` out of the bundle when this kind isn't used.
|
|
142
|
+
const { refresh } = await Promise.resolve().then(() => __importStar(require('./auth/refresh')));
|
|
143
|
+
const tokens = await refresh({
|
|
144
|
+
accessToken: source.accessToken,
|
|
145
|
+
refreshToken: source.refreshToken,
|
|
146
|
+
clientId: source.clientId,
|
|
147
|
+
});
|
|
148
|
+
if (!tokens.refreshToken) {
|
|
149
|
+
throw new errors_1.ConfigError('refresh response missing refresh_token; cannot rotate again');
|
|
150
|
+
}
|
|
151
|
+
const expiresAt = Date.now() + tokens.expiresIn * 1000;
|
|
152
|
+
// Mutate the source in place so subsequent rotations carry the new pair.
|
|
153
|
+
source.accessToken = tokens.accessToken;
|
|
154
|
+
source.refreshToken = tokens.refreshToken;
|
|
155
|
+
source.expiresAt = expiresAt;
|
|
156
|
+
if (source.onRotate) {
|
|
157
|
+
await source.onRotate({
|
|
158
|
+
accessToken: tokens.accessToken,
|
|
159
|
+
refreshToken: tokens.refreshToken,
|
|
160
|
+
expiresAt,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return { token: tokens.accessToken, expiresAt };
|
|
164
|
+
}
|
|
101
165
|
}
|
|
102
166
|
}
|
|
103
167
|
function base64(s) {
|
|
@@ -108,4 +172,4 @@ function base64(s) {
|
|
|
108
172
|
// eslint-disable-next-line no-undef
|
|
109
173
|
return btoa(s);
|
|
110
174
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rva2VuLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJDQSxvREFTQztBQU9ELHdDQXNCQztBQU1ELDBDQUVDO0FBekZELHFDQUEwRDtBQUMxRCwwQ0FBMEM7QUF3QzFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0FBRXRDLFNBQWdCLG9CQUFvQixDQUNsQyxNQUFtQixFQUNuQixVQUErRCxFQUFFO0lBRWpFLE9BQU87UUFDTCxNQUFNO1FBQ04sY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksd0JBQXdCO1FBQ2xFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFLLFVBQVUsQ0FBQyxLQUFzQjtLQUMvRCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLEtBQXVCO0lBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuQixNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDN0MsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsS0FBSyxDQUFDLFFBQVEsR0FBRyxTQUFTLENB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cnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IGdldEV4cGlyeSB9IGZyb20gJy4vYXV0aC9pc3N1ZXInO1xuXG4vKipcbiAqIEhvdyB0aGUgU0RLIGdldHMgYSBmcmVzaCBhY2Nlc3MgdG9rZW4uIFRocmVlIHNoYXBlcyBwZXIgdGhlIGJyaWVmOlxuICpcbiAqICAgLSBgc3RhdGljLXN0cmluZ2Ag4oCUIGNhbGxlciBoYW5kcyBpbiBhIHRva2VuIHN0cmluZy4gVXNlZCB1bnRpbCBpdHNcbiAqICAgICBgZXhwYCBoYXMgcGFzc2VkOyBvbiBleHBpcnkgd2UgdGhyb3cgYFRva2VuRXhwaXJlZEVycm9yYCByYXRoZXJcbiAqICAgICB0aGFuIHRyeSB0byByZWZyZXNoICh0aGUgU0RLIGhhcyBubyB3YXkgdG8gcmVmcmVzaCBhIHN0YXRpY1xuICogICAgIGV4dGVybmFsbHktc3VwcGxpZWQgdG9rZW4pLlxuICpcbiAqICAgLSBgY2FsbGJhY2tgIOKAlCBjYWxsZXIgc3VwcGxpZXMgYSBmdW5jdGlvbiB0aGUgU0RLIGNhbGxzIG9uIG1pc3NcbiAqICAgICBhbmQgb24gNDAxIGludmFsaWRhdGlvbi4gVGhlIGNvbnN1bWVyJ3MgbG9naWMgaXMgcmVzcG9uc2libGUgZm9yXG4gKiAgICAgcmVmcmVzaDsgdGhlIFNESyBqdXN0IGNhY2hlcyB0aGUgcmVzdWx0IGJldHdlZW4gaW52b2NhdGlvbnMuXG4gKlxuICogICAtIGBzZXJ2aWNlLWNyZWRlbnRpYWxzYCDigJQgYGNsaWVudF9pZGAgKyBgY2xpZW50X3NlY3JldGAgZm9yIHRoZVxuICogICAgIE9BdXRoMiBgY2xpZW50X2NyZWRlbnRpYWxzYCBncmFudC4gU0RLIG1pbnRzICsgY2FjaGVzOyBvblxuICogICAgIGV4cGlyeSBpdCByZS1taW50cyB3aXRoIHRoZSBzYW1lIGNyZWRlbnRpYWxzLlxuICovXG5leHBvcnQgdHlwZSBUb2tlblNvdXJjZSA9XG4gIHwgeyBraW5kOiAnc3RhdGljLXN0cmluZyc7IHRva2VuOiBzdHJpbmcgfVxuICB8IHsga2luZDogJ2NhbGxiYWNrJzsgZ2V0VG9rZW46ICgpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB9XG4gIHwge1xuICAgICAga2luZDogJ3NlcnZpY2UtY3JlZGVudGlhbHMnO1xuICAgICAgY2xpZW50SWQ6IHN0cmluZztcbiAgICAgIGNsaWVudFNlY3JldDogc3RyaW5nO1xuICAgICAgYXV0aEJhc2VVcmw6IHN0cmluZztcbiAgICAgIHNjb3BlPzogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5Tb3VyY2VTdGF0ZSB7XG4gIHNvdXJjZTogVG9rZW5Tb3VyY2U7XG4gIGNhY2hlZD86IHsgdG9rZW46IHN0cmluZzsgZXhwaXJlc0F0OiBudW1iZXIgfTtcbiAgLyoqIFJlZnJlc2ggZGVkdXA6IGNvbmN1cnJlbnQgcmVxdWVzdHMgc2hhcmUgdGhlIHNhbWUgZmV0Y2guICovXG4gIGluZmxpZ2h0PzogUHJvbWlzZTx7IHRva2VuOiBzdHJpbmc7IGV4cGlyZXNBdDogbnVtYmVyIH0+O1xuICAvKiogQnVmZmVyIChtcykgYmVmb3JlIGBleHBgIGF0IHdoaWNoIHdlIHRyZWF0IGEgdG9rZW4gYXMgZXhwaXJlZC4gKi9cbiAgZXhwaXJ5QnVmZmVyTXM6IG51bWJlcjtcbiAgLyoqIFVzZWQgb25seSBieSB0aGUgc2VydmljZS1jcmVkZW50aWFscyBwYXRoLiAqL1xuICBmZXRjaEZuOiB0eXBlb2YgZmV0Y2g7XG59XG5cbmNvbnN0IERFRkFVTFRfRVhQSVJZX0JVRkZFUl9NUyA9IDUwMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVG9rZW5Tb3VyY2VTdGF0ZShcbiAgc291cmNlOiBUb2tlblNvdXJjZSxcbiAgb3B0aW9uczogeyBleHBpcnlCdWZmZXJNcz86IG51bWJlcjsgZmV0Y2hGbj86IHR5cGVvZiBmZXRjaCB9ID0ge30sXG4pOiBUb2tlblNvdXJjZVN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBzb3VyY2UsXG4gICAgZXhwaXJ5QnVmZmVyTXM6IG9wdGlvbnMuZXhwaXJ5QnVmZmVyTXMgPz8gREVGQVVMVF9FWFBJUllfQlVGRkVSX01TLFxuICAgIGZldGNoRm46IG9wdGlvbnMuZmV0Y2hGbiA/PyAoZ2xvYmFsVGhpcy5mZXRjaCBhcyB0eXBlb2YgZmV0Y2gpLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybiBhIGZyZXNoIGFjY2VzcyB0b2tlbiwgdXNpbmcgdGhlIGNhY2hlIHdoZW4gd2FybS4gQ29uY3VycmVudFxuICogY2FsbGVycyBkdXJpbmcgYSByZWZyZXNoIHNoYXJlIHRoZSBpbi1mbGlnaHQgUHJvbWlzZSBzbyB3ZSBkb24ndFxuICogc3RhbXBlZGUgdGhlIGF1dGggc2VydmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWNjZXNzVG9rZW4oc3RhdGU6IFRva2VuU291cmNlU3RhdGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBpZiAoc3RhdGUuY2FjaGVkICYmIHN0YXRlLmNhY2hlZC5leHBpcmVzQXQgPiBub3cgKyBzdGF0ZS5leHBpcnlCdWZmZXJNcykge1xuICAgIHJldHVybiBzdGF0ZS5jYWNoZWQudG9rZW47XG4gIH1cbiAgaWYgKHN0YXRlLmluZmxpZ2h0KSB7XG4gICAgY29uc3QgZnJlc2ggPSBhd2FpdCBzdGF0ZS5pbmZsaWdodDtcbiAgICByZXR1cm4gZnJlc2gudG9rZW47XG4gIH1cbiAgY29uc3QgaW5mbGlnaHQgPSBtaW50VG9rZW4oc3RhdGUpLnRoZW4oKHJlcykgPT4ge1xuICAgIHN0YXRlLmNhY2hlZCA9IHJlcztcbiAgICBzdGF0ZS5pbmZsaWdodCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzO1xuICB9KTtcbiAgc3RhdGUuaW5mbGlnaHQgPSBpbmZsaWdodDtcbiAgdHJ5IHtcbiAgICBjb25zdCBmcmVzaCA9IGF3YWl0IGluZmxpZ2h0O1xuICAgIHJldHVybiBmcmVzaC50b2tlbjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3RhdGUuaW5mbGlnaHQgPSB1bmRlZmluZWQ7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICogRHJvcCB0aGUgY2FjaGVkIHRva2VuLiBUaGUgbmV4dCBgZ2V0QWNjZXNzVG9rZW5gIHdpbGwgbWludCBvclxuICogcmUtZmV0Y2guIENhbGxlZCBieSB0aGUgcmVxdWVzdCBsYXllciBvbiA0MDEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlVG9rZW4oc3RhdGU6IFRva2VuU291cmNlU3RhdGUpOiB2b2lkIHtcbiAgc3RhdGUuY2FjaGVkID0gdW5kZWZpbmVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBtaW50VG9rZW4oc3RhdGU6IFRva2VuU291cmNlU3RhdGUpOiBQcm9taXNlPHsgdG9rZW46IHN0cmluZzsgZXhwaXJlc0F0OiBudW1iZXIgfT4ge1xuICBzd2l0Y2ggKHN0YXRlLnNvdXJjZS5raW5kKSB7XG4gICAgY2FzZSAnc3RhdGljLXN0cmluZyc6IHtcbiAgICAgIGNvbnN0IGV4cCA9IGdldEV4cGlyeShzdGF0ZS5zb3VyY2UudG9rZW4pO1xuICAgICAgaWYgKGV4cCAhPT0gbnVsbCAmJiBleHAgKiAxMDAwIDwgRGF0ZS5ub3coKSArIHN0YXRlLmV4cGlyeUJ1ZmZlck1zKSB7XG4gICAgICAgIHRocm93IG5ldyBUb2tlbkV4cGlyZWRFcnJvcihcbiAgICAgICAgICAnc3RhdGljIGFjY2VzcyB0b2tlbiBoYXMgZXhwaXJlZDsgY29uc3VtZXIgbXVzdCB1cGRhdGUgdGhlIGNvbmZpZyB3aXRoIGEgZnJlc2ggdG9rZW4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9rZW46IHN0YXRlLnNvdXJjZS50b2tlbixcbiAgICAgICAgLy8gTm8gYGV4cGA/IFRyZWF0IGFzIG9wYXF1ZSBub24tZXhwaXJpbmc7IGNhY2hlIGZvciAxaCB0byBhdm9pZFxuICAgICAgICAvLyByZS11c2luZyB0aGUgc2FtZSBzdHJpbmcgZm9yZXZlciBpbiBjYXNlIHRoZSBpc3N1ZXIgcm90YXRlcy5cbiAgICAgICAgZXhwaXJlc0F0OiBleHAgIT09IG51bGwgPyBleHAgKiAxMDAwIDogRGF0ZS5ub3coKSArIDYwICogNjAgKiAxMDAwLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnY2FsbGJhY2snOiB7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHN0YXRlLnNvdXJjZS5nZXRUb2tlbigpO1xuICAgICAgY29uc3QgZXhwID0gZ2V0RXhwaXJ5KHRva2VuKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRva2VuLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cCAhPT0gbnVsbCA/IGV4cCAqIDEwMDAgOiBEYXRlLm5vdygpICsgNSAqIDYwICogMTAwMCxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ3NlcnZpY2UtY3JlZGVudGlhbHMnOiB7XG4gICAgICBjb25zdCBib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGdyYW50X3R5cGU6ICdjbGllbnRfY3JlZGVudGlhbHMnIH0pO1xuICAgICAgaWYgKHN0YXRlLnNvdXJjZS5zY29wZSkgYm9keS5zZXQoJ3Njb3BlJywgc3RhdGUuc291cmNlLnNjb3BlKTtcbiAgICAgIGNvbnN0IGJhc2ljID0gYmFzZTY0KGAke3N0YXRlLnNvdXJjZS5jbGllbnRJZH06JHtzdGF0ZS5zb3VyY2UuY2xpZW50U2VjcmV0fWApO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgc3RhdGUuZmV0Y2hGbihgJHtzdGF0ZS5zb3VyY2UuYXV0aEJhc2VVcmx9L29hdXRoL3Rva2VuYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgICBhdXRob3JpemF0aW9uOiBgQmFzaWMgJHtiYXNpY31gLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5LnRvU3RyaW5nKCksXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuICAgICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoYGNsaWVudF9jcmVkZW50aWFscyBtaW50IGZhaWxlZDogSFRUUCAke3Jlcy5zdGF0dXN9ICR7dGV4dH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb24gPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgeyBhY2Nlc3NfdG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNfaW4/OiBudW1iZXIgfTtcbiAgICAgIGlmICghanNvbi5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ0Vycm9yKCdhdXRoIHNlcnZlciByZXNwb25zZSBtaXNzaW5nIGFjY2Vzc190b2tlbicpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHRsID0gKGpzb24uZXhwaXJlc19pbiA/PyAwKSAqIDEwMDA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b2tlbjoganNvbi5hY2Nlc3NfdG9rZW4sXG4gICAgICAgIGV4cGlyZXNBdDogdHRsID4gMCA/IERhdGUubm93KCkgKyB0dGwgOiBEYXRlLm5vdygpICsgNSAqIDYwICogMTAwMCxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NChzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBXb3JrcyBpbiBOb2RlIGFuZCBicm93c2VyIChCdWZmZXIgaXMgcG9seWZpbGxlZCB2aWEgQHR5cGVzL25vZGUgYW5kXG4gIC8vIG1vc3QgYnVuZGxlcnM7IGJ0b2EgaXMgYSBmYWxsYmFjayBmb3IgZW52cyB3aXRob3V0IEJ1ZmZlcikuXG4gIGlmICh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIEJ1ZmZlci5mcm9tKHMsICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgcmV0dXJuIGJ0b2Eocyk7XG59XG4iXX0=
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rva2VuLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9FQSxvREFTQztBQU9ELHdDQXNCQztBQU1ELDBDQUVDO0FBbEhELHFDQUEwRDtBQUMxRCwwQ0FBMEM7QUFpRTFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0FBRXRDLFNBQWdCLG9CQUFvQixDQUNsQyxNQUFtQixFQUNuQixVQUErRCxFQUFFO0lBRWpFLE9BQU87UUFDTCxNQUFNO1FBQ04sY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksd0JBQXdCO1FBQ2xFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFLLFVBQVUsQ0FBQyxLQUFzQjtLQUMvRCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLEtBQXVCO0lBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuQixNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDN0MsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7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QUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BGLG9DQUFvQztJQUNwQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnRXJyb3IsIFRva2VuRXhwaXJlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgZ2V0RXhwaXJ5IH0gZnJvbSAnLi9hdXRoL2lzc3Vlcic7XG5cbi8qKlxuICogSG93IHRoZSBTREsgZ2V0cyBhIGZyZXNoIGFjY2VzcyB0b2tlbi4gVGhyZWUgc2hhcGVzIHBlciB0aGUgYnJpZWY6XG4gKlxuICogICAtIGBzdGF0aWMtc3RyaW5nYCDigJQgY2FsbGVyIGhhbmRzIGluIGEgdG9rZW4gc3RyaW5nLiBVc2VkIHVudGlsIGl0c1xuICogICAgIGBleHBgIGhhcyBwYXNzZWQ7IG9uIGV4cGlyeSB3ZSB0aHJvdyBgVG9rZW5FeHBpcmVkRXJyb3JgIHJhdGhlclxuICogICAgIHRoYW4gdHJ5IHRvIHJlZnJlc2ggKHRoZSBTREsgaGFzIG5vIHdheSB0byByZWZyZXNoIGEgc3RhdGljXG4gKiAgICAgZXh0ZXJuYWxseS1zdXBwbGllZCB0b2tlbikuXG4gKlxuICogICAtIGBjYWxsYmFja2Ag4oCUIGNhbGxlciBzdXBwbGllcyBhIGZ1bmN0aW9uIHRoZSBTREsgY2FsbHMgb24gbWlzc1xuICogICAgIGFuZCBvbiA0MDEgaW52YWxpZGF0aW9uLiBUaGUgY29uc3VtZXIncyBsb2dpYyBpcyByZXNwb25zaWJsZSBmb3JcbiAqICAgICByZWZyZXNoOyB0aGUgU0RLIGp1c3QgY2FjaGVzIHRoZSByZXN1bHQgYmV0d2VlbiBpbnZvY2F0aW9ucy5cbiAqXG4gKiAgIC0gYHNlcnZpY2UtY3JlZGVudGlhbHNgIOKAlCBgY2xpZW50X2lkYCArIGBjbGllbnRfc2VjcmV0YCBmb3IgdGhlXG4gKiAgICAgT0F1dGgyIGBjbGllbnRfY3JlZGVudGlhbHNgIGdyYW50LiBTREsgbWludHMgKyBjYWNoZXM7IG9uXG4gKiAgICAgZXhwaXJ5IGl0IHJlLW1pbnRzIHdpdGggdGhlIHNhbWUgY3JlZGVudGlhbHMuXG4gKi9cbmV4cG9ydCB0eXBlIFRva2VuU291cmNlID1cbiAgfCB7IGtpbmQ6ICdzdGF0aWMtc3RyaW5nJzsgdG9rZW46IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnY2FsbGJhY2snOyBnZXRUb2tlbjogKCkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IH1cbiAgfCB7XG4gICAgICBraW5kOiAnc2VydmljZS1jcmVkZW50aWFscyc7XG4gICAgICBjbGllbnRJZDogc3RyaW5nO1xuICAgICAgY2xpZW50U2VjcmV0OiBzdHJpbmc7XG4gICAgICBhdXRoQmFzZVVybDogc3RyaW5nO1xuICAgICAgc2NvcGU/OiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIC8qKlxuICAgICAgICogQ2FsbGVyIGhhbmRzIHRoZSBTREsgYSBgKGFjY2Vzc1Rva2VuLCByZWZyZXNoVG9rZW4pYCBwYWlyIGZyb21cbiAgICAgICAqIGEgZmluaXNoZWQgbG9naW4gZmxvdyAoYGF1dGgubG9naW5XaXRoUGFzc3dvcmQoLi4uKWAsXG4gICAgICAgKiBgYXV0aC52ZXJpZnlPdHAoLi4uKWAsIGV0YykuIFRoZSBTREsgc2VydmVzIHRoZSBhY2Nlc3MgdG9rZW5cbiAgICAgICAqIHVudGlsIGl0IGV4cGlyZXMsIHRoZW4gcm90YXRlcyB2aWEgYGF1dGgucmVmcmVzaCguLi4pYC5cbiAgICAgICAqXG4gICAgICAgKiBgY2xpZW50SWRgIGlzIHRoZSBPQXV0aCBjbGllbnQgaWQgdXNlZCBkdXJpbmcgdGhlIG9yaWdpbmFsXG4gICAgICAgKiBsb2dpbiDigJQgcmVxdWlyZWQgYnkgdGhlIHJlZnJlc2ggaGFuZGxlci4gYG9uUm90YXRlYCBpcyBhblxuICAgICAgICogb3B0aW9uYWwgaG9vayB0aGUgY2FsbGVyIGNhbiB1c2UgdG8gcGVyc2lzdCB0aGUgbmV3IHBhaXJcbiAgICAgICAqIChjb29raWUsIHNlY3VyZSBzdG9yYWdlLCBldGMpIOKAlCBmaXJlZCB3aXRoIGV2ZXJ5IHN1Y2Nlc3NmdWxcbiAgICAgICAqIHJvdGF0aW9uLlxuICAgICAgICovXG4gICAgICBraW5kOiAnYWNjZXNzLXJlZnJlc2gtcGFpcic7XG4gICAgICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICAgICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gICAgICAvKiogSW5pdGlhbCBleHBpcnkgdGltZXN0YW1wIChtcyBzaW5jZSBlcG9jaCkuIFJlLWRlcml2ZWQgZnJvbSBlYWNoIG5ldyBhY2Nlc3MgdG9rZW4uICovXG4gICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgIGNsaWVudElkOiBzdHJpbmc7XG4gICAgICBvblJvdGF0ZT86IChwYWlyOiB7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gICAgICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICAgICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgIH0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5Tb3VyY2VTdGF0ZSB7XG4gIHNvdXJjZTogVG9rZW5Tb3VyY2U7XG4gIGNhY2hlZD86IHsgdG9rZW46IHN0cmluZzsgZXhwaXJlc0F0OiBudW1iZXIgfTtcbiAgLyoqIFJlZnJlc2ggZGVkdXA6IGNvbmN1cnJlbnQgcmVxdWVzdHMgc2hhcmUgdGhlIHNhbWUgZmV0Y2guICovXG4gIGluZmxpZ2h0PzogUHJvbWlzZTx7IHRva2VuOiBzdHJpbmc7IGV4cGlyZXNBdDogbnVtYmVyIH0+O1xuICAvKiogQnVmZmVyIChtcykgYmVmb3JlIGBleHBgIGF0IHdoaWNoIHdlIHRyZWF0IGEgdG9rZW4gYXMgZXhwaXJlZC4gKi9cbiAgZXhwaXJ5QnVmZmVyTXM6IG51bWJlcjtcbiAgLyoqIFVzZWQgb25seSBieSB0aGUgc2VydmljZS1jcmVkZW50aWFscyBwYXRoLiAqL1xuICBmZXRjaEZuOiB0eXBlb2YgZmV0Y2g7XG59XG5cbmNvbnN0IERFRkFVTFRfRVhQSVJZX0JVRkZFUl9NUyA9IDUwMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVG9rZW5Tb3VyY2VTdGF0ZShcbiAgc291cmNlOiBUb2tlblNvdXJjZSxcbiAgb3B0aW9uczogeyBleHBpcnlCdWZmZXJNcz86IG51bWJlcjsgZmV0Y2hGbj86IHR5cGVvZiBmZXRjaCB9ID0ge30sXG4pOiBUb2tlblNvdXJjZVN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBzb3VyY2UsXG4gICAgZXhwaXJ5QnVmZmVyTXM6IG9wdGlvbnMuZXhwaXJ5QnVmZmVyTXMgPz8gREVGQVVMVF9FWFBJUllfQlVGRkVSX01TLFxuICAgIGZldGNoRm46IG9wdGlvbnMuZmV0Y2hGbiA/PyAoZ2xvYmFsVGhpcy5mZXRjaCBhcyB0eXBlb2YgZmV0Y2gpLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybiBhIGZyZXNoIGFjY2VzcyB0b2tlbiwgdXNpbmcgdGhlIGNhY2hlIHdoZW4gd2FybS4gQ29uY3VycmVudFxuICogY2FsbGVycyBkdXJpbmcgYSByZWZyZXNoIHNoYXJlIHRoZSBpbi1mbGlnaHQgUHJvbWlzZSBzbyB3ZSBkb24ndFxuICogc3RhbXBlZGUgdGhlIGF1dGggc2VydmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWNjZXNzVG9rZW4oc3RhdGU6IFRva2VuU291cmNlU3RhdGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBpZiAoc3RhdGUuY2FjaGVkICYmIHN0YXRlLmNhY2hlZC5leHBpcmVzQXQgPiBub3cgKyBzdGF0ZS5leHBpcnlCdWZmZXJNcykge1xuICAgIHJldHVybiBzdGF0ZS5jYWNoZWQudG9rZW47XG4gIH1cbiAgaWYgKHN0YXRlLmluZmxpZ2h0KSB7XG4gICAgY29uc3QgZnJlc2ggPSBhd2FpdCBzdGF0ZS5pbmZsaWdodDtcbiAgICByZXR1cm4gZnJlc2gudG9rZW47XG4gIH1cbiAgY29uc3QgaW5mbGlnaHQgPSBtaW50VG9rZW4oc3RhdGUpLnRoZW4oKHJlcykgPT4ge1xuICAgIHN0YXRlLmNhY2hlZCA9IHJlcztcbiAgICBzdGF0ZS5pbmZsaWdodCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzO1xuICB9KTtcbiAgc3RhdGUuaW5mbGlnaHQgPSBpbmZsaWdodDtcbiAgdHJ5IHtcbiAgICBjb25zdCBmcmVzaCA9IGF3YWl0IGluZmxpZ2h0O1xuICAgIHJldHVybiBmcmVzaC50b2tlbjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3RhdGUuaW5mbGlnaHQgPSB1bmRlZmluZWQ7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICogRHJvcCB0aGUgY2FjaGVkIHRva2VuLiBUaGUgbmV4dCBgZ2V0QWNjZXNzVG9rZW5gIHdpbGwgbWludCBvclxuICogcmUtZmV0Y2guIENhbGxlZCBieSB0aGUgcmVxdWVzdCBsYXllciBvbiA0MDEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlVG9rZW4oc3RhdGU6IFRva2VuU291cmNlU3RhdGUpOiB2b2lkIHtcbiAgc3RhdGUuY2FjaGVkID0gdW5kZWZpbmVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBtaW50VG9rZW4oc3RhdGU6IFRva2VuU291cmNlU3RhdGUpOiBQcm9taXNlPHsgdG9rZW46IHN0cmluZzsgZXhwaXJlc0F0OiBudW1iZXIgfT4ge1xuICBzd2l0Y2ggKHN0YXRlLnNvdXJjZS5raW5kKSB7XG4gICAgY2FzZSAnc3RhdGljLXN0cmluZyc6IHtcbiAgICAgIGNvbnN0IGV4cCA9IGdldEV4cGlyeShzdGF0ZS5zb3VyY2UudG9rZW4pO1xuICAgICAgaWYgKGV4cCAhPT0gbnVsbCAmJiBleHAgKiAxMDAwIDwgRGF0ZS5ub3coKSArIHN0YXRlLmV4cGlyeUJ1ZmZlck1zKSB7XG4gICAgICAgIHRocm93IG5ldyBUb2tlbkV4cGlyZWRFcnJvcihcbiAgICAgICAgICAnc3RhdGljIGFjY2VzcyB0b2tlbiBoYXMgZXhwaXJlZDsgY29uc3VtZXIgbXVzdCB1cGRhdGUgdGhlIGNvbmZpZyB3aXRoIGEgZnJlc2ggdG9rZW4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9rZW46IHN0YXRlLnNvdXJjZS50b2tlbixcbiAgICAgICAgLy8gTm8gYGV4cGA/IFRyZWF0IGFzIG9wYXF1ZSBub24tZXhwaXJpbmc7IGNhY2hlIGZvciAxaCB0byBhdm9pZFxuICAgICAgICAvLyByZS11c2luZyB0aGUgc2FtZSBzdHJpbmcgZm9yZXZlciBpbiBjYXNlIHRoZSBpc3N1ZXIgcm90YXRlcy5cbiAgICAgICAgZXhwaXJlc0F0OiBleHAgIT09IG51bGwgPyBleHAgKiAxMDAwIDogRGF0ZS5ub3coKSArIDYwICogNjAgKiAxMDAwLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnY2FsbGJhY2snOiB7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHN0YXRlLnNvdXJjZS5nZXRUb2tlbigpO1xuICAgICAgY29uc3QgZXhwID0gZ2V0RXhwaXJ5KHRva2VuKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRva2VuLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cCAhPT0gbnVsbCA/IGV4cCAqIDEwMDAgOiBEYXRlLm5vdygpICsgNSAqIDYwICogMTAwMCxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ3NlcnZpY2UtY3JlZGVudGlhbHMnOiB7XG4gICAgICBjb25zdCBib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGdyYW50X3R5cGU6ICdjbGllbnRfY3JlZGVudGlhbHMnIH0pO1xuICAgICAgaWYgKHN0YXRlLnNvdXJjZS5zY29wZSkgYm9keS5zZXQoJ3Njb3BlJywgc3RhdGUuc291cmNlLnNjb3BlKTtcbiAgICAgIGNvbnN0IGJhc2ljID0gYmFzZTY0KGAke3N0YXRlLnNvdXJjZS5jbGllbnRJZH06JHtzdGF0ZS5zb3VyY2UuY2xpZW50U2VjcmV0fWApO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgc3RhdGUuZmV0Y2hGbihgJHtzdGF0ZS5zb3VyY2UuYXV0aEJhc2VVcmx9L29hdXRoL3Rva2VuYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgICBhdXRob3JpemF0aW9uOiBgQmFzaWMgJHtiYXNpY31gLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5LnRvU3RyaW5nKCksXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuICAgICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoYGNsaWVudF9jcmVkZW50aWFscyBtaW50IGZhaWxlZDogSFRUUCAke3Jlcy5zdGF0dXN9ICR7dGV4dH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb24gPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgeyBhY2Nlc3NfdG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNfaW4/OiBudW1iZXIgfTtcbiAgICAgIGlmICghanNvbi5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ0Vycm9yKCdhdXRoIHNlcnZlciByZXNwb25zZSBtaXNzaW5nIGFjY2Vzc190b2tlbicpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHRsID0gKGpzb24uZXhwaXJlc19pbiA/PyAwKSAqIDEwMDA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b2tlbjoganNvbi5hY2Nlc3NfdG9rZW4sXG4gICAgICAgIGV4cGlyZXNBdDogdHRsID4gMCA/IERhdGUubm93KCkgKyB0dGwgOiBEYXRlLm5vdygpICsgNSAqIDYwICogMTAwMCxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ2FjY2Vzcy1yZWZyZXNoLXBhaXInOiB7XG4gICAgICAvLyBGaXJzdCBjYWxsOiBzZXJ2ZSB0aGUgc2VlZCBhY2Nlc3MgdG9rZW4gaWYgaXQgaGFzbid0IGV4cGlyZWQuXG4gICAgICAvLyBTdWJzZXF1ZW50IGNhbGxzIChvciBvbiBhIHN0YWxlIHNlZWQpIHJvdGF0ZSB2aWEgYXV0aC5yZWZyZXNoKCkuXG4gICAgICBjb25zdCBzb3VyY2UgPSBzdGF0ZS5zb3VyY2U7XG4gICAgICBpZiAoRGF0ZS5ub3coKSArIHN0YXRlLmV4cGlyeUJ1ZmZlck1zIDwgc291cmNlLmV4cGlyZXNBdCkge1xuICAgICAgICByZXR1cm4geyB0b2tlbjogc291cmNlLmFjY2Vzc1Rva2VuLCBleHBpcmVzQXQ6IHNvdXJjZS5leHBpcmVzQXQgfTtcbiAgICAgIH1cbiAgICAgIC8vIER5bmFtaWMgaW1wb3J0IGtlZXBzIGBhdXRoYCBvdXQgb2YgdGhlIGJ1bmRsZSB3aGVuIHRoaXMga2luZCBpc24ndCB1c2VkLlxuICAgICAgY29uc3QgeyByZWZyZXNoIH0gPSBhd2FpdCBpbXBvcnQoJy4vYXV0aC9yZWZyZXNoJyk7XG4gICAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCByZWZyZXNoKHtcbiAgICAgICAgYWNjZXNzVG9rZW46IHNvdXJjZS5hY2Nlc3NUb2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiBzb3VyY2UucmVmcmVzaFRva2VuLFxuICAgICAgICBjbGllbnRJZDogc291cmNlLmNsaWVudElkLFxuICAgICAgfSk7XG4gICAgICBpZiAoIXRva2Vucy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ0Vycm9yKCdyZWZyZXNoIHJlc3BvbnNlIG1pc3NpbmcgcmVmcmVzaF90b2tlbjsgY2Fubm90IHJvdGF0ZSBhZ2FpbicpO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwaXJlc0F0ID0gRGF0ZS5ub3coKSArIHRva2Vucy5leHBpcmVzSW4gKiAxMDAwO1xuICAgICAgLy8gTXV0YXRlIHRoZSBzb3VyY2UgaW4gcGxhY2Ugc28gc3Vic2VxdWVudCByb3RhdGlvbnMgY2FycnkgdGhlIG5ldyBwYWlyLlxuICAgICAgc291cmNlLmFjY2Vzc1Rva2VuID0gdG9rZW5zLmFjY2Vzc1Rva2VuO1xuICAgICAgc291cmNlLnJlZnJlc2hUb2tlbiA9IHRva2Vucy5yZWZyZXNoVG9rZW47XG4gICAgICBzb3VyY2UuZXhwaXJlc0F0ID0gZXhwaXJlc0F0O1xuICAgICAgaWYgKHNvdXJjZS5vblJvdGF0ZSkge1xuICAgICAgICBhd2FpdCBzb3VyY2Uub25Sb3RhdGUoe1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbnMuYWNjZXNzVG9rZW4sXG4gICAgICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbnMucmVmcmVzaFRva2VuLFxuICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4geyB0b2tlbjogdG9rZW5zLmFjY2Vzc1Rva2VuLCBleHBpcmVzQXQgfTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0KHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFdvcmtzIGluIE5vZGUgYW5kIGJyb3dzZXIgKEJ1ZmZlciBpcyBwb2x5ZmlsbGVkIHZpYSBAdHlwZXMvbm9kZSBhbmRcbiAgLy8gbW9zdCBidW5kbGVyczsgYnRvYSBpcyBhIGZhbGxiYWNrIGZvciBlbnZzIHdpdGhvdXQgQnVmZmVyKS5cbiAgaWYgKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gQnVmZmVyLmZyb20ocywgJ3V0ZjgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICByZXR1cm4gYnRvYShzKTtcbn1cbiJdfQ==
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
|
@@ -8,5 +8,5 @@ exports.SDK_VERSION = void 0;
|
|
|
8
8
|
* (TS lib settings dependent) or a build-time replacement, and the
|
|
9
9
|
* cost of one bump-in-two-places per release is small.
|
|
10
10
|
*/
|
|
11
|
-
exports.SDK_VERSION = '0.
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
exports.SDK_VERSION = '0.9.1';
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7R0FNRztBQUNVLFFBQUEsV0FBVyxHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWFudWFsbHktbWFpbnRhaW5lZCB2ZXJzaW9uIHN0cmluZyBzdXJmYWNlZCB2aWEgdGhlIGBVc2VyLUFnZW50YFxuICogaGVhZGVyLiBLZXB0IGluIHN5bmMgd2l0aCBgcGFja2FnZS5qc29uYCBieSBoYW5kIGJlY2F1c2UgcHVsbGluZyB0aGVcbiAqIHZhbHVlIGZyb20gcGFja2FnZS5qc29uIGF0IHJ1bnRpbWUgd291bGQgcmVxdWlyZSBlaXRoZXIgYSBKU09OIGltcG9ydFxuICogKFRTIGxpYiBzZXR0aW5ncyBkZXBlbmRlbnQpIG9yIGEgYnVpbGQtdGltZSByZXBsYWNlbWVudCwgYW5kIHRoZVxuICogY29zdCBvZiBvbmUgYnVtcC1pbi10d28tcGxhY2VzIHBlciByZWxlYXNlIGlzIHNtYWxsLlxuICovXG5leHBvcnQgY29uc3QgU0RLX1ZFUlNJT04gPSAnMC45LjEnO1xuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type PlatformAuth, type PlatformAuthInput, type PlatformConfigInput } from '../config';
|
|
2
|
+
import type { ContainingInput, Zone, ZoneCreateInput, ZoneCreateResult, ZoneListOptions, ZoneListPage, ZonePatchInput, ZoneReplaceInput, ZoneSummary } from './schema';
|
|
3
|
+
export interface ZonesClient {
|
|
4
|
+
config(input: PlatformConfigInput): ZonesClient;
|
|
5
|
+
auth(input: PlatformAuthInput | PlatformAuth): ZonesClient;
|
|
6
|
+
/** POST /v1/zones - create a single zone. */
|
|
7
|
+
create(input: ZoneCreateInput): Promise<ZoneCreateResult>;
|
|
8
|
+
/** GET /v1/zones/{zid} - returns the full zone or throws ZonesApiError(404). */
|
|
9
|
+
get(zid: string): Promise<Zone>;
|
|
10
|
+
/** PATCH /v1/zones/{zid} - shallow tag merge; null deletes a key. */
|
|
11
|
+
update(zid: string, input: ZonePatchInput): Promise<Zone>;
|
|
12
|
+
/** PUT /v1/zones/{zid} - full replace of geometry + tags. */
|
|
13
|
+
replace(zid: string, input: ZoneReplaceInput): Promise<Zone>;
|
|
14
|
+
/** DELETE /v1/zones/{zid} - 404 if not present. */
|
|
15
|
+
delete(zid: string): Promise<void>;
|
|
16
|
+
/** GET /v1/zones?tags=... - tag-filtered, keyset-paginated listing. */
|
|
17
|
+
list(opts?: ZoneListOptions): Promise<ZoneListPage>;
|
|
18
|
+
/** POST /v1/zones/batch/create - bounded array; returned in input order. */
|
|
19
|
+
createMany(zones: readonly ZoneCreateInput[]): Promise<{
|
|
20
|
+
zones: Array<{
|
|
21
|
+
zid: string;
|
|
22
|
+
}>;
|
|
23
|
+
}>;
|
|
24
|
+
/** POST /v1/zones/batch/delete - returns the count actually deleted. */
|
|
25
|
+
deleteMany(zids: readonly string[]): Promise<{
|
|
26
|
+
deleted: number;
|
|
27
|
+
}>;
|
|
28
|
+
/** POST /v1/zones/containing - the spatial primitive. */
|
|
29
|
+
containing(input: ContainingInput): Promise<ZoneSummary[]>;
|
|
30
|
+
/** Sugar over containing({ point, ids: [zid] }). True iff the zone contains the point. */
|
|
31
|
+
contains(zid: string, point: ContainingInput['point']): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
export declare class ZonesApiError extends Error {
|
|
34
|
+
readonly status: number;
|
|
35
|
+
readonly body: string;
|
|
36
|
+
constructor(status: number, body: string);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build the `zones` namespace.
|
|
40
|
+
*
|
|
41
|
+
* Shape and contract mirror {@link createBusinessClient} - lazy config
|
|
42
|
+
* resolution via {@link ConfigState}, shared 401-retry via
|
|
43
|
+
* {@link sendWithAuthRetry}, immutable per-call config; no globals.
|
|
44
|
+
*
|
|
45
|
+
* Writes (`create`, `update`, `replace`, `delete`, batch ops) require a
|
|
46
|
+
* service-actor token. Reads (`get`, `list`, `containing`, `contains`)
|
|
47
|
+
* accept either a service-actor or a user-actor token. The SDK does not
|
|
48
|
+
* enforce this - the server returns 401/403 and we surface it as
|
|
49
|
+
* {@link ZonesApiError}.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createZonesClient(input?: PlatformConfigInput): ZonesClient;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZonesApiError = void 0;
|
|
4
|
+
exports.createZonesClient = createZonesClient;
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const http_1 = require("../http");
|
|
7
|
+
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
8
|
+
class ZonesApiError extends Error {
|
|
9
|
+
status;
|
|
10
|
+
body;
|
|
11
|
+
constructor(status, body) {
|
|
12
|
+
super(`zones API ${status}: ${body}`);
|
|
13
|
+
this.name = 'ZonesApiError';
|
|
14
|
+
this.status = status;
|
|
15
|
+
this.body = body;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ZonesApiError = ZonesApiError;
|
|
19
|
+
function assertUuid(label, zid) {
|
|
20
|
+
if (typeof zid !== 'string' || !UUID_REGEX.test(zid)) {
|
|
21
|
+
throw new Error(`zones.${label}: zid must be a uuid (got ${JSON.stringify(zid)})`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function assertPoint(label, point) {
|
|
25
|
+
const lat = point?.lat;
|
|
26
|
+
const lng = point?.lng;
|
|
27
|
+
if (typeof lat !== 'number' || typeof lng !== 'number') {
|
|
28
|
+
throw new Error(`zones.${label}: point must be { lat: number, lng: number }`);
|
|
29
|
+
}
|
|
30
|
+
if (!Number.isFinite(lat) || lat < -90 || lat > 90) {
|
|
31
|
+
throw new Error(`zones.${label}: lat must be in [-90, 90] (got ${lat})`);
|
|
32
|
+
}
|
|
33
|
+
if (!Number.isFinite(lng) || lng < -180 || lng > 180) {
|
|
34
|
+
throw new Error(`zones.${label}: lng must be in [-180, 180] (got ${lng})`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build the `zones` namespace.
|
|
39
|
+
*
|
|
40
|
+
* Shape and contract mirror {@link createBusinessClient} - lazy config
|
|
41
|
+
* resolution via {@link ConfigState}, shared 401-retry via
|
|
42
|
+
* {@link sendWithAuthRetry}, immutable per-call config; no globals.
|
|
43
|
+
*
|
|
44
|
+
* Writes (`create`, `update`, `replace`, `delete`, batch ops) require a
|
|
45
|
+
* service-actor token. Reads (`get`, `list`, `containing`, `contains`)
|
|
46
|
+
* accept either a service-actor or a user-actor token. The SDK does not
|
|
47
|
+
* enforce this - the server returns 401/403 and we surface it as
|
|
48
|
+
* {@link ZonesApiError}.
|
|
49
|
+
*/
|
|
50
|
+
function createZonesClient(input = {}) {
|
|
51
|
+
const state = new config_1.ConfigState();
|
|
52
|
+
state.apply(input);
|
|
53
|
+
async function send(method, path, query, body) {
|
|
54
|
+
const config = state.resolve();
|
|
55
|
+
const url = `${config.baseUrl}${path}${query ?? ''}`;
|
|
56
|
+
const payload = body === undefined ? undefined : JSON.stringify(body);
|
|
57
|
+
return (0, http_1.sendWithAuthRetry)(config, { method, path, url, body: payload });
|
|
58
|
+
}
|
|
59
|
+
async function expectJson(res) {
|
|
60
|
+
if (!res.ok)
|
|
61
|
+
throw new ZonesApiError(res.status, await res.text());
|
|
62
|
+
return (await res.json());
|
|
63
|
+
}
|
|
64
|
+
const client = {
|
|
65
|
+
config(opts) {
|
|
66
|
+
state.apply(opts);
|
|
67
|
+
return client;
|
|
68
|
+
},
|
|
69
|
+
auth(opts) {
|
|
70
|
+
state.setAuth(opts);
|
|
71
|
+
return client;
|
|
72
|
+
},
|
|
73
|
+
async create(input) {
|
|
74
|
+
if (!input || typeof input !== 'object') {
|
|
75
|
+
throw new Error('zones.create: input must be an object with `geometry`');
|
|
76
|
+
}
|
|
77
|
+
const res = await send('POST', '/v1/zones', undefined, input);
|
|
78
|
+
return expectJson(res);
|
|
79
|
+
},
|
|
80
|
+
async get(zid) {
|
|
81
|
+
assertUuid('get', zid);
|
|
82
|
+
const res = await send('GET', `/v1/zones/${zid}`);
|
|
83
|
+
return expectJson(res);
|
|
84
|
+
},
|
|
85
|
+
async update(zid, input) {
|
|
86
|
+
assertUuid('update', zid);
|
|
87
|
+
const res = await send('PATCH', `/v1/zones/${zid}`, undefined, input);
|
|
88
|
+
return expectJson(res);
|
|
89
|
+
},
|
|
90
|
+
async replace(zid, input) {
|
|
91
|
+
assertUuid('replace', zid);
|
|
92
|
+
const res = await send('PUT', `/v1/zones/${zid}`, undefined, input);
|
|
93
|
+
return expectJson(res);
|
|
94
|
+
},
|
|
95
|
+
async delete(zid) {
|
|
96
|
+
assertUuid('delete', zid);
|
|
97
|
+
const res = await send('DELETE', `/v1/zones/${zid}`);
|
|
98
|
+
if (res.status === 204)
|
|
99
|
+
return;
|
|
100
|
+
if (!res.ok)
|
|
101
|
+
throw new ZonesApiError(res.status, await res.text());
|
|
102
|
+
},
|
|
103
|
+
async list(opts = {}) {
|
|
104
|
+
const params = new URLSearchParams();
|
|
105
|
+
if (opts.tags !== undefined)
|
|
106
|
+
params.set('tags', JSON.stringify(opts.tags));
|
|
107
|
+
if (opts.cursor !== undefined)
|
|
108
|
+
params.set('cursor', opts.cursor);
|
|
109
|
+
if (opts.limit !== undefined) {
|
|
110
|
+
if (!Number.isInteger(opts.limit) || opts.limit <= 0) {
|
|
111
|
+
throw new Error(`zones.list: limit must be a positive integer (got ${opts.limit})`);
|
|
112
|
+
}
|
|
113
|
+
params.set('limit', String(opts.limit));
|
|
114
|
+
}
|
|
115
|
+
const qs = params.toString();
|
|
116
|
+
const res = await send('GET', '/v1/zones', qs.length ? `?${qs}` : undefined);
|
|
117
|
+
return expectJson(res);
|
|
118
|
+
},
|
|
119
|
+
async createMany(zones) {
|
|
120
|
+
if (!Array.isArray(zones) || zones.length === 0) {
|
|
121
|
+
throw new Error('zones.createMany: zones must be a non-empty array');
|
|
122
|
+
}
|
|
123
|
+
const res = await send('POST', '/v1/zones/batch/create', undefined, { zones });
|
|
124
|
+
return expectJson(res);
|
|
125
|
+
},
|
|
126
|
+
async deleteMany(zids) {
|
|
127
|
+
if (!Array.isArray(zids) || zids.length === 0) {
|
|
128
|
+
throw new Error('zones.deleteMany: zids must be a non-empty array');
|
|
129
|
+
}
|
|
130
|
+
for (const zid of zids)
|
|
131
|
+
assertUuid('deleteMany', zid);
|
|
132
|
+
const res = await send('POST', '/v1/zones/batch/delete', undefined, { zids });
|
|
133
|
+
return expectJson(res);
|
|
134
|
+
},
|
|
135
|
+
async containing(input) {
|
|
136
|
+
if (!input || typeof input !== 'object') {
|
|
137
|
+
throw new Error('zones.containing: input must include `point`');
|
|
138
|
+
}
|
|
139
|
+
assertPoint('containing', input.point);
|
|
140
|
+
if (input.ids !== undefined) {
|
|
141
|
+
for (const zid of input.ids)
|
|
142
|
+
assertUuid('containing', zid);
|
|
143
|
+
}
|
|
144
|
+
const res = await send('POST', '/v1/zones/containing', undefined, input);
|
|
145
|
+
const body = await expectJson(res);
|
|
146
|
+
return body.zones;
|
|
147
|
+
},
|
|
148
|
+
async contains(zid, point) {
|
|
149
|
+
assertUuid('contains', zid);
|
|
150
|
+
const matches = await client.containing({ point, ids: [zid] });
|
|
151
|
+
return matches.length > 0;
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
return client;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3pvbmVzL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2RkEsOENBcUhDO0FBbE5ELHNDQUttQjtBQUNuQixrQ0FBNEM7QUFhNUMsTUFBTSxVQUFVLEdBQUcsaUVBQWlFLENBQUM7QUE2QnJGLE1BQWEsYUFBYyxTQUFRLEtBQUs7SUFDN0IsTUFBTSxDQUFTO0lBQ2YsSUFBSSxDQUFTO0lBRXRCLFlBQVksTUFBYyxFQUFFLElBQVk7UUFDdEMsS0FBSyxDQUFDLGFBQWEsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBVkQsc0NBVUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFhLEVBQUUsR0FBVztJQUM1QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyw2QkFBNkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFhLEVBQUUsS0FBbUM7SUFDckUsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUN2QixNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDO0lBQ3ZCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFL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R0FBRyxNQUFNLFVBQVUsQ0FBMkIsR0FBRyxDQUFDLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7UUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLO1lBQ3ZCLFVBQVUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLENBQUM7S0FDRixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbmZpZ1N0YXRlLFxuICB0eXBlIFBsYXRmb3JtQXV0aCxcbiAgdHlwZSBQbGF0Zm9ybUF1dGhJbnB1dCxcbiAgdHlwZSBQbGF0Zm9ybUNvbmZpZ0lucHV0LFxufSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgc2VuZFdpdGhBdXRoUmV0cnkgfSBmcm9tICcuLi9odHRwJztcbmltcG9ydCB0eXBlIHtcbiAgQ29udGFpbmluZ0lucHV0LFxuICBab25lLFxuICBab25lQ3JlYXRlSW5wdXQsXG4gIFpvbmVDcmVhdGVSZXN1bHQsXG4gIFpvbmVMaXN0T3B0aW9ucyxcbiAgWm9uZUxpc3RQYWdlLFxuICBab25lUGF0Y2hJbnB1dCxcbiAgWm9uZVJlcGxhY2VJbnB1dCxcbiAgWm9uZVN1bW1hcnksXG59IGZyb20gJy4vc2NoZW1hJztcblxuY29uc3QgVVVJRF9SRUdFWCA9IC9eWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JC9pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFpvbmVzQ2xpZW50IHtcbiAgY29uZmlnKGlucHV0OiBQbGF0Zm9ybUNvbmZpZ0lucHV0KTogWm9uZXNDbGllbnQ7XG4gIGF1dGgoaW5wdXQ6IFBsYXRmb3JtQXV0aElucHV0IHwgUGxhdGZvcm1BdXRoKTogWm9uZXNDbGllbnQ7XG5cbiAgLyoqIFBPU1QgL3YxL3pvbmVzIC0gY3JlYXRlIGEgc2luZ2xlIHpvbmUuICovXG4gIGNyZWF0ZShpbnB1dDogWm9uZUNyZWF0ZUlucHV0KTogUHJvbWlzZTxab25lQ3JlYXRlUmVzdWx0PjtcbiAgLyoqIEdFVCAvdjEvem9uZXMve3ppZH0gLSByZXR1cm5zIHRoZSBmdWxsIHpvbmUgb3IgdGhyb3dzIFpvbmVzQXBpRXJyb3IoNDA0KS4gKi9cbiAgZ2V0KHppZDogc3RyaW5nKTogUHJvbWlzZTxab25lPjtcbiAgLyoqIFBBVENIIC92MS96b25lcy97emlkfSAtIHNoYWxsb3cgdGFnIG1lcmdlOyBudWxsIGRlbGV0ZXMgYSBrZXkuICovXG4gIHVwZGF0ZSh6aWQ6IHN0cmluZywgaW5wdXQ6IFpvbmVQYXRjaElucHV0KTogUHJvbWlzZTxab25lPjtcbiAgLyoqIFBVVCAvdjEvem9uZXMve3ppZH0gLSBmdWxsIHJlcGxhY2Ugb2YgZ2VvbWV0cnkgKyB0YWdzLiAqL1xuICByZXBsYWNlKHppZDogc3RyaW5nLCBpbnB1dDogWm9uZVJlcGxhY2VJbnB1dCk6IFByb21pc2U8Wm9uZT47XG4gIC8qKiBERUxFVEUgL3YxL3pvbmVzL3t6aWR9IC0gNDA0IGlmIG5vdCBwcmVzZW50LiAqL1xuICBkZWxldGUoemlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogR0VUIC92MS96b25lcz90YWdzPS4uLiAtIHRhZy1maWx0ZXJlZCwga2V5c2V0LXBhZ2luYXRlZCBsaXN0aW5nLiAqL1xuICBsaXN0KG9wdHM/OiBab25lTGlzdE9wdGlvbnMpOiBQcm9taXNlPFpvbmVMaXN0UGFnZT47XG4gIC8qKiBQT1NUIC92MS96b25lcy9iYXRjaC9jcmVhdGUgLSBib3VuZGVkIGFycmF5OyByZXR1cm5lZCBpbiBpbnB1dCBvcmRlci4gKi9cbiAgY3JlYXRlTWFueSh6b25lczogcmVhZG9ubHkgWm9uZUNyZWF0ZUlucHV0W10pOiBQcm9taXNlPHsgem9uZXM6IEFycmF5PHsgemlkOiBzdHJpbmcgfT4gfT47XG4gIC8qKiBQT1NUIC92MS96b25lcy9iYXRjaC9kZWxldGUgLSByZXR1cm5zIHRoZSBjb3VudCBhY3R1YWxseSBkZWxldGVkLiAqL1xuICBkZWxldGVNYW55KHppZHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTx7IGRlbGV0ZWQ6IG51bWJlciB9PjtcblxuICAvKiogUE9TVCAvdjEvem9uZXMvY29udGFpbmluZyAtIHRoZSBzcGF0aWFsIHByaW1pdGl2ZS4gKi9cbiAgY29udGFpbmluZyhpbnB1dDogQ29udGFpbmluZ0lucHV0KTogUHJvbWlzZTxab25lU3VtbWFyeVtdPjtcbiAgLyoqIFN1Z2FyIG92ZXIgY29udGFpbmluZyh7IHBvaW50LCBpZHM6IFt6aWRdIH0pLiBUcnVlIGlmZiB0aGUgem9uZSBjb250YWlucyB0aGUgcG9pbnQuICovXG4gIGNvbnRhaW5zKHppZDogc3RyaW5nLCBwb2ludDogQ29udGFpbmluZ0lucHV0Wydwb2ludCddKTogUHJvbWlzZTxib29sZWFuPjtcbn1cblxuZXhwb3J0IGNsYXNzIFpvbmVzQXBpRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IHN0YXR1czogbnVtYmVyO1xuICByZWFkb25seSBib2R5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc3RhdHVzOiBudW1iZXIsIGJvZHk6IHN0cmluZykge1xuICAgIHN1cGVyKGB6b25lcyBBUEkgJHtzdGF0dXN9OiAke2JvZHl9YCk7XG4gICAgdGhpcy5uYW1lID0gJ1pvbmVzQXBpRXJyb3InO1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMuYm9keSA9IGJvZHk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VXVpZChsYWJlbDogc3RyaW5nLCB6aWQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodHlwZW9mIHppZCAhPT0gJ3N0cmluZycgfHwgIVVVSURfUkVHRVgudGVzdCh6aWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB6b25lcy4ke2xhYmVsfTogemlkIG11c3QgYmUgYSB1dWlkIChnb3QgJHtKU09OLnN0cmluZ2lmeSh6aWQpfSlgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRQb2ludChsYWJlbDogc3RyaW5nLCBwb2ludDogeyBsYXQ6IG51bWJlcjsgbG5nOiBudW1iZXIgfSk6IHZvaWQge1xuICBjb25zdCBsYXQgPSBwb2ludD8ubGF0O1xuICBjb25zdCBsbmcgPSBwb2ludD8ubG5nO1xuICBpZiAodHlwZW9mIGxhdCAhPT0gJ251bWJlcicgfHwgdHlwZW9mIGxuZyAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHpvbmVzLiR7bGFiZWx9OiBwb2ludCBtdXN0IGJlIHsgbGF0OiBudW1iZXIsIGxuZzogbnVtYmVyIH1gKTtcbiAgfVxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShsYXQpIHx8IGxhdCA8IC05MCB8fCBsYXQgPiA5MCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgem9uZXMuJHtsYWJlbH06IGxhdCBtdXN0IGJlIGluIFstOTAsIDkwXSAoZ290ICR7bGF0fSlgKTtcbiAgfVxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShsbmcpIHx8IGxuZyA8IC0xODAgfHwgbG5nID4gMTgwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB6b25lcy4ke2xhYmVsfTogbG5nIG11c3QgYmUgaW4gWy0xODAsIDE4MF0gKGdvdCAke2xuZ30pYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgYHpvbmVzYCBuYW1lc3BhY2UuXG4gKlxuICogU2hhcGUgYW5kIGNvbnRyYWN0IG1pcnJvciB7QGxpbmsgY3JlYXRlQnVzaW5lc3NDbGllbnR9IC0gbGF6eSBjb25maWdcbiAqIHJlc29sdXRpb24gdmlhIHtAbGluayBDb25maWdTdGF0ZX0sIHNoYXJlZCA0MDEtcmV0cnkgdmlhXG4gKiB7QGxpbmsgc2VuZFdpdGhBdXRoUmV0cnl9LCBpbW11dGFibGUgcGVyLWNhbGwgY29uZmlnOyBubyBnbG9iYWxzLlxuICpcbiAqIFdyaXRlcyAoYGNyZWF0ZWAsIGB1cGRhdGVgLCBgcmVwbGFjZWAsIGBkZWxldGVgLCBiYXRjaCBvcHMpIHJlcXVpcmUgYVxuICogc2VydmljZS1hY3RvciB0b2tlbi4gUmVhZHMgKGBnZXRgLCBgbGlzdGAsIGBjb250YWluaW5nYCwgYGNvbnRhaW5zYClcbiAqIGFjY2VwdCBlaXRoZXIgYSBzZXJ2aWNlLWFjdG9yIG9yIGEgdXNlci1hY3RvciB0b2tlbi4gVGhlIFNESyBkb2VzIG5vdFxuICogZW5mb3JjZSB0aGlzIC0gdGhlIHNlcnZlciByZXR1cm5zIDQwMS80MDMgYW5kIHdlIHN1cmZhY2UgaXQgYXNcbiAqIHtAbGluayBab25lc0FwaUVycm9yfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVpvbmVzQ2xpZW50KGlucHV0OiBQbGF0Zm9ybUNvbmZpZ0lucHV0ID0ge30pOiBab25lc0NsaWVudCB7XG4gIGNvbnN0IHN0YXRlID0gbmV3IENvbmZpZ1N0YXRlKCk7XG4gIHN0YXRlLmFwcGx5KGlucHV0KTtcblxuICBhc3luYyBmdW5jdGlvbiBzZW5kKFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBxdWVyeT86IHN0cmluZyxcbiAgICBib2R5PzogdW5rbm93bixcbiAgKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHN0YXRlLnJlc29sdmUoKTtcbiAgICBjb25zdCB1cmwgPSBgJHtjb25maWcuYmFzZVVybH0ke3BhdGh9JHtxdWVyeSA/PyAnJ31gO1xuICAgIGNvbnN0IHBheWxvYWQgPSBib2R5ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICByZXR1cm4gc2VuZFdpdGhBdXRoUmV0cnkoY29uZmlnLCB7IG1ldGhvZCwgcGF0aCwgdXJsLCBib2R5OiBwYXlsb2FkIH0pO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZXhwZWN0SnNvbjxUPihyZXM6IFJlc3BvbnNlKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFyZXMub2spIHRocm93IG5ldyBab25lc0FwaUVycm9yKHJlcy5zdGF0dXMsIGF3YWl0IHJlcy50ZXh0KCkpO1xuICAgIHJldHVybiAoYXdhaXQgcmVzLmpzb24oKSkgYXMgVDtcbiAgfVxuXG4gIGNvbnN0IGNsaWVudDogWm9uZXNDbGllbnQgPSB7XG4gICAgY29uZmlnKG9wdHMpIHtcbiAgICAgIHN0YXRlLmFwcGx5KG9wdHMpO1xuICAgICAgcmV0dXJuIGNsaWVudDtcbiAgICB9LFxuICAgIGF1dGgob3B0cykge1xuICAgICAgc3RhdGUuc2V0QXV0aChvcHRzKTtcbiAgICAgIHJldHVybiBjbGllbnQ7XG4gICAgfSxcblxuICAgIGFzeW5jIGNyZWF0ZShpbnB1dCkge1xuICAgICAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignem9uZXMuY3JlYXRlOiBpbnB1dCBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGBnZW9tZXRyeWAnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ1BPU1QnLCAnL3YxL3pvbmVzJywgdW5kZWZpbmVkLCBpbnB1dCk7XG4gICAgICByZXR1cm4gZXhwZWN0SnNvbjxab25lQ3JlYXRlUmVzdWx0PihyZXMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBnZXQoemlkKSB7XG4gICAgICBhc3NlcnRVdWlkKCdnZXQnLCB6aWQpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgc2VuZCgnR0VUJywgYC92MS96b25lcy8ke3ppZH1gKTtcbiAgICAgIHJldHVybiBleHBlY3RKc29uPFpvbmU+KHJlcyk7XG4gICAgfSxcblxuICAgIGFzeW5jIHVwZGF0ZSh6aWQsIGlucHV0KSB7XG4gICAgICBhc3NlcnRVdWlkKCd1cGRhdGUnLCB6aWQpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgc2VuZCgnUEFUQ0gnLCBgL3YxL3pvbmVzLyR7emlkfWAsIHVuZGVmaW5lZCwgaW5wdXQpO1xuICAgICAgcmV0dXJuIGV4cGVjdEpzb248Wm9uZT4ocmVzKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgcmVwbGFjZSh6aWQsIGlucHV0KSB7XG4gICAgICBhc3NlcnRVdWlkKCdyZXBsYWNlJywgemlkKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ1BVVCcsIGAvdjEvem9uZXMvJHt6aWR9YCwgdW5kZWZpbmVkLCBpbnB1dCk7XG4gICAgICByZXR1cm4gZXhwZWN0SnNvbjxab25lPihyZXMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBkZWxldGUoemlkKSB7XG4gICAgICBhc3NlcnRVdWlkKCdkZWxldGUnLCB6aWQpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgc2VuZCgnREVMRVRFJywgYC92MS96b25lcy8ke3ppZH1gKTtcbiAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDQpIHJldHVybjtcbiAgICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgWm9uZXNBcGlFcnJvcihyZXMuc3RhdHVzLCBhd2FpdCByZXMudGV4dCgpKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgbGlzdChvcHRzID0ge30pIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgIGlmIChvcHRzLnRhZ3MgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgndGFncycsIEpTT04uc3RyaW5naWZ5KG9wdHMudGFncykpO1xuICAgICAgaWYgKG9wdHMuY3Vyc29yICE9PSB1bmRlZmluZWQpIHBhcmFtcy5zZXQoJ2N1cnNvcicsIG9wdHMuY3Vyc29yKTtcbiAgICAgIGlmIChvcHRzLmxpbWl0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG9wdHMubGltaXQpIHx8IG9wdHMubGltaXQgPD0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgem9uZXMubGlzdDogbGltaXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgKGdvdCAke29wdHMubGltaXR9KWApO1xuICAgICAgICB9XG4gICAgICAgIHBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKG9wdHMubGltaXQpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHFzID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBzZW5kKCdHRVQnLCAnL3YxL3pvbmVzJywgcXMubGVuZ3RoID8gYD8ke3FzfWAgOiB1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuIGV4cGVjdEpzb248Wm9uZUxpc3RQYWdlPihyZXMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBjcmVhdGVNYW55KHpvbmVzKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoem9uZXMpIHx8IHpvbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3pvbmVzLmNyZWF0ZU1hbnk6IHpvbmVzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ1BPU1QnLCAnL3YxL3pvbmVzL2JhdGNoL2NyZWF0ZScsIHVuZGVmaW5lZCwgeyB6b25lcyB9KTtcbiAgICAgIHJldHVybiBleHBlY3RKc29uPHsgem9uZXM6IEFycmF5PHsgemlkOiBzdHJpbmcgfT4gfT4ocmVzKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZGVsZXRlTWFueSh6aWRzKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoemlkcykgfHwgemlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd6b25lcy5kZWxldGVNYW55OiB6aWRzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgemlkIG9mIHppZHMpIGFzc2VydFV1aWQoJ2RlbGV0ZU1hbnknLCB6aWQpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgc2VuZCgnUE9TVCcsICcvdjEvem9uZXMvYmF0Y2gvZGVsZXRlJywgdW5kZWZpbmVkLCB7IHppZHMgfSk7XG4gICAgICByZXR1cm4gZXhwZWN0SnNvbjx7IGRlbGV0ZWQ6IG51bWJlciB9PihyZXMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBjb250YWluaW5nKGlucHV0KSB7XG4gICAgICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd6b25lcy5jb250YWluaW5nOiBpbnB1dCBtdXN0IGluY2x1ZGUgYHBvaW50YCcpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0UG9pbnQoJ2NvbnRhaW5pbmcnLCBpbnB1dC5wb2ludCk7XG4gICAgICBpZiAoaW5wdXQuaWRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCB6aWQgb2YgaW5wdXQuaWRzKSBhc3NlcnRVdWlkKCdjb250YWluaW5nJywgemlkKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ1BPU1QnLCAnL3YxL3pvbmVzL2NvbnRhaW5pbmcnLCB1bmRlZmluZWQsIGlucHV0KTtcbiAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBleHBlY3RKc29uPHsgem9uZXM6IFpvbmVTdW1tYXJ5W10gfT4ocmVzKTtcbiAgICAgIHJldHVybiBib2R5LnpvbmVzO1xuICAgIH0sXG5cbiAgICBhc3luYyBjb250YWlucyh6aWQsIHBvaW50KSB7XG4gICAgICBhc3NlcnRVdWlkKCdjb250YWlucycsIHppZCk7XG4gICAgICBjb25zdCBtYXRjaGVzID0gYXdhaXQgY2xpZW50LmNvbnRhaW5pbmcoeyBwb2ludCwgaWRzOiBbemlkXSB9KTtcbiAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aCA+IDA7XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gY2xpZW50O1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { createZonesClient, ZonesApiError, type ZonesClient } from './client';
|
|
2
|
+
export type { ContainingInput, GeoJsonMultiPolygon, GeoJsonPolygon, Geometry, PatchTagBag, Point, TagBag, TagFilter, TagValue, Zone, ZoneCreateInput, ZoneCreateResult, ZoneListOptions, ZoneListPage, ZonePatchInput, ZoneReplaceInput, ZoneSummary, } from './schema';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZonesApiError = exports.createZonesClient = void 0;
|
|
4
|
+
var client_1 = require("./client");
|
|
5
|
+
Object.defineProperty(exports, "createZonesClient", { enumerable: true, get: function () { return client_1.createZonesClient; } });
|
|
6
|
+
Object.defineProperty(exports, "ZonesApiError", { enumerable: true, get: function () { return client_1.ZonesApiError; } });
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvem9uZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQThFO0FBQXJFLDJHQUFBLGlCQUFpQixPQUFBO0FBQUUsdUdBQUEsYUFBYSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgY3JlYXRlWm9uZXNDbGllbnQsIFpvbmVzQXBpRXJyb3IsIHR5cGUgWm9uZXNDbGllbnQgfSBmcm9tICcuL2NsaWVudCc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRhaW5pbmdJbnB1dCxcbiAgR2VvSnNvbk11bHRpUG9seWdvbixcbiAgR2VvSnNvblBvbHlnb24sXG4gIEdlb21ldHJ5LFxuICBQYXRjaFRhZ0JhZyxcbiAgUG9pbnQsXG4gIFRhZ0JhZyxcbiAgVGFnRmlsdGVyLFxuICBUYWdWYWx1ZSxcbiAgWm9uZSxcbiAgWm9uZUNyZWF0ZUlucHV0LFxuICBab25lQ3JlYXRlUmVzdWx0LFxuICBab25lTGlzdE9wdGlvbnMsXG4gIFpvbmVMaXN0UGFnZSxcbiAgWm9uZVBhdGNoSW5wdXQsXG4gIFpvbmVSZXBsYWNlSW5wdXQsXG4gIFpvbmVTdW1tYXJ5LFxufSBmcm9tICcuL3NjaGVtYSc7XG4iXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type surface for the platform Zones API.
|
|
3
|
+
*
|
|
4
|
+
* The Zones service is a generic, domain-agnostic spatial primitive: it stores
|
|
5
|
+
* tagged polygons and answers point-in-polygon containment queries. It knows
|
|
6
|
+
* nothing about businesses, serviceability, or delivery; those are consumer
|
|
7
|
+
* concerns that compose this primitive.
|
|
8
|
+
*
|
|
9
|
+
* Coordinate convention everywhere in this surface: points are the named
|
|
10
|
+
* object `{ lat, lng }` (never a positional pair). The service converts
|
|
11
|
+
* internally to the PostGIS lng-first order. Polygons follow GeoJSON axis
|
|
12
|
+
* order `[lng, lat]` per the GeoJSON spec.
|
|
13
|
+
*/
|
|
14
|
+
/** Latitude/longitude pair. Lat in [-90, 90], lng in [-180, 180]. */
|
|
15
|
+
export interface Point {
|
|
16
|
+
lat: number;
|
|
17
|
+
lng: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* GeoJSON-2008 Polygon. The first ring is the exterior; subsequent rings
|
|
21
|
+
* are interior (holes). Each coordinate is `[lng, lat]`.
|
|
22
|
+
*/
|
|
23
|
+
export interface GeoJsonPolygon {
|
|
24
|
+
type: 'Polygon';
|
|
25
|
+
coordinates: Array<Array<[number, number]>>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* GeoJSON-2008 MultiPolygon. The service normalises Polygon to MultiPolygon
|
|
29
|
+
* on write, so reads always return MultiPolygon.
|
|
30
|
+
*/
|
|
31
|
+
export interface GeoJsonMultiPolygon {
|
|
32
|
+
type: 'MultiPolygon';
|
|
33
|
+
coordinates: Array<Array<Array<[number, number]>>>;
|
|
34
|
+
}
|
|
35
|
+
export type Geometry = GeoJsonPolygon | GeoJsonMultiPolygon;
|
|
36
|
+
/**
|
|
37
|
+
* Tag values are flat: a scalar (coerced to string by the service) or a
|
|
38
|
+
* flat array of scalars. Nested objects are rejected on write.
|
|
39
|
+
*
|
|
40
|
+
* `null` is meaningful only inside a PATCH tag bag, where it deletes the
|
|
41
|
+
* key. It is not a storable value. Use {@link PatchTagBag} for PATCH bodies.
|
|
42
|
+
*/
|
|
43
|
+
export type TagValue = string | string[];
|
|
44
|
+
export type TagBag = Record<string, TagValue>;
|
|
45
|
+
/** Tag bag accepted by PATCH. `null` deletes the key; everything else is shallow-merged. */
|
|
46
|
+
export type PatchTagBag = Record<string, TagValue | null>;
|
|
47
|
+
/**
|
|
48
|
+
* Filter grammar used by both the listing endpoint and the containment
|
|
49
|
+
* primitive's `tags` selector:
|
|
50
|
+
*
|
|
51
|
+
* - `{ k: "v" }` equality / array-membership: `tags @> {"k":"v"}`
|
|
52
|
+
* - `{ k: ["v1","v2"] }` any-of (IN): per-value `@>` clauses OR-ed
|
|
53
|
+
* - multiple keys AND across keys
|
|
54
|
+
*
|
|
55
|
+
* Stored arrays match scalar filters via JSONB `@>`; the compiler does not
|
|
56
|
+
* need to know the stored shape. Use the dedicated `ids` selector on
|
|
57
|
+
* containment for large id-style sets — tag IN is for low-cardinality
|
|
58
|
+
* value lists (category, status, type).
|
|
59
|
+
*/
|
|
60
|
+
export type TagFilter = Record<string, string | string[]>;
|
|
61
|
+
/** The full zone record returned by `get`/`replace`/`update`. */
|
|
62
|
+
export interface Zone {
|
|
63
|
+
zid: string;
|
|
64
|
+
geometry: GeoJsonMultiPolygon;
|
|
65
|
+
tags: TagBag;
|
|
66
|
+
createdAt: string;
|
|
67
|
+
updatedAt: string;
|
|
68
|
+
}
|
|
69
|
+
/** The compact shape returned by `containing`, `list`, and `create`. */
|
|
70
|
+
export interface ZoneSummary {
|
|
71
|
+
zid: string;
|
|
72
|
+
tags: TagBag;
|
|
73
|
+
}
|
|
74
|
+
export interface ZoneListPage {
|
|
75
|
+
zones: ZoneSummary[];
|
|
76
|
+
nextCursor: string | null;
|
|
77
|
+
}
|
|
78
|
+
export interface ZoneCreateResult {
|
|
79
|
+
zid: string;
|
|
80
|
+
tags: TagBag;
|
|
81
|
+
createdAt: string;
|
|
82
|
+
}
|
|
83
|
+
export interface ZoneCreateInput {
|
|
84
|
+
geometry: Geometry;
|
|
85
|
+
tags?: TagBag;
|
|
86
|
+
}
|
|
87
|
+
export interface ZonePatchInput {
|
|
88
|
+
geometry?: Geometry;
|
|
89
|
+
tags?: PatchTagBag;
|
|
90
|
+
}
|
|
91
|
+
export interface ZoneReplaceInput {
|
|
92
|
+
geometry: Geometry;
|
|
93
|
+
tags?: TagBag;
|
|
94
|
+
}
|
|
95
|
+
export interface ZoneListOptions {
|
|
96
|
+
tags?: TagFilter;
|
|
97
|
+
cursor?: string;
|
|
98
|
+
limit?: number;
|
|
99
|
+
}
|
|
100
|
+
export interface ContainingInput {
|
|
101
|
+
point: Point;
|
|
102
|
+
ids?: readonly string[];
|
|
103
|
+
tags?: TagFilter;
|
|
104
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type surface for the platform Zones API.
|
|
4
|
+
*
|
|
5
|
+
* The Zones service is a generic, domain-agnostic spatial primitive: it stores
|
|
6
|
+
* tagged polygons and answers point-in-polygon containment queries. It knows
|
|
7
|
+
* nothing about businesses, serviceability, or delivery; those are consumer
|
|
8
|
+
* concerns that compose this primitive.
|
|
9
|
+
*
|
|
10
|
+
* Coordinate convention everywhere in this surface: points are the named
|
|
11
|
+
* object `{ lat, lng }` (never a positional pair). The service converts
|
|
12
|
+
* internally to the PostGIS lng-first order. Polygons follow GeoJSON axis
|
|
13
|
+
* order `[lng, lat]` per the GeoJSON spec.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3pvbmVzL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7OztHQVlHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUeXBlIHN1cmZhY2UgZm9yIHRoZSBwbGF0Zm9ybSBab25lcyBBUEkuXG4gKlxuICogVGhlIFpvbmVzIHNlcnZpY2UgaXMgYSBnZW5lcmljLCBkb21haW4tYWdub3N0aWMgc3BhdGlhbCBwcmltaXRpdmU6IGl0IHN0b3Jlc1xuICogdGFnZ2VkIHBvbHlnb25zIGFuZCBhbnN3ZXJzIHBvaW50LWluLXBvbHlnb24gY29udGFpbm1lbnQgcXVlcmllcy4gSXQga25vd3NcbiAqIG5vdGhpbmcgYWJvdXQgYnVzaW5lc3Nlcywgc2VydmljZWFiaWxpdHksIG9yIGRlbGl2ZXJ5OyB0aG9zZSBhcmUgY29uc3VtZXJcbiAqIGNvbmNlcm5zIHRoYXQgY29tcG9zZSB0aGlzIHByaW1pdGl2ZS5cbiAqXG4gKiBDb29yZGluYXRlIGNvbnZlbnRpb24gZXZlcnl3aGVyZSBpbiB0aGlzIHN1cmZhY2U6IHBvaW50cyBhcmUgdGhlIG5hbWVkXG4gKiBvYmplY3QgYHsgbGF0LCBsbmcgfWAgKG5ldmVyIGEgcG9zaXRpb25hbCBwYWlyKS4gVGhlIHNlcnZpY2UgY29udmVydHNcbiAqIGludGVybmFsbHkgdG8gdGhlIFBvc3RHSVMgbG5nLWZpcnN0IG9yZGVyLiBQb2x5Z29ucyBmb2xsb3cgR2VvSlNPTiBheGlzXG4gKiBvcmRlciBgW2xuZywgbGF0XWAgcGVyIHRoZSBHZW9KU09OIHNwZWMuXG4gKi9cblxuLyoqIExhdGl0dWRlL2xvbmdpdHVkZSBwYWlyLiBMYXQgaW4gWy05MCwgOTBdLCBsbmcgaW4gWy0xODAsIDE4MF0uICovXG5leHBvcnQgaW50ZXJmYWNlIFBvaW50IHtcbiAgbGF0OiBudW1iZXI7XG4gIGxuZzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEdlb0pTT04tMjAwOCBQb2x5Z29uLiBUaGUgZmlyc3QgcmluZyBpcyB0aGUgZXh0ZXJpb3I7IHN1YnNlcXVlbnQgcmluZ3NcbiAqIGFyZSBpbnRlcmlvciAoaG9sZXMpLiBFYWNoIGNvb3JkaW5hdGUgaXMgYFtsbmcsIGxhdF1gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlb0pzb25Qb2x5Z29uIHtcbiAgdHlwZTogJ1BvbHlnb24nO1xuICBjb29yZGluYXRlczogQXJyYXk8QXJyYXk8W251bWJlciwgbnVtYmVyXT4+O1xufVxuXG4vKipcbiAqIEdlb0pTT04tMjAwOCBNdWx0aVBvbHlnb24uIFRoZSBzZXJ2aWNlIG5vcm1hbGlzZXMgUG9seWdvbiB0byBNdWx0aVBvbHlnb25cbiAqIG9uIHdyaXRlLCBzbyByZWFkcyBhbHdheXMgcmV0dXJuIE11bHRpUG9seWdvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW9Kc29uTXVsdGlQb2x5Z29uIHtcbiAgdHlwZTogJ011bHRpUG9seWdvbic7XG4gIGNvb3JkaW5hdGVzOiBBcnJheTxBcnJheTxBcnJheTxbbnVtYmVyLCBudW1iZXJdPj4+O1xufVxuXG5leHBvcnQgdHlwZSBHZW9tZXRyeSA9IEdlb0pzb25Qb2x5Z29uIHwgR2VvSnNvbk11bHRpUG9seWdvbjtcblxuLyoqXG4gKiBUYWcgdmFsdWVzIGFyZSBmbGF0OiBhIHNjYWxhciAoY29lcmNlZCB0byBzdHJpbmcgYnkgdGhlIHNlcnZpY2UpIG9yIGFcbiAqIGZsYXQgYXJyYXkgb2Ygc2NhbGFycy4gTmVzdGVkIG9iamVjdHMgYXJlIHJlamVjdGVkIG9uIHdyaXRlLlxuICpcbiAqIGBudWxsYCBpcyBtZWFuaW5nZnVsIG9ubHkgaW5zaWRlIGEgUEFUQ0ggdGFnIGJhZywgd2hlcmUgaXQgZGVsZXRlcyB0aGVcbiAqIGtleS4gSXQgaXMgbm90IGEgc3RvcmFibGUgdmFsdWUuIFVzZSB7QGxpbmsgUGF0Y2hUYWdCYWd9IGZvciBQQVRDSCBib2RpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFRhZ1ZhbHVlID0gc3RyaW5nIHwgc3RyaW5nW107XG5cbmV4cG9ydCB0eXBlIFRhZ0JhZyA9IFJlY29yZDxzdHJpbmcsIFRhZ1ZhbHVlPjtcblxuLyoqIFRhZyBiYWcgYWNjZXB0ZWQgYnkgUEFUQ0guIGBudWxsYCBkZWxldGVzIHRoZSBrZXk7IGV2ZXJ5dGhpbmcgZWxzZSBpcyBzaGFsbG93LW1lcmdlZC4gKi9cbmV4cG9ydCB0eXBlIFBhdGNoVGFnQmFnID0gUmVjb3JkPHN0cmluZywgVGFnVmFsdWUgfCBudWxsPjtcblxuLyoqXG4gKiBGaWx0ZXIgZ3JhbW1hciB1c2VkIGJ5IGJvdGggdGhlIGxpc3RpbmcgZW5kcG9pbnQgYW5kIHRoZSBjb250YWlubWVudFxuICogcHJpbWl0aXZlJ3MgYHRhZ3NgIHNlbGVjdG9yOlxuICpcbiAqICAgLSBgeyBrOiBcInZcIiB9YCAgICAgICAgICAgZXF1YWxpdHkgLyBhcnJheS1tZW1iZXJzaGlwOiBgdGFncyBAPiB7XCJrXCI6XCJ2XCJ9YFxuICogICAtIGB7IGs6IFtcInYxXCIsXCJ2MlwiXSB9YCAgIGFueS1vZiAoSU4pOiBwZXItdmFsdWUgYEA+YCBjbGF1c2VzIE9SLWVkXG4gKiAgIC0gbXVsdGlwbGUga2V5cyAgICAgICAgICAgQU5EIGFjcm9zcyBrZXlzXG4gKlxuICogU3RvcmVkIGFycmF5cyBtYXRjaCBzY2FsYXIgZmlsdGVycyB2aWEgSlNPTkIgYEA+YDsgdGhlIGNvbXBpbGVyIGRvZXMgbm90XG4gKiBuZWVkIHRvIGtub3cgdGhlIHN0b3JlZCBzaGFwZS4gVXNlIHRoZSBkZWRpY2F0ZWQgYGlkc2Agc2VsZWN0b3Igb25cbiAqIGNvbnRhaW5tZW50IGZvciBsYXJnZSBpZC1zdHlsZSBzZXRzIOKAlCB0YWcgSU4gaXMgZm9yIGxvdy1jYXJkaW5hbGl0eVxuICogdmFsdWUgbGlzdHMgKGNhdGVnb3J5LCBzdGF0dXMsIHR5cGUpLlxuICovXG5leHBvcnQgdHlwZSBUYWdGaWx0ZXIgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT47XG5cbi8qKiBUaGUgZnVsbCB6b25lIHJlY29yZCByZXR1cm5lZCBieSBgZ2V0YC9gcmVwbGFjZWAvYHVwZGF0ZWAuICovXG5leHBvcnQgaW50ZXJmYWNlIFpvbmUge1xuICB6aWQ6IHN0cmluZztcbiAgZ2VvbWV0cnk6IEdlb0pzb25NdWx0aVBvbHlnb247XG4gIHRhZ3M6IFRhZ0JhZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKiogVGhlIGNvbXBhY3Qgc2hhcGUgcmV0dXJuZWQgYnkgYGNvbnRhaW5pbmdgLCBgbGlzdGAsIGFuZCBgY3JlYXRlYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWm9uZVN1bW1hcnkge1xuICB6aWQ6IHN0cmluZztcbiAgdGFnczogVGFnQmFnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvbmVMaXN0UGFnZSB7XG4gIHpvbmVzOiBab25lU3VtbWFyeVtdO1xuICBuZXh0Q3Vyc29yOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvbmVDcmVhdGVSZXN1bHQge1xuICB6aWQ6IHN0cmluZztcbiAgdGFnczogVGFnQmFnO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab25lQ3JlYXRlSW5wdXQge1xuICBnZW9tZXRyeTogR2VvbWV0cnk7XG4gIHRhZ3M/OiBUYWdCYWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9uZVBhdGNoSW5wdXQge1xuICBnZW9tZXRyeT86IEdlb21ldHJ5O1xuICB0YWdzPzogUGF0Y2hUYWdCYWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9uZVJlcGxhY2VJbnB1dCB7XG4gIGdlb21ldHJ5OiBHZW9tZXRyeTtcbiAgdGFncz86IFRhZ0JhZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab25lTGlzdE9wdGlvbnMge1xuICB0YWdzPzogVGFnRmlsdGVyO1xuICBjdXJzb3I/OiBzdHJpbmc7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5pbmdJbnB1dCB7XG4gIHBvaW50OiBQb2ludDtcbiAgaWRzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIHRhZ3M/OiBUYWdGaWx0ZXI7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uengage.io/platform-sdk",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Client SDK for the uEngage platform API (audit, business,
|
|
3
|
+
"version": "0.12.0",
|
|
4
|
+
"description": "Client SDK for the uEngage platform API (audit, business, auth). Single createClient(...) factory; OAuth2 client_credentials, static Bearer, or legacy session-token auth modes.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"files": [
|