was-teaching-server 0.9.1 → 0.11.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/CHANGELOG.md +118 -1
- package/README.md +23 -11
- package/dist/backends/filesystem.d.ts +247 -4
- package/dist/backends/filesystem.d.ts.map +1 -1
- package/dist/backends/filesystem.js +711 -81
- package/dist/backends/filesystem.js.map +1 -1
- package/dist/backends/postgres.d.ts +240 -2
- package/dist/backends/postgres.d.ts.map +1 -1
- package/dist/backends/postgres.js +800 -42
- package/dist/backends/postgres.js.map +1 -1
- package/dist/backends/postgresSchema.d.ts.map +1 -1
- package/dist/backends/postgresSchema.js +69 -57
- package/dist/backends/postgresSchema.js.map +1 -1
- package/dist/errors.d.ts +26 -9
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +40 -12
- package/dist/errors.js.map +1 -1
- package/dist/lib/equalityIndex.d.ts +334 -0
- package/dist/lib/equalityIndex.d.ts.map +1 -0
- package/dist/lib/equalityIndex.js +552 -0
- package/dist/lib/equalityIndex.js.map +1 -0
- package/dist/lib/exportManifest.d.ts +9 -0
- package/dist/lib/exportManifest.d.ts.map +1 -1
- package/dist/lib/exportManifest.js +9 -0
- package/dist/lib/exportManifest.js.map +1 -1
- package/dist/lib/importTar.d.ts +18 -2
- package/dist/lib/importTar.d.ts.map +1 -1
- package/dist/lib/importTar.js +77 -4
- package/dist/lib/importTar.js.map +1 -1
- package/dist/lib/paths.d.ts +33 -0
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +28 -0
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/resourceFileName.d.ts +43 -0
- package/dist/lib/resourceFileName.d.ts.map +1 -1
- package/dist/lib/resourceFileName.js +63 -0
- package/dist/lib/resourceFileName.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +5 -2
- package/dist/plugin.js.map +1 -1
- package/dist/requests/ChunkRequest.d.ts +104 -0
- package/dist/requests/ChunkRequest.d.ts.map +1 -0
- package/dist/requests/ChunkRequest.js +396 -0
- package/dist/requests/ChunkRequest.js.map +1 -0
- package/dist/requests/CollectionRequest.d.ts +22 -5
- package/dist/requests/CollectionRequest.d.ts.map +1 -1
- package/dist/requests/CollectionRequest.js +192 -11
- package/dist/requests/CollectionRequest.js.map +1 -1
- package/dist/requests/ResourceRequest.d.ts.map +1 -1
- package/dist/requests/ResourceRequest.js +20 -0
- package/dist/requests/ResourceRequest.js.map +1 -1
- package/dist/requests/SpaceRequest.d.ts +1 -0
- package/dist/requests/SpaceRequest.d.ts.map +1 -1
- package/dist/requests/SpaceRequest.js +21 -1
- package/dist/requests/SpaceRequest.js.map +1 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +21 -0
- package/dist/routes.js.map +1 -1
- package/dist/types.d.ts +165 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +19 -18
- package/src/backends/filesystem.ts +924 -75
- package/src/backends/postgres.ts +1114 -32
- package/src/backends/postgresSchema.ts +69 -57
- package/src/errors.ts +44 -12
- package/src/lib/equalityIndex.ts +769 -0
- package/src/lib/importTar.ts +107 -4
- package/src/lib/paths.ts +48 -0
- package/src/lib/resourceFileName.ts +69 -0
- package/src/plugin.ts +5 -2
- package/src/requests/ChunkRequest.ts +478 -0
- package/src/requests/CollectionRequest.ts +221 -12
- package/src/requests/ResourceRequest.ts +20 -0
- package/src/requests/SpaceRequest.ts +25 -1
- package/src/routes.ts +46 -0
- package/src/types.ts +175 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importTar.d.ts","sourceRoot":"","sources":["../../src/lib/importTar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"importTar.d.ts","sourceRoot":"","sources":["../../src/lib/importTar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAQ3C,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAmCpB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtE;AAwDD,8DAA8D;AAC9D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,0EAA0E;AAC1E,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,cAAc,CAAA;IACjC,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,oDAAoD;IACpD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC7C,qFAAqF;IACrF,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,6EAA6E;IAC7E,UAAU,EAAE,mBAAmB,EAAE,CAAA;CAClC;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,WAAW,EAAE,oBAAoB,EAAE,CAAA;IACnC;;;OAGG;IACH,WAAW,EAAE,gBAAgB,EAAE,CAAA;CAChC;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,QAAQ,GAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAiChC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CA6BrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,UAAU,CAqK1E"}
|
package/dist/lib/importTar.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as tar from 'tar-stream';
|
|
2
2
|
import YAML from 'yaml';
|
|
3
3
|
import { assertValidId } from './validateId.js';
|
|
4
|
-
import { parseResourceFileName } from './resourceFileName.js';
|
|
4
|
+
import { parseChunkDirName, parseChunkIndexSegment, parseResourceFileName } from './resourceFileName.js';
|
|
5
5
|
import { InvalidImportError } from '../errors.js';
|
|
6
6
|
/** Suffix shared by the description / policy / metadata dot-files. */
|
|
7
7
|
const JSON_SUFFIX = '.json';
|
|
@@ -42,6 +42,51 @@ function policyFileId(fileName) {
|
|
|
42
42
|
export function metaSidecarFileId(fileName) {
|
|
43
43
|
return dotFileId(fileName, META_PREFIX);
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* If `fileName` is a chunk entry relative to its Collection dir
|
|
47
|
+
* (`.chunks.<encodedResourceId>/<chunkFile>`, the `chunked-streams` feature),
|
|
48
|
+
* returns the parent `resourceId` (decoded from the directory name) and the
|
|
49
|
+
* `chunkFileName` (its single-segment basename inside the chunk directory);
|
|
50
|
+
* otherwise undefined. Any deeper nesting or a traversal segment in the chunk
|
|
51
|
+
* file name is rejected (undefined), so the caller never builds a path from it.
|
|
52
|
+
* @param fileName {string} the entry name relative to the Collection dir
|
|
53
|
+
* @returns {{ resourceId: string, chunkFileName: string } | undefined}
|
|
54
|
+
*/
|
|
55
|
+
function chunkEntryName(fileName) {
|
|
56
|
+
const slash = fileName.indexOf('/');
|
|
57
|
+
if (slash === -1) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const resourceId = parseChunkDirName(fileName.slice(0, slash));
|
|
61
|
+
if (resourceId === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const chunkFileName = fileName.slice(slash + 1);
|
|
65
|
+
if (chunkFileName.length === 0 ||
|
|
66
|
+
chunkFileName.includes('/') ||
|
|
67
|
+
chunkFileName === '..') {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
return { resourceId, chunkFileName };
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The canonical-chunk-index gate for an archive chunk file: returns true only
|
|
74
|
+
* when `chunkFileName` is a chunk representation (`r.<index>.<encType>.<ext>`)
|
|
75
|
+
* or its version sidecar (`.meta.<index>.json`) whose RAW `<index>` segment
|
|
76
|
+
* passes {@link parseChunkIndexSegment} -- the same predicate the live route
|
|
77
|
+
* enforces. Validating the raw (undecoded) segment rejects both non-canonical
|
|
78
|
+
* spellings (`r.01.*`, which would alias chunk 1) and percent-encoded ones
|
|
79
|
+
* (`r.%31.*`), so an imported chunk file is always reachable at exactly the
|
|
80
|
+
* URL the listing advertises. Anything else in a chunk directory is dropped.
|
|
81
|
+
* @param chunkFileName {string} the file's basename inside the chunk dir
|
|
82
|
+
* @returns {boolean}
|
|
83
|
+
*/
|
|
84
|
+
function isCanonicalChunkFileName(chunkFileName) {
|
|
85
|
+
const indexSegment = metaSidecarFileId(chunkFileName) ??
|
|
86
|
+
(chunkFileName.startsWith('r.') ? chunkFileName.split('.')[1] : undefined);
|
|
87
|
+
return (indexSegment !== undefined &&
|
|
88
|
+
parseChunkIndexSegment(indexSegment) !== undefined);
|
|
89
|
+
}
|
|
45
90
|
/**
|
|
46
91
|
* @param options {object}
|
|
47
92
|
* @param options.tarStream {Readable}
|
|
@@ -125,10 +170,12 @@ export function validateManifest(entries) {
|
|
|
125
170
|
* - space/<sourceSpaceId>/<collectionId>/.policy.<collectionId>.json (collection policy)
|
|
126
171
|
* - space/<sourceSpaceId>/<collectionId>/.policy.<resourceId>.json (resource policy)
|
|
127
172
|
* - space/<sourceSpaceId>/<collectionId>/r.<resourceId>.<encodedContentType>.<ext>
|
|
173
|
+
* - space/<sourceSpaceId>/<collectionId>/.chunks.<encodedResourceId>/<chunkFile>
|
|
174
|
+
* (a chunked Resource's chunk files; the `chunked-streams` feature)
|
|
128
175
|
*
|
|
129
176
|
* The source space id in the path may differ from the import target; collection
|
|
130
|
-
* metadata, r.* resource files,
|
|
131
|
-
* destination.
|
|
177
|
+
* metadata, r.* resource files, `.chunks.*` chunk files, and `.policy.*` policy
|
|
178
|
+
* files are merged into the destination.
|
|
132
179
|
*
|
|
133
180
|
* @param entries {Map<string, TarEntry>}
|
|
134
181
|
* @returns {ImportPlan}
|
|
@@ -181,6 +228,7 @@ export function buildImportPlan(entries) {
|
|
|
181
228
|
let collectionPolicy;
|
|
182
229
|
const resourcePolicies = new Map();
|
|
183
230
|
const resourceMetadata = new Map();
|
|
231
|
+
const chunkFiles = [];
|
|
184
232
|
for (const [entryName, entry] of entries) {
|
|
185
233
|
if (!entryName.startsWith(collectionPrefix) ||
|
|
186
234
|
entry.type !== 'file' ||
|
|
@@ -188,6 +236,30 @@ export function buildImportPlan(entries) {
|
|
|
188
236
|
continue;
|
|
189
237
|
}
|
|
190
238
|
const fileName = entryName.slice(collectionPrefix.length);
|
|
239
|
+
// Chunk files of a chunked Resource live in a per-Resource subdirectory
|
|
240
|
+
// (`.chunks.<encId>/<chunkFile>`), so they are the one Collection entry
|
|
241
|
+
// carrying a slash. Carry them verbatim, keyed by the parent resourceId
|
|
242
|
+
// decoded from the directory name (validated against path traversal).
|
|
243
|
+
const chunk = chunkEntryName(fileName);
|
|
244
|
+
if (chunk) {
|
|
245
|
+
assertValidId(chunk.resourceId, {
|
|
246
|
+
kind: 'resource',
|
|
247
|
+
requestName: 'Import Space'
|
|
248
|
+
});
|
|
249
|
+
// Drop a chunk file with a non-canonical index (or a stray file that
|
|
250
|
+
// is neither a representation nor a sidecar): written verbatim it
|
|
251
|
+
// would be unreachable at the canonical member URL yet advertised by
|
|
252
|
+
// the listing.
|
|
253
|
+
if (!isCanonicalChunkFileName(chunk.chunkFileName)) {
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
chunkFiles.push({
|
|
257
|
+
resourceId: chunk.resourceId,
|
|
258
|
+
fileName: chunk.chunkFileName,
|
|
259
|
+
body: entry.body
|
|
260
|
+
});
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
191
263
|
if (fileName.includes('/')) {
|
|
192
264
|
continue;
|
|
193
265
|
}
|
|
@@ -250,7 +322,8 @@ export function buildImportPlan(entries) {
|
|
|
250
322
|
collectionPolicy,
|
|
251
323
|
resources,
|
|
252
324
|
resourcePolicies,
|
|
253
|
-
resourceMetadata
|
|
325
|
+
resourceMetadata,
|
|
326
|
+
chunkFiles
|
|
254
327
|
};
|
|
255
328
|
});
|
|
256
329
|
return { spacePolicy, collections, revocations: revocationRecords(entries) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importTar.js","sourceRoot":"","sources":["../../src/lib/importTar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"importTar.js","sourceRoot":"","sources":["../../src/lib/importTar.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/paths.d.ts
CHANGED
|
@@ -156,6 +156,39 @@ export declare function metaPath({ spaceId, collectionId, resourceId }: {
|
|
|
156
156
|
collectionId: string;
|
|
157
157
|
resourceId: string;
|
|
158
158
|
}): string;
|
|
159
|
+
/**
|
|
160
|
+
* `/space/:spaceId/:collectionId/:resourceId/chunks/:chunkIndex` -- a single
|
|
161
|
+
* chunk of a chunked Resource (the `chunked-streams` feature). Chunks are
|
|
162
|
+
* addressed under their parent Resource; like `meta`, the `chunks` segment
|
|
163
|
+
* needs no reserved-id entry (it sits a level below any Resource route).
|
|
164
|
+
* @param options {object}
|
|
165
|
+
* @param options.spaceId {string}
|
|
166
|
+
* @param options.collectionId {string}
|
|
167
|
+
* @param options.resourceId {string}
|
|
168
|
+
* @param options.chunkIndex {number} non-negative integer chunk position
|
|
169
|
+
* @returns {string}
|
|
170
|
+
*/
|
|
171
|
+
export declare function chunkPath({ spaceId, collectionId, resourceId, chunkIndex }: {
|
|
172
|
+
spaceId: string;
|
|
173
|
+
collectionId: string;
|
|
174
|
+
resourceId: string;
|
|
175
|
+
chunkIndex: number;
|
|
176
|
+
}): string;
|
|
177
|
+
/**
|
|
178
|
+
* `/space/:spaceId/:collectionId/:resourceId/chunks/` -- the chunk listing
|
|
179
|
+
* (container) path of a chunked Resource. Always the trailing-slash container
|
|
180
|
+
* form: a reader discovers the chunk count here before fetching `0..count-1`.
|
|
181
|
+
* @param options {object}
|
|
182
|
+
* @param options.spaceId {string}
|
|
183
|
+
* @param options.collectionId {string}
|
|
184
|
+
* @param options.resourceId {string}
|
|
185
|
+
* @returns {string}
|
|
186
|
+
*/
|
|
187
|
+
export declare function chunksContainerPath({ spaceId, collectionId, resourceId }: {
|
|
188
|
+
spaceId: string;
|
|
189
|
+
collectionId: string;
|
|
190
|
+
resourceId: string;
|
|
191
|
+
}): string;
|
|
159
192
|
/**
|
|
160
193
|
* `/space/:spaceId/:collectionId/backend` -- the "Collection Backend Selected"
|
|
161
194
|
* resource path (reserved `backend` segment at the Resource level).
|
package/dist/lib/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/paths.js
CHANGED
|
@@ -152,6 +152,34 @@ export function quotasPath({ spaceId }) {
|
|
|
152
152
|
export function metaPath({ spaceId, collectionId, resourceId }) {
|
|
153
153
|
return `${resourcePath({ spaceId, collectionId, resourceId })}/meta`;
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* `/space/:spaceId/:collectionId/:resourceId/chunks/:chunkIndex` -- a single
|
|
157
|
+
* chunk of a chunked Resource (the `chunked-streams` feature). Chunks are
|
|
158
|
+
* addressed under their parent Resource; like `meta`, the `chunks` segment
|
|
159
|
+
* needs no reserved-id entry (it sits a level below any Resource route).
|
|
160
|
+
* @param options {object}
|
|
161
|
+
* @param options.spaceId {string}
|
|
162
|
+
* @param options.collectionId {string}
|
|
163
|
+
* @param options.resourceId {string}
|
|
164
|
+
* @param options.chunkIndex {number} non-negative integer chunk position
|
|
165
|
+
* @returns {string}
|
|
166
|
+
*/
|
|
167
|
+
export function chunkPath({ spaceId, collectionId, resourceId, chunkIndex }) {
|
|
168
|
+
return `${resourcePath({ spaceId, collectionId, resourceId })}/chunks/${chunkIndex}`;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* `/space/:spaceId/:collectionId/:resourceId/chunks/` -- the chunk listing
|
|
172
|
+
* (container) path of a chunked Resource. Always the trailing-slash container
|
|
173
|
+
* form: a reader discovers the chunk count here before fetching `0..count-1`.
|
|
174
|
+
* @param options {object}
|
|
175
|
+
* @param options.spaceId {string}
|
|
176
|
+
* @param options.collectionId {string}
|
|
177
|
+
* @param options.resourceId {string}
|
|
178
|
+
* @returns {string}
|
|
179
|
+
*/
|
|
180
|
+
export function chunksContainerPath({ spaceId, collectionId, resourceId }) {
|
|
181
|
+
return `${resourcePath({ spaceId, collectionId, resourceId })}/chunks/`;
|
|
182
|
+
}
|
|
155
183
|
/**
|
|
156
184
|
* `/space/:spaceId/:collectionId/backend` -- the "Collection Backend Selected"
|
|
157
185
|
* resource path (reserved `backend` segment at the Resource level).
|
package/dist/lib/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,KAA2B,EAAE;IAC/D,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;AAClE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,aAAa,GAAG,KAAK,EAItB;IACC,OAAO,UAAU,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAuB;IAC9D,OAAO,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAA;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAuB;IACzD,OAAO,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAA;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAuB;IACzD,OAAO,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAA;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,YAAY,EACZ,aAAa,GAAG,KAAK,EAKtB;IACC,OAAO,UAAU,OAAO,IAAI,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,YAAY,EACZ,UAAU,EAKX;IACC,OAAO,UAAU,OAAO,IAAI,YAAY,IAAI,UAAU,EAAE,CAAA;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,YAAY,EACZ,UAAU,EAKX;IACC,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3D,OAAO,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,SAAS,CAAA;IACxE,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,SAAS,CAAA;IAC9D,CAAC;IACD,OAAO,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAA;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAuB;IAC3D,OAAO,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,WAAW,CAAA;AAC7C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,SAAS,EAIV;IACC,OAAO,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,SAAS,EAAE,CAAA;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAuB;IACzD,OAAO,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAA;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,YAAY,EACZ,UAAU,EAKX;IACC,OAAO,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,OAAO,CAAA;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,YAAY,EAIb;IACC,OAAO,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,UAAU,CAAA;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,YAAY,EAIb;IACC,OAAO,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAA;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,YAAY,EAIb;IACC,OAAO,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAA;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,YAAY,EAIb;IACC,MAAM,MAAM,GACV,YAAY,KAAK,SAAS;QACxB,CAAC,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5B,OAAO,GAAG,MAAM,UAAU,CAAA;AAC5B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,UAAU,KACiB,EAAE;IAC7B,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,kBAAkB,UAAU,EAAE;QAChC,CAAC,CAAC,gBAAgB,CAAA;AACtB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,UAAU,EACV,KAAK,EAIN;IACC,MAAM,QAAQ,GAAG,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,OAAO,CAAA;IAC3D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;AAChE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,UAAU,EACV,YAAY,EAIb;IACC,OAAO,CACL,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,qBAAqB;QACxD,kBAAkB,CAAC,YAAY,CAAC,CACjC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,OAAO,EACP,YAAY,EAIb;IACC,OAAO,CACL,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,qBAAqB;QAC9C,kBAAkB,CAAC,YAAY,CAAC,CACjC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,4 +38,47 @@ export declare function parseResourceFileName(fileName: string): {
|
|
|
38
38
|
resourceId: string;
|
|
39
39
|
contentType: string;
|
|
40
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* Prefix of a Resource's per-Resource chunk directory
|
|
43
|
+
* (`.chunks.<encodedResourceId>/`), which holds the chunk representations of a
|
|
44
|
+
* chunked Resource (the `chunked-streams` feature). The leading `.` keeps the
|
|
45
|
+
* directory out of the `r.`-prefixed Collection listing, and dot-escaping the
|
|
46
|
+
* id segment keeps it in one filesystem-name namespace with the Resource files.
|
|
47
|
+
*/
|
|
48
|
+
export declare const CHUNK_DIR_PREFIX = ".chunks.";
|
|
49
|
+
/**
|
|
50
|
+
* Builds the on-disk directory name for a Resource's chunk directory:
|
|
51
|
+
* `.chunks.<encodedResourceId>`. The id segment is dot-escaped (see
|
|
52
|
+
* {@link encodeFilenameSegment}) so a dotted id round-trips.
|
|
53
|
+
* @param resourceId {string}
|
|
54
|
+
* @returns {string}
|
|
55
|
+
*/
|
|
56
|
+
export declare function chunkDirName(resourceId: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* Largest addressable chunk index. 2^31-1 (`int4` max): the Postgres backend
|
|
59
|
+
* stores the index in an `integer` column, so the shared validation caps it
|
|
60
|
+
* there and both backends agree on the addressable range.
|
|
61
|
+
*/
|
|
62
|
+
export declare const MAX_CHUNK_INDEX: number;
|
|
63
|
+
/**
|
|
64
|
+
* Parses a chunk-index segment -- the `:chunkIndex` path param, or the
|
|
65
|
+
* `<index>` segment of a chunk file name (`r.<index>.<encType>.<ext>` /
|
|
66
|
+
* `.meta.<index>.json`) -- into its number. Returns `undefined` unless the
|
|
67
|
+
* segment is the canonical decimal spelling of an integer in
|
|
68
|
+
* `[0, MAX_CHUNK_INDEX]`. The single shared predicate for the live route and
|
|
69
|
+
* both backends' import paths, so a chunk index means the same thing
|
|
70
|
+
* everywhere.
|
|
71
|
+
* @param segment {string}
|
|
72
|
+
* @returns {number | undefined}
|
|
73
|
+
*/
|
|
74
|
+
export declare function parseChunkIndexSegment(segment: string): number | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Parses a chunk directory name (`.chunks.<encodedResourceId>`) back into its
|
|
77
|
+
* parent `resourceId`, reversing {@link chunkDirName}. Returns `undefined` when
|
|
78
|
+
* the name is not a chunk directory (no matching prefix, or an empty id
|
|
79
|
+
* segment).
|
|
80
|
+
* @param dirName {string} the basename of the directory
|
|
81
|
+
* @returns {string | undefined}
|
|
82
|
+
*/
|
|
83
|
+
export declare function parseChunkDirName(dirName: string): string | undefined;
|
|
41
84
|
//# sourceMappingURL=resourceFileName.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceFileName.d.ts","sourceRoot":"","sources":["../../src/lib/resourceFileName.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,WAAW,EACZ,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAKT;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAQA"}
|
|
1
|
+
{"version":3,"file":"resourceFileName.d.ts","sourceRoot":"","sources":["../../src/lib/resourceFileName.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,WAAW,EACZ,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAKT;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAQA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAc,CAAA;AAS1C;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM1E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMrE"}
|
|
@@ -55,4 +55,67 @@ export function parseResourceFileName(fileName) {
|
|
|
55
55
|
: 'application/octet-stream'
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Prefix of a Resource's per-Resource chunk directory
|
|
60
|
+
* (`.chunks.<encodedResourceId>/`), which holds the chunk representations of a
|
|
61
|
+
* chunked Resource (the `chunked-streams` feature). The leading `.` keeps the
|
|
62
|
+
* directory out of the `r.`-prefixed Collection listing, and dot-escaping the
|
|
63
|
+
* id segment keeps it in one filesystem-name namespace with the Resource files.
|
|
64
|
+
*/
|
|
65
|
+
export const CHUNK_DIR_PREFIX = '.chunks.';
|
|
66
|
+
/**
|
|
67
|
+
* Builds the on-disk directory name for a Resource's chunk directory:
|
|
68
|
+
* `.chunks.<encodedResourceId>`. The id segment is dot-escaped (see
|
|
69
|
+
* {@link encodeFilenameSegment}) so a dotted id round-trips.
|
|
70
|
+
* @param resourceId {string}
|
|
71
|
+
* @returns {string}
|
|
72
|
+
*/
|
|
73
|
+
export function chunkDirName(resourceId) {
|
|
74
|
+
return `${CHUNK_DIR_PREFIX}${encodeFilenameSegment(resourceId)}`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Largest addressable chunk index. 2^31-1 (`int4` max): the Postgres backend
|
|
78
|
+
* stores the index in an `integer` column, so the shared validation caps it
|
|
79
|
+
* there and both backends agree on the addressable range.
|
|
80
|
+
*/
|
|
81
|
+
export const MAX_CHUNK_INDEX = 2 ** 31 - 1;
|
|
82
|
+
/**
|
|
83
|
+
* Canonical non-negative decimal integer: `0`, or a digit run with no leading
|
|
84
|
+
* zero. Rejecting non-canonical spellings (`01`, `+1`, `1e3`) keeps every chunk
|
|
85
|
+
* addressable at exactly one URL (and at exactly one archive file name).
|
|
86
|
+
*/
|
|
87
|
+
const CHUNK_INDEX_PATTERN = /^(0|[1-9][0-9]*)$/;
|
|
88
|
+
/**
|
|
89
|
+
* Parses a chunk-index segment -- the `:chunkIndex` path param, or the
|
|
90
|
+
* `<index>` segment of a chunk file name (`r.<index>.<encType>.<ext>` /
|
|
91
|
+
* `.meta.<index>.json`) -- into its number. Returns `undefined` unless the
|
|
92
|
+
* segment is the canonical decimal spelling of an integer in
|
|
93
|
+
* `[0, MAX_CHUNK_INDEX]`. The single shared predicate for the live route and
|
|
94
|
+
* both backends' import paths, so a chunk index means the same thing
|
|
95
|
+
* everywhere.
|
|
96
|
+
* @param segment {string}
|
|
97
|
+
* @returns {number | undefined}
|
|
98
|
+
*/
|
|
99
|
+
export function parseChunkIndexSegment(segment) {
|
|
100
|
+
if (!CHUNK_INDEX_PATTERN.test(segment)) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
const chunkIndex = Number(segment);
|
|
104
|
+
return chunkIndex <= MAX_CHUNK_INDEX ? chunkIndex : undefined;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parses a chunk directory name (`.chunks.<encodedResourceId>`) back into its
|
|
108
|
+
* parent `resourceId`, reversing {@link chunkDirName}. Returns `undefined` when
|
|
109
|
+
* the name is not a chunk directory (no matching prefix, or an empty id
|
|
110
|
+
* segment).
|
|
111
|
+
* @param dirName {string} the basename of the directory
|
|
112
|
+
* @returns {string | undefined}
|
|
113
|
+
*/
|
|
114
|
+
export function parseChunkDirName(dirName) {
|
|
115
|
+
if (!dirName.startsWith(CHUNK_DIR_PREFIX)) {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
const encodedId = dirName.slice(CHUNK_DIR_PREFIX.length);
|
|
119
|
+
return encodedId.length > 0 ? decodeURIComponent(encodedId) : undefined;
|
|
120
|
+
}
|
|
58
121
|
//# sourceMappingURL=resourceFileName.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceFileName.js","sourceRoot":"","sources":["../../src/lib/resourceFileName.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAElC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,UAAU,EACV,WAAW,EAIZ;IACC,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,MAAM,CAAA;IACvD,OAAO,KAAK,SAAS,IAAI,WAAW,IAAI,SAAS,EAAE,CAAA;AACrD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IAIpD,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtD,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1D,WAAW,EAAE,WAAW;YACtB,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC;YACjC,CAAC,CAAC,0BAA0B;KAC/B,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"resourceFileName.js","sourceRoot":"","sources":["../../src/lib/resourceFileName.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAElC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,UAAU,EACV,WAAW,EAIZ;IACC,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,MAAM,CAAA;IACvD,OAAO,KAAK,SAAS,IAAI,WAAW,IAAI,SAAS,EAAE,CAAA;AACrD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IAIpD,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtD,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1D,WAAW,EAAE,WAAW;YACtB,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC;YACjC,CAAC,CAAC,0BAA0B;KAC/B,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO,GAAG,gBAAgB,GAAG,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAA;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAE1C;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,OAAO,UAAU,IAAI,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACxD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACzE,CAAC"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAe9C,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,uBAAuB,CAAA;IACnC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;IAClC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,iBAAe,SAAS,CACtB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAe9C,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,uBAAuB,CAAA;IACnC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;IAClC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,iBAAe,SAAS,CACtB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAsJf;AAED,eAAO,MAAM,UAAU,kBAGrB,CAAA"}
|
package/dist/plugin.js
CHANGED
|
@@ -66,10 +66,13 @@ async function wasPlugin(fastify, options) {
|
|
|
66
66
|
// onRequest hook installed by those two route groups.
|
|
67
67
|
fastify.decorate('authorizeProvisioning', authorizeProvisioning ??
|
|
68
68
|
(onboardingToken ? onboardingTokenAuthorizer(onboardingToken) : undefined));
|
|
69
|
-
// Disable CORS
|
|
69
|
+
// Disable CORS. `exposedHeaders` is required for browser clients: without
|
|
70
|
+
// it, cross-origin JS cannot read `Location` (space/resource creation),
|
|
71
|
+
// `ETag` (metaVersion concurrency), or `Link` (pagination, policy linksets).
|
|
70
72
|
fastify.register(cors, {
|
|
71
73
|
origin: '*',
|
|
72
|
-
methods: ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS']
|
|
74
|
+
methods: ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
|
|
75
|
+
exposedHeaders: ['Location', 'ETag', 'Link']
|
|
73
76
|
});
|
|
74
77
|
// Multipart file uploading. The cap is `files: 2`, not `1`: a write MUST carry
|
|
75
78
|
// exactly one file part, and `resolveResourceInput` enforces that by iterating
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC/B,OAAO,IAAI,MAAM,eAAe,CAAA;AAChC,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC3B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAiG7D;;;;;;GAMG;AACH,KAAK,UAAU,SAAS,CACtB,OAAwB,EACxB,OAA0B;IAE1B,MAAM,EACJ,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,EACT,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,EACrB,eAAe,EAChB,GAAG,OAAO,CAAA;IAEX,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC;IAED,8EAA8E;IAC9E,IAAI,qBAAqB,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAA;IACH,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAmB,CAAC,CAAA;IAClD,+EAA+E;IAC/E,iDAAiD;IACjD,MAAM,OAAO,GACX,OAAO;QACP,cAAc,CAAC;YACb,aAAa,EAAE,oBAAoB;YACnC,cAAc;YACd,sBAAsB;YACtB,sBAAsB;YACtB,oBAAoB;SACrB,CAAC,CAAA;IACJ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAEpC,4EAA4E;IAC5E,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,OAAO,CAAC,KAAM,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,+EAA+E;IAC/E,6EAA6E;IAC7E,+EAA+E;IAC/E,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;IAC5D,uEAAuE;IACvE,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAA;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;IAC9C,yEAAyE;IACzE,4EAA4E;IAC5E,gFAAgF;IAChF,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CACd,uBAAuB,EACvB,qBAAqB;QACnB,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAC7E,CAAA;IAED,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request handlers for chunk operations on a chunked Resource (the
|
|
3
|
+
* `chunked-streams` feature): store, fetch, head, delete a single chunk at
|
|
4
|
+
* `/space/:spaceId/:collectionId/:resourceId/chunks/:chunkIndex`, and list a
|
|
5
|
+
* Resource's chunks at the `chunks/` container. A chunk body is opaque bytes +
|
|
6
|
+
* content-type -- the server stores it exactly like a binary Resource
|
|
7
|
+
* representation and never parses it (any encryption framing is client-side),
|
|
8
|
+
* so the Collection-level encryption conformance check deliberately does NOT
|
|
9
|
+
* apply here: an encrypted stream's chunks are ciphertext fragments, not
|
|
10
|
+
* envelope documents.
|
|
11
|
+
*/
|
|
12
|
+
import type { FastifyReply, FastifyRequest } from 'fastify';
|
|
13
|
+
/** The URL params every chunk-member route carries. */
|
|
14
|
+
interface ChunkParams {
|
|
15
|
+
spaceId: string;
|
|
16
|
+
collectionId: string;
|
|
17
|
+
resourceId: string;
|
|
18
|
+
chunkIndex: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class ChunkRequest {
|
|
21
|
+
/**
|
|
22
|
+
* PUT /space/:spaceId/:collectionId/:resourceId/chunks/:chunkIndex
|
|
23
|
+
* Request handler for "Put Chunk": stores chunk `chunkIndex` of the Resource
|
|
24
|
+
* (raw bytes body, upsert). The parent Resource MUST already exist (404
|
|
25
|
+
* otherwise -- chunks cannot be orphaned). Authorization is capability-only
|
|
26
|
+
* against the chunk's own full URL, the same exact-match zcap target rule as
|
|
27
|
+
* every other route. Supports `If-Match` / `If-None-Match` on the chunk's
|
|
28
|
+
* own ETag, and the backend's `maxUploadBytes` cap (413). Returns 204 with
|
|
29
|
+
* the chunk's new ETag.
|
|
30
|
+
*
|
|
31
|
+
* @param request {import('fastify').FastifyRequest}
|
|
32
|
+
* @param reply {import('fastify').FastifyReply}
|
|
33
|
+
* @returns {Promise<FastifyReply>}
|
|
34
|
+
*/
|
|
35
|
+
static put(request: FastifyRequest<{
|
|
36
|
+
Params: ChunkParams;
|
|
37
|
+
}>, reply: FastifyReply): Promise<FastifyReply>;
|
|
38
|
+
/**
|
|
39
|
+
* GET /space/:spaceId/:collectionId/:resourceId/chunks/:chunkIndex
|
|
40
|
+
* Request handler for "Get Chunk": streams the chunk's stored bytes.
|
|
41
|
+
* Authorization is capability-or-policy (the same read decision as Get
|
|
42
|
+
* Resource, resolved at the Resource's policy level -- a chunk reveals a
|
|
43
|
+
* fragment of the same content).
|
|
44
|
+
*
|
|
45
|
+
* @param request {import('fastify').FastifyRequest}
|
|
46
|
+
* @param reply {import('fastify').FastifyReply}
|
|
47
|
+
* @returns {Promise<FastifyReply>}
|
|
48
|
+
*/
|
|
49
|
+
static get(request: FastifyRequest<{
|
|
50
|
+
Params: ChunkParams;
|
|
51
|
+
}>, reply: FastifyReply): Promise<FastifyReply>;
|
|
52
|
+
/**
|
|
53
|
+
* HEAD /space/:spaceId/:collectionId/:resourceId/chunks/:chunkIndex
|
|
54
|
+
* Request handler for "Head Chunk": the same authorization as Get Chunk with
|
|
55
|
+
* no response body; `Content-Type` / `Content-Length` come from the chunk's
|
|
56
|
+
* stored metadata, so the byte stream is never opened (mirrors Head
|
|
57
|
+
* Resource). Registered explicitly ahead of the GET route for the same
|
|
58
|
+
* reason Head Resource is.
|
|
59
|
+
*
|
|
60
|
+
* @param request {import('fastify').FastifyRequest}
|
|
61
|
+
* @param reply {import('fastify').FastifyReply}
|
|
62
|
+
* @returns {Promise<FastifyReply>}
|
|
63
|
+
*/
|
|
64
|
+
static head(request: FastifyRequest<{
|
|
65
|
+
Params: ChunkParams;
|
|
66
|
+
}>, reply: FastifyReply): Promise<FastifyReply>;
|
|
67
|
+
/**
|
|
68
|
+
* DELETE /space/:spaceId/:collectionId/:resourceId/chunks/:chunkIndex
|
|
69
|
+
* Request handler for "Delete Chunk": removes one stored chunk. Unlike
|
|
70
|
+
* Delete Resource, deleting an absent chunk is a 404 (mirroring the EDV
|
|
71
|
+
* chunk contract -- a reassembling reader must be able to distinguish "gone"
|
|
72
|
+
* from "never written"). Authorization is capability-only against the
|
|
73
|
+
* chunk's own URL. Supports `If-Match` (412 on mismatch). Returns 204.
|
|
74
|
+
*
|
|
75
|
+
* @param request {import('fastify').FastifyRequest}
|
|
76
|
+
* @param reply {import('fastify').FastifyReply}
|
|
77
|
+
* @returns {Promise<FastifyReply>}
|
|
78
|
+
*/
|
|
79
|
+
static delete(request: FastifyRequest<{
|
|
80
|
+
Params: ChunkParams;
|
|
81
|
+
}>, reply: FastifyReply): Promise<FastifyReply>;
|
|
82
|
+
/**
|
|
83
|
+
* GET /space/:spaceId/:collectionId/:resourceId/chunks/
|
|
84
|
+
* Request handler for "List Chunks": the discovery/reassembly listing. The
|
|
85
|
+
* server never reassembles a chunked Resource -- a reader learns the chunk
|
|
86
|
+
* set here (count + per-chunk index/size/contentType/version) and fetches
|
|
87
|
+
* `0..count-1` itself. Requires the parent Resource to exist (404
|
|
88
|
+
* otherwise). Authorization is capability-or-policy against the `chunks/`
|
|
89
|
+
* container path, resolved at the Resource's policy level.
|
|
90
|
+
*
|
|
91
|
+
* @param request {import('fastify').FastifyRequest}
|
|
92
|
+
* @param reply {import('fastify').FastifyReply}
|
|
93
|
+
* @returns {Promise<FastifyReply>}
|
|
94
|
+
*/
|
|
95
|
+
static list(request: FastifyRequest<{
|
|
96
|
+
Params: {
|
|
97
|
+
spaceId: string;
|
|
98
|
+
collectionId: string;
|
|
99
|
+
resourceId: string;
|
|
100
|
+
};
|
|
101
|
+
}>, reply: FastifyReply): Promise<FastifyReply>;
|
|
102
|
+
}
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=ChunkRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChunkRequest.d.ts","sourceRoot":"","sources":["../../src/requests/ChunkRequest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAoC3D,uDAAuD;AACvD,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,YAAY;IACvB;;;;;;;;;;;;;OAaG;WACU,GAAG,CACd,OAAO,EAAE,cAAc,CAAC;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC,EAChD,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC;IA4DxB;;;;;;;;;;OAUG;WACU,GAAG,CACd,OAAO,EAAE,cAAc,CAAC;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC,EAChD,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC;IAwExB;;;;;;;;;;;OAWG;WACU,IAAI,CACf,OAAO,EAAE,cAAc,CAAC;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC,EAChD,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC;IA6ExB;;;;;;;;;;;OAWG;WACU,MAAM,CACjB,OAAO,EAAE,cAAc,CAAC;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC,EAChD,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC;IAqExB;;;;;;;;;;;;OAYG;WACU,IAAI,CACf,OAAO,EAAE,cAAc,CAAC;QACtB,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAA;KACtE,CAAC,EACF,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC;CAgEzB"}
|