@trokky/trokky 3.2.0 → 3.4.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 (42) hide show
  1. package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.d.ts +8 -0
  2. package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.d.ts.map +1 -1
  3. package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.js +47 -5
  4. package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.js.map +1 -1
  5. package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts +9 -0
  6. package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts.map +1 -1
  7. package/dist/adapters/filesystem-data/filesystem-data-adapter.js +28 -0
  8. package/dist/adapters/filesystem-data/filesystem-data-adapter.js.map +1 -1
  9. package/dist/adapters/postgres-data/postgres-data-adapter.d.ts +9 -0
  10. package/dist/adapters/postgres-data/postgres-data-adapter.d.ts.map +1 -1
  11. package/dist/adapters/postgres-data/postgres-data-adapter.js +59 -0
  12. package/dist/adapters/postgres-data/postgres-data-adapter.js.map +1 -1
  13. package/dist/core/core/engine.d.ts +10 -0
  14. package/dist/core/core/engine.d.ts.map +1 -1
  15. package/dist/core/core/engine.js +16 -2
  16. package/dist/core/core/engine.js.map +1 -1
  17. package/dist/core/media/image-processor.d.ts.map +1 -1
  18. package/dist/core/media/image-processor.js +4 -3
  19. package/dist/core/media/image-processor.js.map +1 -1
  20. package/dist/core/media/processors/cloudflare-images.d.ts +67 -0
  21. package/dist/core/media/processors/cloudflare-images.d.ts.map +1 -0
  22. package/dist/core/media/processors/cloudflare-images.js +95 -0
  23. package/dist/core/media/processors/cloudflare-images.js.map +1 -0
  24. package/dist/core/security/rate-limiter.d.ts +9 -0
  25. package/dist/core/security/rate-limiter.d.ts.map +1 -1
  26. package/dist/core/security/rate-limiter.js +4 -3
  27. package/dist/core/security/rate-limiter.js.map +1 -1
  28. package/dist/core/services/user-service.d.ts +42 -0
  29. package/dist/core/services/user-service.d.ts.map +1 -1
  30. package/dist/core/services/user-service.js +114 -1
  31. package/dist/core/services/user-service.js.map +1 -1
  32. package/dist/core/types/storage-adapters.d.ts +18 -0
  33. package/dist/core/types/storage-adapters.d.ts.map +1 -1
  34. package/dist/i18n/config.d.ts +32 -0
  35. package/dist/i18n/config.d.ts.map +1 -1
  36. package/dist/i18n/locales/en/auth.json +16 -0
  37. package/dist/i18n/locales/fr/auth.json +16 -0
  38. package/dist/routes/handlers/auth.d.ts +14 -0
  39. package/dist/routes/handlers/auth.d.ts.map +1 -1
  40. package/dist/routes/handlers/auth.js +55 -0
  41. package/dist/routes/handlers/auth.js.map +1 -1
  42. package/package.json +1 -1
@@ -37,8 +37,9 @@ export async function createImageProcessor(config) {
37
37
  }
38
38
  }
39
39
  case 'cloudflare-images': {
40
- throw new Error('Cloudflare Images processor is not yet implemented.\n' +
41
- 'Use processor: "none" on Workers: uploads are stored as-is and no variants are generated.');
40
+ // Loaded on demand so a Node deployment never pulls it in.
41
+ const { CloudflareImagesProcessor } = await import('./processors/cloudflare-images.js');
42
+ return new CloudflareImagesProcessor(config);
42
43
  }
43
44
  case 'imagekit': {
44
45
  throw new Error('ImageKit processor is not yet implemented.\n' +
@@ -53,7 +54,7 @@ export async function createImageProcessor(config) {
53
54
  `Available processors:\n` +
54
55
  `- "none": Store originals only (recommended for edge environments)\n` +
55
56
  `- "sharp": Local processing with Sharp (Node.js only)\n` +
56
- `- "cloudflare-images": Cloudflare Images binding (coming soon)\n` +
57
+ `- "cloudflare-images": Cloudflare Images binding (Workers)\n` +
57
58
  `- "imagekit": ImageKit API (coming soon)\n` +
58
59
  `- "imgix": Imgix API (coming soon)`);
59
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"image-processor.js","sourceRoot":"","sources":["../../../src/core/media/image-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,EACL,cAAc,EACd,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAE9B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAA4B;IACrE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,yEAAyE;YACzE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YACnE,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,mEAAmE;YACnE,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;gBACrE,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC/F,8DAA8D;oBAC9D,yFAAyF,CAC1F,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,uDAAuD;gBACvD,2FAA2F,CAC5F,CAAA;QACH,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,8CAA8C;gBAC9C,kFAAkF,CACnF,CAAA;QACH,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,KAAK,CACb,2CAA2C;gBAC3C,kFAAkF,CACnF,CAAA;QACH,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,IAAI,MAAM;gBAClD,yBAAyB;gBACzB,sEAAsE;gBACtE,yDAAyD;gBACzD,kEAAkE;gBAClE,4CAA4C;gBAC5C,oCAAoC,CACrC,CAAA;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"image-processor.js","sourceRoot":"","sources":["../../../src/core/media/image-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,EACL,cAAc,EACd,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAE9B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAA4B;IACrE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,yEAAyE;YACzE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YACnE,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,mEAAmE;YACnE,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;gBACrE,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC/F,8DAA8D;oBAC9D,yFAAyF,CAC1F,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,2DAA2D;YAC3D,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAA;YACvF,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,8CAA8C;gBAC9C,kFAAkF,CACnF,CAAA;QACH,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,KAAK,CACb,2CAA2C;gBAC3C,kFAAkF,CACnF,CAAA;QACH,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,IAAI,MAAM;gBAClD,yBAAyB;gBACzB,sEAAsE;gBACtE,yDAAyD;gBACzD,8DAA8D;gBAC9D,4CAA4C;gBAC5C,oCAAoC,CACrC,CAAA;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Cloudflare Images processor — variants made by the Images binding at upload time.
3
+ *
4
+ * Why this shape and not the URL API or `fetch(cf.image)`: the binding takes raw bytes, so the
5
+ * R2 bucket behind Trokky never has to be public; and a binding call bills every time while a
6
+ * URL transformation bills once per unique transformation per calendar month — so calling it
7
+ * once per variant at upload and storing the output is a one-time cost, and it slots straight
8
+ * into MediaService's existing `saveVariantFile` pipeline with no architectural change.
9
+ *
10
+ * Measured against the real service, roughly one call in fifteen of a 6MB JPEG fails
11
+ * transiently ("Network connection lost", "internal error; reference = …"), so every variant
12
+ * is retried here. MediaService retries the whole `processImage` too, as a second net.
13
+ *
14
+ * `env.IMAGES` is passed through `media.imageProcessorOptions.images` — it is an object from
15
+ * the Worker's environment, and TrokkyConfig is plain data, so the options bag is where a
16
+ * binding can travel.
17
+ */
18
+ import { ImageProcessor, type ImageProcessorConfig, type ProcessedImage } from './types.js';
19
+ /**
20
+ * The slice of Cloudflare's `ImagesBinding` this processor uses, declared structurally.
21
+ *
22
+ * Declared rather than imported on purpose: `@cloudflare/workers-types` ships its own
23
+ * `ReadableStream` type, and mixing it with the DOM lib's produces "not assignable" errors
24
+ * that come and go with the types package version. `env.IMAGES` satisfies this shape as-is.
25
+ */
26
+ export interface ImagesBindingLike {
27
+ info(stream: ReadableStream<Uint8Array>): Promise<{
28
+ width?: number;
29
+ height?: number;
30
+ format?: string;
31
+ }>;
32
+ input(stream: ReadableStream<Uint8Array>): ImageTransformerLike;
33
+ }
34
+ export interface ImageTransformerLike {
35
+ transform(transform: {
36
+ width?: number;
37
+ height?: number;
38
+ fit?: string;
39
+ }): ImageTransformerLike;
40
+ output(options: {
41
+ format: string;
42
+ quality?: number;
43
+ }): Promise<{
44
+ image(): ReadableStream<Uint8Array>;
45
+ contentType(): string;
46
+ }>;
47
+ }
48
+ export interface CloudflareImagesOptions {
49
+ /** The Images binding from the Worker environment, e.g. `env.IMAGES`. */
50
+ images: ImagesBindingLike;
51
+ /** Attempts per variant before giving up on it. @default 3 */
52
+ attempts?: number;
53
+ }
54
+ export declare class CloudflareImagesProcessor extends ImageProcessor {
55
+ private readonly images;
56
+ private readonly attempts;
57
+ constructor(config: ImageProcessorConfig);
58
+ processImage(file: File, metadata: {
59
+ id: string;
60
+ filename: string;
61
+ path: string;
62
+ }): Promise<ProcessedImage>;
63
+ getImageUrl(imageId: string, variantName?: string): string;
64
+ deleteImage(): Promise<void>;
65
+ healthCheck(): Promise<boolean>;
66
+ }
67
+ //# sourceMappingURL=cloudflare-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-images.d.ts","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-images.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EACL,cAAc,EAEd,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAA;AAEnB;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAA;CAChE;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,SAAS,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,CAAA;IAC7F,MAAM,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC7D,KAAK,IAAI,cAAc,CAAC,UAAU,CAAC,CAAA;QACnC,WAAW,IAAI,MAAM,CAAA;KACtB,CAAC,CAAA;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,MAAM,EAAE,iBAAiB,CAAA;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAoBD,qBAAa,yBAA0B,SAAQ,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAErB,MAAM,EAAE,oBAAoB;IAalC,YAAY,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,cAAc,CAAC;IAwC1B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAMpD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Cloudflare Images processor — variants made by the Images binding at upload time.
3
+ *
4
+ * Why this shape and not the URL API or `fetch(cf.image)`: the binding takes raw bytes, so the
5
+ * R2 bucket behind Trokky never has to be public; and a binding call bills every time while a
6
+ * URL transformation bills once per unique transformation per calendar month — so calling it
7
+ * once per variant at upload and storing the output is a one-time cost, and it slots straight
8
+ * into MediaService's existing `saveVariantFile` pipeline with no architectural change.
9
+ *
10
+ * Measured against the real service, roughly one call in fifteen of a 6MB JPEG fails
11
+ * transiently ("Network connection lost", "internal error; reference = …"), so every variant
12
+ * is retried here. MediaService retries the whole `processImage` too, as a second net.
13
+ *
14
+ * `env.IMAGES` is passed through `media.imageProcessorOptions.images` — it is an object from
15
+ * the Worker's environment, and TrokkyConfig is plain data, so the options bag is where a
16
+ * binding can travel.
17
+ */
18
+ import { InvalidInputError } from '../../errors/index.js';
19
+ import { withRetry } from '../../utils/retry.js';
20
+ import { ImageProcessor, DEFAULT_IMAGE_VARIANTS } from './types.js';
21
+ /** Cloudflare has no stretch; `fill` and `outside` fall back to the nearest crop behaviour. */
22
+ const FIT = {
23
+ cover: 'cover',
24
+ contain: 'contain',
25
+ inside: 'scale-down',
26
+ outside: 'cover',
27
+ fill: 'cover'
28
+ };
29
+ /** A fresh stream over the same bytes; the binding consumes each one it is given. */
30
+ const streamOf = (bytes) =>
31
+ // A copy, so the Blob owns a plain ArrayBuffer rather than a view into a shared one.
32
+ new Blob([bytes.slice().buffer]).stream();
33
+ async function collect(stream) {
34
+ return Buffer.from(await new Response(stream).arrayBuffer());
35
+ }
36
+ export class CloudflareImagesProcessor extends ImageProcessor {
37
+ images;
38
+ attempts;
39
+ constructor(config) {
40
+ super(config);
41
+ const options = (config.options ?? {});
42
+ if (!options.images || typeof options.images.input !== 'function') {
43
+ throw new InvalidInputError('The cloudflare-images processor needs the Images binding: media.imageProcessorOptions.images = env.IMAGES', 'images');
44
+ }
45
+ this.images = options.images;
46
+ this.attempts = options.attempts ?? 3;
47
+ }
48
+ async processImage(file, metadata) {
49
+ const bytes = new Uint8Array(await file.arrayBuffer());
50
+ // Metadata only; not a transformation.
51
+ const info = await withRetry(() => this.images.info(streamOf(bytes)), { attempts: this.attempts });
52
+ const original = {
53
+ url: this.getImageUrl(metadata.id, 'original'),
54
+ width: info.width ?? 0,
55
+ height: info.height ?? 0,
56
+ format: file.type,
57
+ size: bytes.byteLength
58
+ };
59
+ const variants = {};
60
+ for (const variant of this.config.variants?.length ? this.config.variants : DEFAULT_IMAGE_VARIANTS) {
61
+ const format = variant.format ?? 'webp';
62
+ const produced = await withRetry(async () => {
63
+ const result = await this.images
64
+ .input(streamOf(bytes))
65
+ .transform({ width: variant.width, height: variant.height, fit: FIT[variant.fit ?? 'inside'] })
66
+ .output({ format: `image/${format}`, quality: variant.quality });
67
+ const buffer = await collect(result.image());
68
+ // The service reports output dimensions only through info(); metadata, not billed work.
69
+ const dims = await this.images.info(streamOf(new Uint8Array(buffer)));
70
+ return { buffer, dims };
71
+ }, { attempts: this.attempts });
72
+ variants[variant.name] = {
73
+ url: this.getImageUrl(metadata.id, variant.name),
74
+ width: produced.dims.width ?? 0,
75
+ height: produced.dims.height ?? 0,
76
+ format,
77
+ size: produced.buffer.length,
78
+ buffer: produced.buffer
79
+ };
80
+ }
81
+ return { original, variants };
82
+ }
83
+ getImageUrl(imageId, variantName) {
84
+ // The frontend builds real URLs from the media record; this is the same placeholder the
85
+ // other processors return.
86
+ return variantName && variantName !== 'original' ? `/media/${imageId}/${variantName}` : `/media/${imageId}`;
87
+ }
88
+ async deleteImage() {
89
+ // Variants live in the media storage adapter, which deletes them with the original.
90
+ }
91
+ async healthCheck() {
92
+ return typeof this.images?.input === 'function';
93
+ }
94
+ }
95
+ //# sourceMappingURL=cloudflare-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-images.js","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-images.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,15 @@ export interface RateLimitConfig {
16
16
  * is what makes a shared store affordable on hot paths. See rate-limit-store.ts.
17
17
  */
18
18
  leaseSize?: number;
19
+ /**
20
+ * Tighter limits for specific operations, keyed by operation name. An unauthenticated
21
+ * endpoint that accepts a secret must not share the general 1000/min budget: that is a
22
+ * guessing rate, not a request rate.
23
+ */
24
+ limits?: Record<string, {
25
+ windowMs: number;
26
+ maxRequests: number;
27
+ }>;
19
28
  }
20
29
  export declare class RateLimiter {
21
30
  private readonly defaultConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/core/security/rate-limiter.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEjF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAA;IAC/E;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAQD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG7B;IAED,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAEtC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAUpC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BhG;;;OAGG;IACI,OAAO,IAAI,IAAI;IAYtB;;;;OAIG;IACI,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAevD;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/core/security/rate-limiter.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEjF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAA;IAC/E;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACnE;AAQD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG7B;IAED,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAEtC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAUpC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhG;;;OAGG;IACI,OAAO,IAAI,IAAI;IAYtB;;;;OAIG;IACI,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAevD;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -20,8 +20,9 @@ export class RateLimiter {
20
20
  }
21
21
  async checkRateLimit(operation, context) {
22
22
  const key = this.config.keyGenerator ? this.config.keyGenerator(operation, context) : operation;
23
+ const { windowMs, maxRequests } = this.config.limits?.[operation] ?? this.config;
23
24
  const now = Date.now();
24
- const windowStart = Math.floor(now / this.config.windowMs) * this.config.windowMs;
25
+ const windowStart = Math.floor(now / windowMs) * windowMs;
25
26
  const lease = this.leases.get(key);
26
27
  if (lease && lease.windowStart === windowStart && lease.remaining > 0) {
27
28
  lease.remaining -= 1;
@@ -30,9 +31,9 @@ export class RateLimiter {
30
31
  const granted = await this.store.reserve({
31
32
  key,
32
33
  windowStart,
33
- windowMs: this.config.windowMs,
34
+ windowMs,
34
35
  want: this.leaseSize,
35
- max: this.config.maxRequests
36
+ max: maxRequests
36
37
  });
37
38
  if (granted <= 0) {
38
39
  // A spent lease from this window must not be resurrected by a later call.
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/core/security/rate-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/core/security/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,26 @@ export interface UserServiceDependencies {
18
18
  };
19
19
  logAuditEvent: (event: AuditEvent) => void;
20
20
  getUserCreatedWithPasswordCallback: () => ((user: User, temporaryPassword: string) => Promise<void>) | undefined;
21
+ /** The configured claim secret, if any. Read lazily so a Worker can supply it per request. */
22
+ claimSecret?: () => string | undefined;
23
+ }
24
+ /** Whether an instance can still be claimed, and what a claim would have to present. */
25
+ export interface ClaimStatus {
26
+ claimable: boolean;
27
+ /** Why not, when it cannot be claimed. */
28
+ reason?: 'already-claimed' | 'unsupported';
29
+ /** True when a claim secret is configured and must be presented. */
30
+ secretRequired: boolean;
31
+ }
32
+ /** The first administrator, as supplied by whoever is claiming the instance. */
33
+ export interface ClaimInput {
34
+ username: string;
35
+ email: string;
36
+ password: string;
37
+ firstName?: string;
38
+ lastName?: string;
39
+ /** Required when the instance was deployed with a claim secret. */
40
+ secret?: string;
21
41
  }
22
42
  /**
23
43
  * User management operations (system entities) and env-based admin bootstrap.
@@ -33,6 +53,28 @@ export declare class UserService {
33
53
  listUsers(options?: UserListOptions): Promise<User[]>;
34
54
  deleteUser(id: string): Promise<void>;
35
55
  getDefaultPermissions(role: string): Permission[];
56
+ /**
57
+ * Whether this instance still has no owner, and what it would take to claim it.
58
+ *
59
+ * An instance with zero users has no way in: there is nobody to sign in as. The claim flow is
60
+ * how the first administrator is created without baking a password into the deployment — which
61
+ * is what a one-click deploy would otherwise force, and would mean every Trokky on the internet
62
+ * sharing one default credential.
63
+ */
64
+ getClaimStatus(): Promise<ClaimStatus>;
65
+ /**
66
+ * Create the first administrator, claiming an instance that has none.
67
+ *
68
+ * Exactly-once is the adapter's promise, not this method's: `createFirstUser` is an atomic
69
+ * check-and-insert, so of any number of concurrent claims precisely one creates a user and the
70
+ * rest get null. This method only decides who is allowed to try.
71
+ *
72
+ * When a claim secret is configured the caller must present it, which is what makes an instance
73
+ * safe to leave on a public URL before anyone has claimed it. Without one the claim is open to
74
+ * whoever reaches it first — the model of every comparable self-hosted CMS, and only safe
75
+ * because the window is meant to be the minute between deploying and opening the link.
76
+ */
77
+ claimInstance(input: ClaimInput): Promise<User>;
36
78
  setupAdminFromEnv(): Promise<User | null>;
37
79
  }
38
80
  //# sourceMappingURL=user-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/user-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,cAAc,EACd,cAAc,EACd,eAAe,EACf,UAAU,EACX,MAAM,mBAAmB,CAAA;AAE1B,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,kBAAkB,CAAA;IAC/B,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,cAAc,CAAA;IACxB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7E,aAAa,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1C,kCAAkC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;CACjH;AAED;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,uBAAuB;IAG7C,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoFnD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAazC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAazD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAanD,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C/D,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IASrD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC3C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE;IAc3C,iBAAiB,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;CAsEvD"}
1
+ {"version":3,"file":"user-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/user-service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,15 @@
1
+ import { createHash, timingSafeEqual } from 'crypto';
1
2
  import { SecurityValidator } from '../security/validation.js';
2
- import { DocumentNotFoundError } from '../errors/index.js';
3
+ import { DocumentNotFoundError, InvalidInputError } from '../errors/index.js';
4
+ /**
5
+ * Constant-time comparison of two secrets. Both sides are hashed first so lengths always match
6
+ * and `timingSafeEqual` never throws — and never reveals the length, either.
7
+ */
8
+ function secretsMatch(provided, expected) {
9
+ const a = createHash('sha256').update(provided).digest();
10
+ const b = createHash('sha256').update(expected).digest();
11
+ return timingSafeEqual(a, b);
12
+ }
3
13
  /**
4
14
  * User management operations (system entities) and env-based admin bootstrap.
5
15
  */
@@ -194,6 +204,109 @@ export class UserService {
194
204
  return ['content:read', 'studio:access'];
195
205
  }
196
206
  }
207
+ // ==========================================================================
208
+ // FIRST-BOOT CLAIM
209
+ // ==========================================================================
210
+ /**
211
+ * Whether this instance still has no owner, and what it would take to claim it.
212
+ *
213
+ * An instance with zero users has no way in: there is nobody to sign in as. The claim flow is
214
+ * how the first administrator is created without baking a password into the deployment — which
215
+ * is what a one-click deploy would otherwise force, and would mean every Trokky on the internet
216
+ * sharing one default credential.
217
+ */
218
+ async getClaimStatus() {
219
+ // Without an atomic create there is no exactly-once, and a racy claim is worse than none.
220
+ if (!this.deps.dataStorage.createFirstUser) {
221
+ return { claimable: false, reason: 'unsupported', secretRequired: false };
222
+ }
223
+ let userCount;
224
+ try {
225
+ userCount = (await this.listUsers({ limit: 1 })).length;
226
+ }
227
+ catch (error) {
228
+ if (error instanceof Error && error.message.includes('not supported by storage adapter')) {
229
+ return { claimable: false, reason: 'unsupported', secretRequired: false };
230
+ }
231
+ throw error;
232
+ }
233
+ if (userCount > 0) {
234
+ return { claimable: false, reason: 'already-claimed', secretRequired: false };
235
+ }
236
+ return { claimable: true, secretRequired: Boolean(this.deps.claimSecret?.()) };
237
+ }
238
+ /**
239
+ * Create the first administrator, claiming an instance that has none.
240
+ *
241
+ * Exactly-once is the adapter's promise, not this method's: `createFirstUser` is an atomic
242
+ * check-and-insert, so of any number of concurrent claims precisely one creates a user and the
243
+ * rest get null. This method only decides who is allowed to try.
244
+ *
245
+ * When a claim secret is configured the caller must present it, which is what makes an instance
246
+ * safe to leave on a public URL before anyone has claimed it. Without one the claim is open to
247
+ * whoever reaches it first — the model of every comparable self-hosted CMS, and only safe
248
+ * because the window is meant to be the minute between deploying and opening the link.
249
+ */
250
+ async claimInstance(input) {
251
+ if (this.deps.rateLimiter) {
252
+ await this.deps.rateLimiter.checkRateLimit('claimInstance');
253
+ }
254
+ const status = await this.getClaimStatus();
255
+ if (!status.claimable) {
256
+ throw new InvalidInputError(status.reason === 'unsupported'
257
+ ? 'This storage adapter cannot be claimed: it has no atomic first-user create.'
258
+ : 'This instance has already been claimed.', 'claim');
259
+ }
260
+ const expectedSecret = this.deps.claimSecret?.();
261
+ if (expectedSecret && !secretsMatch(input.secret ?? '', expectedSecret)) {
262
+ this.deps.logger.warn('Rejected a claim with an incorrect secret');
263
+ throw new InvalidInputError('Incorrect claim secret.', 'secret');
264
+ }
265
+ if (this.deps.securityEnabled) {
266
+ SecurityValidator.validateEmail(input.email);
267
+ SecurityValidator.validateUsername(input.username);
268
+ }
269
+ // This account owns the instance and the endpoint creating it is unauthenticated. The env
270
+ // bootstrap only warns about a weak password; here it is refused.
271
+ const weak = this.deps.checkWeakPassword(input.password);
272
+ if (weak.isWeak) {
273
+ throw new InvalidInputError(`Password too weak: ${weak.reason ?? 'choose a longer, less predictable one'}`, 'password');
274
+ }
275
+ const passwordHash = await this.deps.hashPassword(input.password);
276
+ const userId = this.deps.idGenerator.generate({ prefix: 'user' });
277
+ const now = new Date().toISOString();
278
+ const created = await this.deps.dataStorage.createFirstUser(userId, {
279
+ username: input.username,
280
+ email: input.email,
281
+ passwordHash,
282
+ firstName: input.firstName,
283
+ lastName: input.lastName,
284
+ role: 'admin',
285
+ permissions: [
286
+ 'content:read', 'content:write', 'content:delete',
287
+ 'users:read', 'users:write',
288
+ 'settings:read', 'settings:write',
289
+ 'media:upload', 'media:delete',
290
+ 'studio:access'
291
+ ],
292
+ isActive: true,
293
+ preferences: {},
294
+ createdAt: now,
295
+ updatedAt: now
296
+ });
297
+ if (!created) {
298
+ // Someone else's claim landed between our check and our write. Theirs stands.
299
+ throw new InvalidInputError('This instance has already been claimed.', 'claim');
300
+ }
301
+ this.deps.logAuditEvent({
302
+ type: 'user_created',
303
+ targetUserId: created.id,
304
+ username: created.username,
305
+ action: 'Instance claimed: first administrator created'
306
+ });
307
+ this.deps.logger.info('Instance claimed', { userId: created.id, username: created.username });
308
+ return created;
309
+ }
197
310
  // Development utility: Setup admin user from environment variables
198
311
  async setupAdminFromEnv() {
199
312
  const adminEmail = (typeof process !== 'undefined' ? process.env?.TROKKY_ADMIN_EMAIL : undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"user-service.js","sourceRoot":"","sources":["../../../src/core/services/user-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-service.js","sourceRoot":"","sources":["../../../src/core/services/user-service.ts"],"names":[],"mappings":"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"}
@@ -195,6 +195,24 @@ export interface DataStorageAdapter {
195
195
  saveUserIf?(id: string, userData: Partial<UpdateUserData>, condition: {
196
196
  passwordHash: string;
197
197
  }): Promise<User | null>;
198
+ /**
199
+ * Create a user only if the store holds no users at all, atomically.
200
+ *
201
+ * This is what makes a first-boot claim exactly-once. The check and the write must be one
202
+ * atomic operation: two concurrent callers must not both see an empty store and both create a
203
+ * user. A read followed by a separate write cannot guarantee that; the store's own
204
+ * serialisation can (a single `INSERT ... WHERE NOT EXISTS` under SQLite's write lock, an
205
+ * advisory lock in Postgres, the write lock in a file backend).
206
+ *
207
+ * Optional so adapters written before it existed keep compiling. An adapter without it cannot
208
+ * be claimed, and reports so; it is not silently downgraded to a racy check.
209
+ *
210
+ * @param id - The user ID
211
+ * @param userData - The user to create, password already hashed
212
+ * @returns The created user, or null if any user already existed (nothing written)
213
+ * @throws Error if storage fails
214
+ */
215
+ createFirstUser?(id: string, userData: CreateUserData): Promise<User | null>;
198
216
  /**
199
217
  * List users with filtering and pagination
200
218
  * @param options - Query options (role, isActive, limit, offset)
@@ -1 +1 @@
1
- {"version":3,"file":"storage-adapters.d.ts","sourceRoot":"","sources":["../../../src/core/types/storage-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-adapters.d.ts","sourceRoot":"","sources":["../../../src/core/types/storage-adapters.ts"],"names":[],"mappings":"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"}