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.
Files changed (76) hide show
  1. package/CHANGELOG.md +118 -1
  2. package/README.md +23 -11
  3. package/dist/backends/filesystem.d.ts +247 -4
  4. package/dist/backends/filesystem.d.ts.map +1 -1
  5. package/dist/backends/filesystem.js +711 -81
  6. package/dist/backends/filesystem.js.map +1 -1
  7. package/dist/backends/postgres.d.ts +240 -2
  8. package/dist/backends/postgres.d.ts.map +1 -1
  9. package/dist/backends/postgres.js +800 -42
  10. package/dist/backends/postgres.js.map +1 -1
  11. package/dist/backends/postgresSchema.d.ts.map +1 -1
  12. package/dist/backends/postgresSchema.js +69 -57
  13. package/dist/backends/postgresSchema.js.map +1 -1
  14. package/dist/errors.d.ts +26 -9
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +40 -12
  17. package/dist/errors.js.map +1 -1
  18. package/dist/lib/equalityIndex.d.ts +334 -0
  19. package/dist/lib/equalityIndex.d.ts.map +1 -0
  20. package/dist/lib/equalityIndex.js +552 -0
  21. package/dist/lib/equalityIndex.js.map +1 -0
  22. package/dist/lib/exportManifest.d.ts +9 -0
  23. package/dist/lib/exportManifest.d.ts.map +1 -1
  24. package/dist/lib/exportManifest.js +9 -0
  25. package/dist/lib/exportManifest.js.map +1 -1
  26. package/dist/lib/importTar.d.ts +18 -2
  27. package/dist/lib/importTar.d.ts.map +1 -1
  28. package/dist/lib/importTar.js +77 -4
  29. package/dist/lib/importTar.js.map +1 -1
  30. package/dist/lib/paths.d.ts +33 -0
  31. package/dist/lib/paths.d.ts.map +1 -1
  32. package/dist/lib/paths.js +28 -0
  33. package/dist/lib/paths.js.map +1 -1
  34. package/dist/lib/resourceFileName.d.ts +43 -0
  35. package/dist/lib/resourceFileName.d.ts.map +1 -1
  36. package/dist/lib/resourceFileName.js +63 -0
  37. package/dist/lib/resourceFileName.js.map +1 -1
  38. package/dist/plugin.d.ts.map +1 -1
  39. package/dist/plugin.js +5 -2
  40. package/dist/plugin.js.map +1 -1
  41. package/dist/requests/ChunkRequest.d.ts +104 -0
  42. package/dist/requests/ChunkRequest.d.ts.map +1 -0
  43. package/dist/requests/ChunkRequest.js +396 -0
  44. package/dist/requests/ChunkRequest.js.map +1 -0
  45. package/dist/requests/CollectionRequest.d.ts +22 -5
  46. package/dist/requests/CollectionRequest.d.ts.map +1 -1
  47. package/dist/requests/CollectionRequest.js +192 -11
  48. package/dist/requests/CollectionRequest.js.map +1 -1
  49. package/dist/requests/ResourceRequest.d.ts.map +1 -1
  50. package/dist/requests/ResourceRequest.js +20 -0
  51. package/dist/requests/ResourceRequest.js.map +1 -1
  52. package/dist/requests/SpaceRequest.d.ts +1 -0
  53. package/dist/requests/SpaceRequest.d.ts.map +1 -1
  54. package/dist/requests/SpaceRequest.js +21 -1
  55. package/dist/requests/SpaceRequest.js.map +1 -1
  56. package/dist/routes.d.ts.map +1 -1
  57. package/dist/routes.js +21 -0
  58. package/dist/routes.js.map +1 -1
  59. package/dist/types.d.ts +165 -2
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +19 -18
  62. package/src/backends/filesystem.ts +924 -75
  63. package/src/backends/postgres.ts +1114 -32
  64. package/src/backends/postgresSchema.ts +69 -57
  65. package/src/errors.ts +44 -12
  66. package/src/lib/equalityIndex.ts +769 -0
  67. package/src/lib/importTar.ts +107 -4
  68. package/src/lib/paths.ts +48 -0
  69. package/src/lib/resourceFileName.ts +69 -0
  70. package/src/plugin.ts +5 -2
  71. package/src/requests/ChunkRequest.ts +478 -0
  72. package/src/requests/CollectionRequest.ts +221 -12
  73. package/src/requests/ResourceRequest.ts +20 -0
  74. package/src/requests/SpaceRequest.ts +25 -1
  75. package/src/routes.ts +46 -0
  76. 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;AAI3C,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;AAED,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,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;CACtC;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;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,UAAU,CAyI1E"}
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"}
@@ -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, and `.policy.*` policy files are merged into the
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":"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"}
1
+ {"version":3,"file":"importTar.js","sourceRoot":"","sources":["../../src/lib/importTar.ts"],"names":[],"mappings":"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"}
@@ -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).
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAEzE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,aAAqB,EACtB,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,MAAM,CAET;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,YAAY,EACZ,aAAqB,EACtB,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,MAAM,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,YAAY,EACZ,UAAU,EACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,MAAM,CAET;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,YAAY,EACZ,UAAU,EACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAQT;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAErE;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,SAAS,EACV,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,CAET;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,YAAY,EACZ,UAAU,EACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,MAAM,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,YAAY,EACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,MAAM,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,YAAY,EACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,MAAM,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,YAAY,EACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,MAAM,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,YAAY,EACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,MAAM,CAMT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACX,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAIvC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,KAAK,EACN,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,MAAM,CAGT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,YAAY,EACb,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,MAAM,CAKT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,YAAY,EACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,MAAM,CAKT"}
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).
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"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"}
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"}
@@ -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,CAmJf;AAED,eAAO,MAAM,UAAU,kBAGrB,CAAA"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
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"}