@xyo-network/service-kit-xl1 0.0.3 → 0.2.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 +17 -0
- package/dist/browser/index.mjs +5 -5
- package/dist/browser/index.mjs.map +2 -2
- package/dist/node/index.mjs +5 -5
- package/dist/node/index.mjs.map +2 -2
- package/package.json +18 -18
package/README.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
Creates an explicitly configured readonly Service Kit seed through the native
|
|
4
4
|
XL1 REST datalake viewer.
|
|
5
5
|
|
|
6
|
+
The current public release is 0.1.0, published October 1, 2026 and registry
|
|
7
|
+
rechecked October 5. It depends on XL1 SDK ~5.8.0. Earlier native HTTP and
|
|
8
|
+
packed/registry-consumer receipts remain version-specific; publication does
|
|
9
|
+
not qualify current native/browser behavior, consumer adoption or hosted
|
|
10
|
+
availability. This datalake adapter does not supply B2's chain reader. See
|
|
11
|
+
[implementation status](../../docs/IMPLEMENTATION_STATUS.md) and the
|
|
12
|
+
[B3 contract](../../papers/B3_NATIVE_READER_ADAPTERS.md).
|
|
13
|
+
|
|
14
|
+
The checkout declares Node `^26`: SDK Protocol 8.0.1 confines the selected
|
|
15
|
+
graph to that major, and XL1 SDK 5.8.0 admits Node `>=26`. Development/CI and
|
|
16
|
+
current qualification use Node 26.9.0; other Node 26 versions require their
|
|
17
|
+
own recorded qualification. This corrects the former adapter Node `>=22.3`
|
|
18
|
+
declaration and root Node 24.14.1 pin. Published 0.1.0 metadata remains unchanged
|
|
19
|
+
until release; older runtime receipts remain historical. Browser outputs and
|
|
20
|
+
the configured-reader contract are unchanged. See implementation status for
|
|
21
|
+
the current local packed gate and its limits.
|
|
22
|
+
|
|
6
23
|
~~~ts
|
|
7
24
|
import { createXl1DataLakeSeed } from '@xyo-network/service-kit-xl1'
|
|
8
25
|
|
package/dist/browser/index.mjs
CHANGED
|
@@ -11,7 +11,7 @@ function strictFields(value, fields, required, label) {
|
|
|
11
11
|
throw new TypeError(label + " must be a plain object");
|
|
12
12
|
}
|
|
13
13
|
const prototype = Object.getPrototypeOf(value);
|
|
14
|
-
if (prototype !==
|
|
14
|
+
if (prototype !== null && prototype !== Object.prototype) {
|
|
15
15
|
throw new TypeError(label + " must be a plain object");
|
|
16
16
|
}
|
|
17
17
|
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
@@ -82,7 +82,7 @@ function pinDataLakeSeedOptions(options) {
|
|
|
82
82
|
return Object.freeze({
|
|
83
83
|
endpoint: endpoint.href.replace(/\/+$/u, ""),
|
|
84
84
|
id: seedId(descriptors.id?.value),
|
|
85
|
-
...fetcher
|
|
85
|
+
...fetcher !== void 0 && { fetcher }
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
function exactHash(hashes) {
|
|
@@ -93,7 +93,7 @@ function exactHash(hashes) {
|
|
|
93
93
|
}
|
|
94
94
|
const descriptor = Object.getOwnPropertyDescriptor(hashes, "0");
|
|
95
95
|
const value = descriptor?.value;
|
|
96
|
-
if (descriptor?.enumerable !== true || !("value" in descriptor) ||
|
|
96
|
+
if (typeof value !== "string" || descriptor?.enumerable !== true || !("value" in descriptor) || !HASH_PATTERN.test(value)) {
|
|
97
97
|
throw new TypeError("Hash must be canonical 64-character lowercase hexadecimal");
|
|
98
98
|
}
|
|
99
99
|
return value;
|
|
@@ -128,8 +128,8 @@ async function createXl1DataLakeSeed(options) {
|
|
|
128
128
|
credentials: "omit",
|
|
129
129
|
maxResponseBytes: read.maxResponseBytes,
|
|
130
130
|
redirect: "error",
|
|
131
|
-
...pinned.fetcher
|
|
132
|
-
...read.signal
|
|
131
|
+
...pinned.fetcher !== void 0 && { fetcher: pinned.fetcher },
|
|
132
|
+
...read.signal !== void 0 && { signal: read.signal }
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
135
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createXl1DataLakeSeed.ts", "../../src/configuration.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Hash } from '@ariestools/sdk'\nimport type { ConfiguredSeed } from '@xyo-network/service-kit-protocol'\nimport { createRestDataLakeViewer } from '@xyo-network/xl1-sdk/providers'\n\nimport {\n configuredSeed, type DataLakeSeedOptions, pinDataLakeSeedOptions, pinRead,\n} from './configuration.js'\n\nexport interface Xl1DataLakeSeedOptions extends DataLakeSeedOptions {}\n\n/** Create one explicitly configured public XL1 REST datalake seed. */\nexport async function createXl1DataLakeSeed(options: Xl1DataLakeSeedOptions): Promise<ConfiguredSeed> {\n const pinned = pinDataLakeSeedOptions(options)\n const native = await createRestDataLakeViewer(pinned.endpoint)\n return configuredSeed(pinned.id, async (hashes, readOptions) => {\n const read = pinRead(hashes, readOptions)\n return await native.get([read.hash as Hash], {\n credentials: 'omit',\n maxResponseBytes: read.maxResponseBytes,\n redirect: 'error',\n ...(pinned.fetcher
|
|
5
|
-
"mappings": ";AAEA,SAAS,gCAAgC;;;ACCzC,SAAS,mCAAmC;AAuB5C,IAAM,gBAAgB,oBAAI,IAAI,CAAC,YAAY,kBAAkB,WAAW,IAAI,CAAC;AAC7E,IAAM,cAAc,oBAAI,IAAI,CAAC,gBAAgB,QAAQ,CAAC;AACtD,IAAM,eAAe;AAErB,SAAS,aAAa,OAAgB,QAA6B,UAA6B,OAAe;AAC7G,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,UAAU,QAAQ,yBAAyB;AAAA,EACvD;AACA,QAAM,YAAqB,OAAO,eAAe,KAAK;AACtD,MAAI,cAAc,
|
|
4
|
+
"sourcesContent": ["import type { Hash } from '@ariestools/sdk'\nimport type { ConfiguredSeed } from '@xyo-network/service-kit-protocol'\nimport { createRestDataLakeViewer } from '@xyo-network/xl1-sdk/providers'\n\nimport {\n configuredSeed, type DataLakeSeedOptions, pinDataLakeSeedOptions, pinRead,\n} from './configuration.js'\n\nexport interface Xl1DataLakeSeedOptions extends DataLakeSeedOptions {}\n\n/** Create one explicitly configured public XL1 REST datalake seed. */\nexport async function createXl1DataLakeSeed(options: Xl1DataLakeSeedOptions): Promise<ConfiguredSeed> {\n const pinned = pinDataLakeSeedOptions(options)\n const native = await createRestDataLakeViewer(pinned.endpoint)\n return configuredSeed(pinned.id, async (hashes, readOptions) => {\n const read = pinRead(hashes, readOptions)\n return await native.get([read.hash as Hash], {\n credentials: 'omit',\n maxResponseBytes: read.maxResponseBytes,\n redirect: 'error',\n ...(pinned.fetcher !== undefined && { fetcher: pinned.fetcher }),\n ...(read.signal !== undefined && { signal: read.signal }),\n })\n })\n}\n", "import type {\n ConfiguredSeed, PublicObjectReader, PublicObjectReadOptions,\n} from '@xyo-network/service-kit-protocol'\nimport { DEFAULT_VERIFICATION_LIMITS } from '@xyo-network/service-kit-protocol'\n\nexport type DataLakeEndpointPolicy = 'explicit-local' | 'public-https'\n\nexport interface DataLakeSeedOptions {\n readonly endpoint: string\n readonly endpointPolicy: DataLakeEndpointPolicy\n readonly fetcher?: typeof fetch\n readonly id: string\n}\n\nexport interface PinnedDataLakeSeedOptions {\n readonly endpoint: string\n readonly fetcher?: typeof fetch\n readonly id: string\n}\n\ninterface PinnedRead {\n readonly hash: string\n readonly maxResponseBytes: number\n readonly signal?: AbortSignal\n}\n\nconst CONFIG_FIELDS = new Set(['endpoint', 'endpointPolicy', 'fetcher', 'id'])\nconst READ_FIELDS = new Set(['maxBodyBytes', 'signal'])\nconst HASH_PATTERN = /^[0-9a-f]{64}$/u\n\nfunction strictFields(value: unknown, fields: ReadonlySet<string>, required: readonly string[], label: string) {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError(label + ' must be a plain object')\n }\n const prototype: unknown = Object.getPrototypeOf(value)\n if (prototype !== null && prototype !== Object.prototype) {\n throw new TypeError(label + ' must be a plain object')\n }\n const descriptors = Object.getOwnPropertyDescriptors(value)\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || !fields.has(key)) throw new TypeError(label + ' contains an unknown field')\n const descriptor = descriptors[key]\n if (descriptor?.enumerable !== true || !('value' in descriptor)) {\n throw new TypeError(label + ' fields must be enumerable own data properties')\n }\n }\n for (const key of required) {\n if (!Object.hasOwn(descriptors, key)) throw new TypeError(label + ' requires ' + key)\n }\n return descriptors\n}\n\nfunction seedId(value: unknown) {\n if (typeof value !== 'string' || value.length === 0 || value.length > 128 || value.trim() !== value) {\n throw new TypeError('Seed IDs must be nonempty trimmed strings of at most 128 characters')\n }\n return value\n}\n\nfunction hasDisallowedEndpointCharacter(value: string) {\n return [...value].some((character) => {\n const codePoint = character.codePointAt(0)\n return codePoint !== undefined && (codePoint <= 0x1F || codePoint === 0x7F\n || character === '\\\\' || character.trim() === '')\n })\n}\n\nfunction endpointText(value: unknown) {\n if (typeof value !== 'string' || value.length === 0 || value.length > 2048 || value.trim() !== value\n || hasDisallowedEndpointCharacter(value) || value.includes('?') || value.includes('#')) {\n throw new TypeError('endpoint must be an unambiguous absolute HTTP(S) URL')\n }\n return value\n}\n\nfunction endpointPolicy(value: unknown): DataLakeEndpointPolicy {\n if (value !== 'public-https' && value !== 'explicit-local') {\n throw new TypeError('endpointPolicy must be public-https or explicit-local')\n }\n return value\n}\n\nfunction parsedEndpoint(value: unknown, policyValue: unknown) {\n const text = endpointText(value)\n const policy = endpointPolicy(policyValue)\n let parsed: URL\n try {\n parsed = new URL(text)\n } catch {\n throw new TypeError('endpoint must be an unambiguous absolute HTTP(S) URL')\n }\n if ((parsed.protocol !== 'http:' && parsed.protocol !== 'https:') || parsed.hostname === ''\n || parsed.username !== '' || parsed.password !== '') {\n throw new TypeError('endpoint must be an unambiguous absolute HTTP(S) URL')\n }\n const inputWithoutTrailingSlashes = text.replace(/\\/+$/u, '')\n const parsedWithoutTrailingSlashes = parsed.href.replace(/\\/+$/u, '')\n if (parsedWithoutTrailingSlashes !== inputWithoutTrailingSlashes) {\n throw new TypeError('endpoint must not require URL normalization')\n }\n if (policy === 'public-https' && parsed.protocol !== 'https:') {\n throw new TypeError('public-https endpoints must use HTTPS')\n }\n parsed.pathname = parsed.pathname.replace(/\\/+$/u, '') || '/'\n return parsed\n}\n\nexport function pinDataLakeSeedOptions(options: DataLakeSeedOptions): PinnedDataLakeSeedOptions {\n const descriptors = strictFields(options, CONFIG_FIELDS, ['endpoint', 'endpointPolicy', 'id'], 'options')\n const fetcher: unknown = descriptors.fetcher?.value\n if (fetcher !== undefined && typeof fetcher !== 'function') throw new TypeError('fetcher must be a function')\n const endpoint = parsedEndpoint(descriptors.endpoint?.value as unknown, descriptors.endpointPolicy?.value as unknown)\n return Object.freeze({\n endpoint: endpoint.href.replace(/\\/+$/u, ''),\n id: seedId(descriptors.id?.value as unknown),\n ...(fetcher !== undefined && { fetcher: fetcher as typeof fetch }),\n })\n}\n\nfunction exactHash(hashes: string[]) {\n if (!Array.isArray(hashes) || hashes.length !== 1) throw new TypeError('Reader requires exactly one hash')\n const keys = Reflect.ownKeys(hashes)\n if (keys.some(key => typeof key !== 'string' || (key !== '0' && key !== 'length'))) {\n throw new TypeError('Hash input must be a dense one-element array')\n }\n const descriptor = Object.getOwnPropertyDescriptor(hashes, '0')\n const value: unknown = descriptor?.value\n if (typeof value !== 'string' || descriptor?.enumerable !== true || !('value' in descriptor)\n || !HASH_PATTERN.test(value)) {\n throw new TypeError('Hash must be canonical 64-character lowercase hexadecimal')\n }\n return value\n}\n\nfunction readPolicy(options: PublicObjectReadOptions | undefined) {\n if (options === undefined) return { maxResponseBytes: DEFAULT_VERIFICATION_LIMITS.maxBodyBytes }\n const descriptors = strictFields(options, READ_FIELDS, ['maxBodyBytes', 'signal'], 'read options')\n const maxResponseBytes: unknown = descriptors.maxBodyBytes?.value\n if (!Number.isSafeInteger(maxResponseBytes) || (maxResponseBytes as number) <= 0) {\n throw new RangeError('maxBodyBytes must be a positive safe integer')\n }\n const signal: unknown = descriptors.signal?.value\n if (typeof signal !== 'object' || signal === null || typeof (signal as AbortSignal).aborted !== 'boolean'\n || typeof (signal as AbortSignal).addEventListener !== 'function'\n || typeof (signal as AbortSignal).removeEventListener !== 'function'\n || typeof (signal as AbortSignal).throwIfAborted !== 'function') {\n throw new TypeError('signal must implement AbortSignal')\n }\n return { maxResponseBytes: maxResponseBytes as number, signal: signal as AbortSignal }\n}\n\nexport function pinRead(hashes: string[], options?: PublicObjectReadOptions): PinnedRead {\n return Object.freeze({ hash: exactHash(hashes), ...readPolicy(options) })\n}\n\nexport function configuredSeed(id: string, get: PublicObjectReader['get']): ConfiguredSeed {\n return Object.freeze({ id, reader: Object.freeze({ get }) })\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/node/index.mjs
CHANGED
|
@@ -11,7 +11,7 @@ function strictFields(value, fields, required, label) {
|
|
|
11
11
|
throw new TypeError(label + " must be a plain object");
|
|
12
12
|
}
|
|
13
13
|
const prototype = Object.getPrototypeOf(value);
|
|
14
|
-
if (prototype !==
|
|
14
|
+
if (prototype !== null && prototype !== Object.prototype) {
|
|
15
15
|
throw new TypeError(label + " must be a plain object");
|
|
16
16
|
}
|
|
17
17
|
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
@@ -82,7 +82,7 @@ function pinDataLakeSeedOptions(options) {
|
|
|
82
82
|
return Object.freeze({
|
|
83
83
|
endpoint: endpoint.href.replace(/\/+$/u, ""),
|
|
84
84
|
id: seedId(descriptors.id?.value),
|
|
85
|
-
...fetcher
|
|
85
|
+
...fetcher !== void 0 && { fetcher }
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
function exactHash(hashes) {
|
|
@@ -93,7 +93,7 @@ function exactHash(hashes) {
|
|
|
93
93
|
}
|
|
94
94
|
const descriptor = Object.getOwnPropertyDescriptor(hashes, "0");
|
|
95
95
|
const value = descriptor?.value;
|
|
96
|
-
if (descriptor?.enumerable !== true || !("value" in descriptor) ||
|
|
96
|
+
if (typeof value !== "string" || descriptor?.enumerable !== true || !("value" in descriptor) || !HASH_PATTERN.test(value)) {
|
|
97
97
|
throw new TypeError("Hash must be canonical 64-character lowercase hexadecimal");
|
|
98
98
|
}
|
|
99
99
|
return value;
|
|
@@ -128,8 +128,8 @@ async function createXl1DataLakeSeed(options) {
|
|
|
128
128
|
credentials: "omit",
|
|
129
129
|
maxResponseBytes: read.maxResponseBytes,
|
|
130
130
|
redirect: "error",
|
|
131
|
-
...pinned.fetcher
|
|
132
|
-
...read.signal
|
|
131
|
+
...pinned.fetcher !== void 0 && { fetcher: pinned.fetcher },
|
|
132
|
+
...read.signal !== void 0 && { signal: read.signal }
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
135
|
}
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createXl1DataLakeSeed.ts", "../../src/configuration.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Hash } from '@ariestools/sdk'\nimport type { ConfiguredSeed } from '@xyo-network/service-kit-protocol'\nimport { createRestDataLakeViewer } from '@xyo-network/xl1-sdk/providers'\n\nimport {\n configuredSeed, type DataLakeSeedOptions, pinDataLakeSeedOptions, pinRead,\n} from './configuration.js'\n\nexport interface Xl1DataLakeSeedOptions extends DataLakeSeedOptions {}\n\n/** Create one explicitly configured public XL1 REST datalake seed. */\nexport async function createXl1DataLakeSeed(options: Xl1DataLakeSeedOptions): Promise<ConfiguredSeed> {\n const pinned = pinDataLakeSeedOptions(options)\n const native = await createRestDataLakeViewer(pinned.endpoint)\n return configuredSeed(pinned.id, async (hashes, readOptions) => {\n const read = pinRead(hashes, readOptions)\n return await native.get([read.hash as Hash], {\n credentials: 'omit',\n maxResponseBytes: read.maxResponseBytes,\n redirect: 'error',\n ...(pinned.fetcher
|
|
5
|
-
"mappings": ";AAEA,SAAS,gCAAgC;;;ACCzC,SAAS,mCAAmC;AAuB5C,IAAM,gBAAgB,oBAAI,IAAI,CAAC,YAAY,kBAAkB,WAAW,IAAI,CAAC;AAC7E,IAAM,cAAc,oBAAI,IAAI,CAAC,gBAAgB,QAAQ,CAAC;AACtD,IAAM,eAAe;AAErB,SAAS,aAAa,OAAgB,QAA6B,UAA6B,OAAe;AAC7G,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,UAAU,QAAQ,yBAAyB;AAAA,EACvD;AACA,QAAM,YAAqB,OAAO,eAAe,KAAK;AACtD,MAAI,cAAc,
|
|
4
|
+
"sourcesContent": ["import type { Hash } from '@ariestools/sdk'\nimport type { ConfiguredSeed } from '@xyo-network/service-kit-protocol'\nimport { createRestDataLakeViewer } from '@xyo-network/xl1-sdk/providers'\n\nimport {\n configuredSeed, type DataLakeSeedOptions, pinDataLakeSeedOptions, pinRead,\n} from './configuration.js'\n\nexport interface Xl1DataLakeSeedOptions extends DataLakeSeedOptions {}\n\n/** Create one explicitly configured public XL1 REST datalake seed. */\nexport async function createXl1DataLakeSeed(options: Xl1DataLakeSeedOptions): Promise<ConfiguredSeed> {\n const pinned = pinDataLakeSeedOptions(options)\n const native = await createRestDataLakeViewer(pinned.endpoint)\n return configuredSeed(pinned.id, async (hashes, readOptions) => {\n const read = pinRead(hashes, readOptions)\n return await native.get([read.hash as Hash], {\n credentials: 'omit',\n maxResponseBytes: read.maxResponseBytes,\n redirect: 'error',\n ...(pinned.fetcher !== undefined && { fetcher: pinned.fetcher }),\n ...(read.signal !== undefined && { signal: read.signal }),\n })\n })\n}\n", "import type {\n ConfiguredSeed, PublicObjectReader, PublicObjectReadOptions,\n} from '@xyo-network/service-kit-protocol'\nimport { DEFAULT_VERIFICATION_LIMITS } from '@xyo-network/service-kit-protocol'\n\nexport type DataLakeEndpointPolicy = 'explicit-local' | 'public-https'\n\nexport interface DataLakeSeedOptions {\n readonly endpoint: string\n readonly endpointPolicy: DataLakeEndpointPolicy\n readonly fetcher?: typeof fetch\n readonly id: string\n}\n\nexport interface PinnedDataLakeSeedOptions {\n readonly endpoint: string\n readonly fetcher?: typeof fetch\n readonly id: string\n}\n\ninterface PinnedRead {\n readonly hash: string\n readonly maxResponseBytes: number\n readonly signal?: AbortSignal\n}\n\nconst CONFIG_FIELDS = new Set(['endpoint', 'endpointPolicy', 'fetcher', 'id'])\nconst READ_FIELDS = new Set(['maxBodyBytes', 'signal'])\nconst HASH_PATTERN = /^[0-9a-f]{64}$/u\n\nfunction strictFields(value: unknown, fields: ReadonlySet<string>, required: readonly string[], label: string) {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError(label + ' must be a plain object')\n }\n const prototype: unknown = Object.getPrototypeOf(value)\n if (prototype !== null && prototype !== Object.prototype) {\n throw new TypeError(label + ' must be a plain object')\n }\n const descriptors = Object.getOwnPropertyDescriptors(value)\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || !fields.has(key)) throw new TypeError(label + ' contains an unknown field')\n const descriptor = descriptors[key]\n if (descriptor?.enumerable !== true || !('value' in descriptor)) {\n throw new TypeError(label + ' fields must be enumerable own data properties')\n }\n }\n for (const key of required) {\n if (!Object.hasOwn(descriptors, key)) throw new TypeError(label + ' requires ' + key)\n }\n return descriptors\n}\n\nfunction seedId(value: unknown) {\n if (typeof value !== 'string' || value.length === 0 || value.length > 128 || value.trim() !== value) {\n throw new TypeError('Seed IDs must be nonempty trimmed strings of at most 128 characters')\n }\n return value\n}\n\nfunction hasDisallowedEndpointCharacter(value: string) {\n return [...value].some((character) => {\n const codePoint = character.codePointAt(0)\n return codePoint !== undefined && (codePoint <= 0x1F || codePoint === 0x7F\n || character === '\\\\' || character.trim() === '')\n })\n}\n\nfunction endpointText(value: unknown) {\n if (typeof value !== 'string' || value.length === 0 || value.length > 2048 || value.trim() !== value\n || hasDisallowedEndpointCharacter(value) || value.includes('?') || value.includes('#')) {\n throw new TypeError('endpoint must be an unambiguous absolute HTTP(S) URL')\n }\n return value\n}\n\nfunction endpointPolicy(value: unknown): DataLakeEndpointPolicy {\n if (value !== 'public-https' && value !== 'explicit-local') {\n throw new TypeError('endpointPolicy must be public-https or explicit-local')\n }\n return value\n}\n\nfunction parsedEndpoint(value: unknown, policyValue: unknown) {\n const text = endpointText(value)\n const policy = endpointPolicy(policyValue)\n let parsed: URL\n try {\n parsed = new URL(text)\n } catch {\n throw new TypeError('endpoint must be an unambiguous absolute HTTP(S) URL')\n }\n if ((parsed.protocol !== 'http:' && parsed.protocol !== 'https:') || parsed.hostname === ''\n || parsed.username !== '' || parsed.password !== '') {\n throw new TypeError('endpoint must be an unambiguous absolute HTTP(S) URL')\n }\n const inputWithoutTrailingSlashes = text.replace(/\\/+$/u, '')\n const parsedWithoutTrailingSlashes = parsed.href.replace(/\\/+$/u, '')\n if (parsedWithoutTrailingSlashes !== inputWithoutTrailingSlashes) {\n throw new TypeError('endpoint must not require URL normalization')\n }\n if (policy === 'public-https' && parsed.protocol !== 'https:') {\n throw new TypeError('public-https endpoints must use HTTPS')\n }\n parsed.pathname = parsed.pathname.replace(/\\/+$/u, '') || '/'\n return parsed\n}\n\nexport function pinDataLakeSeedOptions(options: DataLakeSeedOptions): PinnedDataLakeSeedOptions {\n const descriptors = strictFields(options, CONFIG_FIELDS, ['endpoint', 'endpointPolicy', 'id'], 'options')\n const fetcher: unknown = descriptors.fetcher?.value\n if (fetcher !== undefined && typeof fetcher !== 'function') throw new TypeError('fetcher must be a function')\n const endpoint = parsedEndpoint(descriptors.endpoint?.value as unknown, descriptors.endpointPolicy?.value as unknown)\n return Object.freeze({\n endpoint: endpoint.href.replace(/\\/+$/u, ''),\n id: seedId(descriptors.id?.value as unknown),\n ...(fetcher !== undefined && { fetcher: fetcher as typeof fetch }),\n })\n}\n\nfunction exactHash(hashes: string[]) {\n if (!Array.isArray(hashes) || hashes.length !== 1) throw new TypeError('Reader requires exactly one hash')\n const keys = Reflect.ownKeys(hashes)\n if (keys.some(key => typeof key !== 'string' || (key !== '0' && key !== 'length'))) {\n throw new TypeError('Hash input must be a dense one-element array')\n }\n const descriptor = Object.getOwnPropertyDescriptor(hashes, '0')\n const value: unknown = descriptor?.value\n if (typeof value !== 'string' || descriptor?.enumerable !== true || !('value' in descriptor)\n || !HASH_PATTERN.test(value)) {\n throw new TypeError('Hash must be canonical 64-character lowercase hexadecimal')\n }\n return value\n}\n\nfunction readPolicy(options: PublicObjectReadOptions | undefined) {\n if (options === undefined) return { maxResponseBytes: DEFAULT_VERIFICATION_LIMITS.maxBodyBytes }\n const descriptors = strictFields(options, READ_FIELDS, ['maxBodyBytes', 'signal'], 'read options')\n const maxResponseBytes: unknown = descriptors.maxBodyBytes?.value\n if (!Number.isSafeInteger(maxResponseBytes) || (maxResponseBytes as number) <= 0) {\n throw new RangeError('maxBodyBytes must be a positive safe integer')\n }\n const signal: unknown = descriptors.signal?.value\n if (typeof signal !== 'object' || signal === null || typeof (signal as AbortSignal).aborted !== 'boolean'\n || typeof (signal as AbortSignal).addEventListener !== 'function'\n || typeof (signal as AbortSignal).removeEventListener !== 'function'\n || typeof (signal as AbortSignal).throwIfAborted !== 'function') {\n throw new TypeError('signal must implement AbortSignal')\n }\n return { maxResponseBytes: maxResponseBytes as number, signal: signal as AbortSignal }\n}\n\nexport function pinRead(hashes: string[], options?: PublicObjectReadOptions): PinnedRead {\n return Object.freeze({ hash: exactHash(hashes), ...readPolicy(options) })\n}\n\nexport function configuredSeed(id: string, get: PublicObjectReader['get']): ConfiguredSeed {\n return Object.freeze({ id, reader: Object.freeze({ get }) })\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/service-kit-xl1",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Configured public XL1 datalake seeds for Service Kit",
|
|
5
5
|
"license": "LGPL-3.0-only",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -28,37 +28,37 @@
|
|
|
28
28
|
"README.md"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@xyo-network/service-kit-protocol": "~0.0
|
|
32
|
-
"@xyo-network/xl1-sdk": "~5.
|
|
31
|
+
"@xyo-network/service-kit-protocol": "~0.2.0",
|
|
32
|
+
"@xyo-network/xl1-sdk": "~5.8.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@ariestools/sdk": "~
|
|
36
|
-
"@ariestools/toolchain": "~
|
|
37
|
-
"@ariestools/tsconfig": "~
|
|
38
|
-
"@ariestools/tsconfig-dom": "~
|
|
35
|
+
"@ariestools/sdk": "~9.0.1",
|
|
36
|
+
"@ariestools/toolchain": "~10.1.0",
|
|
37
|
+
"@ariestools/tsconfig": "~10.1.0",
|
|
38
|
+
"@ariestools/tsconfig-dom": "~10.1.0",
|
|
39
39
|
"@opentelemetry/api": "~1.9.1",
|
|
40
|
-
"@xyo-network/sdk": "~
|
|
41
|
-
"@xyo-network/sdk-protocol": "~
|
|
40
|
+
"@xyo-network/sdk": "~8.0.1",
|
|
41
|
+
"@xyo-network/sdk-protocol": "~8.0.1",
|
|
42
42
|
"async-mutex": "~0.5.0",
|
|
43
|
-
"eslint": "~10.
|
|
43
|
+
"eslint": "~10.12.0",
|
|
44
44
|
"eslint-import-resolver-typescript": "~4.4.5",
|
|
45
45
|
"ethers": "~6.17.0",
|
|
46
46
|
"typescript": "~6.0.3",
|
|
47
|
-
"vite": "~8.
|
|
48
|
-
"vitest": "~
|
|
49
|
-
"zod": "~4.5
|
|
47
|
+
"vite": "~8.3.2",
|
|
48
|
+
"vitest": "~5.0.3",
|
|
49
|
+
"zod": "~4.6.5"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@ariestools/sdk": "^
|
|
52
|
+
"@ariestools/sdk": "^9.0",
|
|
53
53
|
"@opentelemetry/api": "^1.9",
|
|
54
|
-
"@xyo-network/sdk": "^
|
|
55
|
-
"@xyo-network/sdk-protocol": "^
|
|
54
|
+
"@xyo-network/sdk": "^8.0",
|
|
55
|
+
"@xyo-network/sdk-protocol": "^8.0",
|
|
56
56
|
"async-mutex": "^0.5",
|
|
57
57
|
"ethers": "^6.17",
|
|
58
|
-
"zod": "^4.
|
|
58
|
+
"zod": "^4.6"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
|
-
"node": "
|
|
61
|
+
"node": "^26"
|
|
62
62
|
},
|
|
63
63
|
"engineStrict": true,
|
|
64
64
|
"publishConfig": {
|