@grantex/sdk 0.5.1 → 0.7.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/LICENSE +185 -0
- package/NOTICE +16 -0
- package/README.md +34 -2
- package/dist/authorization-details.d.ts +86 -0
- package/dist/authorization-details.d.ts.map +1 -0
- package/dist/authorization-details.js +209 -0
- package/dist/authorization-details.js.map +1 -0
- package/dist/canonical.d.ts +47 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +163 -0
- package/dist/canonical.js.map +1 -0
- package/dist/caps/index.d.ts +19 -0
- package/dist/caps/index.d.ts.map +1 -0
- package/dist/caps/index.js +19 -0
- package/dist/caps/index.js.map +1 -0
- package/dist/caps/limits.d.ts +40 -0
- package/dist/caps/limits.d.ts.map +1 -0
- package/dist/caps/limits.js +109 -0
- package/dist/caps/limits.js.map +1 -0
- package/dist/caps/memory.d.ts +15 -0
- package/dist/caps/memory.d.ts.map +1 -0
- package/dist/caps/memory.js +57 -0
- package/dist/caps/memory.js.map +1 -0
- package/dist/caps/meter.d.ts +107 -0
- package/dist/caps/meter.d.ts.map +1 -0
- package/dist/caps/meter.js +200 -0
- package/dist/caps/meter.js.map +1 -0
- package/dist/caps/postgres.d.ts +64 -0
- package/dist/caps/postgres.d.ts.map +1 -0
- package/dist/caps/postgres.js +221 -0
- package/dist/caps/postgres.js.map +1 -0
- package/dist/caps/redis.d.ts +45 -0
- package/dist/caps/redis.d.ts.map +1 -0
- package/dist/caps/redis.js +173 -0
- package/dist/caps/redis.js.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +517 -57
- package/dist/client.js.map +1 -1
- package/dist/decisions/action.d.ts +51 -0
- package/dist/decisions/action.d.ts.map +1 -0
- package/dist/decisions/action.js +237 -0
- package/dist/decisions/action.js.map +1 -0
- package/dist/decisions/index.d.ts +11 -0
- package/dist/decisions/index.d.ts.map +1 -0
- package/dist/decisions/index.js +8 -0
- package/dist/decisions/index.js.map +1 -0
- package/dist/decisions/verify.d.ts +103 -0
- package/dist/decisions/verify.d.ts.map +1 -0
- package/dist/decisions/verify.js +277 -0
- package/dist/decisions/verify.js.map +1 -0
- package/dist/denials.d.ts +132 -0
- package/dist/denials.d.ts.map +1 -0
- package/dist/denials.js +129 -0
- package/dist/denials.js.map +1 -0
- package/dist/evidence/build.d.ts +63 -0
- package/dist/evidence/build.d.ts.map +1 -0
- package/dist/evidence/build.js +201 -0
- package/dist/evidence/build.js.map +1 -0
- package/dist/evidence/canonical.d.ts +3 -0
- package/dist/evidence/canonical.d.ts.map +1 -0
- package/dist/evidence/canonical.js +3 -0
- package/dist/evidence/canonical.js.map +1 -0
- package/dist/evidence/checks.d.ts +13 -0
- package/dist/evidence/checks.d.ts.map +1 -0
- package/dist/evidence/checks.js +406 -0
- package/dist/evidence/checks.js.map +1 -0
- package/dist/evidence/document.d.ts +8 -0
- package/dist/evidence/document.d.ts.map +1 -0
- package/dist/evidence/document.js +298 -0
- package/dist/evidence/document.js.map +1 -0
- package/dist/evidence/hashing.d.ts +37 -0
- package/dist/evidence/hashing.d.ts.map +1 -0
- package/dist/evidence/hashing.js +106 -0
- package/dist/evidence/hashing.js.map +1 -0
- package/dist/evidence/index.d.ts +24 -0
- package/dist/evidence/index.d.ts.map +1 -0
- package/dist/evidence/index.js +24 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/evidence/result.d.ts +88 -0
- package/dist/evidence/result.d.ts.map +1 -0
- package/dist/evidence/result.js +88 -0
- package/dist/evidence/result.js.map +1 -0
- package/dist/evidence/schema-1.0.d.ts +2 -0
- package/dist/evidence/schema-1.0.d.ts.map +1 -0
- package/dist/evidence/schema-1.0.js +1398 -0
- package/dist/evidence/schema-1.0.js.map +1 -0
- package/dist/evidence/schema.d.ts +13 -0
- package/dist/evidence/schema.d.ts.map +1 -0
- package/dist/evidence/schema.js +264 -0
- package/dist/evidence/schema.js.map +1 -0
- package/dist/evidence/signature.d.ts +23 -0
- package/dist/evidence/signature.d.ts.map +1 -0
- package/dist/evidence/signature.js +136 -0
- package/dist/evidence/signature.js.map +1 -0
- package/dist/evidence/trace.d.ts +23 -0
- package/dist/evidence/trace.d.ts.map +1 -0
- package/dist/evidence/trace.js +69 -0
- package/dist/evidence/trace.js.map +1 -0
- package/dist/evidence/verify.d.ts +29 -0
- package/dist/evidence/verify.d.ts.map +1 -0
- package/dist/evidence/verify.js +163 -0
- package/dist/evidence/verify.js.map +1 -0
- package/dist/http.d.ts +12 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +11 -5
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +178 -9
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +379 -16
- package/dist/manifest.js.map +1 -1
- package/dist/prepaid-wallets.d.ts +21 -0
- package/dist/prepaid-wallets.d.ts.map +1 -1
- package/dist/prepaid-wallets.js +6 -0
- package/dist/prepaid-wallets.js.map +1 -1
- package/dist/purpose.d.ts +29 -0
- package/dist/purpose.d.ts.map +1 -0
- package/dist/purpose.js +60 -0
- package/dist/purpose.js.map +1 -0
- package/dist/resources/agents.js +3 -3
- package/dist/resources/agents.js.map +1 -1
- package/dist/resources/anomalies.d.ts +3 -1
- package/dist/resources/anomalies.d.ts.map +1 -1
- package/dist/resources/anomalies.js +7 -1
- package/dist/resources/anomalies.js.map +1 -1
- package/dist/resources/audit.js +1 -1
- package/dist/resources/audit.js.map +1 -1
- package/dist/resources/budgets.js +2 -2
- package/dist/resources/budgets.js.map +1 -1
- package/dist/resources/credentials.js +1 -1
- package/dist/resources/credentials.js.map +1 -1
- package/dist/resources/decisions.d.ts +69 -0
- package/dist/resources/decisions.d.ts.map +1 -0
- package/dist/resources/decisions.js +115 -0
- package/dist/resources/decisions.js.map +1 -0
- package/dist/resources/domains.js +2 -2
- package/dist/resources/domains.js.map +1 -1
- package/dist/resources/dpdp.js +4 -4
- package/dist/resources/dpdp.js.map +1 -1
- package/dist/resources/grants.js +2 -2
- package/dist/resources/grants.js.map +1 -1
- package/dist/resources/policies.js +3 -3
- package/dist/resources/policies.js.map +1 -1
- package/dist/resources/scim.js +5 -5
- package/dist/resources/scim.js.map +1 -1
- package/dist/resources/tokens.d.ts.map +1 -1
- package/dist/resources/tokens.js +5 -1
- package/dist/resources/tokens.js.map +1 -1
- package/dist/resources/vault.js +2 -2
- package/dist/resources/vault.js.map +1 -1
- package/dist/resources/webauthn.d.ts +6 -1
- package/dist/resources/webauthn.d.ts.map +1 -1
- package/dist/resources/webauthn.js +5 -1
- package/dist/resources/webauthn.js.map +1 -1
- package/dist/resources/webhooks.js +1 -1
- package/dist/resources/webhooks.js.map +1 -1
- package/dist/revocations/feed.d.ts +61 -0
- package/dist/revocations/feed.d.ts.map +1 -0
- package/dist/revocations/feed.js +282 -0
- package/dist/revocations/feed.js.map +1 -0
- package/dist/revocations/index.d.ts +20 -0
- package/dist/revocations/index.d.ts.map +1 -0
- package/dist/revocations/index.js +19 -0
- package/dist/revocations/index.js.map +1 -0
- package/dist/revocations/set.d.ts +59 -0
- package/dist/revocations/set.d.ts.map +1 -0
- package/dist/revocations/set.js +87 -0
- package/dist/revocations/set.js.map +1 -0
- package/dist/scopes.d.ts +26 -0
- package/dist/scopes.d.ts.map +1 -0
- package/dist/scopes.js +37 -0
- package/dist/scopes.js.map +1 -0
- package/dist/types.d.ts +121 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/verify.d.ts +31 -2
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +236 -29
- package/dist/verify.js.map +1 -1
- package/package.json +13 -4
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis caps backend: one Lua script reserves every limit atomically.
|
|
3
|
+
*
|
|
4
|
+
* Keys are tenant-scoped and share a hash tag, `grantex:caps:{<tenant>}:...`,
|
|
5
|
+
* so one reservation touches a single Redis Cluster slot. Each counter is a
|
|
6
|
+
* sorted set of `<reservation id>:<units>` members scored by reservation time
|
|
7
|
+
* plus a running total; rolling windows drop members older than the window
|
|
8
|
+
* before checking. Time comes from the Redis server (`TIME`) unless a clock is
|
|
9
|
+
* injected for tests.
|
|
10
|
+
*
|
|
11
|
+
* Requires Redis 6.0 or later (`SET ... KEEPTTL`). Run it with
|
|
12
|
+
* `maxmemory-policy noeviction`: an evicted counter would forget reservations
|
|
13
|
+
* and let calls exceed a cap. Per-hour and per-day keys expire one window plus
|
|
14
|
+
* 60 seconds after the last reservation on the counter; per-case keys only with
|
|
15
|
+
* `caseTtlSeconds`.
|
|
16
|
+
*
|
|
17
|
+
* The scripts are byte-identical to the Python SDK's (`grantex/caps/_redis.py`);
|
|
18
|
+
* a test in each SDK checks this.
|
|
19
|
+
*/
|
|
20
|
+
import { CapExceededError, WINDOW_MS, tenantHash } from './meter.js';
|
|
21
|
+
// grantex caps redis script v1 begin
|
|
22
|
+
export const RESERVE_SCRIPT = `
|
|
23
|
+
local now
|
|
24
|
+
if ARGV[1] ~= '' then
|
|
25
|
+
now = tonumber(ARGV[1])
|
|
26
|
+
else
|
|
27
|
+
local t = redis.call('TIME')
|
|
28
|
+
now = tonumber(t[1]) * 1000 + math.floor(tonumber(t[2]) / 1000)
|
|
29
|
+
end
|
|
30
|
+
local rid = ARGV[2]
|
|
31
|
+
local n = tonumber(ARGV[3])
|
|
32
|
+
local case_ttl = tonumber(ARGV[4])
|
|
33
|
+
for i = 1, n do
|
|
34
|
+
local a = 4 + (i - 1) * 3
|
|
35
|
+
local limit = tonumber(ARGV[a + 1])
|
|
36
|
+
local window = tonumber(ARGV[a + 2])
|
|
37
|
+
local units = tonumber(ARGV[a + 3])
|
|
38
|
+
local zkey = KEYS[(i - 1) * 2 + 1]
|
|
39
|
+
local skey = KEYS[(i - 1) * 2 + 2]
|
|
40
|
+
local sum = tonumber(redis.call('GET', skey) or '0')
|
|
41
|
+
if window > 0 then
|
|
42
|
+
local expired = redis.call('ZRANGEBYSCORE', zkey, '-inf', now - window)
|
|
43
|
+
if #expired > 0 then
|
|
44
|
+
for _, member in ipairs(expired) do
|
|
45
|
+
sum = sum - tonumber(string.match(member, ':(%d+)$'))
|
|
46
|
+
end
|
|
47
|
+
if sum < 0 then sum = 0 end
|
|
48
|
+
redis.call('ZREMRANGEBYSCORE', zkey, '-inf', now - window)
|
|
49
|
+
redis.call('SET', skey, sum, 'KEEPTTL')
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
if sum + units > limit then
|
|
53
|
+
return {0, i, sum}
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
for i = 1, n do
|
|
57
|
+
local a = 4 + (i - 1) * 3
|
|
58
|
+
local window = tonumber(ARGV[a + 2])
|
|
59
|
+
local units = tonumber(ARGV[a + 3])
|
|
60
|
+
local zkey = KEYS[(i - 1) * 2 + 1]
|
|
61
|
+
local skey = KEYS[(i - 1) * 2 + 2]
|
|
62
|
+
redis.call('ZADD', zkey, now, rid .. ':' .. units)
|
|
63
|
+
redis.call('INCRBY', skey, units)
|
|
64
|
+
local ttl = case_ttl
|
|
65
|
+
if window > 0 then ttl = window + 60000 end
|
|
66
|
+
if ttl > 0 then
|
|
67
|
+
redis.call('PEXPIRE', zkey, ttl)
|
|
68
|
+
redis.call('PEXPIRE', skey, ttl)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
return {1, 0, 0}
|
|
72
|
+
`;
|
|
73
|
+
export const REFUND_SCRIPT = `
|
|
74
|
+
local rid = ARGV[1]
|
|
75
|
+
local n = tonumber(ARGV[2])
|
|
76
|
+
for i = 1, n do
|
|
77
|
+
local units = ARGV[2 + i]
|
|
78
|
+
local zkey = KEYS[(i - 1) * 2 + 1]
|
|
79
|
+
local skey = KEYS[(i - 1) * 2 + 2]
|
|
80
|
+
if redis.call('ZREM', zkey, rid .. ':' .. units) == 1 then
|
|
81
|
+
local left = redis.call('DECRBY', skey, tonumber(units))
|
|
82
|
+
if left < 0 then redis.call('SET', skey, 0, 'KEEPTTL') end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
return 1
|
|
86
|
+
`;
|
|
87
|
+
export const USAGE_SCRIPT = `
|
|
88
|
+
local now
|
|
89
|
+
if ARGV[1] ~= '' then
|
|
90
|
+
now = tonumber(ARGV[1])
|
|
91
|
+
else
|
|
92
|
+
local t = redis.call('TIME')
|
|
93
|
+
now = tonumber(t[1]) * 1000 + math.floor(tonumber(t[2]) / 1000)
|
|
94
|
+
end
|
|
95
|
+
local window = tonumber(ARGV[2])
|
|
96
|
+
local sum = tonumber(redis.call('GET', KEYS[2]) or '0')
|
|
97
|
+
if window > 0 then
|
|
98
|
+
for _, member in ipairs(redis.call('ZRANGEBYSCORE', KEYS[1], '-inf', now - window)) do
|
|
99
|
+
sum = sum - tonumber(string.match(member, ':(%d+)$'))
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
if sum < 0 then sum = 0 end
|
|
103
|
+
return sum
|
|
104
|
+
`;
|
|
105
|
+
/** Adapter for an ioredis client (`client.eval(script, numKeys, ...keysAndArgs)`). */
|
|
106
|
+
export function ioredisRunner(client) {
|
|
107
|
+
return {
|
|
108
|
+
evalScript: (script, keys, args) => client.eval(script, keys.length, ...keys, ...args),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
async function keysFor(tenantId, limit) {
|
|
112
|
+
const base = `grantex:caps:{${await tenantHash(tenantId)}}:${limit.key}`;
|
|
113
|
+
return [`${base}:z`, `${base}:s`];
|
|
114
|
+
}
|
|
115
|
+
function toInt(value) {
|
|
116
|
+
const n = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : Number.NaN;
|
|
117
|
+
if (!Number.isInteger(n))
|
|
118
|
+
throw new Error('unexpected caps script result');
|
|
119
|
+
return n;
|
|
120
|
+
}
|
|
121
|
+
export class RedisCapsBackend {
|
|
122
|
+
#redis;
|
|
123
|
+
#caseTtlMs;
|
|
124
|
+
/**
|
|
125
|
+
* `caseTtlSeconds` optionally expires per-case counters; by default they never
|
|
126
|
+
* expire, because an expired per-case counter would reset the cap.
|
|
127
|
+
*/
|
|
128
|
+
constructor(redis, options = {}) {
|
|
129
|
+
const ttl = options.caseTtlSeconds;
|
|
130
|
+
if (ttl !== undefined && (!Number.isInteger(ttl) || ttl <= 0)) {
|
|
131
|
+
throw new Error('caseTtlSeconds must be a positive integer');
|
|
132
|
+
}
|
|
133
|
+
this.#redis = redis;
|
|
134
|
+
this.#caseTtlMs = ttl === undefined ? 0 : ttl * 1000;
|
|
135
|
+
}
|
|
136
|
+
async reserve(tenantId, reservationId, limits, nowMs) {
|
|
137
|
+
const keys = [];
|
|
138
|
+
const args = [nowMs === undefined ? '' : String(nowMs), reservationId, limits.length, this.#caseTtlMs];
|
|
139
|
+
for (const limit of limits) {
|
|
140
|
+
keys.push(...(await keysFor(tenantId, limit)));
|
|
141
|
+
args.push(limit.limit, WINDOW_MS[limit.window], limit.units);
|
|
142
|
+
}
|
|
143
|
+
const result = await this.#redis.evalScript(RESERVE_SCRIPT, keys, args);
|
|
144
|
+
if (!Array.isArray(result) || result.length !== 3)
|
|
145
|
+
throw new Error('unexpected caps script result');
|
|
146
|
+
const [ok, index, used] = result.map(toInt);
|
|
147
|
+
if (ok === 1)
|
|
148
|
+
return;
|
|
149
|
+
const limit = limits[index - 1];
|
|
150
|
+
if (limit === undefined)
|
|
151
|
+
throw new Error('unexpected caps script result');
|
|
152
|
+
throw new CapExceededError({
|
|
153
|
+
limit: limit.limit, window: limit.window, used, requested: limit.units, scope: limit.scope, kind: limit.kind,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
async refund(tenantId, reservationId, limits) {
|
|
157
|
+
const keys = [];
|
|
158
|
+
const args = [reservationId, limits.length];
|
|
159
|
+
for (const limit of limits) {
|
|
160
|
+
keys.push(...(await keysFor(tenantId, limit)));
|
|
161
|
+
args.push(limit.units);
|
|
162
|
+
}
|
|
163
|
+
await this.#redis.evalScript(REFUND_SCRIPT, keys, args);
|
|
164
|
+
}
|
|
165
|
+
async usage(tenantId, limit, nowMs) {
|
|
166
|
+
const result = await this.#redis.evalScript(USAGE_SCRIPT, await keysFor(tenantId, limit), [
|
|
167
|
+
nowMs === undefined ? '' : String(nowMs),
|
|
168
|
+
WINDOW_MS[limit.window],
|
|
169
|
+
]);
|
|
170
|
+
return toInt(result);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/caps/redis.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ import { PassportsClient } from './resources/passports.js';
|
|
|
21
21
|
import { DpdpClient } from './resources/dpdp.js';
|
|
22
22
|
import { CommerceClient } from './resources/commerce.js';
|
|
23
23
|
import { ToolManifest, type EnforceOptions, type EnforceResult, type WrapToolOptions, type EnforceMiddlewareOptions } from './manifest.js';
|
|
24
|
+
import { RevocationFeed, type RevocationFeedState } from './revocations/index.js';
|
|
25
|
+
import { DecisionsClient } from './resources/decisions.js';
|
|
24
26
|
import type { AuthorizationRequest, AuthorizeParams, GrantexClientOptions, RateLimit, RotateKeyResponse, SignupParams, SignupResponse, UpdateDeveloperSettingsParams, UpdateDeveloperSettingsResponse } from './types.js';
|
|
25
27
|
export declare class Grantex {
|
|
26
28
|
#private;
|
|
@@ -46,6 +48,7 @@ export declare class Grantex {
|
|
|
46
48
|
readonly passports: PassportsClient;
|
|
47
49
|
readonly dpdp: DpdpClient;
|
|
48
50
|
readonly commerce: CommerceClient;
|
|
51
|
+
readonly decisions: DecisionsClient;
|
|
49
52
|
get lastRateLimit(): RateLimit | undefined;
|
|
50
53
|
constructor(options?: GrantexClientOptions);
|
|
51
54
|
/**
|
|
@@ -101,6 +104,15 @@ export declare class Grantex {
|
|
|
101
104
|
* if (!result.allowed) throw new Error(result.reason);
|
|
102
105
|
* ```
|
|
103
106
|
*/
|
|
107
|
+
/**
|
|
108
|
+
* The revocation feed this client uses for `revocationCheck: 'feed'`,
|
|
109
|
+
* started on first use. Call `stopRevocationFeed()` to close it.
|
|
110
|
+
*/
|
|
111
|
+
revocationFeed(): RevocationFeed;
|
|
112
|
+
/** What the revocation feed knows, and whether it is fresh enough to be trusted. */
|
|
113
|
+
revocationFeedState(): RevocationFeedState | undefined;
|
|
114
|
+
/** Stop following the revocation feed and release its connection. */
|
|
115
|
+
stopRevocationFeed(): Promise<void>;
|
|
104
116
|
enforce(options: EnforceOptions): Promise<EnforceResult>;
|
|
105
117
|
/**
|
|
106
118
|
* Wrap a LangChain StructuredTool with automatic Grantex scope enforcement.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA8BzD,OAAO,EAAE,YAAY,EAAsE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE/M,OAAO,EACL,cAAc,EAKd,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,eAAe,EAAgD,MAAM,0BAA0B,CAAC;AACzG,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,6BAA6B,EAC7B,+BAA+B,EAEhC,MAAM,YAAY,CAAC;AAyCpB,qBAAa,OAAO;;IAgBlB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IAEpC,IAAI,aAAa,IAAI,SAAS,GAAG,SAAS,CAEzC;IAED,YAAY,OAAO,GAAE,oBAAyB,EA6D7C;IAED;;;OAGG;IACH,OAAa,MAAM,CACjB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GACjC,OAAO,CAAC,cAAc,CAAC,CAqBzB;IAED;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAMhE;IAED;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAEtC;IAED;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAE9F;IAED;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAEzC;IAED;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,CAI7C;IAED;;;OAGG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzD;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH;;;OAGG;IACH,cAAc,IAAI,cAAc,CAE/B;IAED,oFAAoF;IACpF,mBAAmB,IAAI,mBAAmB,GAAG,SAAS,CAErD;IAED,qEAAqE;IAC/D,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAExC;IA2EK,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkW7D;IAiID;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,EACxG,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,eAAe,GACvB,CAAC,CAsCH;IAED;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAuDxG;CACF"}
|