@ariestools/aries-datalake-client 0.1.20 → 0.1.21
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 +75 -1
- package/dist/browser/CompositePayloadsClient.d.ts +91 -0
- package/dist/browser/CompositePayloadsClient.d.ts.map +1 -0
- package/dist/browser/browser.d.ts +2 -0
- package/dist/browser/browser.d.ts.map +1 -1
- package/dist/browser/browser.mjs +253 -1
- package/dist/browser/browser.mjs.map +3 -3
- package/dist/node/CompositePayloadsClient.d.ts +91 -0
- package/dist/node/CompositePayloadsClient.d.ts.map +1 -0
- package/dist/node/LocalDatalakeClient.d.ts.map +1 -1
- package/dist/node/browser.d.ts +2 -0
- package/dist/node/browser.d.ts.map +1 -1
- package/dist/node/defaultDatalake.d.ts.map +1 -1
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.mjs +263 -6
- package/dist/node/index.mjs.map +3 -3
- package/package.json +16 -17
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/PayloadsClient.ts", "../../src/AuthToken.ts", "../../src/payloadRequest.ts", "../../src/RestDatalakeClient.ts", "../../src/RestPublicPayloadsReader.ts", "../../src/browser.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n DatalakeInsertSummary,\n InsertPayloadsBody,\n InsertPayloadsResponse,\n InsertPayloadsResult,\n NextPayloadsOptions,\n NextPayloadsResponse,\n NextPayloadsResult,\n Payload,\n WithStorageMeta,\n} from '@ariestools/aries-datalake-core/browser'\nimport {\n DATALAKE_HEADER_DUPLICATES,\n DATALAKE_HEADER_NEXT_CURSOR,\n DATALAKE_HEADER_REJECTED,\n datalakePlaneClearPath,\n datalakePlaneDeletePath,\n datalakePlaneGetManyPath,\n datalakePlaneGetPath,\n datalakePlaneInsertPath,\n datalakePlaneNextPath,\n datalakePlaneUsagePath,\n} from '@ariestools/aries-datalake-core/browser'\n\nimport type { AuthTokenSource } from './AuthToken.ts'\nimport { resolveAuthToken } from './AuthToken.ts'\nimport { extractRequestBase, parsePayloadResponse } from './payloadRequest.ts'\n\nexport interface DatalakeUsageReport {\n datalakeId: string\n payloadCount: number\n rateLimits?: {\n anonymous?: { limit: number; remaining: number }\n authenticated?: { limit: number; remaining: number }\n }\n}\n\n/**\n * HTTP client for a single datalake's data plane. Clients send bare\n * `Payload` objects (no `_hash` / `_dataHash` \u2014 those are stamped on\n * insert by the data plane's archivist). Responses always carry the\n * archivist-computed storage meta.\n *\n * Wire format mirrors the XYO archivist REST middleware: `/insert`,\n * `/get/:hash`, `/next`, bare arrays as bodies. Datalake-specific\n * extras (duplicates count, rejected hashes, next cursor) are delivered\n * via response headers.\n */\nexport interface PayloadsClient {\n clear(): Promise<{ removed: number }>\n delete(hash: string): Promise<void>\n get(hash: string): Promise<WithStorageMeta<Payload>>\n getMany(hashes: string[]): Promise<WithStorageMeta<Payload>[]>\n insert(payloads: Payload[]): Promise<InsertPayloadsResult>\n next(options?: NextPayloadsOptions): Promise<NextPayloadsResult>\n usage(): Promise<DatalakeUsageReport>\n}\n\n/**\n * Either a static bearer token, or a factory invoked per-request. The factory\n * form lets callers mint a fresh self-signed wallet JWT per call (with\n * `aud` bound to the datalake id).\n */\nexport type PayloadsAuthTokenSource = AuthTokenSource\n\nexport interface RestPayloadsClientOptions {\n /**\n Static bearer token, or async factory minted per-request.\n */\n authToken: PayloadsAuthTokenSource\n /**\n Data-plane base URL without trailing slash.\n */\n baseUrl: string\n /**\n Datalake id; appended to `/v1/datalakes/:id/...`.\n */\n datalakeId: string\n /**\n Optional `fetch` override; defaults to global `fetch`.\n */\n fetchImpl?: typeof fetch\n}\n\ninterface RequestOptions {\n body?: unknown\n method?: string\n}\n\ninterface RequestResult<T> {\n data: T\n headers: Headers\n}\n\nexport class RestPayloadsClient implements PayloadsClient {\n private readonly authToken: PayloadsAuthTokenSource\n private readonly datalakeId: string\n private readonly fetchImpl: typeof fetch\n private readonly requestBase: string\n\n constructor(options: RestPayloadsClientOptions) {\n this.requestBase = extractRequestBase(options.baseUrl)\n this.datalakeId = options.datalakeId\n this.authToken = options.authToken\n this.fetchImpl = options.fetchImpl ?? fetch\n }\n\n async clear(): Promise<{ removed: number }> {\n return this.request<{ removed: number }>(\n datalakePlaneClearPath(this.datalakeId),\n { method: 'POST' },\n )\n }\n\n async delete(hash: string): Promise<void> {\n await this.request<void>(\n datalakePlaneDeletePath(this.datalakeId, hash),\n { method: 'DELETE' },\n )\n }\n\n async get(hash: string): Promise<WithStorageMeta<Payload>> {\n return this.request<WithStorageMeta<Payload>>(datalakePlaneGetPath(this.datalakeId, hash))\n }\n\n async getMany(hashes: string[]): Promise<WithStorageMeta<Payload>[]> {\n if (hashes.length === 0) return []\n return this.request<WithStorageMeta<Payload>[]>(\n datalakePlaneGetManyPath(this.datalakeId),\n { method: 'POST', body: hashes },\n )\n }\n\n async insert(payloads: Payload[]): Promise<InsertPayloadsResult> {\n const body: InsertPayloadsBody = payloads\n const { data, headers } = await this.requestWithHeaders<InsertPayloadsResponse>(\n datalakePlaneInsertPath(this.datalakeId),\n { method: 'POST', body },\n )\n return {\n inserted: data,\n summary: readInsertSummary(headers),\n }\n }\n\n async next(options: NextPayloadsOptions = {}): Promise<NextPayloadsResult> {\n const params = new URLSearchParams()\n if (options.limit !== undefined) params.set('limit', String(options.limit))\n if (options.cursor) params.set('cursor', options.cursor)\n if (options.schemas && options.schemas.length > 0) params.set('schemas', options.schemas.join(','))\n if (options.order) params.set('order', options.order)\n const suffix = params.toString()\n const path = suffix\n ? `${datalakePlaneNextPath(this.datalakeId)}?${suffix}`\n : datalakePlaneNextPath(this.datalakeId)\n const { data, headers } = await this.requestWithHeaders<NextPayloadsResponse>(path)\n const nextCursor = headers.get(DATALAKE_HEADER_NEXT_CURSOR) ?? undefined\n return { payloads: data, nextCursor }\n }\n\n async usage(): Promise<DatalakeUsageReport> {\n return this.request<DatalakeUsageReport>(datalakePlaneUsagePath(this.datalakeId))\n }\n\n private async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { data } = await this.requestWithHeaders<T>(path, options)\n return data\n }\n\n private async requestWithHeaders<T>(path: string, options: RequestOptions = {}): Promise<RequestResult<T>> {\n const method = options.method ?? 'GET'\n const token = await resolveAuthToken(this.authToken, this.datalakeId)\n const headers: Record<string, string> = {\n accept: 'application/json',\n authorization: `Bearer ${token}`,\n }\n const init: RequestInit = {\n credentials: 'omit',\n headers,\n method,\n redirect: 'error',\n }\n if (options.body !== undefined) {\n headers['content-type'] = 'application/json'\n init.body = JSON.stringify(options.body)\n }\n\n const response = await this.fetchImpl(`${this.requestBase}${path}`, init)\n if (response.status === 204) return { data: undefined as T, headers: response.headers }\n const text = await response.text()\n return { data: parsePayloadResponse<T>(response, text, method), headers: response.headers }\n }\n}\n\nfunction readInsertSummary(headers: Headers): DatalakeInsertSummary {\n const duplicatesRaw = headers.get(DATALAKE_HEADER_DUPLICATES)\n const duplicates = duplicatesRaw === null ? 0 : Number.parseInt(duplicatesRaw, 10)\n const rejectedRaw = headers.get(DATALAKE_HEADER_REJECTED)\n const rejected = rejectedRaw === null || rejectedRaw.length === 0\n ? []\n : rejectedRaw.split(',').map(value => value.trim()).filter(value => value.length > 0)\n return {\n duplicates: Number.isFinite(duplicates) ? duplicates : 0,\n rejected,\n }\n}\n", "export interface AuthTokenRequest {\n /**\n Exact JWT audience required by the target service or datalake.\n */\n audience: string\n}\n\n/**\nInvoked for every request so callers can obtain a fresh wallet JWT.\n*/\nexport type AuthTokenSupplier = (request: AuthTokenRequest) => Promise<string>\n\nexport type AuthTokenSource = AuthTokenSupplier | string\n\nexport async function resolveAuthToken(source: AuthTokenSource, audience: string): Promise<string> {\n return typeof source === 'function' ? await source({ audience }) : source\n}\n", "import type { ApiErrorBody } from '@ariestools/aries-datalake-core/browser'\nimport { DATALAKE_API_VERSION, DatalakeApiError } from '@ariestools/aries-datalake-core/browser'\n\n/**\n * The data plane is typically addressed by a URL that already includes the\n * datalake id (e.g. `https://plane/v1/datalakes/dl_abc`). Preserve any path\n * prefix before `/v1/datalakes` so a shared ALB can expose the data plane at\n * `https://host/plane` while the path helpers regenerate the canonical API\n * suffix from the id.\n */\nexport function extractRequestBase(urlWithPossiblePath: string): string {\n try {\n const parsed = new URL(urlWithPossiblePath)\n const apiMarker = `/${DATALAKE_API_VERSION}/datalakes`\n const markerIndex = parsed.pathname.indexOf(apiMarker)\n const prefix = markerIndex === -1\n ? parsed.pathname.replace(/\\/$/, '')\n : parsed.pathname.slice(0, markerIndex)\n return `${parsed.protocol}//${parsed.host}${prefix}`\n } catch {\n return urlWithPossiblePath.replace(/\\/$/, '')\n }\n}\n\n/** Preserve the native data-plane JSON and API-error response contract. */\nexport function parsePayloadResponse<T>(response: Response, text: string, method: string): T {\n const payload: unknown = text.length > 0 ? JSON.parse(text) : undefined\n\n if (!response.ok) {\n const errorBody: ApiErrorBody = isApiErrorBody(payload)\n ? payload\n : {\n code: 'internal',\n message: 'Unexpected ' + response.status + ' response from ' + method + ' data plane',\n }\n throw new DatalakeApiError(response.status, errorBody)\n }\n return payload as T\n}\n\nfunction isApiErrorBody(value: unknown): value is ApiErrorBody {\n if (typeof value !== 'object' || value === null) return false\n const maybe = value as Record<string, unknown>\n return typeof maybe.code === 'string' && typeof maybe.message === 'string'\n}\n", "import type {\n ApiErrorBody,\n CreateDatalakeBody,\n DatalakeDescriptor,\n DatalakeToken,\n GrantBody,\n MintTokenBody,\n} from '@ariestools/aries-datalake-core/browser'\nimport {\n DATALAKE_CONTROL_AUDIENCE,\n DatalakeApiError,\n datalakeCollectionPath,\n datalakeGrantPath,\n datalakeGrantsPath,\n datalakeResourcePath,\n datalakeTokensPath,\n} from '@ariestools/aries-datalake-core/browser'\n\nimport type { AuthTokenSource } from './AuthToken.ts'\nimport { resolveAuthToken } from './AuthToken.ts'\nimport type {\n CreateDatalakeRequest,\n DatalakeClient,\n GrantRequest,\n RevokeRequest,\n TokenRequest,\n} from './DatalakeClient.ts'\n\nexport interface RestDatalakeClientOptions {\n /**\n Exact control-plane JWT audience.\n */\n audience?: string\n /**\n Static token, or async factory minted per-request.\n */\n authToken: AuthTokenSource\n /**\n Control-plane base URL, e.g. `https://dl-control.xylabs.io`.\n */\n baseUrl: string\n /**\n Optional `fetch` override; defaults to global `fetch`.\n */\n fetchImpl?: typeof fetch\n}\n\ninterface RequestOptions {\n body?: unknown\n method?: string\n}\n\n/**\n * HTTP client for the datalake control plane. Implements the stable\n * `DatalakeClient` contract so callers are independent of transport.\n */\nexport class RestDatalakeClient implements DatalakeClient {\n private readonly audience: string\n private readonly authToken: AuthTokenSource\n private readonly baseUrl: string\n private readonly fetchImpl: typeof fetch\n\n constructor(options: RestDatalakeClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n this.audience = options.audience ?? DATALAKE_CONTROL_AUDIENCE\n this.authToken = options.authToken\n this.fetchImpl = options.fetchImpl ?? fetch\n }\n\n async create(request: CreateDatalakeRequest): Promise<DatalakeDescriptor> {\n const body: CreateDatalakeBody = { name: request.name, config: request.config }\n return this.request<DatalakeDescriptor>(datalakeCollectionPath(), { method: 'POST', body })\n }\n\n async describe(idOrName: string): Promise<DatalakeDescriptor> {\n return this.request<DatalakeDescriptor>(datalakeResourcePath(idOrName))\n }\n\n async destroy(idOrName: string): Promise<void> {\n await this.request<void>(datalakeResourcePath(idOrName), { method: 'DELETE' })\n }\n\n async grant(request: GrantRequest): Promise<DatalakeDescriptor> {\n const body: GrantBody = { principal: request.principal, role: request.role }\n return this.request<DatalakeDescriptor>(\n datalakeGrantsPath(request.datalakeId),\n { method: 'POST', body },\n )\n }\n\n async list(): Promise<DatalakeDescriptor[]> {\n return this.request<DatalakeDescriptor[]>(datalakeCollectionPath())\n }\n\n async mintToken(request: TokenRequest): Promise<DatalakeToken> {\n const body: MintTokenBody = { role: request.role, ttlSeconds: request.ttlSeconds }\n return this.request<DatalakeToken>(\n datalakeTokensPath(request.datalakeId),\n { method: 'POST', body },\n )\n }\n\n async revoke(request: RevokeRequest): Promise<DatalakeDescriptor> {\n return this.request<DatalakeDescriptor>(\n datalakeGrantPath(request.datalakeId, request.principal),\n { method: 'DELETE' },\n )\n }\n\n private async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const url = `${this.baseUrl}${path}`\n const method = options.method ?? 'GET'\n const token = await resolveAuthToken(this.authToken, this.audience)\n const headers: Record<string, string> = {\n accept: 'application/json',\n authorization: `Bearer ${token}`,\n }\n const init: RequestInit = {\n credentials: 'omit',\n headers,\n method,\n redirect: 'error',\n }\n if (options.body !== undefined) {\n headers['content-type'] = 'application/json'\n init.body = JSON.stringify(options.body)\n }\n\n const response = await this.fetchImpl(url, init)\n if (response.status === 204) {\n return undefined as T\n }\n const text = await response.text()\n const payload: unknown = text.length > 0 ? JSON.parse(text) : undefined\n\n if (!response.ok) {\n const errorBody: ApiErrorBody = isApiErrorBody(payload)\n ? payload\n : {\n code: 'internal',\n message: `Unexpected ${response.status} response from ${method} control plane`,\n }\n throw new DatalakeApiError(response.status, errorBody)\n }\n return payload as T\n }\n}\n\nfunction isApiErrorBody(value: unknown): value is ApiErrorBody {\n if (typeof value !== 'object' || value === null) return false\n const maybe = value as Record<string, unknown>\n return typeof maybe.code === 'string' && typeof maybe.message === 'string'\n}\n", "import type { Payload, WithStorageMeta } from '@ariestools/aries-datalake-core/browser'\nimport { datalakePlaneGetManyPath, datalakePlaneGetPath } from '@ariestools/aries-datalake-core/browser'\nimport { readResponseText } from '@ariestools/sdk/fetch'\n\nimport { extractRequestBase, parsePayloadResponse } from './payloadRequest.ts'\n\n/** Policy for one public HTTP response, including its JSON envelope and metadata. */\nexport interface RestPublicPayloadsReadOptions {\n /**\n Positive safe-integer limit on decoded Fetch-body bytes before JSON parsing.\n Omission leaves the body size unlimited; this is not a raw network-byte limit.\n */\n readonly maxResponseBytes?: number\n /** Caller cancellation remains active through response-body consumption. */\n readonly signal?: AbortSignal\n}\n\nexport interface RestPublicPayloadsReaderOptions {\n /** Absolute HTTP(S) data-plane URL, optionally including its API path prefix. */\n readonly baseUrl: string\n /** Datalake id used to regenerate the canonical native data-plane paths. */\n readonly datalakeId: string\n /**\n Trusted transport override. It must preserve the public no-credentials and\n no-redirect policy and honor cancellation. Defaults to request-time global fetch.\n */\n readonly fetchImpl?: typeof fetch\n}\n\n/**\n * Exact-hash reads using the native data-plane protocol without token handling.\n * The server must grant public viewer access. Public access applies to the whole\n * lake; this reader neither grants access nor falls back from authenticated I/O.\n * Returned metadata is structural transport data, not verified content identity.\n */\nexport class RestPublicPayloadsReader {\n private readonly datalakeId: string\n private readonly fetchImpl?: typeof fetch\n private readonly requestBase: string\n\n constructor(options: RestPublicPayloadsReaderOptions) {\n this.requestBase = publicRequestBase(options.baseUrl)\n this.datalakeId = options.datalakeId\n this.fetchImpl = options.fetchImpl\n }\n\n async get(hash: string, options: RestPublicPayloadsReadOptions = {}): Promise<WithStorageMeta<Payload>> {\n const payload = await this.request(datalakePlaneGetPath(this.datalakeId, hash), options)\n if (!isStoredPayload(payload)) throw new TypeError('Data plane returned an invalid stored payload')\n return payload\n }\n\n async getMany(hashes: readonly string[], options: RestPublicPayloadsReadOptions = {}): Promise<WithStorageMeta<Payload>[]> {\n const policy = pinReadOptions(options)\n const requested = [...hashes]\n if (requested.length === 0) return []\n const payloads = await this.request(datalakePlaneGetManyPath(this.datalakeId), policy, requested)\n if (!Array.isArray(payloads) || !payloads.every(isStoredPayload)) {\n throw new TypeError('Data plane returned an invalid stored-payload array')\n }\n return payloads\n }\n\n private async request(path: string, options: RestPublicPayloadsReadOptions, hashes?: readonly string[]): Promise<unknown> {\n const { maxResponseBytes, signal } = pinReadOptions(options)\n const method = hashes === undefined ? 'GET' : 'POST'\n const headers: Record<string, string> = { accept: 'application/json' }\n const init: RequestInit = {\n credentials: 'omit',\n headers,\n method,\n redirect: 'error',\n signal,\n }\n if (hashes !== undefined) {\n headers['content-type'] = 'application/json'\n init.body = JSON.stringify(hashes)\n }\n const fetchImpl = this.fetchImpl ?? globalThis.fetch\n const response = await fetchImpl(this.requestBase + path, init)\n const text = await readResponseText(response, { maxResponseBytes, signal })\n return parsePayloadResponse<unknown>(response, text, method)\n }\n}\n\nfunction pinReadOptions(options: RestPublicPayloadsReadOptions): RestPublicPayloadsReadOptions {\n const { maxResponseBytes, signal } = options\n if (maxResponseBytes !== undefined && (!Number.isSafeInteger(maxResponseBytes) || maxResponseBytes <= 0)) {\n throw new RangeError('maxResponseBytes must be a positive safe integer')\n }\n signal?.throwIfAborted()\n return { maxResponseBytes, signal }\n}\n\nfunction publicRequestBase(baseUrl: string): string {\n let parsed: URL\n try {\n parsed = new URL(baseUrl)\n } catch {\n throw new TypeError('baseUrl must be an absolute HTTP(S) URL')\n }\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new TypeError('baseUrl must be an absolute HTTP(S) URL')\n }\n if (parsed.username !== '' || parsed.password !== '') {\n throw new TypeError('Public data-plane URLs must not contain credentials')\n }\n if (parsed.href.includes('#')) throw new TypeError('Public data-plane URLs must not contain fragments')\n return extractRequestBase(baseUrl)\n}\n\nfunction isStoredPayload(value: unknown): value is WithStorageMeta<Payload> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false\n const payload = value as Record<string, unknown>\n return ['schema', '_hash', '_dataHash', '_sequence'].every(key => Object.hasOwn(payload, key) && typeof payload[key] === 'string')\n}\n", "export type {\n AuthTokenRequest, AuthTokenSource, AuthTokenSupplier,\n} from './AuthToken.ts'\nexport type {\n CreateDatalakeRequest,\n DatalakeClient,\n GrantRequest,\n RevokeRequest,\n TokenRequest,\n} from './DatalakeClient.ts'\nexport type {\n DatalakeUsageReport,\n PayloadsAuthTokenSource,\n PayloadsClient,\n RestPayloadsClientOptions,\n} from './PayloadsClient.ts'\nexport { RestPayloadsClient } from './PayloadsClient.ts'\nexport type { RestDatalakeClientOptions } from './RestDatalakeClient.ts'\nexport { RestDatalakeClient } from './RestDatalakeClient.ts'\nexport type { RestPublicPayloadsReaderOptions, RestPublicPayloadsReadOptions } from './RestPublicPayloadsReader.ts'\nexport { RestPublicPayloadsReader } from './RestPublicPayloadsReader.ts'\nexport * from '@ariestools/aries-datalake-core/browser'\n"],
|
|
5
|
-
"mappings": "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",
|
|
3
|
+
"sources": ["../../src/CompositePayloadsClient.ts", "../../src/PayloadsClient.ts", "../../src/AuthToken.ts", "../../src/payloadRequest.ts", "../../src/RestDatalakeClient.ts", "../../src/RestPublicPayloadsReader.ts", "../../src/browser.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Payload, WithStorageMeta } from '@ariestools/aries-datalake-core/browser'\n\nimport type { PayloadsClient } from './PayloadsClient.ts'\n\n/** Supply the canonical XYO PayloadBuilder hashes, without adding its runtime to browser clients. */\nexport interface CompositePayloadIdentity {\n dataHash: string\n hash: string\n}\n\nexport interface CompositePayloadsPolicy {\n /** Required for selected mode; an empty array selects nothing. */\n allowedSchemas?: readonly string[]\n disallowedSchemas?: readonly string[]\n /** Trusted local validator; receiving services must independently enforce their policy. */\n isValid?: (payload: Payload) => boolean\n /** Required for selected mode. Measured as UTF-8 JSON, before compression. */\n maxPayloadBytes?: number\n /** Explicitly choose a complete collection or an allowlisted collection. */\n mode: 'all' | 'selected'\n revision?: string\n /** Per-schema limits can only tighten the overall payload limit. */\n schemaMaxPayloadBytes?: Readonly<Record<string, number>>\n}\n\nexport interface CompositePayloadsTarget {\n client: Pick<PayloadsClient, 'getMany' | 'insert'>\n /** A non-secret identifier, not an endpoint or credential. Also determines receipt provenance. */\n name: string\n policy: CompositePayloadsPolicy\n}\n\nexport interface CompositePayloadsClientOptions {\n /** Trusted canonical XYO hash implementation. Storage metadata must not affect either hash. */\n identify: (payload: Payload) => Promise<CompositePayloadIdentity>\n /** Every target is required for its eligible subset. Array order is read priority. */\n targets: readonly CompositePayloadsTarget[]\n}\n\nexport interface CompositePayloadExclusion {\n hash: string\n reason: 'schema' | 'size' | 'validation'\n}\n\nexport interface CompositeWriteReceipt {\n acknowledged: string[]\n eligible: string[]\n error?: 'provider_error' | 'invalid_response' | 'policy_rejected' | 'incomplete_readback'\n excluded: CompositePayloadExclusion[]\n policyRevision?: string\n rejected: string[]\n status: 'complete' | 'excluded' | 'failed'\n target: string\n}\n\nexport interface CompositeWriteResult {\n /** Verified union, including previously stored duplicates. Not an aggregate success on an error. */\n acknowledged: WithStorageMeta<Payload>[]\n receipts: CompositeWriteReceipt[]\n}\n\nexport class CompositePayloadsWriteError extends Error {\n readonly result: CompositeWriteResult\n\n constructor(result: CompositeWriteResult) {\n super('Required datalake writes did not complete')\n this.name = 'CompositePayloadsWriteError'\n this.result = result\n }\n}\n\nexport interface CompositeReadReceipt {\n error?: 'provider_error' | 'invalid_response'\n found: string[]\n requested: string[]\n target: string\n}\n\nexport interface CompositeReadResult {\n payloads: WithStorageMeta<Payload>[]\n receipts: CompositeReadReceipt[]\n sources: Record<string, string>\n}\n\nexport class CompositePayloadsReadError extends Error {\n readonly result: CompositeReadResult\n\n constructor(result: CompositeReadResult) {\n super('Datalake read could not be verified')\n this.name = 'CompositePayloadsReadError'\n this.result = result\n }\n}\n\ninterface PreparedPayload {\n bytes: number\n hash: string\n payload: Payload\n}\n\ninterface TargetWrite {\n payloads: PreparedPayload[]\n receipt: CompositeWriteReceipt\n target: CompositePayloadsTarget\n}\n\n/**\n * Required-subset writes and verified hash reads across named datalakes.\n * Accepts flat payload bodies only. Callers validate and flatten protocol envelopes first.\n * Deliberately has no global next/clear/delete/usage: store-local sequences and lifecycles differ.\n */\nexport class CompositePayloadsClient {\n private readonly identify: CompositePayloadsClientOptions['identify']\n private readonly targets: readonly CompositePayloadsTarget[]\n\n constructor(options: CompositePayloadsClientOptions) {\n if (typeof options.identify !== 'function') throw new TypeError('Canonical payload identity is required')\n if (options.targets.length === 0) throw new TypeError('At least one datalake target is required')\n const names = new Set<string>()\n this.targets = options.targets.map((target) => {\n if (!/^[a-z0-9][a-z0-9._-]{0,63}$/i.test(target.name) || names.has(target.name)) {\n throw new TypeError('Datalake target names must be unique non-secret identifiers')\n }\n names.add(target.name)\n return { ...target, policy: snapshotPolicy(target.policy) }\n })\n this.identify = options.identify\n }\n\n /** Missing hashes fall through in target order. Provider errors and corruption fail explicitly. */\n async get(hashes: string[]): Promise<WithStorageMeta<Payload>[]> {\n return (await this.getWithReceipts(hashes)).payloads\n }\n\n async getMany(hashes: string[]): Promise<WithStorageMeta<Payload>[]> {\n return await this.get(hashes)\n }\n\n async getWithReceipts(hashes: readonly string[]): Promise<CompositeReadResult> {\n const requested = [...new Set(hashes)]\n if (requested.some(hash => typeof hash !== 'string' || hash.length === 0)) throw new TypeError('Hashes must be non-empty strings')\n const found = new Map<string, WithStorageMeta<Payload>>()\n const result: CompositeReadResult = {\n payloads: [], receipts: [], sources: {},\n }\n for (const target of this.targets) {\n const remaining = requested.filter(hash => !found.has(hash))\n if (remaining.length === 0) break\n const receipt: CompositeReadReceipt = {\n target: target.name, requested: remaining, found: [],\n }\n result.receipts.push(receipt)\n let response: WithStorageMeta<Payload>[]\n try {\n response = await target.client.getMany([...remaining])\n } catch {\n receipt.error = 'provider_error'\n throw new CompositePayloadsReadError(result)\n }\n try {\n const verified = await this.verify(response, new Set(remaining))\n for (const payload of verified.values()) {\n found.set(payload._hash, payload)\n result.sources[payload._hash] = target.name\n receipt.found.push(payload._hash)\n }\n result.payloads = requested.flatMap(hash => found.has(hash) ? [found.get(hash)!] : [])\n } catch {\n receipt.error = 'invalid_response'\n throw new CompositePayloadsReadError(result)\n }\n }\n return result\n }\n\n /** Payload-array acknowledgment suitable for consumers of insert/get method contracts. */\n async insert(payloads: Payload[]): Promise<WithStorageMeta<Payload>[]> {\n return (await this.insertWithReceipts(payloads)).acknowledged\n }\n\n async insertWithReceipts(payloads: readonly Payload[]): Promise<CompositeWriteResult> {\n // Snapshot every body before the first await, then finish all selection before any I/O.\n const snapshots = payloads.map(snapshotPayload)\n const prepared: PreparedPayload[] = []\n const seen = new Set<string>()\n const encoder = new TextEncoder()\n for (const payload of snapshots) {\n const { hash } = await this.identify(payload)\n requireHash(hash)\n if (!seen.has(hash)) {\n prepared.push({\n payload, hash, bytes: encoder.encode(JSON.stringify(payload)).byteLength,\n })\n seen.add(hash)\n }\n }\n const writes = this.targets.map(target => prepareWrite(target, prepared))\n const outcomes = await Promise.all(writes.map(write => this.writeTarget(write)))\n const acknowledged = new Map<string, WithStorageMeta<Payload>>()\n for (const outcome of outcomes) {\n for (const payload of outcome.acknowledged) acknowledged.set(payload._hash, payload)\n }\n const result: CompositeWriteResult = {\n acknowledged: prepared.flatMap(({ hash }) => acknowledged.has(hash) ? [acknowledged.get(hash)!] : []),\n receipts: writes.map(write => write.receipt),\n }\n if (result.receipts.some(receipt => receipt.status === 'failed')) throw new CompositePayloadsWriteError(result)\n return result\n }\n\n private async verify(payloads: WithStorageMeta<Payload>[], expected: Set<string>): Promise<Map<string, WithStorageMeta<Payload>>> {\n if (!Array.isArray(payloads)) throw new TypeError('Expected payload array')\n const snapshots = payloads.map((payload) => {\n if (typeof payload?._sequence !== 'string' || payload._sequence.length === 0) throw new TypeError('Missing storage sequence')\n return {\n ...snapshotPayload(payload), _hash: payload._hash, _dataHash: payload._dataHash, _sequence: payload._sequence,\n }\n })\n const verified = new Map<string, WithStorageMeta<Payload>>()\n for (const payload of snapshots) {\n const identity = await this.identify(snapshotPayload(payload))\n if (identity.hash !== payload._hash || identity.dataHash !== payload._dataHash || !expected.has(identity.hash)) {\n throw new TypeError('Unexpected payload identity')\n }\n verified.set(identity.hash, payload)\n }\n return verified\n }\n\n private async writeTarget({\n target, payloads, receipt,\n }: TargetWrite): Promise<CompositeWriteResult> {\n const result: CompositeWriteResult = { acknowledged: [], receipts: [receipt] }\n if (payloads.length === 0) return result\n let response: Awaited<ReturnType<PayloadsClient['insert']>>\n try {\n response = await target.client.insert(payloads.map(item => snapshotPayload(item.payload)))\n } catch {\n receipt.status = 'failed'\n receipt.error = 'provider_error'\n return result\n }\n try {\n await this.verify(response.inserted, new Set(receipt.eligible))\n if (!Array.isArray(response.summary.rejected) || response.summary.rejected.some(hash => !receipt.eligible.includes(hash))) {\n throw new TypeError('Unexpected rejected hashes')\n }\n receipt.rejected = [...new Set(response.summary.rejected)]\n } catch {\n receipt.status = 'failed'\n receipt.error = 'invalid_response'\n return result\n }\n let readback: WithStorageMeta<Payload>[]\n try {\n readback = await target.client.getMany([...receipt.eligible])\n } catch {\n receipt.status = 'failed'\n receipt.error = 'provider_error'\n return result\n }\n try {\n const verified = await this.verify(readback, new Set(receipt.eligible))\n result.acknowledged = receipt.eligible.flatMap(hash => verified.has(hash) ? [verified.get(hash)!] : [])\n receipt.acknowledged = result.acknowledged.map(payload => payload._hash)\n if (receipt.rejected.length > 0 || verified.size !== receipt.eligible.length) {\n receipt.status = 'failed'\n receipt.error = receipt.rejected.length > 0 ? 'policy_rejected' : 'incomplete_readback'\n }\n } catch {\n receipt.status = 'failed'\n receipt.error = 'invalid_response'\n }\n return result\n }\n}\n\nfunction snapshotPolicy(policy: CompositePayloadsPolicy): CompositePayloadsPolicy {\n if (!policy || (policy.mode !== 'all' && policy.mode !== 'selected')) throw new TypeError('Explicit datalake policy is required')\n if (policy.mode === 'selected' && (!Array.isArray(policy.allowedSchemas) || policy.maxPayloadBytes === undefined)) {\n throw new TypeError('Selected datalakes require an allowlist and byte limit')\n }\n for (const schemas of [policy.allowedSchemas, policy.disallowedSchemas]) {\n if (schemas !== undefined && (!Array.isArray(schemas) || schemas.some(schema => typeof schema !== 'string' || schema.length === 0))) {\n throw new TypeError('Schema lists must contain non-empty identifiers')\n }\n }\n for (const limit of [policy.maxPayloadBytes, ...Object.values(policy.schemaMaxPayloadBytes ?? {})]) {\n if (limit !== undefined && (!Number.isSafeInteger(limit) || limit <= 0)) throw new RangeError('Payload byte limits must be positive safe integers')\n }\n return {\n ...policy,\n allowedSchemas: policy.allowedSchemas === undefined ? undefined : [...policy.allowedSchemas],\n disallowedSchemas: policy.disallowedSchemas === undefined ? undefined : [...policy.disallowedSchemas],\n schemaMaxPayloadBytes: { ...policy.schemaMaxPayloadBytes },\n }\n}\n\nfunction prepareWrite(target: CompositePayloadsTarget, payloads: PreparedPayload[]): TargetWrite {\n const selected: PreparedPayload[] = []\n const excluded: CompositePayloadExclusion[] = []\n for (const item of payloads) {\n const reason = exclusionReason(target.policy, item)\n if (reason) excluded.push({ hash: item.hash, reason })\n else selected.push(item)\n }\n return {\n target,\n payloads: selected,\n receipt: {\n target: target.name,\n policyRevision: target.policy.revision,\n eligible: selected.map(item => item.hash),\n excluded,\n acknowledged: [],\n rejected: [],\n status: selected.length > 0 ? 'complete' : 'excluded',\n },\n }\n}\n\nfunction exclusionReason(policy: CompositePayloadsPolicy, item: PreparedPayload): CompositePayloadExclusion['reason'] | undefined {\n const { schema } = item.payload\n if ((policy.allowedSchemas !== undefined && !policy.allowedSchemas.includes(schema)) || policy.disallowedSchemas?.includes(schema)) return 'schema'\n const schemaLimit = policy.schemaMaxPayloadBytes && Object.hasOwn(policy.schemaMaxPayloadBytes, schema)\n ? policy.schemaMaxPayloadBytes[schema]\n : undefined\n const limit = Math.min(policy.maxPayloadBytes ?? Infinity, schemaLimit ?? Infinity)\n if (item.bytes > limit) return 'size'\n if (policy.isValid && !policy.isValid(snapshotPayload(item.payload))) return 'validation'\n return undefined\n}\n\nfunction snapshotPayload(payload: Payload): Payload {\n if (!payload || typeof payload !== 'object' || Array.isArray(payload) || typeof payload.schema !== 'string' || payload.schema.length === 0) {\n throw new TypeError('Expected flat schema-bearing payloads')\n }\n const stripped = Object.fromEntries(Object.entries(payload).filter(([key]) => !key.startsWith('_')))\n // Normalize the JSON wire representation, not just the in-memory object graph.\n const serialized = JSON.stringify(stripped)\n const copy = JSON.parse(serialized) as Payload\n if (copy.schema !== payload.schema) throw new TypeError('Payload serialization changed its schema')\n return copy\n}\n\nfunction requireHash(hash: string): void {\n if (typeof hash !== 'string' || hash.length === 0) throw new TypeError('Canonical payload identity returned an invalid hash')\n}\n", "import type {\n DatalakeInsertSummary,\n InsertPayloadsBody,\n InsertPayloadsResponse,\n InsertPayloadsResult,\n NextPayloadsOptions,\n NextPayloadsResponse,\n NextPayloadsResult,\n Payload,\n WithStorageMeta,\n} from '@ariestools/aries-datalake-core/browser'\nimport {\n DATALAKE_HEADER_DUPLICATES,\n DATALAKE_HEADER_NEXT_CURSOR,\n DATALAKE_HEADER_REJECTED,\n datalakePlaneClearPath,\n datalakePlaneDeletePath,\n datalakePlaneGetManyPath,\n datalakePlaneGetPath,\n datalakePlaneInsertPath,\n datalakePlaneNextPath,\n datalakePlaneUsagePath,\n} from '@ariestools/aries-datalake-core/browser'\n\nimport type { AuthTokenSource } from './AuthToken.ts'\nimport { resolveAuthToken } from './AuthToken.ts'\nimport { extractRequestBase, parsePayloadResponse } from './payloadRequest.ts'\n\nexport interface DatalakeUsageReport {\n datalakeId: string\n payloadCount: number\n rateLimits?: {\n anonymous?: { limit: number; remaining: number }\n authenticated?: { limit: number; remaining: number }\n }\n}\n\n/**\n * HTTP client for a single datalake's data plane. Clients send bare\n * `Payload` objects (no `_hash` / `_dataHash` \u2014 those are stamped on\n * insert by the data plane's archivist). Responses always carry the\n * archivist-computed storage meta.\n *\n * Wire format mirrors the XYO archivist REST middleware: `/insert`,\n * `/get/:hash`, `/next`, bare arrays as bodies. Datalake-specific\n * extras (duplicates count, rejected hashes, next cursor) are delivered\n * via response headers.\n */\nexport interface PayloadsClient {\n clear(): Promise<{ removed: number }>\n delete(hash: string): Promise<void>\n get(hash: string): Promise<WithStorageMeta<Payload>>\n getMany(hashes: string[]): Promise<WithStorageMeta<Payload>[]>\n insert(payloads: Payload[]): Promise<InsertPayloadsResult>\n next(options?: NextPayloadsOptions): Promise<NextPayloadsResult>\n usage(): Promise<DatalakeUsageReport>\n}\n\n/**\n * Either a static bearer token, or a factory invoked per-request. The factory\n * form lets callers mint a fresh self-signed wallet JWT per call (with\n * `aud` bound to the datalake id).\n */\nexport type PayloadsAuthTokenSource = AuthTokenSource\n\nexport interface RestPayloadsClientOptions {\n /**\n Static bearer token, or async factory minted per-request.\n */\n authToken: PayloadsAuthTokenSource\n /**\n Data-plane base URL without trailing slash.\n */\n baseUrl: string\n /**\n Datalake id; appended to `/v1/datalakes/:id/...`.\n */\n datalakeId: string\n /**\n Optional `fetch` override; defaults to global `fetch`.\n */\n fetchImpl?: typeof fetch\n}\n\ninterface RequestOptions {\n body?: unknown\n method?: string\n}\n\ninterface RequestResult<T> {\n data: T\n headers: Headers\n}\n\nexport class RestPayloadsClient implements PayloadsClient {\n private readonly authToken: PayloadsAuthTokenSource\n private readonly datalakeId: string\n private readonly fetchImpl: typeof fetch\n private readonly requestBase: string\n\n constructor(options: RestPayloadsClientOptions) {\n this.requestBase = extractRequestBase(options.baseUrl)\n this.datalakeId = options.datalakeId\n this.authToken = options.authToken\n this.fetchImpl = options.fetchImpl ?? fetch\n }\n\n async clear(): Promise<{ removed: number }> {\n return this.request<{ removed: number }>(\n datalakePlaneClearPath(this.datalakeId),\n { method: 'POST' },\n )\n }\n\n async delete(hash: string): Promise<void> {\n await this.request<void>(\n datalakePlaneDeletePath(this.datalakeId, hash),\n { method: 'DELETE' },\n )\n }\n\n async get(hash: string): Promise<WithStorageMeta<Payload>> {\n return this.request<WithStorageMeta<Payload>>(datalakePlaneGetPath(this.datalakeId, hash))\n }\n\n async getMany(hashes: string[]): Promise<WithStorageMeta<Payload>[]> {\n if (hashes.length === 0) return []\n return this.request<WithStorageMeta<Payload>[]>(\n datalakePlaneGetManyPath(this.datalakeId),\n { method: 'POST', body: hashes },\n )\n }\n\n async insert(payloads: Payload[]): Promise<InsertPayloadsResult> {\n const body: InsertPayloadsBody = payloads\n const { data, headers } = await this.requestWithHeaders<InsertPayloadsResponse>(\n datalakePlaneInsertPath(this.datalakeId),\n { method: 'POST', body },\n )\n return {\n inserted: data,\n summary: readInsertSummary(headers),\n }\n }\n\n async next(options: NextPayloadsOptions = {}): Promise<NextPayloadsResult> {\n const params = new URLSearchParams()\n if (options.limit !== undefined) params.set('limit', String(options.limit))\n if (options.cursor) params.set('cursor', options.cursor)\n if (options.schemas && options.schemas.length > 0) params.set('schemas', options.schemas.join(','))\n if (options.order) params.set('order', options.order)\n const suffix = params.toString()\n const path = suffix\n ? `${datalakePlaneNextPath(this.datalakeId)}?${suffix}`\n : datalakePlaneNextPath(this.datalakeId)\n const { data, headers } = await this.requestWithHeaders<NextPayloadsResponse>(path)\n const nextCursor = headers.get(DATALAKE_HEADER_NEXT_CURSOR) ?? undefined\n return { payloads: data, nextCursor }\n }\n\n async usage(): Promise<DatalakeUsageReport> {\n return this.request<DatalakeUsageReport>(datalakePlaneUsagePath(this.datalakeId))\n }\n\n private async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { data } = await this.requestWithHeaders<T>(path, options)\n return data\n }\n\n private async requestWithHeaders<T>(path: string, options: RequestOptions = {}): Promise<RequestResult<T>> {\n const method = options.method ?? 'GET'\n const token = await resolveAuthToken(this.authToken, this.datalakeId)\n const headers: Record<string, string> = {\n accept: 'application/json',\n authorization: `Bearer ${token}`,\n }\n const init: RequestInit = {\n credentials: 'omit',\n headers,\n method,\n redirect: 'error',\n }\n if (options.body !== undefined) {\n headers['content-type'] = 'application/json'\n init.body = JSON.stringify(options.body)\n }\n\n const response = await this.fetchImpl(`${this.requestBase}${path}`, init)\n if (response.status === 204) return { data: undefined as T, headers: response.headers }\n const text = await response.text()\n return { data: parsePayloadResponse<T>(response, text, method), headers: response.headers }\n }\n}\n\nfunction readInsertSummary(headers: Headers): DatalakeInsertSummary {\n const duplicatesRaw = headers.get(DATALAKE_HEADER_DUPLICATES)\n const duplicates = duplicatesRaw === null ? 0 : Math.trunc(Number(duplicatesRaw))\n const rejectedRaw = headers.get(DATALAKE_HEADER_REJECTED)\n const rejected = rejectedRaw === null || rejectedRaw.length === 0\n ? []\n : rejectedRaw.split(',').map(value => value.trim()).filter(value => value.length > 0)\n return {\n duplicates: Number.isFinite(duplicates) ? duplicates : 0,\n rejected,\n }\n}\n", "export interface AuthTokenRequest {\n /**\n Exact JWT audience required by the target service or datalake.\n */\n audience: string\n}\n\n/**\nInvoked for every request so callers can obtain a fresh wallet JWT.\n*/\nexport type AuthTokenSupplier = (request: AuthTokenRequest) => Promise<string>\n\nexport type AuthTokenSource = AuthTokenSupplier | string\n\nexport async function resolveAuthToken(source: AuthTokenSource, audience: string): Promise<string> {\n return typeof source === 'function' ? await source({ audience }) : source\n}\n", "import type { ApiErrorBody } from '@ariestools/aries-datalake-core/browser'\nimport { DATALAKE_API_VERSION, DatalakeApiError } from '@ariestools/aries-datalake-core/browser'\n\n/**\n * The data plane is typically addressed by a URL that already includes the\n * datalake id (e.g. `https://plane/v1/datalakes/dl_abc`). Preserve any path\n * prefix before `/v1/datalakes` so a shared ALB can expose the data plane at\n * `https://host/plane` while the path helpers regenerate the canonical API\n * suffix from the id.\n */\nexport function extractRequestBase(urlWithPossiblePath: string): string {\n try {\n const parsed = new URL(urlWithPossiblePath)\n const apiMarker = `/${DATALAKE_API_VERSION}/datalakes`\n const markerIndex = parsed.pathname.indexOf(apiMarker)\n const prefix = markerIndex === -1\n ? parsed.pathname.replace(/\\/$/, '')\n : parsed.pathname.slice(0, markerIndex)\n return `${parsed.protocol}//${parsed.host}${prefix}`\n } catch {\n return urlWithPossiblePath.replace(/\\/$/, '')\n }\n}\n\n/** Preserve the native data-plane JSON and API-error response contract. */\nexport function parsePayloadResponse<T>(response: Response, text: string, method: string): T {\n const payload: unknown = text.length > 0 ? JSON.parse(text) : undefined\n\n if (!response.ok) {\n const errorBody: ApiErrorBody = isApiErrorBody(payload)\n ? payload\n : {\n code: 'internal',\n message: 'Unexpected ' + response.status + ' response from ' + method + ' data plane',\n }\n throw new DatalakeApiError(response.status, errorBody)\n }\n return payload as T\n}\n\nfunction isApiErrorBody(value: unknown): value is ApiErrorBody {\n if (typeof value !== 'object' || value === null) return false\n const maybe = value as Record<string, unknown>\n return typeof maybe.code === 'string' && typeof maybe.message === 'string'\n}\n", "import type {\n ApiErrorBody,\n CreateDatalakeBody,\n DatalakeDescriptor,\n DatalakeToken,\n GrantBody,\n MintTokenBody,\n} from '@ariestools/aries-datalake-core/browser'\nimport {\n DATALAKE_CONTROL_AUDIENCE,\n DatalakeApiError,\n datalakeCollectionPath,\n datalakeGrantPath,\n datalakeGrantsPath,\n datalakeResourcePath,\n datalakeTokensPath,\n} from '@ariestools/aries-datalake-core/browser'\n\nimport type { AuthTokenSource } from './AuthToken.ts'\nimport { resolveAuthToken } from './AuthToken.ts'\nimport type {\n CreateDatalakeRequest,\n DatalakeClient,\n GrantRequest,\n RevokeRequest,\n TokenRequest,\n} from './DatalakeClient.ts'\n\nexport interface RestDatalakeClientOptions {\n /**\n Exact control-plane JWT audience.\n */\n audience?: string\n /**\n Static token, or async factory minted per-request.\n */\n authToken: AuthTokenSource\n /**\n Control-plane base URL, e.g. `https://dl-control.xylabs.io`.\n */\n baseUrl: string\n /**\n Optional `fetch` override; defaults to global `fetch`.\n */\n fetchImpl?: typeof fetch\n}\n\ninterface RequestOptions {\n body?: unknown\n method?: string\n}\n\n/**\n * HTTP client for the datalake control plane. Implements the stable\n * `DatalakeClient` contract so callers are independent of transport.\n */\nexport class RestDatalakeClient implements DatalakeClient {\n private readonly audience: string\n private readonly authToken: AuthTokenSource\n private readonly baseUrl: string\n private readonly fetchImpl: typeof fetch\n\n constructor(options: RestDatalakeClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n this.audience = options.audience ?? DATALAKE_CONTROL_AUDIENCE\n this.authToken = options.authToken\n this.fetchImpl = options.fetchImpl ?? fetch\n }\n\n async create(request: CreateDatalakeRequest): Promise<DatalakeDescriptor> {\n const body: CreateDatalakeBody = { name: request.name, config: request.config }\n return this.request<DatalakeDescriptor>(datalakeCollectionPath(), { method: 'POST', body })\n }\n\n async describe(idOrName: string): Promise<DatalakeDescriptor> {\n return this.request<DatalakeDescriptor>(datalakeResourcePath(idOrName))\n }\n\n async destroy(idOrName: string): Promise<void> {\n await this.request<void>(datalakeResourcePath(idOrName), { method: 'DELETE' })\n }\n\n async grant(request: GrantRequest): Promise<DatalakeDescriptor> {\n const body: GrantBody = { principal: request.principal, role: request.role }\n return this.request<DatalakeDescriptor>(\n datalakeGrantsPath(request.datalakeId),\n { method: 'POST', body },\n )\n }\n\n async list(): Promise<DatalakeDescriptor[]> {\n return this.request<DatalakeDescriptor[]>(datalakeCollectionPath())\n }\n\n async mintToken(request: TokenRequest): Promise<DatalakeToken> {\n const body: MintTokenBody = { role: request.role, ttlSeconds: request.ttlSeconds }\n return this.request<DatalakeToken>(\n datalakeTokensPath(request.datalakeId),\n { method: 'POST', body },\n )\n }\n\n async revoke(request: RevokeRequest): Promise<DatalakeDescriptor> {\n return this.request<DatalakeDescriptor>(\n datalakeGrantPath(request.datalakeId, request.principal),\n { method: 'DELETE' },\n )\n }\n\n private async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const url = `${this.baseUrl}${path}`\n const method = options.method ?? 'GET'\n const token = await resolveAuthToken(this.authToken, this.audience)\n const headers: Record<string, string> = {\n accept: 'application/json',\n authorization: `Bearer ${token}`,\n }\n const init: RequestInit = {\n credentials: 'omit',\n headers,\n method,\n redirect: 'error',\n }\n if (options.body !== undefined) {\n headers['content-type'] = 'application/json'\n init.body = JSON.stringify(options.body)\n }\n\n const response = await this.fetchImpl(url, init)\n if (response.status === 204) {\n return undefined as T\n }\n const text = await response.text()\n const payload: unknown = text.length > 0 ? JSON.parse(text) : undefined\n\n if (!response.ok) {\n const errorBody: ApiErrorBody = isApiErrorBody(payload)\n ? payload\n : {\n code: 'internal',\n message: `Unexpected ${response.status} response from ${method} control plane`,\n }\n throw new DatalakeApiError(response.status, errorBody)\n }\n return payload as T\n }\n}\n\nfunction isApiErrorBody(value: unknown): value is ApiErrorBody {\n if (typeof value !== 'object' || value === null) return false\n const maybe = value as Record<string, unknown>\n return typeof maybe.code === 'string' && typeof maybe.message === 'string'\n}\n", "import type { Payload, WithStorageMeta } from '@ariestools/aries-datalake-core/browser'\nimport { datalakePlaneGetManyPath, datalakePlaneGetPath } from '@ariestools/aries-datalake-core/browser'\nimport { readResponseText } from '@ariestools/sdk/fetch'\n\nimport { extractRequestBase, parsePayloadResponse } from './payloadRequest.ts'\n\n/** Policy for one public HTTP response, including its JSON envelope and metadata. */\nexport interface RestPublicPayloadsReadOptions {\n /**\n Positive safe-integer limit on decoded Fetch-body bytes before JSON parsing.\n Omission leaves the body size unlimited; this is not a raw network-byte limit.\n */\n readonly maxResponseBytes?: number\n /** Caller cancellation remains active through response-body consumption. */\n readonly signal?: AbortSignal\n}\n\nexport interface RestPublicPayloadsReaderOptions {\n /** Absolute HTTP(S) data-plane URL, optionally including its API path prefix. */\n readonly baseUrl: string\n /** Datalake id used to regenerate the canonical native data-plane paths. */\n readonly datalakeId: string\n /**\n Trusted transport override. It must preserve the public no-credentials and\n no-redirect policy and honor cancellation. Defaults to request-time global fetch.\n */\n readonly fetchImpl?: typeof fetch\n}\n\n/**\n * Exact-hash reads using the native data-plane protocol without token handling.\n * The server must grant public viewer access. Public access applies to the whole\n * lake; this reader neither grants access nor falls back from authenticated I/O.\n * Returned metadata is structural transport data, not verified content identity.\n */\nexport class RestPublicPayloadsReader {\n private readonly datalakeId: string\n private readonly fetchImpl?: typeof fetch\n private readonly requestBase: string\n\n constructor(options: RestPublicPayloadsReaderOptions) {\n this.requestBase = publicRequestBase(options.baseUrl)\n this.datalakeId = options.datalakeId\n this.fetchImpl = options.fetchImpl\n }\n\n async get(hash: string, options: RestPublicPayloadsReadOptions = {}): Promise<WithStorageMeta<Payload>> {\n const payload = await this.request(datalakePlaneGetPath(this.datalakeId, hash), options)\n if (!isStoredPayload(payload)) throw new TypeError('Data plane returned an invalid stored payload')\n return payload\n }\n\n async getMany(hashes: readonly string[], options: RestPublicPayloadsReadOptions = {}): Promise<WithStorageMeta<Payload>[]> {\n const policy = pinReadOptions(options)\n const requested = [...hashes]\n if (requested.length === 0) return []\n const payloads = await this.request(datalakePlaneGetManyPath(this.datalakeId), policy, requested)\n if (!Array.isArray(payloads) || !payloads.every(isStoredPayload)) {\n throw new TypeError('Data plane returned an invalid stored-payload array')\n }\n return payloads\n }\n\n private async request(path: string, options: RestPublicPayloadsReadOptions, hashes?: readonly string[]): Promise<unknown> {\n const { maxResponseBytes, signal } = pinReadOptions(options)\n const method = hashes === undefined ? 'GET' : 'POST'\n const headers: Record<string, string> = { accept: 'application/json' }\n const init: RequestInit = {\n credentials: 'omit',\n headers,\n method,\n redirect: 'error',\n signal,\n }\n if (hashes !== undefined) {\n headers['content-type'] = 'application/json'\n init.body = JSON.stringify(hashes)\n }\n const fetchImpl = this.fetchImpl ?? globalThis.fetch\n const response = await fetchImpl(this.requestBase + path, init)\n const text = await readResponseText(response, { maxResponseBytes, signal })\n return parsePayloadResponse<unknown>(response, text, method)\n }\n}\n\nfunction pinReadOptions(options: RestPublicPayloadsReadOptions): RestPublicPayloadsReadOptions {\n const { maxResponseBytes, signal } = options\n if (maxResponseBytes !== undefined && (!Number.isSafeInteger(maxResponseBytes) || maxResponseBytes <= 0)) {\n throw new RangeError('maxResponseBytes must be a positive safe integer')\n }\n signal?.throwIfAborted()\n return { maxResponseBytes, signal }\n}\n\nfunction publicRequestBase(baseUrl: string): string {\n let parsed: URL\n try {\n parsed = new URL(baseUrl)\n } catch {\n throw new TypeError('baseUrl must be an absolute HTTP(S) URL')\n }\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new TypeError('baseUrl must be an absolute HTTP(S) URL')\n }\n if (parsed.username !== '' || parsed.password !== '') {\n throw new TypeError('Public data-plane URLs must not contain credentials')\n }\n if (parsed.href.includes('#')) throw new TypeError('Public data-plane URLs must not contain fragments')\n return extractRequestBase(baseUrl)\n}\n\nfunction isStoredPayload(value: unknown): value is WithStorageMeta<Payload> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false\n const payload = value as Record<string, unknown>\n return ['schema', '_hash', '_dataHash', '_sequence'].every(key => Object.hasOwn(payload, key) && typeof payload[key] === 'string')\n}\n", "export type {\n AuthTokenRequest, AuthTokenSource, AuthTokenSupplier,\n} from './AuthToken.ts'\nexport type {\n CompositePayloadExclusion,\n CompositePayloadIdentity,\n CompositePayloadsClientOptions,\n CompositePayloadsPolicy,\n CompositePayloadsTarget,\n CompositeReadReceipt,\n CompositeReadResult,\n CompositeWriteReceipt,\n CompositeWriteResult,\n} from './CompositePayloadsClient.ts'\nexport {\n CompositePayloadsClient, CompositePayloadsReadError, CompositePayloadsWriteError,\n} from './CompositePayloadsClient.ts'\nexport type {\n CreateDatalakeRequest,\n DatalakeClient,\n GrantRequest,\n RevokeRequest,\n TokenRequest,\n} from './DatalakeClient.ts'\nexport type {\n DatalakeUsageReport,\n PayloadsAuthTokenSource,\n PayloadsClient,\n RestPayloadsClientOptions,\n} from './PayloadsClient.ts'\nexport { RestPayloadsClient } from './PayloadsClient.ts'\nexport type { RestDatalakeClientOptions } from './RestDatalakeClient.ts'\nexport { RestDatalakeClient } from './RestDatalakeClient.ts'\nexport type { RestPublicPayloadsReaderOptions, RestPublicPayloadsReadOptions } from './RestPublicPayloadsReader.ts'\nexport { RestPublicPayloadsReader } from './RestPublicPayloadsReader.ts'\nexport * from '@ariestools/aries-datalake-core/browser'\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["DatalakeApiError", "isApiErrorBody", "DatalakeApiError", "datalakePlaneGetManyPath", "datalakePlaneGetPath", "datalakePlaneGetPath", "datalakePlaneGetManyPath"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Payload, WithStorageMeta } from '@ariestools/aries-datalake-core/browser';
|
|
2
|
+
import type { PayloadsClient } from './PayloadsClient.ts';
|
|
3
|
+
/** Supply the canonical XYO PayloadBuilder hashes, without adding its runtime to browser clients. */
|
|
4
|
+
export interface CompositePayloadIdentity {
|
|
5
|
+
dataHash: string;
|
|
6
|
+
hash: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CompositePayloadsPolicy {
|
|
9
|
+
/** Required for selected mode; an empty array selects nothing. */
|
|
10
|
+
allowedSchemas?: readonly string[];
|
|
11
|
+
disallowedSchemas?: readonly string[];
|
|
12
|
+
/** Trusted local validator; receiving services must independently enforce their policy. */
|
|
13
|
+
isValid?: (payload: Payload) => boolean;
|
|
14
|
+
/** Required for selected mode. Measured as UTF-8 JSON, before compression. */
|
|
15
|
+
maxPayloadBytes?: number;
|
|
16
|
+
/** Explicitly choose a complete collection or an allowlisted collection. */
|
|
17
|
+
mode: 'all' | 'selected';
|
|
18
|
+
revision?: string;
|
|
19
|
+
/** Per-schema limits can only tighten the overall payload limit. */
|
|
20
|
+
schemaMaxPayloadBytes?: Readonly<Record<string, number>>;
|
|
21
|
+
}
|
|
22
|
+
export interface CompositePayloadsTarget {
|
|
23
|
+
client: Pick<PayloadsClient, 'getMany' | 'insert'>;
|
|
24
|
+
/** A non-secret identifier, not an endpoint or credential. Also determines receipt provenance. */
|
|
25
|
+
name: string;
|
|
26
|
+
policy: CompositePayloadsPolicy;
|
|
27
|
+
}
|
|
28
|
+
export interface CompositePayloadsClientOptions {
|
|
29
|
+
/** Trusted canonical XYO hash implementation. Storage metadata must not affect either hash. */
|
|
30
|
+
identify: (payload: Payload) => Promise<CompositePayloadIdentity>;
|
|
31
|
+
/** Every target is required for its eligible subset. Array order is read priority. */
|
|
32
|
+
targets: readonly CompositePayloadsTarget[];
|
|
33
|
+
}
|
|
34
|
+
export interface CompositePayloadExclusion {
|
|
35
|
+
hash: string;
|
|
36
|
+
reason: 'schema' | 'size' | 'validation';
|
|
37
|
+
}
|
|
38
|
+
export interface CompositeWriteReceipt {
|
|
39
|
+
acknowledged: string[];
|
|
40
|
+
eligible: string[];
|
|
41
|
+
error?: 'provider_error' | 'invalid_response' | 'policy_rejected' | 'incomplete_readback';
|
|
42
|
+
excluded: CompositePayloadExclusion[];
|
|
43
|
+
policyRevision?: string;
|
|
44
|
+
rejected: string[];
|
|
45
|
+
status: 'complete' | 'excluded' | 'failed';
|
|
46
|
+
target: string;
|
|
47
|
+
}
|
|
48
|
+
export interface CompositeWriteResult {
|
|
49
|
+
/** Verified union, including previously stored duplicates. Not an aggregate success on an error. */
|
|
50
|
+
acknowledged: WithStorageMeta<Payload>[];
|
|
51
|
+
receipts: CompositeWriteReceipt[];
|
|
52
|
+
}
|
|
53
|
+
export declare class CompositePayloadsWriteError extends Error {
|
|
54
|
+
readonly result: CompositeWriteResult;
|
|
55
|
+
constructor(result: CompositeWriteResult);
|
|
56
|
+
}
|
|
57
|
+
export interface CompositeReadReceipt {
|
|
58
|
+
error?: 'provider_error' | 'invalid_response';
|
|
59
|
+
found: string[];
|
|
60
|
+
requested: string[];
|
|
61
|
+
target: string;
|
|
62
|
+
}
|
|
63
|
+
export interface CompositeReadResult {
|
|
64
|
+
payloads: WithStorageMeta<Payload>[];
|
|
65
|
+
receipts: CompositeReadReceipt[];
|
|
66
|
+
sources: Record<string, string>;
|
|
67
|
+
}
|
|
68
|
+
export declare class CompositePayloadsReadError extends Error {
|
|
69
|
+
readonly result: CompositeReadResult;
|
|
70
|
+
constructor(result: CompositeReadResult);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Required-subset writes and verified hash reads across named datalakes.
|
|
74
|
+
* Accepts flat payload bodies only. Callers validate and flatten protocol envelopes first.
|
|
75
|
+
* Deliberately has no global next/clear/delete/usage: store-local sequences and lifecycles differ.
|
|
76
|
+
*/
|
|
77
|
+
export declare class CompositePayloadsClient {
|
|
78
|
+
private readonly identify;
|
|
79
|
+
private readonly targets;
|
|
80
|
+
constructor(options: CompositePayloadsClientOptions);
|
|
81
|
+
/** Missing hashes fall through in target order. Provider errors and corruption fail explicitly. */
|
|
82
|
+
get(hashes: string[]): Promise<WithStorageMeta<Payload>[]>;
|
|
83
|
+
getMany(hashes: string[]): Promise<WithStorageMeta<Payload>[]>;
|
|
84
|
+
getWithReceipts(hashes: readonly string[]): Promise<CompositeReadResult>;
|
|
85
|
+
/** Payload-array acknowledgment suitable for consumers of insert/get method contracts. */
|
|
86
|
+
insert(payloads: Payload[]): Promise<WithStorageMeta<Payload>[]>;
|
|
87
|
+
insertWithReceipts(payloads: readonly Payload[]): Promise<CompositeWriteResult>;
|
|
88
|
+
private verify;
|
|
89
|
+
private writeTarget;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=CompositePayloadsClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositePayloadsClient.d.ts","sourceRoot":"","sources":["../../src/CompositePayloadsClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalDatalakeClient.d.ts","sourceRoot":"","sources":["../../src/LocalDatalakeClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAElB,aAAa,EACd,MAAM,iCAAiC,CAAA;AAExC,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACb,MAAM,qBAAqB,CAAA;AAsD5B;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAClD,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalDatalakeClient.d.ts","sourceRoot":"","sources":["../../src/LocalDatalakeClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAElB,aAAa,EACd,MAAM,iCAAiC,CAAA;AAExC,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACb,MAAM,qBAAqB,CAAA;AAsD5B;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAClD,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyCnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKvD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqBzD,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIrC,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBxD,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;CASlE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
|
package/dist/node/browser.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export type { AuthTokenRequest, AuthTokenSource, AuthTokenSupplier, } from './AuthToken.ts';
|
|
2
|
+
export type { CompositePayloadExclusion, CompositePayloadIdentity, CompositePayloadsClientOptions, CompositePayloadsPolicy, CompositePayloadsTarget, CompositeReadReceipt, CompositeReadResult, CompositeWriteReceipt, CompositeWriteResult, } from './CompositePayloadsClient.ts';
|
|
3
|
+
export { CompositePayloadsClient, CompositePayloadsReadError, CompositePayloadsWriteError, } from './CompositePayloadsClient.ts';
|
|
2
4
|
export type { CreateDatalakeRequest, DatalakeClient, GrantRequest, RevokeRequest, TokenRequest, } from './DatalakeClient.ts';
|
|
3
5
|
export type { DatalakeUsageReport, PayloadsAuthTokenSource, PayloadsClient, RestPayloadsClientOptions, } from './PayloadsClient.ts';
|
|
4
6
|
export { RestPayloadsClient } from './PayloadsClient.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,GACrD,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAA;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,cAAc,yCAAyC,CAAA"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,GACrD,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,uBAAuB,EAAE,0BAA0B,EAAE,2BAA2B,GACjF,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAA;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,cAAc,yCAAyC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultDatalake.d.ts","sourceRoot":"","sources":["../../src/defaultDatalake.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"defaultDatalake.d.ts","sourceRoot":"","sources":["../../src/defaultDatalake.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAQlE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAUvD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export type { AuthTokenRequest, AuthTokenSource, AuthTokenSupplier, } from './AuthToken.ts';
|
|
2
|
+
export type { CompositePayloadExclusion, CompositePayloadIdentity, CompositePayloadsClientOptions, CompositePayloadsPolicy, CompositePayloadsTarget, CompositeReadReceipt, CompositeReadResult, CompositeWriteReceipt, CompositeWriteResult, } from './CompositePayloadsClient.ts';
|
|
3
|
+
export { CompositePayloadsClient, CompositePayloadsReadError, CompositePayloadsWriteError, } from './CompositePayloadsClient.ts';
|
|
2
4
|
export type { CreateDatalakeClientOptions } from './createDatalakeClient.ts';
|
|
3
5
|
export { createDatalakeClient } from './createDatalakeClient.ts';
|
|
4
6
|
export type { StoredCredentials, WalletJwtCredentials } from './credentials.ts';
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,GACrD,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EACL,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,GAC3E,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,GAC7D,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACrF,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAA;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,GACrD,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,uBAAuB,EAAE,0BAA0B,EAAE,2BAA2B,GACjF,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EACL,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,GAC3E,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,GAC7D,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACrF,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAA;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA"}
|