@opendatalabs/personal-server-ts-core 0.2.0 → 1.1.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/dist/api/index.d.ts +160 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +774 -0
- package/dist/api/index.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/request.d.ts +28 -0
- package/dist/auth/request.d.ts.map +1 -0
- package/dist/auth/request.js +106 -0
- package/dist/auth/request.js.map +1 -0
- package/dist/client.d.ts +233 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +243 -0
- package/dist/client.js.map +1 -0
- package/dist/config/defaults.d.ts +5 -5
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +3 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +0 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +1 -9
- package/dist/config/paths.js.map +1 -1
- package/dist/contracts/access-logs.d.ts +8 -0
- package/dist/contracts/access-logs.d.ts.map +1 -0
- package/dist/contracts/access-logs.js +7 -0
- package/dist/contracts/access-logs.js.map +1 -0
- package/dist/contracts/auth-device.d.ts +70 -0
- package/dist/contracts/auth-device.d.ts.map +1 -0
- package/dist/contracts/auth-device.js +163 -0
- package/dist/contracts/auth-device.js.map +1 -0
- package/dist/contracts/binary.d.ts +54 -0
- package/dist/contracts/binary.d.ts.map +1 -0
- package/dist/contracts/binary.js +92 -0
- package/dist/contracts/binary.js.map +1 -0
- package/dist/contracts/config.d.ts +5 -0
- package/dist/contracts/config.d.ts.map +1 -0
- package/dist/contracts/config.js +30 -0
- package/dist/contracts/config.js.map +1 -0
- package/dist/contracts/data.d.ts +115 -0
- package/dist/contracts/data.d.ts.map +1 -0
- package/dist/contracts/data.js +237 -0
- package/dist/contracts/data.js.map +1 -0
- package/dist/contracts/grants.d.ts +45 -0
- package/dist/contracts/grants.d.ts.map +1 -0
- package/dist/contracts/grants.js +177 -0
- package/dist/contracts/grants.js.map +1 -0
- package/dist/contracts/http.d.ts +21 -0
- package/dist/contracts/http.d.ts.map +1 -0
- package/dist/contracts/http.js +49 -0
- package/dist/contracts/http.js.map +1 -0
- package/dist/contracts/index.d.ts +16 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +10 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/oauth.d.ts +38 -0
- package/dist/contracts/oauth.d.ts.map +1 -0
- package/dist/contracts/oauth.js +130 -0
- package/dist/contracts/oauth.js.map +1 -0
- package/dist/contracts/sync.d.ts +10 -0
- package/dist/contracts/sync.d.ts.map +1 -0
- package/dist/contracts/sync.js +34 -0
- package/dist/contracts/sync.js.map +1 -0
- package/dist/errors/catalog.d.ts +9 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/catalog.js +15 -0
- package/dist/errors/catalog.js.map +1 -1
- package/dist/grants/index.d.ts +2 -4
- package/dist/grants/index.d.ts.map +1 -1
- package/dist/grants/index.js +1 -2
- package/dist/grants/index.js.map +1 -1
- package/dist/keys/index.d.ts +1 -2
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +1 -2
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/server-account.d.ts +5 -9
- package/dist/keys/server-account.d.ts.map +1 -1
- package/dist/keys/server-account.js +1 -47
- package/dist/keys/server-account.js.map +1 -1
- package/dist/logger/index.d.ts +6 -2
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +2 -6
- package/dist/logger/index.js.map +1 -1
- package/dist/logging/access-log.d.ts +0 -1
- package/dist/logging/access-log.d.ts.map +1 -1
- package/dist/logging/access-log.js +1 -24
- package/dist/logging/access-log.js.map +1 -1
- package/dist/logging/access-reader.d.ts +0 -5
- package/dist/logging/access-reader.d.ts.map +1 -1
- package/dist/logging/access-reader.js +1 -49
- package/dist/logging/access-reader.js.map +1 -1
- package/dist/mcp/activity.d.ts +68 -0
- package/dist/mcp/activity.d.ts.map +1 -0
- package/dist/mcp/activity.js +111 -0
- package/dist/mcp/activity.js.map +1 -0
- package/dist/mcp/builder-registration.d.ts +24 -0
- package/dist/mcp/builder-registration.d.ts.map +1 -0
- package/dist/mcp/builder-registration.js +89 -0
- package/dist/mcp/builder-registration.js.map +1 -0
- package/dist/mcp/connection-api.d.ts +170 -0
- package/dist/mcp/connection-api.d.ts.map +1 -0
- package/dist/mcp/connection-api.js +379 -0
- package/dist/mcp/connection-api.js.map +1 -0
- package/dist/mcp/grantee.d.ts +52 -0
- package/dist/mcp/grantee.d.ts.map +1 -0
- package/dist/mcp/grantee.js +91 -0
- package/dist/mcp/grantee.js.map +1 -0
- package/dist/mcp/index.d.ts +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +10 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/read-client.d.ts +136 -0
- package/dist/mcp/read-client.d.ts.map +1 -0
- package/dist/mcp/read-client.js +306 -0
- package/dist/mcp/read-client.js.map +1 -0
- package/dist/mcp/resources.d.ts +37 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +114 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/search/index.d.ts +34 -0
- package/dist/mcp/search/index.d.ts.map +1 -0
- package/dist/mcp/search/index.js +69 -0
- package/dist/mcp/search/index.js.map +1 -0
- package/dist/mcp/server.d.ts +53 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +308 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/store.d.ts +13 -0
- package/dist/mcp/store.d.ts.map +1 -0
- package/dist/mcp/store.js +98 -0
- package/dist/mcp/store.js.map +1 -0
- package/dist/mcp/tools.d.ts +60 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1058 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +97 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +24 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/payment/index.d.ts +2 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/index.js +2 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/payment/x402.d.ts +155 -0
- package/dist/payment/x402.d.ts.map +1 -0
- package/dist/payment/x402.js +402 -0
- package/dist/payment/x402.js.map +1 -0
- package/dist/policy/data-read.d.ts +15 -0
- package/dist/policy/data-read.d.ts.map +1 -0
- package/dist/policy/data-read.js +84 -0
- package/dist/policy/data-read.js.map +1 -0
- package/dist/policy/index.d.ts +2 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +2 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/ports/index.d.ts +95 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +7 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/schemas/server-config.d.ts +12 -0
- package/dist/schemas/server-config.d.ts.map +1 -1
- package/dist/schemas/server-config.js +34 -4
- package/dist/schemas/server-config.js.map +1 -1
- package/dist/signing/index.d.ts +0 -1
- package/dist/signing/index.d.ts.map +1 -1
- package/dist/signing/index.js +0 -1
- package/dist/signing/index.js.map +1 -1
- package/dist/signing/request-signer.d.ts +8 -2
- package/dist/signing/request-signer.d.ts.map +1 -1
- package/dist/signing/request-signer.js +5 -31
- package/dist/signing/request-signer.js.map +1 -1
- package/dist/signing/signer.d.ts +20 -2
- package/dist/signing/signer.d.ts.map +1 -1
- package/dist/signing/signer.js +23 -13
- package/dist/signing/signer.js.map +1 -1
- package/dist/storage/adapters/index.d.ts +2 -1
- package/dist/storage/adapters/index.d.ts.map +1 -1
- package/dist/storage/adapters/index.js +2 -1
- package/dist/storage/adapters/index.js.map +1 -1
- package/dist/storage/adapters/interface.d.ts +10 -0
- package/dist/storage/adapters/interface.d.ts.map +1 -1
- package/dist/storage/adapters/sdk.d.ts +23 -0
- package/dist/storage/adapters/sdk.d.ts.map +1 -0
- package/dist/storage/adapters/sdk.js +73 -0
- package/dist/storage/adapters/sdk.js.map +1 -0
- package/dist/storage/adapters/vana.d.ts +7 -30
- package/dist/storage/adapters/vana.d.ts.map +1 -1
- package/dist/storage/adapters/vana.js +37 -92
- package/dist/storage/adapters/vana.js.map +1 -1
- package/dist/storage/blocks/build.d.ts +20 -0
- package/dist/storage/blocks/build.d.ts.map +1 -0
- package/dist/storage/blocks/build.js +378 -0
- package/dist/storage/blocks/build.js.map +1 -0
- package/dist/storage/blocks/cursor.d.ts +33 -0
- package/dist/storage/blocks/cursor.d.ts.map +1 -0
- package/dist/storage/blocks/cursor.js +142 -0
- package/dist/storage/blocks/cursor.js.map +1 -0
- package/dist/storage/blocks/errors.d.ts +6 -0
- package/dist/storage/blocks/errors.d.ts.map +1 -0
- package/dist/storage/blocks/errors.js +9 -0
- package/dist/storage/blocks/errors.js.map +1 -0
- package/dist/storage/blocks/index.d.ts +5 -0
- package/dist/storage/blocks/index.d.ts.map +1 -0
- package/dist/storage/blocks/index.js +4 -0
- package/dist/storage/blocks/index.js.map +1 -0
- package/dist/storage/blocks/types.d.ts +49 -0
- package/dist/storage/blocks/types.d.ts.map +1 -0
- package/dist/storage/blocks/types.js +2 -0
- package/dist/{grants → storage/blocks}/types.js.map +1 -1
- package/dist/storage/hierarchy/index.d.ts +0 -1
- package/dist/storage/hierarchy/index.d.ts.map +1 -1
- package/dist/storage/hierarchy/index.js +0 -1
- package/dist/storage/hierarchy/index.js.map +1 -1
- package/dist/storage/hierarchy/manager.d.ts +0 -14
- package/dist/storage/hierarchy/manager.d.ts.map +1 -1
- package/dist/storage/hierarchy/manager.js +1 -59
- package/dist/storage/hierarchy/manager.js.map +1 -1
- package/dist/storage/hierarchy/paths.d.ts.map +1 -1
- package/dist/storage/hierarchy/paths.js +11 -4
- package/dist/storage/hierarchy/paths.js.map +1 -1
- package/dist/storage/index/index.d.ts +2 -3
- package/dist/storage/index/index.d.ts.map +1 -1
- package/dist/storage/index/index.js +1 -2
- package/dist/storage/index/index.js.map +1 -1
- package/dist/storage/index/manager.d.ts +26 -6
- package/dist/storage/index/manager.d.ts.map +1 -1
- package/dist/storage/index/manager.js +1 -131
- package/dist/storage/index/manager.js.map +1 -1
- package/dist/storage/index/schema.d.ts +1 -3
- package/dist/storage/index/schema.d.ts.map +1 -1
- package/dist/storage/index/schema.js +1 -26
- package/dist/storage/index/schema.js.map +1 -1
- package/dist/storage/index/types.d.ts +16 -0
- package/dist/storage/index/types.d.ts.map +1 -1
- package/dist/storage/preview.d.ts +12 -0
- package/dist/storage/preview.d.ts.map +1 -0
- package/dist/storage/preview.js +239 -0
- package/dist/storage/preview.js.map +1 -0
- package/dist/sync/cursor.d.ts +5 -7
- package/dist/sync/cursor.d.ts.map +1 -1
- package/dist/sync/cursor.js +1 -18
- package/dist/sync/cursor.js.map +1 -1
- package/dist/sync/engine/sync-manager.d.ts +17 -0
- package/dist/sync/engine/sync-manager.d.ts.map +1 -1
- package/dist/sync/engine/sync-manager.js +104 -43
- package/dist/sync/engine/sync-manager.js.map +1 -1
- package/dist/sync/index.d.ts +4 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/issues.d.ts +55 -0
- package/dist/sync/issues.d.ts.map +1 -0
- package/dist/sync/issues.js +168 -0
- package/dist/sync/issues.js.map +1 -0
- package/dist/sync/retry-memory.d.ts +33 -0
- package/dist/sync/retry-memory.d.ts.map +1 -0
- package/dist/sync/retry-memory.js +68 -0
- package/dist/sync/retry-memory.js.map +1 -0
- package/dist/sync/types.d.ts +9 -24
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/workers/delete.d.ts +42 -0
- package/dist/sync/workers/delete.d.ts.map +1 -0
- package/dist/sync/workers/delete.js +40 -0
- package/dist/sync/workers/delete.js.map +1 -0
- package/dist/sync/workers/download.d.ts +64 -18
- package/dist/sync/workers/download.d.ts.map +1 -1
- package/dist/sync/workers/download.js +396 -54
- package/dist/sync/workers/download.js.map +1 -1
- package/dist/sync/workers/upload.d.ts +29 -18
- package/dist/sync/workers/upload.d.ts.map +1 -1
- package/dist/sync/workers/upload.js +163 -46
- package/dist/sync/workers/upload.js.map +1 -1
- package/dist/test-utils/wallet.d.ts +1 -0
- package/dist/test-utils/wallet.d.ts.map +1 -1
- package/dist/test-utils/wallet.js +9 -31
- package/dist/test-utils/wallet.js.map +1 -1
- package/package.json +51 -27
- package/dist/auth/web3-signed.d.ts +0 -48
- package/dist/auth/web3-signed.d.ts.map +0 -1
- package/dist/auth/web3-signed.js +0 -110
- package/dist/auth/web3-signed.js.map +0 -1
- package/dist/config/loader.d.ts +0 -8
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -38
- package/dist/config/loader.js.map +0 -1
- package/dist/gateway/client.d.ts +0 -98
- package/dist/gateway/client.d.ts.map +0 -1
- package/dist/gateway/client.js +0 -171
- package/dist/gateway/client.js.map +0 -1
- package/dist/grants/eip712.d.ts +0 -28
- package/dist/grants/eip712.d.ts.map +0 -1
- package/dist/grants/eip712.js +0 -30
- package/dist/grants/eip712.js.map +0 -1
- package/dist/grants/types.d.ts +0 -29
- package/dist/grants/types.d.ts.map +0 -1
- package/dist/grants/types.js +0 -6
- package/dist/grants/verify.d.ts +0 -24
- package/dist/grants/verify.d.ts.map +0 -1
- package/dist/grants/verify.js +0 -71
- package/dist/grants/verify.js.map +0 -1
- package/dist/keys/derive.d.ts +0 -18
- package/dist/keys/derive.d.ts.map +0 -1
- package/dist/keys/derive.js +0 -43
- package/dist/keys/derive.js.map +0 -1
- package/dist/schemas/data-file.d.ts +0 -20
- package/dist/schemas/data-file.d.ts.map +0 -1
- package/dist/schemas/data-file.js +0 -23
- package/dist/schemas/data-file.js.map +0 -1
- package/dist/scopes/index.d.ts +0 -3
- package/dist/scopes/index.d.ts.map +0 -1
- package/dist/scopes/index.js +0 -3
- package/dist/scopes/index.js.map +0 -1
- package/dist/scopes/match.d.ts +0 -13
- package/dist/scopes/match.d.ts.map +0 -1
- package/dist/scopes/match.js +0 -23
- package/dist/scopes/match.js.map +0 -1
- package/dist/scopes/parse.d.ts +0 -12
- package/dist/scopes/parse.d.ts.map +0 -1
- package/dist/scopes/parse.js +0 -29
- package/dist/scopes/parse.js.map +0 -1
- package/dist/signing/eip712.d.ts +0 -69
- package/dist/signing/eip712.d.ts.map +0 -1
- package/dist/signing/eip712.js +0 -68
- package/dist/signing/eip712.js.map +0 -1
- package/dist/storage/encryption/decrypt.d.ts +0 -10
- package/dist/storage/encryption/decrypt.d.ts.map +0 -1
- package/dist/storage/encryption/decrypt.js +0 -19
- package/dist/storage/encryption/decrypt.js.map +0 -1
- package/dist/storage/encryption/encrypt.d.ts +0 -10
- package/dist/storage/encryption/encrypt.d.ts.map +0 -1
- package/dist/storage/encryption/encrypt.js +0 -19
- package/dist/storage/encryption/encrypt.js.map +0 -1
- package/dist/storage/encryption/index.d.ts +0 -3
- package/dist/storage/encryption/index.d.ts.map +0 -1
- package/dist/storage/encryption/index.js +0 -3
- package/dist/storage/encryption/index.js.map +0 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
const DATA_BLOCK_CURSOR_VERSION = 1;
|
|
2
|
+
export function encodeDataBlockCursor(input) {
|
|
3
|
+
assertNonEmptyString(input.scope, "scope");
|
|
4
|
+
assertNonEmptyString(input.collectedAt, "collectedAt");
|
|
5
|
+
assertNonNegativeInteger(input.blockIndex, "blockIndex");
|
|
6
|
+
if (input.intraBlockOffset !== undefined) {
|
|
7
|
+
assertNonNegativeInteger(input.intraBlockOffset, "intraBlockOffset");
|
|
8
|
+
}
|
|
9
|
+
return encodeBase64Url(JSON.stringify({
|
|
10
|
+
v: DATA_BLOCK_CURSOR_VERSION,
|
|
11
|
+
scope: input.scope,
|
|
12
|
+
collectedAt: input.collectedAt,
|
|
13
|
+
blockIndex: input.blockIndex,
|
|
14
|
+
...(input.intraBlockOffset === undefined
|
|
15
|
+
? {}
|
|
16
|
+
: { intraBlockOffset: input.intraBlockOffset }),
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
export function decodeDataBlockCursor(cursor) {
|
|
20
|
+
if (!cursor) {
|
|
21
|
+
return malformedCursor("Cursor is required");
|
|
22
|
+
}
|
|
23
|
+
const decoded = decodeBase64Url(cursor);
|
|
24
|
+
if (decoded === null) {
|
|
25
|
+
return malformedCursor("Cursor is not valid base64url");
|
|
26
|
+
}
|
|
27
|
+
let parsed;
|
|
28
|
+
try {
|
|
29
|
+
parsed = JSON.parse(decoded);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return malformedCursor("Cursor payload is not valid JSON");
|
|
33
|
+
}
|
|
34
|
+
if (!isObject(parsed)) {
|
|
35
|
+
return malformedCursor("Cursor payload must be an object");
|
|
36
|
+
}
|
|
37
|
+
const candidate = parsed;
|
|
38
|
+
if (candidate.v !== DATA_BLOCK_CURSOR_VERSION) {
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
error: {
|
|
42
|
+
code: "cursor_unsupported_version",
|
|
43
|
+
message: typeof candidate.v === "number"
|
|
44
|
+
? `Unsupported cursor version: ${candidate.v}`
|
|
45
|
+
: "Cursor version is missing or invalid",
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (typeof candidate.scope !== "string" ||
|
|
50
|
+
candidate.scope.length === 0 ||
|
|
51
|
+
typeof candidate.collectedAt !== "string" ||
|
|
52
|
+
candidate.collectedAt.length === 0 ||
|
|
53
|
+
!isNonNegativeInteger(candidate.blockIndex) ||
|
|
54
|
+
(candidate.intraBlockOffset !== undefined &&
|
|
55
|
+
!isNonNegativeInteger(candidate.intraBlockOffset))) {
|
|
56
|
+
return malformedCursor("Cursor payload has invalid fields");
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
ok: true,
|
|
60
|
+
cursor: {
|
|
61
|
+
version: DATA_BLOCK_CURSOR_VERSION,
|
|
62
|
+
scope: candidate.scope,
|
|
63
|
+
collectedAt: candidate.collectedAt,
|
|
64
|
+
blockIndex: candidate.blockIndex,
|
|
65
|
+
...(candidate.intraBlockOffset === undefined
|
|
66
|
+
? {}
|
|
67
|
+
: { intraBlockOffset: candidate.intraBlockOffset }),
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function validateDataBlockCursor(cursor, expected) {
|
|
72
|
+
const decoded = decodeDataBlockCursor(cursor);
|
|
73
|
+
if (!decoded.ok)
|
|
74
|
+
return decoded;
|
|
75
|
+
if (decoded.cursor.scope !== expected.scope) {
|
|
76
|
+
return {
|
|
77
|
+
ok: false,
|
|
78
|
+
error: {
|
|
79
|
+
code: "cursor_scope_mismatch",
|
|
80
|
+
message: "Cursor scope does not match requested scope",
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (decoded.cursor.collectedAt !== expected.collectedAt) {
|
|
85
|
+
return {
|
|
86
|
+
ok: false,
|
|
87
|
+
error: {
|
|
88
|
+
code: "cursor_collected_at_mismatch",
|
|
89
|
+
message: "Cursor collectedAt does not match requested collectedAt",
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return decoded;
|
|
94
|
+
}
|
|
95
|
+
function encodeBase64Url(value) {
|
|
96
|
+
const bytes = new TextEncoder().encode(value);
|
|
97
|
+
let binary = "";
|
|
98
|
+
for (const byte of bytes)
|
|
99
|
+
binary += String.fromCharCode(byte);
|
|
100
|
+
return btoa(binary)
|
|
101
|
+
.replace(/\+/g, "-")
|
|
102
|
+
.replace(/\//g, "_")
|
|
103
|
+
.replace(/=+$/, "");
|
|
104
|
+
}
|
|
105
|
+
function decodeBase64Url(value) {
|
|
106
|
+
try {
|
|
107
|
+
const base64 = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
108
|
+
const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), "=");
|
|
109
|
+
const binary = atob(padded);
|
|
110
|
+
const bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));
|
|
111
|
+
return new TextDecoder().decode(bytes);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function malformedCursor(message) {
|
|
118
|
+
return {
|
|
119
|
+
ok: false,
|
|
120
|
+
error: {
|
|
121
|
+
code: "cursor_malformed",
|
|
122
|
+
message,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function assertNonEmptyString(value, field) {
|
|
127
|
+
if (value.length === 0) {
|
|
128
|
+
throw new Error(`${field} must be a non-empty string`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function assertNonNegativeInteger(value, field) {
|
|
132
|
+
if (!isNonNegativeInteger(value)) {
|
|
133
|
+
throw new Error(`${field} must be a non-negative integer`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function isNonNegativeInteger(value) {
|
|
137
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
138
|
+
}
|
|
139
|
+
function isObject(value) {
|
|
140
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/storage/blocks/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type DataBlockStorageErrorCode = "block_manifest_not_found" | "block_payload_not_found" | "cursor_invalid";
|
|
2
|
+
export declare class DataBlockStorageError extends Error {
|
|
3
|
+
readonly code: DataBlockStorageErrorCode;
|
|
4
|
+
constructor(code: DataBlockStorageErrorCode, message: string);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/storage/blocks/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GACnC,0BAA0B,GAAG,yBAAyB,GAAG,gBAAgB,CAAC;AAE5E,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,IAAI,EAAE,yBAAyB;gBAA/B,IAAI,EAAE,yBAAyB,EAC/C,OAAO,EAAE,MAAM;CAKlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/storage/blocks/errors.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAE5B;IADlB,YACkB,IAA+B,EAC/C,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAA2B;QAI/C,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { ContentKind, DataBlockManifest, DataBlockRef, DataBlockWarning, DataScopeBlock, ReadScopeBlocksRequest, ReadScopeBlocksResponse, } from "./types.js";
|
|
2
|
+
export { decodeDataBlockCursor, encodeDataBlockCursor, validateDataBlockCursor, type DataBlockCursor, type DataBlockCursorError, type DataBlockCursorErrorCode, type DecodeDataBlockCursorResult, type EncodeDataBlockCursorInput, type ValidateDataBlockCursorResult, } from "./cursor.js";
|
|
3
|
+
export { buildDataBlocksAsync } from "./build.js";
|
|
4
|
+
export { DataBlockStorageError, type DataBlockStorageErrorCode, } from "./errors.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/blocks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,GACnC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACL,qBAAqB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/blocks/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GAOxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACL,qBAAqB,GAEtB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export type ContentKind = "vana-envelope" | "json" | "zip" | "text" | "binary" | "unsupported";
|
|
2
|
+
export interface DataBlockManifest {
|
|
3
|
+
version: 1;
|
|
4
|
+
scope: string;
|
|
5
|
+
collectedAt: string;
|
|
6
|
+
schemaId?: string;
|
|
7
|
+
contentKind: ContentKind;
|
|
8
|
+
rawSizeBytes?: number;
|
|
9
|
+
blocks: DataBlockRef[];
|
|
10
|
+
warnings: DataBlockWarning[];
|
|
11
|
+
}
|
|
12
|
+
export interface DataBlockRef {
|
|
13
|
+
id: string;
|
|
14
|
+
path: string;
|
|
15
|
+
mediaType: string;
|
|
16
|
+
sizeBytes: number;
|
|
17
|
+
itemCount?: number;
|
|
18
|
+
truncated?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface DataBlockWarning {
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
fileId?: string;
|
|
24
|
+
path?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ReadScopeBlocksRequest {
|
|
27
|
+
scope: string;
|
|
28
|
+
collectedAt?: string;
|
|
29
|
+
cursor?: string;
|
|
30
|
+
maxBytes?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface ReadScopeBlocksResponse {
|
|
33
|
+
scope: string;
|
|
34
|
+
collectedAt: string;
|
|
35
|
+
schemaId?: string;
|
|
36
|
+
contentKind: ContentKind;
|
|
37
|
+
blocks: DataScopeBlock[];
|
|
38
|
+
nextCursor?: string;
|
|
39
|
+
warnings: DataBlockWarning[];
|
|
40
|
+
}
|
|
41
|
+
export interface DataScopeBlock {
|
|
42
|
+
id: string;
|
|
43
|
+
path: string;
|
|
44
|
+
mediaType: string;
|
|
45
|
+
value: unknown;
|
|
46
|
+
sizeBytes: number;
|
|
47
|
+
truncated?: boolean;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/storage/blocks/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACrB,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/storage/blocks/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { timestampToFilename, filenameToTimestamp, buildDataFilePath, buildScopeDir, generateCollectedAt, } from "./paths.js";
|
|
2
|
-
export { writeDataFile, readDataFile, listVersions, deleteDataFile, deleteAllForScope, } from "./manager.js";
|
|
3
2
|
export type { HierarchyManagerOptions, WriteResult } from "./manager.js";
|
|
4
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/hierarchy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/hierarchy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/hierarchy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/hierarchy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { DataFileEnvelope } from "../../schemas/data-file.js";
|
|
2
1
|
export interface HierarchyManagerOptions {
|
|
3
2
|
dataDir: string;
|
|
4
3
|
}
|
|
@@ -7,17 +6,4 @@ export interface WriteResult {
|
|
|
7
6
|
relativePath: string;
|
|
8
7
|
sizeBytes: number;
|
|
9
8
|
}
|
|
10
|
-
/** Atomic write: mkdir -p, write temp file, rename */
|
|
11
|
-
export declare function writeDataFile(options: HierarchyManagerOptions, envelope: DataFileEnvelope): Promise<WriteResult>;
|
|
12
|
-
/** Read and parse a data file */
|
|
13
|
-
export declare function readDataFile(options: HierarchyManagerOptions, scope: string, collectedAt: string): Promise<DataFileEnvelope>;
|
|
14
|
-
/** List version filenames for a scope, newest first. Empty array if scope dir doesn't exist. */
|
|
15
|
-
export declare function listVersions(options: HierarchyManagerOptions, scope: string): Promise<string[]>;
|
|
16
|
-
/** Delete a single data file */
|
|
17
|
-
export declare function deleteDataFile(options: HierarchyManagerOptions, scope: string, collectedAt: string): Promise<void>;
|
|
18
|
-
/**
|
|
19
|
-
* Delete all files for a scope by removing the scope directory recursively.
|
|
20
|
-
* No-op if directory doesn't exist.
|
|
21
|
-
*/
|
|
22
|
-
export declare function deleteAllForScope(options: HierarchyManagerOptions, scope: string): Promise<void>;
|
|
23
9
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/storage/hierarchy/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/storage/hierarchy/manager.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -1,60 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { dirname, relative } from "node:path";
|
|
3
|
-
import { randomUUID } from "node:crypto";
|
|
4
|
-
import { DataFileEnvelopeSchema } from "../../schemas/data-file.js";
|
|
5
|
-
import { buildDataFilePath, buildScopeDir, filenameToTimestamp, } from "./paths.js";
|
|
6
|
-
/** Atomic write: mkdir -p, write temp file, rename */
|
|
7
|
-
export async function writeDataFile(options, envelope) {
|
|
8
|
-
const filePath = buildDataFilePath(options.dataDir, envelope.scope, envelope.collectedAt);
|
|
9
|
-
const dir = dirname(filePath);
|
|
10
|
-
await mkdir(dir, { recursive: true });
|
|
11
|
-
const content = JSON.stringify(envelope, null, 2);
|
|
12
|
-
const tempPath = filePath + ".tmp." + randomUUID();
|
|
13
|
-
await writeFile(tempPath, content, "utf-8");
|
|
14
|
-
await rename(tempPath, filePath);
|
|
15
|
-
const stats = await stat(filePath);
|
|
16
|
-
return {
|
|
17
|
-
path: filePath,
|
|
18
|
-
relativePath: relative(options.dataDir, filePath),
|
|
19
|
-
sizeBytes: stats.size,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
/** Read and parse a data file */
|
|
23
|
-
export async function readDataFile(options, scope, collectedAt) {
|
|
24
|
-
const filePath = buildDataFilePath(options.dataDir, scope, collectedAt);
|
|
25
|
-
const content = await readFile(filePath, "utf-8");
|
|
26
|
-
return DataFileEnvelopeSchema.parse(JSON.parse(content));
|
|
27
|
-
}
|
|
28
|
-
/** List version filenames for a scope, newest first. Empty array if scope dir doesn't exist. */
|
|
29
|
-
export async function listVersions(options, scope) {
|
|
30
|
-
const scopeDir = buildScopeDir(options.dataDir, scope);
|
|
31
|
-
let entries;
|
|
32
|
-
try {
|
|
33
|
-
entries = await readdir(scopeDir);
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
if (err.code === "ENOENT") {
|
|
37
|
-
return [];
|
|
38
|
-
}
|
|
39
|
-
throw err;
|
|
40
|
-
}
|
|
41
|
-
const jsonFiles = entries
|
|
42
|
-
.filter((f) => f.endsWith(".json"))
|
|
43
|
-
.sort()
|
|
44
|
-
.reverse();
|
|
45
|
-
return jsonFiles.map((f) => filenameToTimestamp(f.replace(".json", "")));
|
|
46
|
-
}
|
|
47
|
-
/** Delete a single data file */
|
|
48
|
-
export async function deleteDataFile(options, scope, collectedAt) {
|
|
49
|
-
const filePath = buildDataFilePath(options.dataDir, scope, collectedAt);
|
|
50
|
-
await unlink(filePath);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Delete all files for a scope by removing the scope directory recursively.
|
|
54
|
-
* No-op if directory doesn't exist.
|
|
55
|
-
*/
|
|
56
|
-
export async function deleteAllForScope(options, scope) {
|
|
57
|
-
const scopeDir = buildScopeDir(options.dataDir, scope);
|
|
58
|
-
await rm(scopeDir, { recursive: true, force: true });
|
|
59
|
-
}
|
|
1
|
+
export {};
|
|
60
2
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/storage/hierarchy/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/storage/hierarchy/manager.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/storage/hierarchy/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/storage/hierarchy/paths.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,CAIR;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { scopeToPathSegments } from "../../scopes/parse.js";
|
|
1
|
+
import { scopeToPathSegments } from "@opendatalabs/vana-sdk/browser";
|
|
3
2
|
/** "2026-01-21T10:00:00Z" → "2026-01-21T10-00-00Z" */
|
|
4
3
|
export function timestampToFilename(isoTimestamp) {
|
|
5
4
|
return isoTimestamp.replace(/:/g, "-");
|
|
@@ -20,12 +19,12 @@ export function filenameToTimestamp(filename) {
|
|
|
20
19
|
export function buildDataFilePath(baseDir, scope, collectedAt) {
|
|
21
20
|
const segments = scopeToPathSegments(scope);
|
|
22
21
|
const filename = timestampToFilename(collectedAt) + ".json";
|
|
23
|
-
return
|
|
22
|
+
return joinPath(baseDir, ...segments, filename);
|
|
24
23
|
}
|
|
25
24
|
/** Directory path for a scope */
|
|
26
25
|
export function buildScopeDir(baseDir, scope) {
|
|
27
26
|
const segments = scopeToPathSegments(scope);
|
|
28
|
-
return
|
|
27
|
+
return joinPath(baseDir, ...segments);
|
|
29
28
|
}
|
|
30
29
|
/** Generate current UTC timestamp without milliseconds, ending in Z */
|
|
31
30
|
export function generateCollectedAt() {
|
|
@@ -33,4 +32,12 @@ export function generateCollectedAt() {
|
|
|
33
32
|
now.setMilliseconds(0);
|
|
34
33
|
return now.toISOString().replace(".000Z", "Z");
|
|
35
34
|
}
|
|
35
|
+
function joinPath(...parts) {
|
|
36
|
+
const [first = "", ...rest] = parts;
|
|
37
|
+
const prefix = first.startsWith("/") ? "/" : "";
|
|
38
|
+
const segments = [first, ...rest]
|
|
39
|
+
.flatMap((part) => part.split("/"))
|
|
40
|
+
.filter((part) => part.length > 0);
|
|
41
|
+
return prefix + segments.join("/");
|
|
42
|
+
}
|
|
36
43
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/storage/hierarchy/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/storage/hierarchy/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,sDAAsD;AACtD,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,gFAAgF;IAChF,kEAAkE;IAClE,gFAAgF;IAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,KAAa,EACb,WAAmB;IAEnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;IAC5D,OAAO,QAAQ,CAAC,OAAO,EAAE,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAa;IAC1D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAG,KAAe;IAClC,MAAM,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;SAC9B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export type { IndexEntry, IndexListOptions } from "./types.js";
|
|
2
|
-
export {
|
|
3
|
-
export { createIndexManager, type IndexManager } from "./manager.js";
|
|
1
|
+
export type { IndexEntry, IndexListOptions, NewIndexEntry, ScopeSummary, } from "./types.js";
|
|
2
|
+
export type { IndexManager } from "./manager.js";
|
|
4
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/index/index.ts"],"names":[],"mappings":"AAAA,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/index/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { IndexEntry, IndexListOptions, ScopeSummary } from "./types.js";
|
|
1
|
+
import type { IndexEntry, IndexListOptions, NewIndexEntry, ScopeSummary } from "./types.js";
|
|
3
2
|
export interface IndexManager {
|
|
4
|
-
insert(entry:
|
|
3
|
+
insert(entry: NewIndexEntry): IndexEntry;
|
|
5
4
|
findByPath(path: string): IndexEntry | undefined;
|
|
6
5
|
findByScope(options: IndexListOptions): IndexEntry[];
|
|
7
6
|
findLatestByScope(scope: string): IndexEntry | undefined;
|
|
@@ -17,9 +16,12 @@ export interface IndexManager {
|
|
|
17
16
|
};
|
|
18
17
|
findClosestByScope(scope: string, at: string): IndexEntry | undefined;
|
|
19
18
|
findByFileId(fileId: string): IndexEntry | undefined;
|
|
19
|
+
/** Find an index entry by its DPv2 data-point id (download dedup). */
|
|
20
|
+
findByDataPointId(dataPointId: string): IndexEntry | undefined;
|
|
20
21
|
/**
|
|
21
|
-
* Find all index entries where
|
|
22
|
-
* Returns entries ordered by created_at ASC (oldest
|
|
22
|
+
* Find all index entries where dataPointId is null (not yet synced /
|
|
23
|
+
* registered on-chain). Returns entries ordered by created_at ASC (oldest
|
|
24
|
+
* first).
|
|
23
25
|
*/
|
|
24
26
|
findUnsynced(options?: {
|
|
25
27
|
limit?: number;
|
|
@@ -29,9 +31,27 @@ export interface IndexManager {
|
|
|
29
31
|
* @returns true if row was updated, false if path not found
|
|
30
32
|
*/
|
|
31
33
|
updateFileId(path: string, fileId: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Returns the highest stored `version` for a scope, or 0 if none. Used by
|
|
36
|
+
* `insert` to derive the next expectedVersion for DPv2 AddData.
|
|
37
|
+
*/
|
|
38
|
+
findLatestVersionByScope(scope: string): number;
|
|
39
|
+
/**
|
|
40
|
+
* Update the dataPointId for an index entry (after successful DPv2
|
|
41
|
+
* registerDataPoint). Sync-worker step that runs alongside fileId update.
|
|
42
|
+
* @returns true if row was updated, false if path not found
|
|
43
|
+
*/
|
|
44
|
+
updateDataPointId(path: string, dataPointId: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Update the DPv2 `version` for an index entry. Used by the upload worker
|
|
47
|
+
* when a registration is rebased onto the registry's live version after a
|
|
48
|
+
* stale-expectedVersion conflict (the blob key embeds the version, so the
|
|
49
|
+
* local row must follow).
|
|
50
|
+
* @returns true if row was updated, false if path not found
|
|
51
|
+
*/
|
|
52
|
+
updateVersion(path: string, version: number): boolean;
|
|
32
53
|
/** Deletes all index entries for a scope. Returns count of deleted rows. */
|
|
33
54
|
deleteByScope(scope: string): number;
|
|
34
55
|
close(): void;
|
|
35
56
|
}
|
|
36
|
-
export declare function createIndexManager(db: Database.Database): IndexManager;
|
|
37
57
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/storage/index/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/storage/index/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAAC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACjD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,EAAE,CAAC;IACrD,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACzD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG;QAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACtE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACrD,sEAAsE;IACtE,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/D;;;;OAIG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,EAAE,CAAC;IACzD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACpD;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9D;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,4EAA4E;IAC5E,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf"}
|