@rool-dev/sdk 0.10.1-dev.cdc8b46 → 0.10.2-dev.0bf8edb

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 (58) hide show
  1. package/README.md +79 -179
  2. package/dist/channel.d.ts +41 -129
  3. package/dist/channel.d.ts.map +1 -1
  4. package/dist/channel.js +220 -394
  5. package/dist/channel.js.map +1 -1
  6. package/dist/client.d.ts +3 -55
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +7 -93
  9. package/dist/client.js.map +1 -1
  10. package/dist/graphql.d.ts +4 -46
  11. package/dist/graphql.d.ts.map +1 -1
  12. package/dist/graphql.js +28 -233
  13. package/dist/graphql.js.map +1 -1
  14. package/dist/index.d.ts +3 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/path.d.ts +6 -0
  19. package/dist/path.d.ts.map +1 -0
  20. package/dist/path.js +47 -0
  21. package/dist/path.js.map +1 -0
  22. package/dist/reroute.d.ts +22 -0
  23. package/dist/reroute.d.ts.map +1 -0
  24. package/dist/reroute.js +61 -0
  25. package/dist/reroute.js.map +1 -0
  26. package/dist/rest.d.ts +9 -0
  27. package/dist/rest.d.ts.map +1 -1
  28. package/dist/rest.js +33 -1
  29. package/dist/rest.js.map +1 -1
  30. package/dist/router.d.ts.map +1 -1
  31. package/dist/router.js +25 -10
  32. package/dist/router.js.map +1 -1
  33. package/dist/space.d.ts +10 -17
  34. package/dist/space.d.ts.map +1 -1
  35. package/dist/space.js +79 -55
  36. package/dist/space.js.map +1 -1
  37. package/dist/subscription.d.ts.map +1 -1
  38. package/dist/subscription.js +40 -32
  39. package/dist/subscription.js.map +1 -1
  40. package/dist/types.d.ts +52 -217
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/webdav.d.ts +44 -21
  43. package/dist/webdav.d.ts.map +1 -1
  44. package/dist/webdav.js +94 -57
  45. package/dist/webdav.js.map +1 -1
  46. package/package.json +2 -1
  47. package/dist/apps.d.ts +0 -30
  48. package/dist/apps.d.ts.map +0 -1
  49. package/dist/apps.js +0 -81
  50. package/dist/apps.js.map +0 -1
  51. package/dist/locations.d.ts +0 -34
  52. package/dist/locations.d.ts.map +0 -1
  53. package/dist/locations.js +0 -90
  54. package/dist/locations.js.map +0 -1
  55. package/dist/machine.d.ts +0 -16
  56. package/dist/machine.d.ts.map +0 -1
  57. package/dist/machine.js +0 -51
  58. package/dist/machine.js.map +0 -1
package/dist/webdav.js CHANGED
@@ -1,4 +1,14 @@
1
+ import { machinePath } from './path.js';
2
+ import { fetchWithReroute, isThrowRetryable } from './reroute.js';
1
3
  const XML_HEADER = '<?xml version="1.0" encoding="utf-8"?>';
4
+ function getTimezone() {
5
+ try {
6
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
7
+ }
8
+ catch {
9
+ return undefined;
10
+ }
11
+ }
2
12
  const KNOWN_PROPS = [
3
13
  'creationdate',
4
14
  'displayname',
@@ -12,6 +22,8 @@ const KNOWN_PROPS = [
12
22
  'resourcetype',
13
23
  'supportedlock',
14
24
  'current-user-privilege-set',
25
+ 'supported-report-set',
26
+ 'sync-token',
15
27
  ];
16
28
  export class WebDAVError extends Error {
17
29
  status;
@@ -30,38 +42,48 @@ export class RoolWebDAV {
30
42
  webdavUrl;
31
43
  spaceId;
32
44
  authManager;
45
+ onRefused;
33
46
  constructor(config) {
34
- this.webdavUrl = config.webdavUrl.replace(/\/+$/, '');
47
+ this.webdavUrl = normalizeWebDAVBaseUrl(config.webdavUrl);
35
48
  this.spaceId = config.spaceId;
36
49
  this.authManager = config.authManager;
50
+ this.onRefused = config.onRefused;
37
51
  }
38
- /** Normalize a space-relative WebDAV path. */
39
- path(path) {
40
- return normalizeWebDAVPath(path);
52
+ /** Update the WebDAV base URL (used after shard rerouting). */
53
+ setWebDAVUrl(webdavUrl) {
54
+ this.webdavUrl = normalizeWebDAVBaseUrl(webdavUrl);
41
55
  }
42
- /** Return the WebDAV href for a space-relative path. */
43
- href(path = '', options) {
56
+ /** Return the WebDAV href for a machine path. */
57
+ href(path = '/', options) {
44
58
  return this.pathUrl(path, options).href;
45
59
  }
46
- /** Return the absolute WebDAV URL for a space-relative path. */
47
- url(path = '', options) {
60
+ /** Return the absolute WebDAV URL for a machine path. */
61
+ url(path = '/', options) {
48
62
  const davPath = this.pathUrl(path, options);
49
- return `${this.webdavUrl}${davPath.href.slice('/dav'.length)}`;
63
+ return `${this.webdavUrl}${davPath.href}`;
50
64
  }
51
- /** Low-level WebDAV request for a space-relative path. Adds Rool auth and returns the raw Response. */
52
- async request(method, path = '', init = {}) {
65
+ /** Low-level WebDAV request for a machine path. Adds Rool auth and returns the raw Response. */
66
+ async request(method, path = '/', init = {}) {
53
67
  const { collection, ...fetchInit } = init;
54
- return this.authenticatedFetch(this.url(path, { collection }), {
55
- ...fetchInit,
56
- method,
68
+ const requestInit = { ...fetchInit, method };
69
+ // 421 (wrong shard) and 503 (draining) reject before executing server-side;
70
+ // a node that rolled fully away rejects the fetch opaquely (no CORS on the
71
+ // LB's 5xx). Both re-resolve the owner and retry. A one-shot ReadableStream
72
+ // body can't be re-sent, so it disables retries.
73
+ const onRefused = this.onRefused;
74
+ const bodyIsStream = typeof ReadableStream !== 'undefined' && requestInit.body instanceof ReadableStream;
75
+ return fetchWithReroute({
76
+ send: () => this.authenticatedFetch(this.url(path, { collection }), requestInit),
77
+ reroute: onRefused ? async () => this.setWebDAVUrl(await onRefused()) : undefined,
78
+ retryOnThrow: isThrowRetryable(method) && !bodyIsStream,
57
79
  });
58
80
  }
59
- async options(path = '') {
81
+ async options(path = '/') {
60
82
  return this.request('OPTIONS', path);
61
83
  }
62
84
  async propfind(path, options) {
63
85
  const response = await this.request('PROPFIND', path, {
64
- collection: isCollectionInput(path),
86
+ collection: true,
65
87
  signal: options.signal,
66
88
  headers: {
67
89
  Depth: options.depth,
@@ -73,6 +95,21 @@ export class RoolWebDAV {
73
95
  const xml = await response.text();
74
96
  return parseMultiStatus(xml, this.spaceId);
75
97
  }
98
+ async syncCollection(path, options) {
99
+ const response = await this.request('REPORT', path, {
100
+ collection: true,
101
+ signal: options.signal,
102
+ headers: { 'Content-Type': 'application/xml; charset=utf-8' },
103
+ body: syncCollectionXml(options),
104
+ });
105
+ await assertStatus(response, 207);
106
+ const xml = await response.text();
107
+ const multistatus = parseMultiStatus(xml, this.spaceId);
108
+ const token = textOf(xml, 'sync-token');
109
+ if (!token)
110
+ throw new Error('sync-collection response missing sync-token');
111
+ return { ...multistatus, token };
112
+ }
76
113
  /** Return WebDAV quota usage for this space. */
77
114
  async getStorageUsage() {
78
115
  const result = await this.propfind('', {
@@ -123,7 +160,7 @@ export class RoolWebDAV {
123
160
  }
124
161
  async delete(path, options = {}) {
125
162
  const response = await this.request('DELETE', path, {
126
- collection: isCollectionInput(path),
163
+ collection: options.collection,
127
164
  headers: writeHeaders(options),
128
165
  });
129
166
  await assertStatus(response, 204);
@@ -151,7 +188,7 @@ export class RoolWebDAV {
151
188
  if (options.timeoutSeconds)
152
189
  headers.set('Timeout', `Second-${options.timeoutSeconds}`);
153
190
  const response = await this.request('LOCK', path, {
154
- collection: isCollectionInput(path),
191
+ collection: options.collection,
155
192
  signal: options.signal,
156
193
  headers,
157
194
  body: lockXml(options.owner ?? ''),
@@ -164,7 +201,7 @@ export class RoolWebDAV {
164
201
  if (options.timeoutSeconds)
165
202
  headers.set('Timeout', `Second-${options.timeoutSeconds}`);
166
203
  const response = await this.request('LOCK', path, {
167
- collection: isCollectionInput(path),
204
+ collection: options.collection,
168
205
  signal: options.signal,
169
206
  headers,
170
207
  });
@@ -172,7 +209,7 @@ export class RoolWebDAV {
172
209
  return lockResult(response, await response.text());
173
210
  }
174
211
  async unlock(token) {
175
- const response = await this.request('UNLOCK', '', {
212
+ const response = await this.request('UNLOCK', '/', {
176
213
  collection: true,
177
214
  headers: { 'Lock-Token': `<${token}>` },
178
215
  });
@@ -180,13 +217,12 @@ export class RoolWebDAV {
180
217
  }
181
218
  async moveOrCopy(method, source, destination, options) {
182
219
  const headers = writeHeaders(options);
183
- headers.set('Destination', this.url(destination, { collection: isCollectionInput(destination) }));
220
+ headers.set('Destination', this.url(destination));
184
221
  if (options.overwrite !== undefined)
185
222
  headers.set('Overwrite', options.overwrite ? 'T' : 'F');
186
223
  if (method === 'COPY' && options.depth)
187
224
  headers.set('Depth', options.depth);
188
225
  const response = await this.request(method, source, {
189
- collection: isCollectionInput(source),
190
226
  headers,
191
227
  });
192
228
  await assertStatus(response, 201, 204);
@@ -199,6 +235,9 @@ export class RoolWebDAV {
199
235
  const headers = new Headers(init.headers);
200
236
  headers.set('Authorization', `Bearer ${tokens.accessToken}`);
201
237
  headers.set('X-Rool-Token', tokens.roolToken);
238
+ const timezone = getTimezone();
239
+ if (timezone)
240
+ headers.set('X-Timezone', timezone);
202
241
  const requestInit = { ...init, headers };
203
242
  if (typeof ReadableStream !== 'undefined' && init.body instanceof ReadableStream) {
204
243
  requestInit.duplex = 'half';
@@ -206,40 +245,25 @@ export class RoolWebDAV {
206
245
  return fetch(url, requestInit);
207
246
  }
208
247
  pathUrl(path, options) {
209
- const isCollection = options?.collection ?? isCollectionInput(path);
210
- const normalized = normalizeWebDAVPath(path);
248
+ const parsed = machinePath(path, { spaceId: this.spaceId });
249
+ if (parsed !== '/' && parsed !== '/space' && !parsed.startsWith('/space/') && parsed !== '/rool-drive' && !parsed.startsWith('/rool-drive/')) {
250
+ throw new Error('WebDAV paths must be machine paths under /space or /rool-drive');
251
+ }
252
+ const isCollection = options?.collection ?? parsed === '/';
211
253
  const encodedSpace = encodeURIComponent(this.spaceId);
212
- const encodedPath = normalized
213
- .split('/')
214
- .filter(Boolean)
215
- .map(encodeURIComponent)
216
- .join('/');
254
+ const encodedPath = parsed === '/'
255
+ ? ''
256
+ : parsed.slice(1).split('/').map(encodeURIComponent).join('/');
217
257
  const suffix = encodedPath ? `/${encodedPath}` : '';
218
258
  return {
219
- href: `/dav/${encodedSpace}${suffix}${isCollection ? '/' : ''}`,
220
- path: normalized,
259
+ href: `/space/${encodedSpace}${suffix}${isCollection ? '/' : ''}`,
260
+ path: parsed,
221
261
  isCollection,
222
262
  };
223
263
  }
224
264
  }
225
- function isCollectionInput(path) {
226
- return path === '' || path.endsWith('/');
227
- }
228
- function normalizeWebDAVPath(path) {
229
- const normalized = path.replace(/\/+$/, '');
230
- if (normalized === '')
231
- return '';
232
- if (path.startsWith('/') || path.includes('\\'))
233
- throw new Error('Invalid WebDAV path');
234
- if (/^[a-z][a-z0-9+.-]*:/i.test(path))
235
- throw new Error('Invalid WebDAV path');
236
- if (/[\x00-\x1f\x7f]/.test(path))
237
- throw new Error('Invalid WebDAV path');
238
- const parts = normalized.split('/');
239
- if (parts.some((part) => part === '' || part === '.' || part === '..')) {
240
- throw new Error('Invalid WebDAV path');
241
- }
242
- return normalized;
265
+ function normalizeWebDAVBaseUrl(url) {
266
+ return url.replace(/\/+$/, '').replace(/\/dav$/, '');
243
267
  }
244
268
  function rangeHeader(range) {
245
269
  if (typeof range === 'string')
@@ -253,7 +277,7 @@ function rangeHeader(range) {
253
277
  return `bytes=${range.start}-${range.end}`;
254
278
  }
255
279
  function writeHeaders(options) {
256
- const headers = new Headers();
280
+ const headers = new Headers(options.headers);
257
281
  if (options.ifMatch)
258
282
  headers.set('If-Match', options.ifMatch);
259
283
  if (options.ifNoneMatch)
@@ -272,6 +296,18 @@ function propfindXml(props) {
272
296
  const names = props.map((name) => `<d:${name}/>`).join('');
273
297
  return `${XML_HEADER}<d:propfind xmlns:d="DAV:"><d:prop>${names}</d:prop></d:propfind>`;
274
298
  }
299
+ function syncCollectionXml(options) {
300
+ if (options.limit !== undefined && (!Number.isSafeInteger(options.limit) || options.limit <= 0)) {
301
+ throw new Error('Invalid sync-collection limit');
302
+ }
303
+ const token = `<d:sync-token>${xmlEscape(options.token ?? '')}</d:sync-token>`;
304
+ const level = `<d:sync-level>${options.level}</d:sync-level>`;
305
+ const props = !options.props || options.props === 'allprop'
306
+ ? '<d:prop><d:displayname/><d:getcontentlength/><d:getcontenttype/><d:getetag/><d:getlastmodified/><d:resourcetype/></d:prop>'
307
+ : `<d:prop>${options.props.map((name) => `<d:${name}/>`).join('')}</d:prop>`;
308
+ const limit = options.limit ? `<d:limit><d:nresults>${options.limit}</d:nresults></d:limit>` : '';
309
+ return `${XML_HEADER}<d:sync-collection xmlns:d="DAV:">${token}${level}${props}${limit}</d:sync-collection>`;
310
+ }
275
311
  function lockXml(owner) {
276
312
  return `${XML_HEADER}<d:lockinfo xmlns:d="DAV:"><d:lockscope><d:exclusive/></d:lockscope><d:locktype><d:write/></d:locktype><d:owner>${xmlEscape(owner)}</d:owner></d:lockinfo>`;
277
313
  }
@@ -351,6 +387,8 @@ function parsePropValue(name, raw) {
351
387
  return { canWrite: hasTag(raw, 'write') || hasTag(raw, 'bind') };
352
388
  if (name === 'supportedlock')
353
389
  return { write: hasTag(raw, 'write') };
390
+ if (name === 'supported-report-set')
391
+ return { reports: hasTag(raw, 'sync-collection') ? ['sync-collection'] : [] };
354
392
  return xmlUnescape(stripTags(raw));
355
393
  }
356
394
  function toWebDAVProps(raw) {
@@ -362,6 +400,11 @@ function toWebDAVProps(raw) {
362
400
  }
363
401
  if (Array.isArray(raw.lockdiscovery))
364
402
  props.locks = raw.lockdiscovery;
403
+ if (typeof raw['sync-token'] === 'string')
404
+ props.syncToken = raw['sync-token'];
405
+ const supportedReports = raw['supported-report-set'];
406
+ if (supportedReports?.reports)
407
+ props.supportedReports = supportedReports.reports;
365
408
  const privileges = raw['current-user-privilege-set'];
366
409
  if (privileges)
367
410
  props.canWrite = !!privileges.canWrite;
@@ -393,13 +436,7 @@ function parseTimeout(value) {
393
436
  }
394
437
  function pathFromHref(href, spaceId) {
395
438
  try {
396
- const pathname = new URL(href, 'http://rool.local').pathname;
397
- const parts = pathname.split('/').filter(Boolean).map(decodeURIComponent);
398
- if (parts[0] !== 'dav')
399
- return href;
400
- if (parts[1] !== spaceId)
401
- return parts.slice(2).join('/');
402
- return parts.slice(2).join('/');
439
+ return machinePath(href, { spaceId });
403
440
  }
404
441
  catch {
405
442
  return href;
@@ -1 +1 @@
1
- {"version":3,"file":"webdav.js","sourceRoot":"","sources":["../src/webdav.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webdav.js","sourceRoot":"","sources":["../src/webdav.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rool-dev/sdk",
3
- "version": "0.10.1-dev.cdc8b46",
3
+ "version": "0.10.2-dev.0bf8edb",
4
4
  "description": "TypeScript SDK for working with Rool Spaces",
5
5
  "packageManager": "pnpm@10.17.1",
6
6
  "type": "module",
@@ -24,6 +24,7 @@
24
24
  "build": "tsc",
25
25
  "dev": "tsc --watch",
26
26
  "typecheck": "tsc --noEmit",
27
+ "test": "node --import tsx --test test/*.test.ts",
27
28
  "clean": "rm -rf dist",
28
29
  "eval": "node --import tsx eval/main.ts"
29
30
  },
package/dist/apps.d.ts DELETED
@@ -1,30 +0,0 @@
1
- import type { ExtensionInfo, UploadExtensionOptions } from './types.js';
2
- import type { AuthManager } from './auth.js';
3
- export interface ExtensionsClientConfig {
4
- extensionsUrl: string;
5
- authManager: AuthManager;
6
- }
7
- export declare class ExtensionsClient {
8
- private config;
9
- constructor(config: ExtensionsClientConfig);
10
- private getHeaders;
11
- /**
12
- * List all user extensions.
13
- */
14
- list(): Promise<ExtensionInfo[]>;
15
- /**
16
- * Get info for a specific user extension.
17
- */
18
- get(extensionId: string): Promise<ExtensionInfo | null>;
19
- /**
20
- * Upload or update a user extension bundle.
21
- * @param extensionId - URL-safe identifier for the extension
22
- * @param options - Bundle zip file (must include index.html and manifest.json)
23
- */
24
- upload(extensionId: string, options: UploadExtensionOptions): Promise<ExtensionInfo>;
25
- /**
26
- * Delete a user extension permanently.
27
- */
28
- delete(extensionId: string): Promise<void>;
29
- }
30
- //# sourceMappingURL=apps.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,EAAE,sBAAsB;YAI5B,UAAU;IAMxB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IActC;;OAEG;IACG,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAe7D;;;;OAIG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB1F;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjD"}
package/dist/apps.js DELETED
@@ -1,81 +0,0 @@
1
- // =============================================================================
2
- // Extensions Client
3
- // REST API wrapper for user extension management (upload/delete/list/get)
4
- // =============================================================================
5
- function normalizeExtensionInfo(raw) {
6
- return { ...raw, published: raw.published ?? false, marketplaceExtensionId: raw.marketplaceExtensionId ?? null };
7
- }
8
- export class ExtensionsClient {
9
- config;
10
- constructor(config) {
11
- this.config = config;
12
- }
13
- async getHeaders() {
14
- const tokens = await this.config.authManager.getTokens();
15
- if (!tokens)
16
- throw new Error('Not authenticated');
17
- return { Authorization: `Bearer ${tokens.accessToken}`, 'X-Rool-Token': tokens.roolToken };
18
- }
19
- /**
20
- * List all user extensions.
21
- */
22
- async list() {
23
- const response = await fetch(this.config.extensionsUrl, {
24
- method: 'GET',
25
- headers: await this.getHeaders(),
26
- });
27
- if (!response.ok) {
28
- throw new Error(`Failed to list extensions: ${response.status} ${response.statusText}`);
29
- }
30
- const rows = await response.json();
31
- return rows.map(normalizeExtensionInfo);
32
- }
33
- /**
34
- * Get info for a specific user extension.
35
- */
36
- async get(extensionId) {
37
- const response = await fetch(`${this.config.extensionsUrl}/${encodeURIComponent(extensionId)}`, {
38
- method: 'GET',
39
- headers: await this.getHeaders(),
40
- });
41
- if (response.status === 404)
42
- return null;
43
- if (!response.ok) {
44
- throw new Error(`Failed to get extension: ${response.status} ${response.statusText}`);
45
- }
46
- return normalizeExtensionInfo(await response.json());
47
- }
48
- /**
49
- * Upload or update a user extension bundle.
50
- * @param extensionId - URL-safe identifier for the extension
51
- * @param options - Bundle zip file (must include index.html and manifest.json)
52
- */
53
- async upload(extensionId, options) {
54
- const formData = new FormData();
55
- formData.append('bundle', options.bundle);
56
- const response = await fetch(`${this.config.extensionsUrl}/${encodeURIComponent(extensionId)}`, {
57
- method: 'POST',
58
- headers: await this.getHeaders(),
59
- body: formData,
60
- });
61
- if (!response.ok) {
62
- const errorBody = await response.json().catch(() => ({}));
63
- const errorMessage = errorBody.error || `${response.status} ${response.statusText}`;
64
- throw new Error(`Failed to upload extension: ${errorMessage}`);
65
- }
66
- return normalizeExtensionInfo(await response.json());
67
- }
68
- /**
69
- * Delete a user extension permanently.
70
- */
71
- async delete(extensionId) {
72
- const response = await fetch(`${this.config.extensionsUrl}/${encodeURIComponent(extensionId)}`, {
73
- method: 'DELETE',
74
- headers: await this.getHeaders(),
75
- });
76
- if (!response.ok && response.status !== 204) {
77
- throw new Error(`Failed to delete extension: ${response.status} ${response.statusText}`);
78
- }
79
- }
80
- }
81
- //# sourceMappingURL=apps.js.map
package/dist/apps.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- export interface ParsedLocation {
2
- collection: string;
3
- basename: string;
4
- }
5
- /**
6
- * Generate a 6-character alphanumeric basename.
7
- * 62^6 ≈ 56.8B possible values.
8
- */
9
- export declare function generateBasename(): string;
10
- /**
11
- * Build a canonical location string from a collection and basename.
12
- * Validates both parts. Throws on invalid input.
13
- */
14
- export declare function loc(collection: string, basename: string): string;
15
- /**
16
- * Parse a canonical location string into its collection and basename.
17
- * Throws on malformed input. Use {@link normalizeLocation} first if the
18
- * input might be a short form like `"article/welcome"`.
19
- */
20
- export declare function parseLocation(location: string): ParsedLocation;
21
- /**
22
- * Normalize a user-provided location to the canonical full form.
23
- *
24
- * Accepts:
25
- * - `/space/<collection>/<basename>.json` — canonical
26
- * - `<collection>/<basename>` — short form
27
- * - `<collection>/<basename>.json` — short form with extension
28
- *
29
- * Always returns the canonical form. Throws on malformed input.
30
- */
31
- export declare function normalizeLocation(input: string): string;
32
- /** Return true if `input` is a syntactically valid (full or short) location. */
33
- export declare function isLocation(input: unknown): input is string;
34
- //# sourceMappingURL=locations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"locations.d.ts","sourceRoot":"","sources":["../src/locations.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAQ9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvD;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAQ1D"}
package/dist/locations.js DELETED
@@ -1,90 +0,0 @@
1
- // =============================================================================
2
- // Object location helpers
3
- //
4
- // An object lives at a "location" — a path of the form
5
- // `/space/<collection>/<basename>.json`. The collection is the parent
6
- // directory; the basename is the filename without `.json`. The two together
7
- // fully identify the object inside its space.
8
- //
9
- // Functions here normalize user-provided strings, parse locations into their
10
- // parts, and mint new locations when the caller doesn't pin a basename.
11
- // =============================================================================
12
- const COLLECTION_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
13
- const BASENAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
14
- const FULL_LOCATION_RE = /^\/space\/([^/]+)\/([^/]+)\.json$/;
15
- const BASENAME_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
16
- /**
17
- * Generate a 6-character alphanumeric basename.
18
- * 62^6 ≈ 56.8B possible values.
19
- */
20
- export function generateBasename() {
21
- let out = '';
22
- for (let i = 0; i < 6; i++) {
23
- out += BASENAME_CHARS[Math.floor(Math.random() * BASENAME_CHARS.length)];
24
- }
25
- return out;
26
- }
27
- /**
28
- * Build a canonical location string from a collection and basename.
29
- * Validates both parts. Throws on invalid input.
30
- */
31
- export function loc(collection, basename) {
32
- if (!COLLECTION_RE.test(collection)) {
33
- throw new Error(`Invalid collection "${collection}". Must start with a letter and contain only alphanumeric characters, hyphens, and underscores.`);
34
- }
35
- if (!BASENAME_RE.test(basename)) {
36
- throw new Error(`Invalid basename "${basename}". Must start with an alphanumeric character and contain only alphanumeric characters, hyphens, and underscores.`);
37
- }
38
- return `/space/${collection}/${basename}.json`;
39
- }
40
- /**
41
- * Parse a canonical location string into its collection and basename.
42
- * Throws on malformed input. Use {@link normalizeLocation} first if the
43
- * input might be a short form like `"article/welcome"`.
44
- */
45
- export function parseLocation(location) {
46
- const match = FULL_LOCATION_RE.exec(location);
47
- if (!match)
48
- throw new Error(`Invalid location "${location}". Expected /space/<collection>/<basename>.json.`);
49
- const [, collection, basename] = match;
50
- if (!COLLECTION_RE.test(collection) || !BASENAME_RE.test(basename)) {
51
- throw new Error(`Invalid location "${location}".`);
52
- }
53
- return { collection, basename };
54
- }
55
- /**
56
- * Normalize a user-provided location to the canonical full form.
57
- *
58
- * Accepts:
59
- * - `/space/<collection>/<basename>.json` — canonical
60
- * - `<collection>/<basename>` — short form
61
- * - `<collection>/<basename>.json` — short form with extension
62
- *
63
- * Always returns the canonical form. Throws on malformed input.
64
- */
65
- export function normalizeLocation(input) {
66
- if (input.startsWith('/space/')) {
67
- parseLocation(input); // validate
68
- return input;
69
- }
70
- // Short form: "collection/basename" or "collection/basename.json"
71
- const stripped = input.endsWith('.json') ? input.slice(0, -5) : input;
72
- const slash = stripped.indexOf('/');
73
- if (slash <= 0 || stripped.indexOf('/', slash + 1) !== -1) {
74
- throw new Error(`Invalid location "${input}". Expected /space/<collection>/<basename>.json or <collection>/<basename>.`);
75
- }
76
- return loc(stripped.slice(0, slash), stripped.slice(slash + 1));
77
- }
78
- /** Return true if `input` is a syntactically valid (full or short) location. */
79
- export function isLocation(input) {
80
- if (typeof input !== 'string')
81
- return false;
82
- try {
83
- normalizeLocation(input);
84
- return true;
85
- }
86
- catch {
87
- return false;
88
- }
89
- }
90
- //# sourceMappingURL=locations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"locations.js","sourceRoot":"","sources":["../src/locations.ts"],"names":[],"mappings":"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"}