@uengage.io/platform-sdk 2.1.0 → 2.3.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 +153 -0
- package/dist/auth/issuer.js +38 -23
- package/dist/config.d.ts +8 -3
- package/dist/config.js +2 -2
- package/dist/http.js +44 -5
- package/dist/realtime/endpoints.d.ts +3 -3
- package/dist/realtime/endpoints.js +22 -7
- package/dist/token-source.d.ts +14 -0
- package/dist/token-source.js +27 -1
- package/dist/upsell/client.d.ts +54 -0
- package/dist/upsell/client.js +77 -2
- package/dist/upsell/index.d.ts +1 -1
- package/dist/upsell/index.js +3 -2
- package/dist/version.d.ts +5 -3
- package/dist/version.js +6 -4
- package/dist/wallet/client.d.ts +205 -1
- package/dist/wallet/client.js +390 -2
- package/dist/wallet/index.d.ts +2 -2
- package/dist/wallet/index.js +13 -2
- package/dist/wallet/schema.d.ts +212 -2
- package/dist/wallet/schema.js +1 -1
- package/dist/zones/index.d.ts +1 -1
- package/dist/zones/index.js +1 -1
- package/dist/zones/schema.d.ts +7 -2
- package/dist/zones/schema.js +1 -1
- package/package.json +9 -1
package/README.md
CHANGED
|
@@ -33,6 +33,7 @@ const { balance, balanceMinor, currency } = await wallet.getBalance();
|
|
|
33
33
|
// wallet.debit({ referenceId, amountMinor, service: Services.FLASH_DELIVERY, description }) — idempotent on referenceId
|
|
34
34
|
// wallet.credit({ ..., reversalOf }) refund capped by that debit; ({ ..., isRefund: true }) uncapped
|
|
35
35
|
// wallet.listTransactions({...}); wallet.getTransaction(id)
|
|
36
|
+
// wallet.getOverview() — wallet balance or credit line? See Wallet client below.
|
|
36
37
|
// Legacy-ledger passthroughs, written as top-level ledger fields:
|
|
37
38
|
// taskId, rto (debit), units, serviceBaseCost, paymentId (credit), updatedBy,
|
|
38
39
|
// occurredAt — IST 'YYYY-MM-DD HH:mm:ss', dates the CHARGE not the write
|
|
@@ -229,6 +230,158 @@ const many = await client.business.bulk([123, 124], { groups: ['profile'] });
|
|
|
229
230
|
- The `profile` group (just `name`) is public; other groups need
|
|
230
231
|
matching `business.<group>:read` capability for the calling service id.
|
|
231
232
|
|
|
233
|
+
## Wallet client
|
|
234
|
+
|
|
235
|
+
`getWallet(...)` is a lightweight handle — no I/O. The wallet is resolved
|
|
236
|
+
server-side on the first operation, so a routing miss surfaces from the
|
|
237
|
+
operation, not from `getWallet()`.
|
|
238
|
+
|
|
239
|
+
### Which billing model? — start here
|
|
240
|
+
|
|
241
|
+
Prepaid wallets and merchant credit lines coexist, and which one a
|
|
242
|
+
merchant is on decides what a dashboard renders and which calls are even
|
|
243
|
+
legal. `getOverview()` settles it with a discriminated union:
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
const o = await wallet.getOverview();
|
|
247
|
+
|
|
248
|
+
if (o.mode === 'credit') {
|
|
249
|
+
o.creditLine.limit; // { amount, amountMinor } — net of GST
|
|
250
|
+
o.creditLine.band; // 'normal' | 'warning' | 'critical' | 'blocked'
|
|
251
|
+
} else {
|
|
252
|
+
o.balance.balanceMinor; // prepaid: the wallet balance
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
- `balance` is on **both** arms and means the same thing either way: what
|
|
257
|
+
the merchant can still spend. Available credit on the credit arm.
|
|
258
|
+
- One request for a prepaid merchant, two for a credit one, and never a
|
|
259
|
+
404 on the happy path — it reads `getBalance().source` rather than
|
|
260
|
+
calling `getCreditLine()` and catching its 404, which would make the
|
|
261
|
+
normal state of a prepaid merchant an error on every page load.
|
|
262
|
+
- A wallet service older than the credit line (no `source`) reads as
|
|
263
|
+
prepaid rather than throwing.
|
|
264
|
+
- **The credit arm needs `wallet.credit:read` on top of
|
|
265
|
+
`wallet.balance:read`.** A token with only the latter gets a
|
|
266
|
+
`WalletApiError` with `status === 403` from the second call — not a
|
|
267
|
+
fallback to `prepaid`, which would render the frozen `wallet_balance`
|
|
268
|
+
these merchants no longer spend from.
|
|
269
|
+
- Not a guaranteed 200: `WalletNotFoundError` (no wallet document for the
|
|
270
|
+
resolved identity) and `UnresolvableWalletError` (routing cannot name
|
|
271
|
+
one) both propagate, because both mean there is nothing to render.
|
|
272
|
+
|
|
273
|
+
### Credit line
|
|
274
|
+
|
|
275
|
+
The ceiling is per **merchant**, not per wallet, so an outlet's id and its
|
|
276
|
+
parent's id return the same line.
|
|
277
|
+
|
|
278
|
+
```ts
|
|
279
|
+
const line = await wallet.getCreditLine(); // 404 CreditLineNotFoundError if prepaid
|
|
280
|
+
line.consumed; // net, UNPAID — spans months, not a calendar figure
|
|
281
|
+
line.available; // limit − consumed
|
|
282
|
+
line.estimatedInvoice.total; // exact, from recorded GST — not consumed × 1.18
|
|
283
|
+
|
|
284
|
+
await wallet.setCreditLimit({
|
|
285
|
+
referenceId: 'admin:limit:1200:2026-09-02', // idempotency key
|
|
286
|
+
limitMinor: 10_000_000, // ₹1,00,000, NET of GST; 0 blocks
|
|
287
|
+
onBehalfOf: 'user:4471', // required — the trail names the human
|
|
288
|
+
reason: 'Q3 volume increase',
|
|
289
|
+
// enabled: false → take them off the credit line
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
await wallet.settleInvoice({
|
|
293
|
+
invoiceRef: 'invoice:2026-04:88213', // idempotency key
|
|
294
|
+
netMinor: 500_000, // the NET figure — what frees credit
|
|
295
|
+
gstMinor: 90_000, // recorded, not released
|
|
296
|
+
onBehalfOf: 'user:9',
|
|
297
|
+
});
|
|
298
|
+
await wallet.reverseSettlement({ invoiceRef: '…', onBehalfOf: 'user:9' });
|
|
299
|
+
// Correcting a settled amount: reverse, then settle again with the right
|
|
300
|
+
// figures AND a `reason` — different figures on a reversed invoice
|
|
301
|
+
// release against the merchant's whole outstanding consumption, so the
|
|
302
|
+
// service requires the correction to say what it is correcting.
|
|
303
|
+
|
|
304
|
+
await wallet.listCreditEvents(); // limit changes + settlements, newest first
|
|
305
|
+
await wallet.listCreditEvents({ limit: 200 }); // the service defaults to 50
|
|
306
|
+
await client.wallet.getCreditUtilisation({ band: 'warning' }); // cross-merchant
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
- **Charges on a credit-line merchant must carry `breakup`** — consumption
|
|
310
|
+
is tracked net of GST, so a missing split is
|
|
311
|
+
`CreditBreakupRequiredError` rather than a guessed rate. `allowNegative`
|
|
312
|
+
is refused (`CreditOverrideRefusedError`): it disables the balance guard
|
|
313
|
+
for migration paths, and on a credit line it would disable the limit.
|
|
314
|
+
- **The merchant pays gross; settlement releases net.** A ₹5,900 invoice
|
|
315
|
+
on ₹5,000 of consumption frees ₹5,000. Passing gross hands back 18% too
|
|
316
|
+
much — and it looks right in a test, since both figures sit on the same
|
|
317
|
+
invoice row.
|
|
318
|
+
- **Setting a limit never touches consumption**, so raising one hands back
|
|
319
|
+
exactly the difference. Lowering below what is consumed blocks charges
|
|
320
|
+
immediately.
|
|
321
|
+
- **`enabled: false` is refused while the merchant owes** —
|
|
322
|
+
`CreditLineHasOutstandingError`, carrying `consumedMinor` so you can say
|
|
323
|
+
how much to settle. Disabling moves them back to a wallet balance, which
|
|
324
|
+
with a balance owed abandons it. To _stop_ a merchant trading use
|
|
325
|
+
`limitMinor: 0`; to move them _off_, settle first.
|
|
326
|
+
- Reusing an idempotency key with **different** figures is
|
|
327
|
+
`CreditIdempotencyConflictError`, not a silent replay. To correct a
|
|
328
|
+
settled amount, reverse it and settle again rather than inventing a new
|
|
329
|
+
ref — a new ref leaves the original settlement standing.
|
|
330
|
+
- **A plain `credit()` is refused** — `CreditTopUpRefusedError`. These
|
|
331
|
+
merchants have no balance to top up: `wallet_balance` is the fiction the
|
|
332
|
+
line replaces and is frozen, so the write would move nothing while
|
|
333
|
+
answering 201. Credit comes back through `settleInvoice`. A genuine
|
|
334
|
+
refund is accepted — send `reversalOf` or `isRefund` and it releases
|
|
335
|
+
what the original charge consumed.
|
|
336
|
+
- `getCreditUtilisation` hangs off the **client**, not a wallet handle: it
|
|
337
|
+
is the one wallet call not scoped to a business.
|
|
338
|
+
|
|
339
|
+
### Errors
|
|
340
|
+
|
|
341
|
+
All extend `WalletApiError` (`.status`, `.body`).
|
|
342
|
+
|
|
343
|
+
`CreditLimitReachedError` carries `limitMinor` / `consumedMinor` /
|
|
344
|
+
`availableMinor` / `requestedMinor`, and that is the point of it — three
|
|
345
|
+
situations share the code and need different merchant copy:
|
|
346
|
+
|
|
347
|
+
```ts
|
|
348
|
+
if (e instanceof CreditLimitReachedError) {
|
|
349
|
+
if (e.availableMinor === undefined) {
|
|
350
|
+
// No figures in the response (trimmed or proxied body) — generic
|
|
351
|
+
// copy. Not the same as 0, which is the "used up" sentinel below.
|
|
352
|
+
} else if (e.availableMinor > 0) {
|
|
353
|
+
// Limit NOT used up — this one charge is larger than what is left.
|
|
354
|
+
// A smaller order would go through; do not send them to their KAM.
|
|
355
|
+
}
|
|
356
|
+
// Otherwise the ceiling is reached — which can be unpaid invoices
|
|
357
|
+
// rather than this month's spend. getCreditLine() tells you which.
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
The figures are optional for that reason: coercing an absent
|
|
362
|
+
`availableMinor` to `0` would silently claim the limit is used up.
|
|
363
|
+
|
|
364
|
+
Also: `CreditLineNotFoundError` (404 — a prepaid merchant, not a
|
|
365
|
+
failure), `CreditBreakupRequiredError`, `CreditOverrideRefusedError`,
|
|
366
|
+
`CreditTopUpRefusedError`, `CreditIdempotencyConflictError`,
|
|
367
|
+
`CreditCorrectionReasonRequiredError` (400 — a reversed invoice is being
|
|
368
|
+
re-settled for different figures; pass `reason`),
|
|
369
|
+
`CreditCurrencyConflictError` and `CreditCurrencyMismatchError` (409 —
|
|
370
|
+
neither is caller-retryable; see their docblocks),
|
|
371
|
+
`SettlementNotFoundError`, plus the
|
|
372
|
+
pre-existing `InsufficientBalanceError`, `OverRefundError`,
|
|
373
|
+
`InvalidReversalError`, `IdempotencyConflictError`,
|
|
374
|
+
`WalletIdentityMismatchError`, `UnresolvableWalletError`,
|
|
375
|
+
`WalletNotFoundError`.
|
|
376
|
+
|
|
377
|
+
### Money
|
|
378
|
+
|
|
379
|
+
Every figure is `{ amount, amountMinor }`. **Compute in `amountMinor`**
|
|
380
|
+
(integer paise); `amount` is for display. On a ledger row `amount` is
|
|
381
|
+
**gross** and `breakup.subTotalMinor` is what consumed the ceiling —
|
|
382
|
+
`creditMerchantId` present means the row's `balanceBefore`/`balanceAfter`
|
|
383
|
+
are available credit rather than a wallet balance.
|
|
384
|
+
|
|
232
385
|
## Auth helpers
|
|
233
386
|
|
|
234
387
|
```ts
|
package/dist/auth/issuer.js
CHANGED
|
@@ -3,40 +3,55 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getIssuer = getIssuer;
|
|
4
4
|
exports.getExpiry = getExpiry;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Base64url-decode a JWT segment, in Node and in a browser.
|
|
7
|
+
*
|
|
8
|
+
* `Buffer` is a Node global. In a browser or React Native it is simply not
|
|
9
|
+
* defined, and touching it throws a ReferenceError rather than yielding
|
|
10
|
+
* undefined — which the callers below used to swallow, so every expiry read
|
|
11
|
+
* silently returned null off-Node. That mattered once a browser-reachable
|
|
12
|
+
* token source started caching against `exp`: the cache fell back to a flat
|
|
13
|
+
* five minutes and nothing said why. `atob` covers those runtimes.
|
|
10
14
|
*/
|
|
11
|
-
function
|
|
15
|
+
function decodeSegment(segment) {
|
|
16
|
+
const base64 = segment.replace(/-/g, '+').replace(/_/g, '/');
|
|
17
|
+
const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=');
|
|
18
|
+
if (typeof Buffer !== 'undefined') {
|
|
19
|
+
return Buffer.from(padded, 'base64').toString('utf8');
|
|
20
|
+
}
|
|
21
|
+
// atob yields one byte per character; re-decode as UTF-8 so a non-ASCII
|
|
22
|
+
// claim (a merchant name, say) does not come back mojibake.
|
|
23
|
+
const binary = atob(padded);
|
|
24
|
+
const bytes = Uint8Array.from(binary, (ch) => ch.charCodeAt(0));
|
|
25
|
+
return new TextDecoder().decode(bytes);
|
|
26
|
+
}
|
|
27
|
+
function claimsOf(token) {
|
|
12
28
|
const parts = token.split('.');
|
|
13
29
|
if (parts.length !== 3)
|
|
14
30
|
return null;
|
|
15
31
|
try {
|
|
16
|
-
|
|
17
|
-
const padded = payload.padEnd(payload.length + ((4 - (payload.length % 4)) % 4), '=');
|
|
18
|
-
const json = Buffer.from(padded, 'base64').toString('utf8');
|
|
19
|
-
const claims = JSON.parse(json);
|
|
20
|
-
return typeof claims.iss === 'string' ? claims.iss : null;
|
|
32
|
+
return JSON.parse(decodeSegment(parts[1]));
|
|
21
33
|
}
|
|
22
34
|
catch {
|
|
23
35
|
return null;
|
|
24
36
|
}
|
|
25
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Decode (without verifying) a JWT and return its `iss` claim. Used by
|
|
40
|
+
* the SDK to route subsequent auth-related calls (refresh, future
|
|
41
|
+
* logout) at `${iss}/...`, so tokens from different issuers are
|
|
42
|
+
* routed correctly when customer-auth ships alongside business-auth.
|
|
43
|
+
*/
|
|
44
|
+
function getIssuer(token) {
|
|
45
|
+
const claims = claimsOf(token);
|
|
46
|
+
if (!claims)
|
|
47
|
+
return null;
|
|
48
|
+
return typeof claims.iss === 'string' ? claims.iss : null;
|
|
49
|
+
}
|
|
26
50
|
/** Decode (without verifying) a JWT and return its `exp` claim (unix seconds). */
|
|
27
51
|
function getExpiry(token) {
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
52
|
+
const claims = claimsOf(token);
|
|
53
|
+
if (!claims)
|
|
30
54
|
return null;
|
|
31
|
-
|
|
32
|
-
const payload = parts[1].replace(/-/g, '+').replace(/_/g, '/');
|
|
33
|
-
const padded = payload.padEnd(payload.length + ((4 - (payload.length % 4)) % 4), '=');
|
|
34
|
-
const json = Buffer.from(padded, 'base64').toString('utf8');
|
|
35
|
-
const claims = JSON.parse(json);
|
|
36
|
-
return typeof claims.exp === 'number' ? claims.exp : null;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
55
|
+
return typeof claims.exp === 'number' ? claims.exp : null;
|
|
41
56
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNzdWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGgvaXNzdWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeUNBLDhCQUlDO0FBR0QsOEJBSUM7QUFwREQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxhQUFhLENBQUMsT0FBZTtJQUNwQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRW5GLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSw0REFBNEQ7SUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYTtJQUM3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDcEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBNEIsQ0FBQztJQUN4RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLEtBQWE7SUFDckMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDekIsT0FBTyxPQUFPLE1BQU0sQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDNUQsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixTQUFnQixTQUFTLENBQUMsS0FBYTtJQUNyQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQztJQUN6QixPQUFPLE9BQU8sTUFBTSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlNjR1cmwtZGVjb2RlIGEgSldUIHNlZ21lbnQsIGluIE5vZGUgYW5kIGluIGEgYnJvd3Nlci5cbiAqXG4gKiBgQnVmZmVyYCBpcyBhIE5vZGUgZ2xvYmFsLiBJbiBhIGJyb3dzZXIgb3IgUmVhY3QgTmF0aXZlIGl0IGlzIHNpbXBseSBub3RcbiAqIGRlZmluZWQsIGFuZCB0b3VjaGluZyBpdCB0aHJvd3MgYSBSZWZlcmVuY2VFcnJvciByYXRoZXIgdGhhbiB5aWVsZGluZ1xuICogdW5kZWZpbmVkIOKAlCB3aGljaCB0aGUgY2FsbGVycyBiZWxvdyB1c2VkIHRvIHN3YWxsb3csIHNvIGV2ZXJ5IGV4cGlyeSByZWFkXG4gKiBzaWxlbnRseSByZXR1cm5lZCBudWxsIG9mZi1Ob2RlLiBUaGF0IG1hdHRlcmVkIG9uY2UgYSBicm93c2VyLXJlYWNoYWJsZVxuICogdG9rZW4gc291cmNlIHN0YXJ0ZWQgY2FjaGluZyBhZ2FpbnN0IGBleHBgOiB0aGUgY2FjaGUgZmVsbCBiYWNrIHRvIGEgZmxhdFxuICogZml2ZSBtaW51dGVzIGFuZCBub3RoaW5nIHNhaWQgd2h5LiBgYXRvYmAgY292ZXJzIHRob3NlIHJ1bnRpbWVzLlxuICovXG5mdW5jdGlvbiBkZWNvZGVTZWdtZW50KHNlZ21lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGJhc2U2NCA9IHNlZ21lbnQucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcbiAgY29uc3QgcGFkZGVkID0gYmFzZTY0LnBhZEVuZChiYXNlNjQubGVuZ3RoICsgKCg0IC0gKGJhc2U2NC5sZW5ndGggJSA0KSkgJSA0KSwgJz0nKTtcblxuICBpZiAodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocGFkZGVkLCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgfVxuXG4gIC8vIGF0b2IgeWllbGRzIG9uZSBieXRlIHBlciBjaGFyYWN0ZXI7IHJlLWRlY29kZSBhcyBVVEYtOCBzbyBhIG5vbi1BU0NJSVxuICAvLyBjbGFpbSAoYSBtZXJjaGFudCBuYW1lLCBzYXkpIGRvZXMgbm90IGNvbWUgYmFjayBtb2ppYmFrZS5cbiAgY29uc3QgYmluYXJ5ID0gYXRvYihwYWRkZWQpO1xuICBjb25zdCBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShiaW5hcnksIChjaCkgPT4gY2guY2hhckNvZGVBdCgwKSk7XG4gIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnl0ZXMpO1xufVxuXG5mdW5jdGlvbiBjbGFpbXNPZih0b2tlbjogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHtcbiAgY29uc3QgcGFydHMgPSB0b2tlbi5zcGxpdCgnLicpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVTZWdtZW50KHBhcnRzWzFdKSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRGVjb2RlICh3aXRob3V0IHZlcmlmeWluZykgYSBKV1QgYW5kIHJldHVybiBpdHMgYGlzc2AgY2xhaW0uIFVzZWQgYnlcbiAqIHRoZSBTREsgdG8gcm91dGUgc3Vic2VxdWVudCBhdXRoLXJlbGF0ZWQgY2FsbHMgKHJlZnJlc2gsIGZ1dHVyZVxuICogbG9nb3V0KSBhdCBgJHtpc3N9Ly4uLmAsIHNvIHRva2VucyBmcm9tIGRpZmZlcmVudCBpc3N1ZXJzIGFyZVxuICogcm91dGVkIGNvcnJlY3RseSB3aGVuIGN1c3RvbWVyLWF1dGggc2hpcHMgYWxvbmdzaWRlIGJ1c2luZXNzLWF1dGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJc3N1ZXIodG9rZW46IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBjbGFpbXMgPSBjbGFpbXNPZih0b2tlbik7XG4gIGlmICghY2xhaW1zKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIHR5cGVvZiBjbGFpbXMuaXNzID09PSAnc3RyaW5nJyA/IGNsYWltcy5pc3MgOiBudWxsO1xufVxuXG4vKiogRGVjb2RlICh3aXRob3V0IHZlcmlmeWluZykgYSBKV1QgYW5kIHJldHVybiBpdHMgYGV4cGAgY2xhaW0gKHVuaXggc2Vjb25kcykuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhwaXJ5KHRva2VuOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgY2xhaW1zID0gY2xhaW1zT2YodG9rZW4pO1xuICBpZiAoIWNsYWltcykgcmV0dXJuIG51bGw7XG4gIHJldHVybiB0eXBlb2YgY2xhaW1zLmV4cCA9PT0gJ251bWJlcicgPyBjbGFpbXMuZXhwIDogbnVsbDtcbn1cbiJdfQ==
|
package/dist/config.d.ts
CHANGED
|
@@ -24,9 +24,14 @@ export interface PlatformConfigInput {
|
|
|
24
24
|
logger?: Logger;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* `.auth()` shape. Pass `{token}` for a static Bearer access token
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* `.auth()` shape. Pass `{token}` for a static Bearer access token — used
|
|
28
|
+
* until its `exp` passes, after which requests fail, because the SDK cannot
|
|
29
|
+
* refresh a bare string.
|
|
30
|
+
*
|
|
31
|
+
* For anything that needs renewal, do not use this: pass `serviceId` +
|
|
32
|
+
* `serviceSecret` or `tokenUrl` to `upsell.createClient()` (and the
|
|
33
|
+
* equivalents on `createClient()`), which build a token source that mints,
|
|
34
|
+
* caches and renews. Those options mirror the realtime SDK's names.
|
|
30
35
|
*/
|
|
31
36
|
export interface PlatformAuthInput {
|
|
32
37
|
token?: string;
|
package/dist/config.js
CHANGED
|
@@ -48,7 +48,7 @@ function normalizeAuth(input) {
|
|
|
48
48
|
if (input.token) {
|
|
49
49
|
return { type: 'bearer', token: input.token };
|
|
50
50
|
}
|
|
51
|
-
throw new Error('auth(): pass {token} for a static Bearer access token, or use createClient({serviceId, serviceSecret}) for
|
|
51
|
+
throw new Error('auth(): pass {token} for a static Bearer access token, or use createClient({serviceId, serviceSecret}) / upsell.createClient({tokenUrl}) for a token the SDK renews itself');
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Mutable config shared by clients. `apply()` and `setAuth()` are how the
|
|
@@ -87,4 +87,4 @@ class ConfigState {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
exports.ConfigState = ConfigState;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF3REEsa0NBTUM7QUFpQkQsc0NBUUM7QUFwRlksUUFBQSxnQkFBZ0IsR0FBRyxpQ0FBaUMsQ0FBQztBQXFDbEU7Ozs7R0FJRztBQUNIOzs7OztHQUtHO0FBQ0gsU0FBUyxHQUFHLENBQUMsSUFBWTtJQUN2QixJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVc7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNyRCxPQUFRLE9BQXdELENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQWdCLFdBQVc7SUFDekIsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSx3QkFBZ0I7UUFDcEQsSUFBSSxFQUFFLE9BQU8sRUFBRTtRQUNmLE9BQU8sRUFBRSxVQUFVLENBQUMsS0FBcUI7S0FDMUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLE9BQU87SUFDZCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4QyxJQUFJLEtBQUs7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM1QyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBdUM7SUFDbkUsSUFBSSxNQUFNLElBQUksS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsNEtBQTRLLENBQzdLLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLFdBQVc7SUFDZCxTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUNwQyxZQUFZLENBQTJCO0lBQ3ZDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFFaEMsS0FBSyxDQUFDLEtBQTBCO1FBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4RSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDeEUsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3JFLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBdUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLEdBQUcsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUMxQixPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPO1lBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTtZQUN6RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFpQjtZQUNoRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUE0QjtTQUNwRCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBN0JELGtDQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTG9nZ2VyIH0gZnJvbSAnQHVlbmdhZ2UuaW8vanMtbG9nZ2VyJztcbmltcG9ydCB0eXBlIHsgVG9rZW5Tb3VyY2VTdGF0ZSB9IGZyb20gJy4vdG9rZW4tc291cmNlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRV9VUkwgPSAnaHR0cHM6Ly9hcGkucGxhdGZvcm0udWVuZ2FnZS5pbyc7XG5cbi8qKlxuICogUmVzb2x2ZWQgYXV0aCBzdGF0ZS4gRGlzY3JpbWluYXRlZCBieSBgdHlwZWAgc28gY29uc3VtZXJzIGNhbiBuYXJyb3cuXG4gKi9cbmV4cG9ydCB0eXBlIFBsYXRmb3JtQXV0aCA9XG4gIHwgeyB0eXBlOiAnYmVhcmVyJzsgdG9rZW46IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAndG9rZW4tc291cmNlJzsgc3RhdGU6IFRva2VuU291cmNlU3RhdGUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBQbGF0Zm9ybUNvbmZpZyB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgYXV0aD86IFBsYXRmb3JtQXV0aDtcbiAgZmV0Y2hGbjogdHlwZW9mIGZldGNoO1xuICBsb2dnZXI/OiBMb2dnZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm1Db25maWdJbnB1dCB7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGF1dGg/OiBQbGF0Zm9ybUF1dGhJbnB1dCB8IFBsYXRmb3JtQXV0aDtcbiAgZmV0Y2hGbj86IHR5cGVvZiBmZXRjaDtcbiAgbG9nZ2VyPzogTG9nZ2VyO1xufVxuXG4vKipcbiAqIGAuYXV0aCgpYCBzaGFwZS4gUGFzcyBge3Rva2VufWAgZm9yIGEgc3RhdGljIEJlYXJlciBhY2Nlc3MgdG9rZW4g4oCUIHVzZWRcbiAqIHVudGlsIGl0cyBgZXhwYCBwYXNzZXMsIGFmdGVyIHdoaWNoIHJlcXVlc3RzIGZhaWwsIGJlY2F1c2UgdGhlIFNESyBjYW5ub3RcbiAqIHJlZnJlc2ggYSBiYXJlIHN0cmluZy5cbiAqXG4gKiBGb3IgYW55dGhpbmcgdGhhdCBuZWVkcyByZW5ld2FsLCBkbyBub3QgdXNlIHRoaXM6IHBhc3MgYHNlcnZpY2VJZGAgK1xuICogYHNlcnZpY2VTZWNyZXRgIG9yIGB0b2tlblVybGAgdG8gYHVwc2VsbC5jcmVhdGVDbGllbnQoKWAgKGFuZCB0aGVcbiAqIGVxdWl2YWxlbnRzIG9uIGBjcmVhdGVDbGllbnQoKWApLCB3aGljaCBidWlsZCBhIHRva2VuIHNvdXJjZSB0aGF0IG1pbnRzLFxuICogY2FjaGVzIGFuZCByZW5ld3MuIFRob3NlIG9wdGlvbnMgbWlycm9yIHRoZSByZWFsdGltZSBTREsncyBuYW1lcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF0Zm9ybUF1dGhJbnB1dCB7XG4gIHRva2VuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc29sdmUgZW52LWRlZmF1bHRlZCBjb25maWcuIFJlLXJlYWQgb24gZXZlcnkgY2FsbCBzbyB0aGF0IGNhbGxlcnMgY2FuXG4gKiBzZXQgZW52IHZhcnMgYWZ0ZXIgdGhlIFNESyBoYXMgYmVlbiBpbXBvcnRlZCBhbmQgc3RpbGwgcGljayB0aGVtIHVwIG9uXG4gKiB0aGUgbmV4dCByZXF1ZXN0LlxuICovXG4vKipcbiAqIFJlYWQgYHByb2Nlc3MuZW52YCBkZWZlbnNpdmVseTogaW4gYSBicm93c2VyIGJ1bmRsZSBgcHJvY2Vzc2AgaXMgbm90XG4gKiBkZWZpbmVkIGF0IGFsbCwgYW5kIHRvdWNoaW5nIGl0IHRocm93cyBhIFJlZmVyZW5jZUVycm9yIHJhdGhlciB0aGFuXG4gKiB5aWVsZGluZyB1bmRlZmluZWQuIFRoZSBTREsgaXMgdXNlZCBmcm9tIGJyb3dzZXJzICh0aGVcbiAqIGB3aGl0ZWxhYmVsX3dlYmAgY2hhbm5lbCksIHNvIGV2ZXJ5IGVudiByZWFkIGdvZXMgdGhyb3VnaCBoZXJlLlxuICovXG5mdW5jdGlvbiBlbnYobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIChwcm9jZXNzIGFzIHsgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB9KS5lbnY/LltuYW1lXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVudkRlZmF1bHRzKCk6IFBsYXRmb3JtQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBiYXNlVXJsOiBlbnYoJ1VFTkdBR0VfQkFTRV9VUkwnKSA/PyBERUZBVUxUX0JBU0VfVVJMLFxuICAgIGF1dGg6IGVudkF1dGgoKSxcbiAgICBmZXRjaEZuOiBnbG9iYWxUaGlzLmZldGNoIGFzIHR5cGVvZiBmZXRjaCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW52QXV0aCgpOiBQbGF0Zm9ybUF1dGggfCB1bmRlZmluZWQge1xuICBjb25zdCB0b2tlbiA9IGVudignVUVOR0FHRV9BVVRIX1RPS0VOJyk7XG4gIGlmICh0b2tlbikgcmV0dXJuIHsgdHlwZTogJ2JlYXJlcicsIHRva2VuIH07XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29lcmNlIGAuYXV0aCgpYCBpbnB1dCBvciBgY29uZmlnKHthdXRofSlgIGlucHV0IGludG8gYSB0eXBlZFxuICogUGxhdGZvcm1BdXRoLiBUaHJvd3Mgd2hlbiB0aGUgaW5wdXQgaGFzIG5vIHVzYWJsZSBjcmVkZW50aWFscy5cbiAqXG4gKiBUb2RheSB0aGlzIG9ubHkgYWNjZXB0cyBge3Rva2VufWAgb3IgYSBwcmUtc2hhcGVkIGBQbGF0Zm9ybUF1dGhgLlxuICogRm9yIE9BdXRoMiBjbGllbnRfY3JlZGVudGlhbHMgdXNlIGBjcmVhdGVDbGllbnQoe3NlcnZpY2VJZCwgc2VydmljZVNlY3JldH0pYFxuICogaW5zdGVhZCDigJQgdGhhdCBidWlsZHMgYSBUb2tlblNvdXJjZSB3aGljaCBtaW50cyArIGNhY2hlcyBCZWFyZXJcbiAqIHRva2Vucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUF1dGgoaW5wdXQ6IFBsYXRmb3JtQXV0aElucHV0IHwgUGxhdGZvcm1BdXRoKTogUGxhdGZvcm1BdXRoIHtcbiAgaWYgKCd0eXBlJyBpbiBpbnB1dCkgcmV0dXJuIGlucHV0O1xuICBpZiAoaW5wdXQudG9rZW4pIHtcbiAgICByZXR1cm4geyB0eXBlOiAnYmVhcmVyJywgdG9rZW46IGlucHV0LnRva2VuIH07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICdhdXRoKCk6IHBhc3Mge3Rva2VufSBmb3IgYSBzdGF0aWMgQmVhcmVyIGFjY2VzcyB0b2tlbiwgb3IgdXNlIGNyZWF0ZUNsaWVudCh7c2VydmljZUlkLCBzZXJ2aWNlU2VjcmV0fSkgLyB1cHNlbGwuY3JlYXRlQ2xpZW50KHt0b2tlblVybH0pIGZvciBhIHRva2VuIHRoZSBTREsgcmVuZXdzIGl0c2VsZicsXG4gICk7XG59XG5cbi8qKlxuICogTXV0YWJsZSBjb25maWcgc2hhcmVkIGJ5IGNsaWVudHMuIGBhcHBseSgpYCBhbmQgYHNldEF1dGgoKWAgYXJlIGhvdyB0aGVcbiAqIGNoYWluYWJsZSBgLmNvbmZpZygpYCAvIGAuYXV0aCgpYCBtZXRob2RzIHdyaXRlIGJhY2suIGByZXNvbHZlKClgIHByb2R1Y2VzXG4gKiB0aGUgZWZmZWN0aXZlIGNvbmZpZyBmb3Igb25lIHJlcXVlc3QsIGZhbGxpbmcgYmFjayB0byBjdXJyZW50IGVudiBzdGF0ZVxuICogZm9yIGZpZWxkcyB0aGUgY2FsbGVyIGhhc24ndCBwaW5uZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25maWdTdGF0ZSB7XG4gIHByaXZhdGUgb3ZlcnJpZGVzOiBQbGF0Zm9ybUNvbmZpZ0lucHV0ID0ge307XG4gIHByaXZhdGUgZXhwbGljaXRBdXRoOiBQbGF0Zm9ybUF1dGggfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGFzRXhwbGljaXRBdXRoID0gZmFsc2U7XG5cbiAgYXBwbHkoaW5wdXQ6IFBsYXRmb3JtQ29uZmlnSW5wdXQpOiB2b2lkIHtcbiAgICBpZiAoaW5wdXQuYmFzZVVybCAhPT0gdW5kZWZpbmVkKSB0aGlzLm92ZXJyaWRlcy5iYXNlVXJsID0gaW5wdXQuYmFzZVVybDtcbiAgICBpZiAoaW5wdXQuZmV0Y2hGbiAhPT0gdW5kZWZpbmVkKSB0aGlzLm92ZXJyaWRlcy5mZXRjaEZuID0gaW5wdXQuZmV0Y2hGbjtcbiAgICBpZiAoaW5wdXQubG9nZ2VyICE9PSB1bmRlZmluZWQpIHRoaXMub3ZlcnJpZGVzLmxvZ2dlciA9IGlucHV0LmxvZ2dlcjtcbiAgICBpZiAoaW5wdXQuYXV0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmV4cGxpY2l0QXV0aCA9IG5vcm1hbGl6ZUF1dGgoaW5wdXQuYXV0aCk7XG4gICAgICB0aGlzLmhhc0V4cGxpY2l0QXV0aCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2V0QXV0aChpbnB1dDogUGxhdGZvcm1BdXRoSW5wdXQgfCBQbGF0Zm9ybUF1dGgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGxpY2l0QXV0aCA9IG5vcm1hbGl6ZUF1dGgoaW5wdXQpO1xuICAgIHRoaXMuaGFzRXhwbGljaXRBdXRoID0gdHJ1ZTtcbiAgfVxuXG4gIHJlc29sdmUoKTogUGxhdGZvcm1Db25maWcge1xuICAgIGNvbnN0IGVudiA9IGVudkRlZmF1bHRzKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhc2VVcmw6IHRoaXMub3ZlcnJpZGVzLmJhc2VVcmwgPz8gZW52LmJhc2VVcmwsXG4gICAgICBhdXRoOiB0aGlzLmhhc0V4cGxpY2l0QXV0aCA/IHRoaXMuZXhwbGljaXRBdXRoIDogZW52LmF1dGgsXG4gICAgICBmZXRjaEZuOiAodGhpcy5vdmVycmlkZXMuZmV0Y2hGbiA/PyBlbnYuZmV0Y2hGbikgYXMgdHlwZW9mIGZldGNoLFxuICAgICAgbG9nZ2VyOiB0aGlzLm92ZXJyaWRlcy5sb2dnZXIgYXMgTG9nZ2VyIHwgdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
package/dist/http.js
CHANGED
|
@@ -11,9 +11,20 @@ const MUTATING_METHODS = new Set(['POST', 'PUT', 'PATCH', 'DELETE']);
|
|
|
11
11
|
* The SDK runs in browsers as well as Lambdas — `whitelabel_web` is a
|
|
12
12
|
* first-class channel — and a static `node:crypto` import breaks any
|
|
13
13
|
* browser bundler that does not shim it. `crypto.randomUUID` is present
|
|
14
|
-
* in Node >= 19 and every current browser;
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* in Node >= 19 and every current browser; `getRandomValues` covers older
|
|
15
|
+
* runtimes and non-secure contexts.
|
|
16
|
+
*
|
|
17
|
+
* The last fallback exists for React Native: Hermes provides NO
|
|
18
|
+
* `globalThis.crypto` at all, and `mobile_app` is a first-class channel.
|
|
19
|
+
* Throwing there made `suggest()` and `reportEvents()` — both POSTs —
|
|
20
|
+
* unusable in an app until the consumer added a polyfill, which is the
|
|
21
|
+
* wrong trade twice over: nothing on the platform reads this header, and
|
|
22
|
+
* as stated above the value needs uniqueness, not unguessability. A
|
|
23
|
+
* request that fails is strictly worse than a key that is merely unique.
|
|
24
|
+
*
|
|
25
|
+
* The fallback mixes the clock and a process counter into the first six
|
|
26
|
+
* bytes so that two calls in the same millisecond still differ even under
|
|
27
|
+
* a poor `Math.random`.
|
|
17
28
|
*/
|
|
18
29
|
function randomUUID() {
|
|
19
30
|
const c = globalThis.crypto;
|
|
@@ -26,7 +37,35 @@ function randomUUID() {
|
|
|
26
37
|
const hex = [...b].map((x) => x.toString(16).padStart(2, '0')).join('');
|
|
27
38
|
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
28
39
|
}
|
|
29
|
-
|
|
40
|
+
return uniqueUUID();
|
|
41
|
+
}
|
|
42
|
+
/** Monotonic within the process; wraps well above any per-millisecond burst. */
|
|
43
|
+
let uuidCounter = 0;
|
|
44
|
+
/**
|
|
45
|
+
* A v4-SHAPED identifier built without any crypto source. Unique, not
|
|
46
|
+
* unguessable — see the note on randomUUID for why that is the right
|
|
47
|
+
* requirement for this header.
|
|
48
|
+
*/
|
|
49
|
+
function uniqueUUID() {
|
|
50
|
+
const b = new Uint8Array(16);
|
|
51
|
+
for (let i = 0; i < 16; i += 1)
|
|
52
|
+
b[i] = Math.floor(Math.random() * 256);
|
|
53
|
+
// Bytes 0-3: the clock, so keys are ordered and cannot repeat across
|
|
54
|
+
// milliseconds however weak Math.random is.
|
|
55
|
+
const t = Date.now();
|
|
56
|
+
b[0] = (t >>> 24) & 0xff;
|
|
57
|
+
b[1] = (t >>> 16) & 0xff;
|
|
58
|
+
b[2] = (t >>> 8) & 0xff;
|
|
59
|
+
b[3] = t & 0xff;
|
|
60
|
+
// Bytes 4-5: a per-process counter, so a burst inside one millisecond
|
|
61
|
+
// still differs.
|
|
62
|
+
uuidCounter = (uuidCounter + 1) & 0xffff;
|
|
63
|
+
b[4] = (uuidCounter >>> 8) & 0xff;
|
|
64
|
+
b[5] = uuidCounter & 0xff;
|
|
65
|
+
b[6] = (b[6] & 0x0f) | 0x40; // version 4
|
|
66
|
+
b[8] = (b[8] & 0x3f) | 0x80; // variant
|
|
67
|
+
const hex = [...b].map((x) => x.toString(16).padStart(2, '0')).join('');
|
|
68
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
30
69
|
}
|
|
31
70
|
/**
|
|
32
71
|
* Build the headers for a request to the platform API.
|
|
@@ -100,4 +139,4 @@ async function sendWithAuthRetry(config, params) {
|
|
|
100
139
|
body: params.body,
|
|
101
140
|
});
|
|
102
141
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0RBLG9DQXVCQztBQXdCRCw4Q0EwQkM7QUFoSUQsaURBQWlFO0FBQ2pFLHVDQUF3QztBQVV4QyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUVyRTs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLFVBQVU7SUFDakIsTUFBTSxDQUFDLEdBQ0wsVUFHRCxDQUFDLE1BQU0sQ0FBQztJQUNULElBQUksQ0FBQyxFQUFFLFVBQVU7UUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6QyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFD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QUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGxhdGZvcm1Db25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlbiwgaW52YWxpZGF0ZVRva2VuIH0gZnJvbSAnLi90b2tlbi1zb3VyY2UnO1xuaW1wb3J0IHsgU0RLX1ZFUlNJT04gfSBmcm9tICcuL3ZlcnNpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25lZEhlYWRlclBhcmFtcyB7XG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGhuYW1lIG9ubHksIHdpdGhvdXQgcXVlcnkgc3RyaW5nLiBNdXN0IG1hdGNoIGBjLnJlcS5wYXRoYCBzZXJ2ZXItc2lkZS4gKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKiogUmF3IEpTT04gYm9keSBzdHJpbmcsIG9yIGVtcHR5IGZvciBub25lLiAqL1xuICBib2R5Pzogc3RyaW5nO1xufVxuXG5jb25zdCBNVVRBVElOR19NRVRIT0RTID0gbmV3IFNldChbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJywgJ0RFTEVURSddKTtcblxuLyoqXG4gKiBVVUlEIHY0IHdpdGhvdXQgYSBgbm9kZTpjcnlwdG9gIGltcG9ydC5cbiAqXG4gKiBUaGUgU0RLIHJ1bnMgaW4gYnJvd3NlcnMgYXMgd2VsbCBhcyBMYW1iZGFzIOKAlCBgd2hpdGVsYWJlbF93ZWJgIGlzIGFcbiAqIGZpcnN0LWNsYXNzIGNoYW5uZWwg4oCUIGFuZCBhIHN0YXRpYyBgbm9kZTpjcnlwdG9gIGltcG9ydCBicmVha3MgYW55XG4gKiBicm93c2VyIGJ1bmRsZXIgdGhhdCBkb2VzIG5vdCBzaGltIGl0LiBgY3J5cHRvLnJhbmRvbVVVSURgIGlzIHByZXNlbnRcbiAqIGluIE5vZGUgPj0gMTkgYW5kIGV2ZXJ5IGN1cnJlbnQgYnJvd3NlcjsgdGhlIG1hbnVhbCBmYWxsYmFjayBjb3ZlcnNcbiAqIG9sZGVyIHJ1bnRpbWVzIGFuZCBub24tc2VjdXJlIGNvbnRleHRzLCB3aGVyZSB0aGUgdmFsdWUgaXMgb25seSB1c2VkXG4gKiBhcyBhbiBpZGVtcG90ZW5jeSBrZXkgYW5kIG5lZWRzIHVuaXF1ZW5lc3MsIG5vdCB1bmd1ZXNzYWJpbGl0eS5cbiAqL1xuZnVuY3Rpb24gcmFuZG9tVVVJRCgpOiBzdHJpbmcge1xuICBjb25zdCBjID0gKFxuICAgIGdsb2JhbFRoaXMgYXMge1xuICAgICAgY3J5cHRvPzogeyByYW5kb21VVUlEPzogKCkgPT4gc3RyaW5nOyBnZXRSYW5kb21WYWx1ZXM/OiAoYTogVWludDhBcnJheSkgPT4gVWludDhBcnJheSB9O1xuICAgIH1cbiAgKS5jcnlwdG87XG4gIGlmIChjPy5yYW5kb21VVUlEKSByZXR1cm4gYy5yYW5kb21VVUlEKCk7XG4gIGlmIChjPy5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICBjb25zdCBiID0gYy5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMTYpKTtcbiAgICBiWzZdID0gKGJbNl0gJiAweDBmKSB8IDB4NDA7XG4gICAgYls4XSA9IChiWzhdICYgMHgzZikgfCAweDgwO1xuICAgIGNvbnN0IGhleCA9IFsuLi5iXS5tYXAoKHgpID0+IHgudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpO1xuICAgIHJldHVybiBgJHtoZXguc2xpY2UoMCwgOCl9LSR7aGV4LnNsaWNlKDgsIDEyKX0tJHtoZXguc2xpY2UoMTIsIDE2KX0tJHtoZXguc2xpY2UoMTYsIDIwKX0tJHtoZXguc2xpY2UoMjApfWA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdObyBjcnlwdG8gc291cmNlIGF2YWlsYWJsZSBmb3IgaWRlbXBvdGVuY3kta2V5IGdlbmVyYXRpb24nKTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgaGVhZGVycyBmb3IgYSByZXF1ZXN0IHRvIHRoZSBwbGF0Zm9ybSBBUEkuXG4gKlxuICogQWRkcyB0aHJlZSBwbGF0Zm9ybS13aWRlIGhlYWRlcnMgYXV0b21hdGljYWxseTpcbiAqICAgLSBgVXNlci1BZ2VudGAgc28gdGhlIGdhdGV3YXkgY2FuIGF0dHJpYnV0ZSB0cmFmZmljIHRvIFNESyB2ZXJzaW9uXG4gKiAgIC0gYElkZW1wb3RlbmN5LUtleWAgKFVVSUQgdjQpIG9uIG11dGF0aW5nIG1ldGhvZHMsIHNvIGNhbGxlcnMgZG9uJ3RcbiAqICAgICBoYXZlIHRvIGdlbmVyYXRlIG9uZSBwZXIgY2FsbFxuICogICAtIGBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb25gIHdoZW4gYSBib2R5IGlzIHN1cHBsaWVkXG4gKlxuICogQXV0aCBjb21lcyBmcm9tIGBjb25maWcuYXV0aGA6XG4gKiAgIC0gYGJlYXJlcmA6IHRoZSB0b2tlbiBpcyBzZW50IHZlcmJhdGltIChjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yXG4gKiAgICAgZnJlc2huZXNzOyBTREsgdGhyb3dzIFRva2VuRXhwaXJlZEVycm9yIG9uIGxvY2FsLWRldGVjdGVkIGV4cGlyeSlcbiAqICAgLSBgdG9rZW4tc291cmNlYDogU0RLIG1pbnRzICsgY2FjaGVzIHZpYSBPQXV0aDIgY2xpZW50X2NyZWRlbnRpYWxzXG4gKiAgICAgYW5kIHJlZnJlc2hlcyBvbiBleHBpcnkgLyA0MDFcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkSGVhZGVycyhcbiAgY29uZmlnOiBQbGF0Zm9ybUNvbmZpZyxcbiAgcGFyYW1zOiBTaWduZWRIZWFkZXJQYXJhbXMsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAndXNlci1hZ2VudCc6IGB1ZW5nYWdlLXBsYXRmb3JtLXNkay8ke1NES19WRVJTSU9OfWAsXG4gIH07XG4gIGlmIChwYXJhbXMuYm9keSAhPT0gdW5kZWZpbmVkKSBoZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgaWYgKE1VVEFUSU5HX01FVEhPRFMuaGFzKHBhcmFtcy5tZXRob2QudG9VcHBlckNhc2UoKSkpIHtcbiAgICBoZWFkZXJzWydpZGVtcG90ZW5jeS1rZXknXSA9IHJhbmRvbVVVSUQoKTtcbiAgfVxuXG4gIGlmICghY29uZmlnLmF1dGgpIHJldHVybiBoZWFkZXJzO1xuXG4gIGlmIChjb25maWcuYXV0aC50eXBlID09PSAnYmVhcmVyJykge1xuICAgIGhlYWRlcnNbJ2F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHtjb25maWcuYXV0aC50b2tlbn1gO1xuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgLy8gdG9rZW4tc291cmNlOiBtaW50ICsgY2FjaGUgKyByZWZyZXNoLWRlZHVwIGhhcHBlbnMgaW4gZ2V0QWNjZXNzVG9rZW5cbiAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlbihjb25maWcuYXV0aC5zdGF0ZSk7XG4gIGhlYWRlcnNbJ2F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICByZXR1cm4gaGVhZGVycztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW5kUmVxdWVzdFBhcmFtcyB7XG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGhuYW1lIG9ubHksIHdpdGhvdXQgcXVlcnkgc3RyaW5nLiBNdXN0IG1hdGNoIGBjLnJlcS5wYXRoYCBzZXJ2ZXItc2lkZS4gKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKiogRnVsbHktcXVhbGlmaWVkIFVSTCB0aGUgZmV0Y2ggaXMgc2VudCB0byAoYmFzZSArIHBhdGggKyBxdWVyeXN0cmluZykuICovXG4gIHVybDogc3RyaW5nO1xuICAvKiogUmF3IEpTT04gYm9keSBzdHJpbmcsIG9yIHVuZGVmaW5lZCBmb3Igbm9uZS4gKi9cbiAgYm9keT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZW5kIGEgcmVxdWVzdCB3aXRoIHRoZSBTREsncyBzdGFuZGFyZCA0MDEtcmV0cnktb25jZSBiZWhhdmlvdXIuXG4gKlxuICogT25seSByZXRyaWVzIHdoZW4gYXV0aCBpcyBgdG9rZW4tc291cmNlYCwgc2luY2UgdGhhdCdzIHRoZSBjYXNlXG4gKiB3aGVyZSB0aGUgY2FjaGVkIHRva2VuIG1heSBoYXZlIGV4cGlyZWQgc2VydmVyLXNpZGUuIEhNQUMgYW5kXG4gKiBzdGF0aWMgYmVhcmVyIDQwMXMgbWVhbiB0aGUgYXV0aCBpcyBtaXNjb25maWd1cmVkIGFuZCBhIHJldHJ5XG4gKiB3b3VsZCBqdXN0IGZhaWwgYWdhaW4uIEJ1YmJsZSB0aGUgcmVzcG9uc2Ugc28gdGhlIGNhbGxlciBzdXJmYWNlcyBpdC5cbiAqXG4gKiBTaGFyZWQgYnkgZXZlcnkgbmFtZXNwYWNlIGNsaWVudCAoYnVzaW5lc3MsIGF1ZGl0LCB6b25lcywgLi4uKSBzb1xuICogdGhlIHJldHJ5IHNlbWFudGljcyBhcmUgdW5pZm9ybS4gTGlmdGVkIG91dCBvZiBgYnVzaW5lc3MvY2xpZW50LnRzYFxuICogd2l0aCBubyBiZWhhdmlvdXIgY2hhbmdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFdpdGhBdXRoUmV0cnkoXG4gIGNvbmZpZzogUGxhdGZvcm1Db25maWcsXG4gIHBhcmFtczogU2VuZFJlcXVlc3RQYXJhbXMsXG4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIGNvbnN0IGhlYWRlcnMgPSBhd2FpdCBidWlsZEhlYWRlcnMoY29uZmlnLCB7XG4gICAgbWV0aG9kOiBwYXJhbXMubWV0aG9kLFxuICAgIHBhdGg6IHBhcmFtcy5wYXRoLFxuICAgIGJvZHk6IHBhcmFtcy5ib2R5LFxuICB9KTtcbiAgY29uc3QgcmVzID0gYXdhaXQgY29uZmlnLmZldGNoRm4ocGFyYW1zLnVybCwge1xuICAgIG1ldGhvZDogcGFyYW1zLm1ldGhvZCxcbiAgICBoZWFkZXJzLFxuICAgIGJvZHk6IHBhcmFtcy5ib2R5LFxuICB9KTtcbiAgaWYgKHJlcy5zdGF0dXMgIT09IDQwMSB8fCBjb25maWcuYXV0aD8udHlwZSAhPT0gJ3Rva2VuLXNvdXJjZScpIHJldHVybiByZXM7XG4gIGludmFsaWRhdGVUb2tlbihjb25maWcuYXV0aC5zdGF0ZSk7XG4gIGNvbnN0IHJldHJ5SGVhZGVycyA9IGF3YWl0IGJ1aWxkSGVhZGVycyhjb25maWcsIHtcbiAgICBtZXRob2Q6IHBhcmFtcy5tZXRob2QsXG4gICAgcGF0aDogcGFyYW1zLnBhdGgsXG4gICAgYm9keTogcGFyYW1zLmJvZHksXG4gIH0pO1xuICByZXR1cm4gY29uZmlnLmZldGNoRm4ocGFyYW1zLnVybCwge1xuICAgIG1ldGhvZDogcGFyYW1zLm1ldGhvZCxcbiAgICBoZWFkZXJzOiByZXRyeUhlYWRlcnMsXG4gICAgYm9keTogcGFyYW1zLmJvZHksXG4gIH0pO1xufVxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0dBLG9DQXVCQztBQXdCRCw4Q0EwQkM7QUE1S0QsaURBQWlFO0FBQ2pFLHVDQUF3QztBQVV4QyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUVyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxTQUFTLFVBQVU7SUFDakIsTUFBTSxDQUFDLEdBQ0wsVUFHRCxDQUFDLE1BQU0sQ0FBQztJQUNULElBQUksQ0FBQyxFQUFFLFVBQVU7UUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6QyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVB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QUMzQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsT0FBTztRQUNQLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtLQUNsQixDQUFDLENBQUM7SUFDSCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLGNBQWM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUMzRSxJQUFBLDhCQUFlLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxNQUFNLFlBQVksR0FBRyxNQUFNLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDOUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7S0FDbEIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtLQUNsQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQbGF0Zm9ybUNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuLCBpbnZhbGlkYXRlVG9rZW4gfSBmcm9tICcuL3Rva2VuLXNvdXJjZSc7XG5pbXBvcnQgeyBTREtfVkVSU0lPTiB9IGZyb20gJy4vdmVyc2lvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmVkSGVhZGVyUGFyYW1zIHtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIC8qKiBVUkwgcGF0aG5hbWUgb25seSwgd2l0aG91dCBxdWVyeSBzdHJpbmcuIE11c3QgbWF0Y2ggYGMucmVxLnBhdGhgIHNlcnZlci1zaWRlLiAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBSYXcgSlNPTiBib2R5IHN0cmluZywgb3IgZW1wdHkgZm9yIG5vbmUuICovXG4gIGJvZHk/OiBzdHJpbmc7XG59XG5cbmNvbnN0IE1VVEFUSU5HX01FVEhPRFMgPSBuZXcgU2V0KFsnUE9TVCcsICdQVVQnLCAnUEFUQ0gnLCAnREVMRVRFJ10pO1xuXG4vKipcbiAqIFVVSUQgdjQgd2l0aG91dCBhIGBub2RlOmNyeXB0b2AgaW1wb3J0LlxuICpcbiAqIFRoZSBTREsgcnVucyBpbiBicm93c2VycyBhcyB3ZWxsIGFzIExhbWJkYXMg4oCUIGB3aGl0ZWxhYmVsX3dlYmAgaXMgYVxuICogZmlyc3QtY2xhc3MgY2hhbm5lbCDigJQgYW5kIGEgc3RhdGljIGBub2RlOmNyeXB0b2AgaW1wb3J0IGJyZWFrcyBhbnlcbiAqIGJyb3dzZXIgYnVuZGxlciB0aGF0IGRvZXMgbm90IHNoaW0gaXQuIGBjcnlwdG8ucmFuZG9tVVVJRGAgaXMgcHJlc2VudFxuICogaW4gTm9kZSA+PSAxOSBhbmQgZXZlcnkgY3VycmVudCBicm93c2VyOyBgZ2V0UmFuZG9tVmFsdWVzYCBjb3ZlcnMgb2xkZXJcbiAqIHJ1bnRpbWVzIGFuZCBub24tc2VjdXJlIGNvbnRleHRzLlxuICpcbiAqIFRoZSBsYXN0IGZhbGxiYWNrIGV4aXN0cyBmb3IgUmVhY3QgTmF0aXZlOiBIZXJtZXMgcHJvdmlkZXMgTk9cbiAqIGBnbG9iYWxUaGlzLmNyeXB0b2AgYXQgYWxsLCBhbmQgYG1vYmlsZV9hcHBgIGlzIGEgZmlyc3QtY2xhc3MgY2hhbm5lbC5cbiAqIFRocm93aW5nIHRoZXJlIG1hZGUgYHN1Z2dlc3QoKWAgYW5kIGByZXBvcnRFdmVudHMoKWAg4oCUIGJvdGggUE9TVHMg4oCUXG4gKiB1bnVzYWJsZSBpbiBhbiBhcHAgdW50aWwgdGhlIGNvbnN1bWVyIGFkZGVkIGEgcG9seWZpbGwsIHdoaWNoIGlzIHRoZVxuICogd3JvbmcgdHJhZGUgdHdpY2Ugb3Zlcjogbm90aGluZyBvbiB0aGUgcGxhdGZvcm0gcmVhZHMgdGhpcyBoZWFkZXIsIGFuZFxuICogYXMgc3RhdGVkIGFib3ZlIHRoZSB2YWx1ZSBuZWVkcyB1bmlxdWVuZXNzLCBub3QgdW5ndWVzc2FiaWxpdHkuIEFcbiAqIHJlcXVlc3QgdGhhdCBmYWlscyBpcyBzdHJpY3RseSB3b3JzZSB0aGFuIGEga2V5IHRoYXQgaXMgbWVyZWx5IHVuaXF1ZS5cbiAqXG4gKiBUaGUgZmFsbGJhY2sgbWl4ZXMgdGhlIGNsb2NrIGFuZCBhIHByb2Nlc3MgY291bnRlciBpbnRvIHRoZSBmaXJzdCBzaXhcbiAqIGJ5dGVzIHNvIHRoYXQgdHdvIGNhbGxzIGluIHRoZSBzYW1lIG1pbGxpc2Vjb25kIHN0aWxsIGRpZmZlciBldmVuIHVuZGVyXG4gKiBhIHBvb3IgYE1hdGgucmFuZG9tYC5cbiAqL1xuZnVuY3Rpb24gcmFuZG9tVVVJRCgpOiBzdHJpbmcge1xuICBjb25zdCBjID0gKFxuICAgIGdsb2JhbFRoaXMgYXMge1xuICAgICAgY3J5cHRvPzogeyByYW5kb21VVUlEPzogKCkgPT4gc3RyaW5nOyBnZXRSYW5kb21WYWx1ZXM/OiAoYTogVWludDhBcnJheSkgPT4gVWludDhBcnJheSB9O1xuICAgIH1cbiAgKS5jcnlwdG87XG4gIGlmIChjPy5yYW5kb21VVUlEKSByZXR1cm4gYy5yYW5kb21VVUlEKCk7XG4gIGlmIChjPy5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICBjb25zdCBiID0gYy5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMTYpKTtcbiAgICBiWzZdID0gKGJbNl0gJiAweDBmKSB8IDB4NDA7XG4gICAgYls4XSA9IChiWzhdICYgMHgzZikgfCAweDgwO1xuICAgIGNvbnN0IGhleCA9IFsuLi5iXS5tYXAoKHgpID0+IHgudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpO1xuICAgIHJldHVybiBgJHtoZXguc2xpY2UoMCwgOCl9LSR7aGV4LnNsaWNlKDgsIDEyKX0tJHtoZXguc2xpY2UoMTIsIDE2KX0tJHtoZXguc2xpY2UoMTYsIDIwKX0tJHtoZXguc2xpY2UoMjApfWA7XG4gIH1cbiAgcmV0dXJuIHVuaXF1ZVVVSUQoKTtcbn1cblxuLyoqIE1vbm90b25pYyB3aXRoaW4gdGhlIHByb2Nlc3M7IHdyYXBzIHdlbGwgYWJvdmUgYW55IHBlci1taWxsaXNlY29uZCBidXJzdC4gKi9cbmxldCB1dWlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogQSB2NC1TSEFQRUQgaWRlbnRpZmllciBidWlsdCB3aXRob3V0IGFueSBjcnlwdG8gc291cmNlLiBVbmlxdWUsIG5vdFxuICogdW5ndWVzc2FibGUg4oCUIHNlZSB0aGUgbm90ZSBvbiByYW5kb21VVUlEIGZvciB3aHkgdGhhdCBpcyB0aGUgcmlnaHRcbiAqIHJlcXVpcmVtZW50IGZvciB0aGlzIGhlYWRlci5cbiAqL1xuZnVuY3Rpb24gdW5pcXVlVVVJRCgpOiBzdHJpbmcge1xuICBjb25zdCBiID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyBpICs9IDEpIGJbaV0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xuXG4gIC8vIEJ5dGVzIDAtMzogdGhlIGNsb2NrLCBzbyBrZXlzIGFyZSBvcmRlcmVkIGFuZCBjYW5ub3QgcmVwZWF0IGFjcm9zc1xuICAvLyBtaWxsaXNlY29uZHMgaG93ZXZlciB3ZWFrIE1hdGgucmFuZG9tIGlzLlxuICBjb25zdCB0ID0gRGF0ZS5ub3coKTtcbiAgYlswXSA9ICh0ID4+PiAyNCkgJiAweGZmO1xuICBiWzFdID0gKHQgPj4+IDE2KSAmIDB4ZmY7XG4gIGJbMl0gPSAodCA+Pj4gOCkgJiAweGZmO1xuICBiWzNdID0gdCAmIDB4ZmY7XG5cbiAgLy8gQnl0ZXMgNC01OiBhIHBlci1wcm9jZXNzIGNvdW50ZXIsIHNvIGEgYnVyc3QgaW5zaWRlIG9uZSBtaWxsaXNlY29uZFxuICAvLyBzdGlsbCBkaWZmZXJzLlxuICB1dWlkQ291bnRlciA9ICh1dWlkQ291bnRlciArIDEpICYgMHhmZmZmO1xuICBiWzRdID0gKHV1aWRDb3VudGVyID4+PiA4KSAmIDB4ZmY7XG4gIGJbNV0gPSB1dWlkQ291bnRlciAmIDB4ZmY7XG5cbiAgYls2XSA9IChiWzZdICYgMHgwZikgfCAweDQwOyAvLyB2ZXJzaW9uIDRcbiAgYls4XSA9IChiWzhdICYgMHgzZikgfCAweDgwOyAvLyB2YXJpYW50XG5cbiAgY29uc3QgaGV4ID0gWy4uLmJdLm1hcCgoeCkgPT4geC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG4gIHJldHVybiBgJHtoZXguc2xpY2UoMCwgOCl9LSR7aGV4LnNsaWNlKDgsIDEyKX0tJHtoZXguc2xpY2UoMTIsIDE2KX0tJHtoZXguc2xpY2UoMTYsIDIwKX0tJHtoZXguc2xpY2UoMjApfWA7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGhlYWRlcnMgZm9yIGEgcmVxdWVzdCB0byB0aGUgcGxhdGZvcm0gQVBJLlxuICpcbiAqIEFkZHMgdGhyZWUgcGxhdGZvcm0td2lkZSBoZWFkZXJzIGF1dG9tYXRpY2FsbHk6XG4gKiAgIC0gYFVzZXItQWdlbnRgIHNvIHRoZSBnYXRld2F5IGNhbiBhdHRyaWJ1dGUgdHJhZmZpYyB0byBTREsgdmVyc2lvblxuICogICAtIGBJZGVtcG90ZW5jeS1LZXlgIChVVUlEIHY0KSBvbiBtdXRhdGluZyBtZXRob2RzLCBzbyBjYWxsZXJzIGRvbid0XG4gKiAgICAgaGF2ZSB0byBnZW5lcmF0ZSBvbmUgcGVyIGNhbGxcbiAqICAgLSBgY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uYCB3aGVuIGEgYm9keSBpcyBzdXBwbGllZFxuICpcbiAqIEF1dGggY29tZXMgZnJvbSBgY29uZmlnLmF1dGhgOlxuICogICAtIGBiZWFyZXJgOiB0aGUgdG9rZW4gaXMgc2VudCB2ZXJiYXRpbSAoY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvclxuICogICAgIGZyZXNobmVzczsgU0RLIHRocm93cyBUb2tlbkV4cGlyZWRFcnJvciBvbiBsb2NhbC1kZXRlY3RlZCBleHBpcnkpXG4gKiAgIC0gYHRva2VuLXNvdXJjZWA6IFNESyBtaW50cyArIGNhY2hlcyB2aWEgT0F1dGgyIGNsaWVudF9jcmVkZW50aWFsc1xuICogICAgIGFuZCByZWZyZXNoZXMgb24gZXhwaXJ5IC8gNDAxXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZEhlYWRlcnMoXG4gIGNvbmZpZzogUGxhdGZvcm1Db25maWcsXG4gIHBhcmFtczogU2lnbmVkSGVhZGVyUGFyYW1zLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ3VzZXItYWdlbnQnOiBgdWVuZ2FnZS1wbGF0Zm9ybS1zZGsvJHtTREtfVkVSU0lPTn1gLFxuICB9O1xuICBpZiAocGFyYW1zLmJvZHkgIT09IHVuZGVmaW5lZCkgaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbic7XG4gIGlmIChNVVRBVElOR19NRVRIT0RTLmhhcyhwYXJhbXMubWV0aG9kLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgaGVhZGVyc1snaWRlbXBvdGVuY3kta2V5J10gPSByYW5kb21VVUlEKCk7XG4gIH1cblxuICBpZiAoIWNvbmZpZy5hdXRoKSByZXR1cm4gaGVhZGVycztcblxuICBpZiAoY29uZmlnLmF1dGgudHlwZSA9PT0gJ2JlYXJlcicpIHtcbiAgICBoZWFkZXJzWydhdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7Y29uZmlnLmF1dGgudG9rZW59YDtcbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8vIHRva2VuLXNvdXJjZTogbWludCArIGNhY2hlICsgcmVmcmVzaC1kZWR1cCBoYXBwZW5zIGluIGdldEFjY2Vzc1Rva2VuXG4gIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oY29uZmlnLmF1dGguc3RhdGUpO1xuICBoZWFkZXJzWydhdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgcmV0dXJuIGhlYWRlcnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFJlcXVlc3RQYXJhbXMge1xuICBtZXRob2Q6IHN0cmluZztcbiAgLyoqIFVSTCBwYXRobmFtZSBvbmx5LCB3aXRob3V0IHF1ZXJ5IHN0cmluZy4gTXVzdCBtYXRjaCBgYy5yZXEucGF0aGAgc2VydmVyLXNpZGUuICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIEZ1bGx5LXF1YWxpZmllZCBVUkwgdGhlIGZldGNoIGlzIHNlbnQgdG8gKGJhc2UgKyBwYXRoICsgcXVlcnlzdHJpbmcpLiAqL1xuICB1cmw6IHN0cmluZztcbiAgLyoqIFJhdyBKU09OIGJvZHkgc3RyaW5nLCBvciB1bmRlZmluZWQgZm9yIG5vbmUuICovXG4gIGJvZHk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2VuZCBhIHJlcXVlc3Qgd2l0aCB0aGUgU0RLJ3Mgc3RhbmRhcmQgNDAxLXJldHJ5LW9uY2UgYmVoYXZpb3VyLlxuICpcbiAqIE9ubHkgcmV0cmllcyB3aGVuIGF1dGggaXMgYHRva2VuLXNvdXJjZWAsIHNpbmNlIHRoYXQncyB0aGUgY2FzZVxuICogd2hlcmUgdGhlIGNhY2hlZCB0b2tlbiBtYXkgaGF2ZSBleHBpcmVkIHNlcnZlci1zaWRlLiBITUFDIGFuZFxuICogc3RhdGljIGJlYXJlciA0MDFzIG1lYW4gdGhlIGF1dGggaXMgbWlzY29uZmlndXJlZCBhbmQgYSByZXRyeVxuICogd291bGQganVzdCBmYWlsIGFnYWluLiBCdWJibGUgdGhlIHJlc3BvbnNlIHNvIHRoZSBjYWxsZXIgc3VyZmFjZXMgaXQuXG4gKlxuICogU2hhcmVkIGJ5IGV2ZXJ5IG5hbWVzcGFjZSBjbGllbnQgKGJ1c2luZXNzLCBhdWRpdCwgem9uZXMsIC4uLikgc29cbiAqIHRoZSByZXRyeSBzZW1hbnRpY3MgYXJlIHVuaWZvcm0uIExpZnRlZCBvdXQgb2YgYGJ1c2luZXNzL2NsaWVudC50c2BcbiAqIHdpdGggbm8gYmVoYXZpb3VyIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRXaXRoQXV0aFJldHJ5KFxuICBjb25maWc6IFBsYXRmb3JtQ29uZmlnLFxuICBwYXJhbXM6IFNlbmRSZXF1ZXN0UGFyYW1zLFxuKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICBjb25zdCBoZWFkZXJzID0gYXdhaXQgYnVpbGRIZWFkZXJzKGNvbmZpZywge1xuICAgIG1ldGhvZDogcGFyYW1zLm1ldGhvZCxcbiAgICBwYXRoOiBwYXJhbXMucGF0aCxcbiAgICBib2R5OiBwYXJhbXMuYm9keSxcbiAgfSk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGNvbmZpZy5mZXRjaEZuKHBhcmFtcy51cmwsIHtcbiAgICBtZXRob2Q6IHBhcmFtcy5tZXRob2QsXG4gICAgaGVhZGVycyxcbiAgICBib2R5OiBwYXJhbXMuYm9keSxcbiAgfSk7XG4gIGlmIChyZXMuc3RhdHVzICE9PSA0MDEgfHwgY29uZmlnLmF1dGg/LnR5cGUgIT09ICd0b2tlbi1zb3VyY2UnKSByZXR1cm4gcmVzO1xuICBpbnZhbGlkYXRlVG9rZW4oY29uZmlnLmF1dGguc3RhdGUpO1xuICBjb25zdCByZXRyeUhlYWRlcnMgPSBhd2FpdCBidWlsZEhlYWRlcnMoY29uZmlnLCB7XG4gICAgbWV0aG9kOiBwYXJhbXMubWV0aG9kLFxuICAgIHBhdGg6IHBhcmFtcy5wYXRoLFxuICAgIGJvZHk6IHBhcmFtcy5ib2R5LFxuICB9KTtcbiAgcmV0dXJuIGNvbmZpZy5mZXRjaEZuKHBhcmFtcy51cmwsIHtcbiAgICBtZXRob2Q6IHBhcmFtcy5tZXRob2QsXG4gICAgaGVhZGVyczogcmV0cnlIZWFkZXJzLFxuICAgIGJvZHk6IHBhcmFtcy5ib2R5LFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* AppSync assigns the Event API's DNS names at create time
|
|
8
8
|
* (`<apiId>.appsync-api.<region>.amazonaws.com` and the matching
|
|
9
9
|
* `appsync-realtime-api` host), so they cannot be known before the stack
|
|
10
|
-
* is deployed.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* is deployed. An environment without a deployed stack stays null and
|
|
11
|
+
* `connect({ env })` throws with instructions; `connect({ endpoints })`
|
|
12
|
+
* always works.
|
|
13
13
|
*/
|
|
14
14
|
export interface RealtimeEndpoints {
|
|
15
15
|
/** AppSync Event API HTTP domain. Also the `host` in the auth header. */
|
|
@@ -3,15 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.API_BASE = void 0;
|
|
4
4
|
exports.endpointsFor = endpointsFor;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
9
|
-
*
|
|
6
|
+
* AppSync assigns these at Event API create time and the prefix is NOT the
|
|
7
|
+
* API id, so they cannot be constructed — they are copied from the
|
|
8
|
+
* `RealtimeEventApiHttpDns-{env}` / `RealtimeEventApiRealtimeDns-{env}`
|
|
9
|
+
* outputs of `UengageRealtimeService-{env}`.
|
|
10
|
+
*
|
|
11
|
+
* Because a cached browser bundle carries these values, recreating an Event
|
|
12
|
+
* API is a breaking change for every pinned consumer. The `browser-sdk`
|
|
13
|
+
* release job asserts the prod pair still matches the live stack exports and
|
|
14
|
+
* fails the release on drift, so this table cannot rot silently.
|
|
15
|
+
*
|
|
16
|
+
* `dev` stays null — the realtime stack is not deployed there.
|
|
10
17
|
*/
|
|
11
18
|
const ENDPOINTS = {
|
|
12
19
|
dev: null,
|
|
13
|
-
uat:
|
|
14
|
-
|
|
20
|
+
uat: {
|
|
21
|
+
httpDomain: 'zl2kormwrjexbglkbpsy44xye4.appsync-api.ap-south-1.amazonaws.com',
|
|
22
|
+
realtimeDomain: 'zl2kormwrjexbglkbpsy44xye4.appsync-realtime-api.ap-south-1.amazonaws.com',
|
|
23
|
+
apiBase: 'https://api.uat.platform.uengage.io',
|
|
24
|
+
},
|
|
25
|
+
prod: {
|
|
26
|
+
httpDomain: '6dhfjtlvyjfalku7umbusuilha.appsync-api.ap-south-1.amazonaws.com',
|
|
27
|
+
realtimeDomain: '6dhfjtlvyjfalku7umbusuilha.appsync-realtime-api.ap-south-1.amazonaws.com',
|
|
28
|
+
apiBase: 'https://api.platform.uengage.io',
|
|
29
|
+
},
|
|
15
30
|
};
|
|
16
31
|
/** Platform API base per environment — known ahead of any deploy. */
|
|
17
32
|
exports.API_BASE = {
|
|
@@ -28,4 +43,4 @@ function endpointsFor(env) {
|
|
|
28
43
|
}
|
|
29
44
|
return found;
|
|
30
45
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlYWx0aW1lL2VuZHBvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwREEsb0NBVUM7QUE1Q0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxTQUFTLEdBQWtEO0lBQy9ELEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFO1FBQ0gsVUFBVSxFQUFFLGlFQUFpRTtRQUM3RSxjQUFjLEVBQUUsMEVBQTBFO1FBQzFGLE9BQU8sRUFBRSxxQ0FBcUM7S0FDL0M7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUUsaUVBQWlFO1FBQzdFLGNBQWMsRUFBRSwwRUFBMEU7UUFDMUYsT0FBTyxFQUFFLGlDQUFpQztLQUMzQztDQUNGLENBQUM7QUFFRixxRUFBcUU7QUFDeEQsUUFBQSxRQUFRLEdBQWdDO0lBQ25ELEdBQUcsRUFBRSxxQ0FBcUM7SUFDMUMsR0FBRyxFQUFFLHFDQUFxQztJQUMxQyxJQUFJLEVBQUUsaUNBQWlDO0NBQ3hDLENBQUM7QUFFRixTQUFnQixZQUFZLENBQUMsR0FBZ0I7SUFDM0MsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0RBQXNELEdBQUcsS0FBSztZQUM1RCxpRkFBaUY7WUFDakYsbUZBQW1GLENBQ3RGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQZXItZW52aXJvbm1lbnQgcmVhbHRpbWUgZW5kcG9pbnRzLlxuICpcbiAqIEZyb250ZW5kcyBwYXNzIGBjb25uZWN0KHsgZW52OiAncHJvZCcgfSlgIGFuZCBnZXQgVVJMcyBmcm9tIGhlcmUg4oCUIG5vXG4gKiBob3N0bmFtZXMgb3IgQVJOcyBpbiBhcHAgY29kZS5cbiAqXG4gKiBBcHBTeW5jIGFzc2lnbnMgdGhlIEV2ZW50IEFQSSdzIEROUyBuYW1lcyBhdCBjcmVhdGUgdGltZVxuICogKGA8YXBpSWQ+LmFwcHN5bmMtYXBpLjxyZWdpb24+LmFtYXpvbmF3cy5jb21gIGFuZCB0aGUgbWF0Y2hpbmdcbiAqIGBhcHBzeW5jLXJlYWx0aW1lLWFwaWAgaG9zdCksIHNvIHRoZXkgY2Fubm90IGJlIGtub3duIGJlZm9yZSB0aGUgc3RhY2tcbiAqIGlzIGRlcGxveWVkLiBBbiBlbnZpcm9ubWVudCB3aXRob3V0IGEgZGVwbG95ZWQgc3RhY2sgc3RheXMgbnVsbCBhbmRcbiAqIGBjb25uZWN0KHsgZW52IH0pYCB0aHJvd3Mgd2l0aCBpbnN0cnVjdGlvbnM7IGBjb25uZWN0KHsgZW5kcG9pbnRzIH0pYFxuICogYWx3YXlzIHdvcmtzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWx0aW1lRW5kcG9pbnRzIHtcbiAgLyoqIEFwcFN5bmMgRXZlbnQgQVBJIEhUVFAgZG9tYWluLiBBbHNvIHRoZSBgaG9zdGAgaW4gdGhlIGF1dGggaGVhZGVyLiAqL1xuICBodHRwRG9tYWluOiBzdHJpbmc7XG4gIC8qKiBBcHBTeW5jIEV2ZW50IEFQSSByZWFsdGltZSAoV2ViU29ja2V0KSBkb21haW4uICovXG4gIHJlYWx0aW1lRG9tYWluOiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBBUEkgYmFzZSBVUkwsIHVzZWQgZm9yIHRoZSBsYXN0LXZhbHVlIHNuYXBzaG90IGZldGNoLiAqL1xuICBhcGlCYXNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFJlYWx0aW1lRW52ID0gJ2RldicgfCAndWF0JyB8ICdwcm9kJztcblxuLyoqXG4gKiBBcHBTeW5jIGFzc2lnbnMgdGhlc2UgYXQgRXZlbnQgQVBJIGNyZWF0ZSB0aW1lIGFuZCB0aGUgcHJlZml4IGlzIE5PVCB0aGVcbiAqIEFQSSBpZCwgc28gdGhleSBjYW5ub3QgYmUgY29uc3RydWN0ZWQg4oCUIHRoZXkgYXJlIGNvcGllZCBmcm9tIHRoZVxuICogYFJlYWx0aW1lRXZlbnRBcGlIdHRwRG5zLXtlbnZ9YCAvIGBSZWFsdGltZUV2ZW50QXBpUmVhbHRpbWVEbnMte2Vudn1gXG4gKiBvdXRwdXRzIG9mIGBVZW5nYWdlUmVhbHRpbWVTZXJ2aWNlLXtlbnZ9YC5cbiAqXG4gKiBCZWNhdXNlIGEgY2FjaGVkIGJyb3dzZXIgYnVuZGxlIGNhcnJpZXMgdGhlc2UgdmFsdWVzLCByZWNyZWF0aW5nIGFuIEV2ZW50XG4gKiBBUEkgaXMgYSBicmVha2luZyBjaGFuZ2UgZm9yIGV2ZXJ5IHBpbm5lZCBjb25zdW1lci4gVGhlIGBicm93c2VyLXNka2BcbiAqIHJlbGVhc2Ugam9iIGFzc2VydHMgdGhlIHByb2QgcGFpciBzdGlsbCBtYXRjaGVzIHRoZSBsaXZlIHN0YWNrIGV4cG9ydHMgYW5kXG4gKiBmYWlscyB0aGUgcmVsZWFzZSBvbiBkcmlmdCwgc28gdGhpcyB0YWJsZSBjYW5ub3Qgcm90IHNpbGVudGx5LlxuICpcbiAqIGBkZXZgIHN0YXlzIG51bGwg4oCUIHRoZSByZWFsdGltZSBzdGFjayBpcyBub3QgZGVwbG95ZWQgdGhlcmUuXG4gKi9cbmNvbnN0IEVORFBPSU5UUzogUmVjb3JkPFJlYWx0aW1lRW52LCBSZWFsdGltZUVuZHBvaW50cyB8IG51bGw+ID0ge1xuICBkZXY6IG51bGwsXG4gIHVhdDoge1xuICAgIGh0dHBEb21haW46ICd6bDJrb3Jtd3JqZXhiZ2xrYnBzeTQ0eHllNC5hcHBzeW5jLWFwaS5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20nLFxuICAgIHJlYWx0aW1lRG9tYWluOiAnemwya29ybXdyamV4Ymdsa2Jwc3k0NHh5ZTQuYXBwc3luYy1yZWFsdGltZS1hcGkuYXAtc291dGgtMS5hbWF6b25hd3MuY29tJyxcbiAgICBhcGlCYXNlOiAnaHR0cHM6Ly9hcGkudWF0LnBsYXRmb3JtLnVlbmdhZ2UuaW8nLFxuICB9LFxuICBwcm9kOiB7XG4gICAgaHR0cERvbWFpbjogJzZkaGZqdGx2eWpmYWxrdTd1bWJ1c3VpbGhhLmFwcHN5bmMtYXBpLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbScsXG4gICAgcmVhbHRpbWVEb21haW46ICc2ZGhmanRsdnlqZmFsa3U3dW1idXN1aWxoYS5hcHBzeW5jLXJlYWx0aW1lLWFwaS5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20nLFxuICAgIGFwaUJhc2U6ICdodHRwczovL2FwaS5wbGF0Zm9ybS51ZW5nYWdlLmlvJyxcbiAgfSxcbn07XG5cbi8qKiBQbGF0Zm9ybSBBUEkgYmFzZSBwZXIgZW52aXJvbm1lbnQg4oCUIGtub3duIGFoZWFkIG9mIGFueSBkZXBsb3kuICovXG5leHBvcnQgY29uc3QgQVBJX0JBU0U6IFJlY29yZDxSZWFsdGltZUVudiwgc3RyaW5nPiA9IHtcbiAgZGV2OiAnaHR0cHM6Ly9hcGkuZGV2LnBsYXRmb3JtLnVlbmdhZ2UuaW8nLFxuICB1YXQ6ICdodHRwczovL2FwaS51YXQucGxhdGZvcm0udWVuZ2FnZS5pbycsXG4gIHByb2Q6ICdodHRwczovL2FwaS5wbGF0Zm9ybS51ZW5nYWdlLmlvJyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmRwb2ludHNGb3IoZW52OiBSZWFsdGltZUVudik6IFJlYWx0aW1lRW5kcG9pbnRzIHtcbiAgY29uc3QgZm91bmQgPSBFTkRQT0lOVFNbZW52XTtcbiAgaWYgKCFmb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGByZWFsdGltZS5jb25uZWN0OiBubyBlbmRwb2ludHMgcmVnaXN0ZXJlZCBmb3IgZW52IFwiJHtlbnZ9XCIuIGAgK1xuICAgICAgICAnUGFzcyB7ZW5kcG9pbnRzOiB7aHR0cERvbWFpbiwgcmVhbHRpbWVEb21haW4sIGFwaUJhc2V9fSBleHBsaWNpdGx5LCBvciBmaWxsIGluICcgK1xuICAgICAgICBcInNyYy9yZWFsdGltZS9lbmRwb2ludHMudHMgZnJvbSB0aGUgcmVhbHRpbWUgc3RhY2sncyBSZWFsdGltZUV2ZW50QXBpKkRucyBvdXRwdXRzLlwiLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGZvdW5kO1xufVxuIl19
|
package/dist/token-source.d.ts
CHANGED
|
@@ -20,6 +20,20 @@ export type TokenSource = {
|
|
|
20
20
|
} | {
|
|
21
21
|
kind: 'callback';
|
|
22
22
|
getToken: () => string | Promise<string>;
|
|
23
|
+
} | {
|
|
24
|
+
/**
|
|
25
|
+
* `tokenUrl` — a route on the CALLER's own server that returns
|
|
26
|
+
* `{ token, expiresIn }`. Mirrors the realtime SDK option of the
|
|
27
|
+
* same name, and exists for the same reason: it keeps the client
|
|
28
|
+
* secret on the caller's server instead of in a page or an app
|
|
29
|
+
* bundle.
|
|
30
|
+
*
|
|
31
|
+
* `expiresIn` is seconds from receipt, per the realtime contract.
|
|
32
|
+
* It is trusted over the JWT's own `exp` because the caller's
|
|
33
|
+
* server may deliberately hand out a shorter-lived slice.
|
|
34
|
+
*/
|
|
35
|
+
kind: 'token-url';
|
|
36
|
+
tokenUrl: string;
|
|
23
37
|
} | {
|
|
24
38
|
kind: 'service-credentials';
|
|
25
39
|
clientId: string;
|