@trokky/trokky 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.d.ts +140 -0
- package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.js +853 -0
- package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.js.map +1 -0
- package/dist/adapters/cloudflare-d1/index.d.ts +5 -0
- package/dist/adapters/cloudflare-d1/index.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/index.js +12 -0
- package/dist/adapters/cloudflare-d1/index.js.map +1 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.d.ts +46 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.js +96 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.js.map +1 -0
- package/dist/adapters/cloudflare-d1/types.d.ts +69 -0
- package/dist/adapters/cloudflare-d1/types.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/types.js +2 -0
- package/dist/adapters/cloudflare-d1/types.js.map +1 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.d.ts +86 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.d.ts.map +1 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.js +493 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.js.map +1 -0
- package/dist/adapters/cloudflare-r2/index.d.ts +3 -0
- package/dist/adapters/cloudflare-r2/index.d.ts.map +1 -0
- package/dist/adapters/cloudflare-r2/index.js +11 -0
- package/dist/adapters/cloudflare-r2/index.js.map +1 -0
- package/dist/adapters/cloudflare-r2/types.d.ts +43 -0
- package/dist/adapters/cloudflare-r2/types.d.ts.map +1 -0
- package/dist/adapters/cloudflare-r2/types.js +2 -0
- package/dist/adapters/cloudflare-r2/types.js.map +1 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts +9 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts.map +1 -1
- package/dist/adapters/filesystem-data/filesystem-data-adapter.js +28 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.js.map +1 -1
- package/dist/adapters/postgres-data/postgres-data-adapter.d.ts +9 -0
- package/dist/adapters/postgres-data/postgres-data-adapter.d.ts.map +1 -1
- package/dist/adapters/postgres-data/postgres-data-adapter.js +59 -0
- package/dist/adapters/postgres-data/postgres-data-adapter.js.map +1 -1
- package/dist/core/core/engine.d.ts +10 -0
- package/dist/core/core/engine.d.ts.map +1 -1
- package/dist/core/core/engine.js +16 -2
- package/dist/core/core/engine.js.map +1 -1
- package/dist/core/media/image-processor.d.ts.map +1 -1
- package/dist/core/media/image-processor.js +5 -13
- package/dist/core/media/image-processor.js.map +1 -1
- package/dist/core/media/processors/sharp.d.ts.map +1 -1
- package/dist/core/media/processors/sharp.js +13 -2
- package/dist/core/media/processors/sharp.js.map +1 -1
- package/dist/core/media/processors/types.d.ts +1 -1
- package/dist/core/media/processors/types.d.ts.map +1 -1
- package/dist/core/security/rate-limit-store.d.ts +56 -0
- package/dist/core/security/rate-limit-store.d.ts.map +1 -0
- package/dist/core/security/rate-limit-store.js +55 -0
- package/dist/core/security/rate-limit-store.js.map +1 -0
- package/dist/core/security/rate-limiter.d.ts +39 -2
- package/dist/core/security/rate-limiter.d.ts.map +1 -1
- package/dist/core/security/rate-limiter.js +52 -20
- package/dist/core/security/rate-limiter.js.map +1 -1
- package/dist/core/services/media-service.d.ts +34 -0
- package/dist/core/services/media-service.d.ts.map +1 -1
- package/dist/core/services/media-service.js +172 -120
- package/dist/core/services/media-service.js.map +1 -1
- package/dist/core/services/user-service.d.ts +42 -0
- package/dist/core/services/user-service.d.ts.map +1 -1
- package/dist/core/services/user-service.js +114 -1
- package/dist/core/services/user-service.js.map +1 -1
- package/dist/core/types/storage-adapters.d.ts +18 -0
- package/dist/core/types/storage-adapters.d.ts.map +1 -1
- package/dist/core/utils/retry.d.ts +45 -0
- package/dist/core/utils/retry.d.ts.map +1 -0
- package/dist/core/utils/retry.js +47 -0
- package/dist/core/utils/retry.js.map +1 -0
- package/dist/i18n/config.d.ts +32 -0
- package/dist/i18n/config.d.ts.map +1 -1
- package/dist/i18n/locales/en/auth.json +16 -0
- package/dist/i18n/locales/fr/auth.json +16 -0
- package/dist/integrations/workers/adapter.d.ts +28 -0
- package/dist/integrations/workers/adapter.d.ts.map +1 -0
- package/dist/integrations/workers/adapter.js +111 -0
- package/dist/integrations/workers/adapter.js.map +1 -0
- package/dist/integrations/workers/index.d.ts +22 -0
- package/dist/integrations/workers/index.d.ts.map +1 -0
- package/dist/integrations/workers/index.js +60 -0
- package/dist/integrations/workers/index.js.map +1 -0
- package/dist/routes/auth/auth-flow-store.d.ts +17 -0
- package/dist/routes/auth/auth-flow-store.d.ts.map +1 -1
- package/dist/routes/auth/auth-flow-store.js +27 -0
- package/dist/routes/auth/auth-flow-store.js.map +1 -1
- package/dist/routes/auth/oauth.d.ts.map +1 -1
- package/dist/routes/auth/oauth.js +5 -12
- package/dist/routes/auth/oauth.js.map +1 -1
- package/dist/routes/auth/passkey.d.ts.map +1 -1
- package/dist/routes/auth/passkey.js +5 -8
- package/dist/routes/auth/passkey.js.map +1 -1
- package/dist/routes/handlers/auth.d.ts +14 -0
- package/dist/routes/handlers/auth.d.ts.map +1 -1
- package/dist/routes/handlers/auth.js +55 -0
- package/dist/routes/handlers/auth.js.map +1 -1
- package/dist/structure/validation/schemas.d.ts +60 -60
- package/package.json +20 -1
- package/dist/core/media/processors/cloudflare-images.d.ts +0 -83
- package/dist/core/media/processors/cloudflare-images.d.ts.map +0 -1
- package/dist/core/media/processors/cloudflare-images.js +0 -241
- package/dist/core/media/processors/cloudflare-images.js.map +0 -1
- package/dist/core/media/processors/cloudflare-transform-store.d.ts +0 -127
- package/dist/core/media/processors/cloudflare-transform-store.d.ts.map +0 -1
- package/dist/core/media/processors/cloudflare-transform-store.js +0 -237
- package/dist/core/media/processors/cloudflare-transform-store.js.map +0 -1
- package/dist/core/media/processors/cloudflare-transformations.d.ts +0 -81
- package/dist/core/media/processors/cloudflare-transformations.d.ts.map +0 -1
- package/dist/core/media/processors/cloudflare-transformations.js +0 -144
- package/dist/core/media/processors/cloudflare-transformations.js.map +0 -1
- package/dist/core/media/processors/workers-images.d.ts +0 -112
- package/dist/core/media/processors/workers-images.d.ts.map +0 -1
- package/dist/core/media/processors/workers-images.js +0 -257
- package/dist/core/media/processors/workers-images.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-d1-adapter.js","sourceRoot":"","sources":["../../../src/adapters/cloudflare-d1/cloudflare-d1-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { CloudflareD1Adapter } from './cloudflare-d1-adapter.js';
|
|
2
|
+
export { D1RateLimitStore } from './rate-limit-store.js';
|
|
3
|
+
export type { D1RateLimitStoreConfig } from './rate-limit-store.js';
|
|
4
|
+
export type { CloudflareD1AdapterConfig, D1DocumentRow, D1UserRow, D1AppTokenRow, D1AuthFlowStateRow } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/cloudflare-d1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACnE,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,SAAS,EACT,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { CloudflareD1Adapter } from './cloudflare-d1-adapter.js';
|
|
2
|
+
export { D1RateLimitStore } from './rate-limit-store.js';
|
|
3
|
+
// Auto-register in the adapter registry when imported, like the other adapters.
|
|
4
|
+
import { registerAdapter } from '../../core/index.js';
|
|
5
|
+
import { CloudflareD1Adapter } from './cloudflare-d1-adapter.js';
|
|
6
|
+
registerAdapter({
|
|
7
|
+
name: 'cloudflare-d1',
|
|
8
|
+
type: 'data',
|
|
9
|
+
environments: ['edge', 'cloudflare'],
|
|
10
|
+
factory: (config) => new CloudflareD1Adapter(config)
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/cloudflare-d1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAUxD,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGhE,eAAe,CAAC;IACd,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;IACpC,OAAO,EAAE,CAAC,MAAiC,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC;CAChF,CAAC,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limit counters in D1.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately D1 and not Durable Objects or KV. A Trokky install on Workers
|
|
5
|
+
* already has a D1 binding — it is the data store — so counters here add no new
|
|
6
|
+
* binding, no new resource to provision and nothing extra for a one-click deploy
|
|
7
|
+
* to create. KV is the wrong shape entirely: its reads are cached and its writes
|
|
8
|
+
* take up to a minute to propagate, so a limiter built on it would admit a burst
|
|
9
|
+
* it believes it has already refused.
|
|
10
|
+
*
|
|
11
|
+
* Affordability comes from the lease in `core/security/rate-limit-store.ts`, not
|
|
12
|
+
* from the storage: one statement per lease, not per request.
|
|
13
|
+
*/
|
|
14
|
+
import type { D1Database } from '@cloudflare/workers-types';
|
|
15
|
+
import type { RateLimitReservation, RateLimitStore } from '../../core/security/rate-limit-store.js';
|
|
16
|
+
export interface D1RateLimitStoreConfig {
|
|
17
|
+
database: D1Database;
|
|
18
|
+
/** Must match the adapter's, so both see the same table. @default 'trokky_' */
|
|
19
|
+
tablePrefix?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class D1RateLimitStore implements RateLimitStore {
|
|
22
|
+
private readonly db;
|
|
23
|
+
private readonly table;
|
|
24
|
+
private ready;
|
|
25
|
+
private lastSweep;
|
|
26
|
+
constructor(config: D1RateLimitStoreConfig);
|
|
27
|
+
private ensureTable;
|
|
28
|
+
/**
|
|
29
|
+
* One statement, so two isolates reserving at once cannot both be handed the
|
|
30
|
+
* last unit. In SQLite's `DO UPDATE`, a `table.column` reference is the row as
|
|
31
|
+
* it was before this statement, which is what makes the arithmetic sound.
|
|
32
|
+
*
|
|
33
|
+
* `last_granted` exists because `RETURNING` reports the row's final state and
|
|
34
|
+
* we need the delta. Computing it in the same statement and reading it back is
|
|
35
|
+
* how the caller learns what it actually got.
|
|
36
|
+
*/
|
|
37
|
+
reserve({ key, windowStart, want, max }: RateLimitReservation): Promise<number>;
|
|
38
|
+
/**
|
|
39
|
+
* Opportunistic garbage collection. There is no background timer on an edge
|
|
40
|
+
* runtime, so old rows are cleared during a request that was going to touch
|
|
41
|
+
* this table anyway, and at most once every few minutes per isolate. Nothing
|
|
42
|
+
* depends on it: a stale row is overwritten by the next window's reservation.
|
|
43
|
+
*/
|
|
44
|
+
private maybeSweep;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=rate-limit-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit-store.d.ts","sourceRoot":"","sources":["../../../src/adapters/cloudflare-d1/rate-limit-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AAKnG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,UAAU,CAAA;IACpB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,SAAS,CAAI;gBAET,MAAM,EAAE,sBAAsB;YAK5B,WAAW;IAqBzB;;;;;;;;OAQG;IACU,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IA4B5F;;;;;OAKG;YACW,UAAU;CAazB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limit counters in D1.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately D1 and not Durable Objects or KV. A Trokky install on Workers
|
|
5
|
+
* already has a D1 binding — it is the data store — so counters here add no new
|
|
6
|
+
* binding, no new resource to provision and nothing extra for a one-click deploy
|
|
7
|
+
* to create. KV is the wrong shape entirely: its reads are cached and its writes
|
|
8
|
+
* take up to a minute to propagate, so a limiter built on it would admit a burst
|
|
9
|
+
* it believes it has already refused.
|
|
10
|
+
*
|
|
11
|
+
* Affordability comes from the lease in `core/security/rate-limit-store.ts`, not
|
|
12
|
+
* from the storage: one statement per lease, not per request.
|
|
13
|
+
*/
|
|
14
|
+
/** How often, at most, to delete counters from windows long past. */
|
|
15
|
+
const SWEEP_INTERVAL_MS = 5 * 60 * 1000;
|
|
16
|
+
export class D1RateLimitStore {
|
|
17
|
+
db;
|
|
18
|
+
table;
|
|
19
|
+
ready = null;
|
|
20
|
+
lastSweep = 0;
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.db = config.database;
|
|
23
|
+
this.table = `${config.tablePrefix ?? 'trokky_'}rate_limits`;
|
|
24
|
+
}
|
|
25
|
+
async ensureTable() {
|
|
26
|
+
if (!this.ready) {
|
|
27
|
+
this.ready = (async () => {
|
|
28
|
+
await this.db
|
|
29
|
+
.prepare(`CREATE TABLE IF NOT EXISTS ${this.table} (
|
|
30
|
+
key TEXT PRIMARY KEY,
|
|
31
|
+
window_start INTEGER NOT NULL,
|
|
32
|
+
used INTEGER NOT NULL,
|
|
33
|
+
last_granted INTEGER NOT NULL
|
|
34
|
+
)`)
|
|
35
|
+
.run();
|
|
36
|
+
})().catch(error => {
|
|
37
|
+
this.ready = null;
|
|
38
|
+
throw error;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
await this.ready;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* One statement, so two isolates reserving at once cannot both be handed the
|
|
45
|
+
* last unit. In SQLite's `DO UPDATE`, a `table.column` reference is the row as
|
|
46
|
+
* it was before this statement, which is what makes the arithmetic sound.
|
|
47
|
+
*
|
|
48
|
+
* `last_granted` exists because `RETURNING` reports the row's final state and
|
|
49
|
+
* we need the delta. Computing it in the same statement and reading it back is
|
|
50
|
+
* how the caller learns what it actually got.
|
|
51
|
+
*/
|
|
52
|
+
async reserve({ key, windowStart, want, max }) {
|
|
53
|
+
await this.ensureTable();
|
|
54
|
+
const initial = Math.max(0, Math.min(want, max));
|
|
55
|
+
const row = await this.db
|
|
56
|
+
.prepare(`INSERT INTO ${this.table} (key, window_start, used, last_granted)
|
|
57
|
+
VALUES (?1, ?2, ?3, ?3)
|
|
58
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
59
|
+
last_granted = CASE
|
|
60
|
+
WHEN ${this.table}.window_start < ?2 THEN ?3
|
|
61
|
+
ELSE MAX(0, MIN(?4, ?5 - ${this.table}.used))
|
|
62
|
+
END,
|
|
63
|
+
used = CASE
|
|
64
|
+
WHEN ${this.table}.window_start < ?2 THEN ?3
|
|
65
|
+
ELSE ${this.table}.used + MAX(0, MIN(?4, ?5 - ${this.table}.used))
|
|
66
|
+
END,
|
|
67
|
+
window_start = ?2
|
|
68
|
+
RETURNING last_granted AS granted`)
|
|
69
|
+
.bind(key, windowStart, initial, want, max)
|
|
70
|
+
.first();
|
|
71
|
+
void this.maybeSweep(windowStart);
|
|
72
|
+
return Number(row?.granted ?? 0);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Opportunistic garbage collection. There is no background timer on an edge
|
|
76
|
+
* runtime, so old rows are cleared during a request that was going to touch
|
|
77
|
+
* this table anyway, and at most once every few minutes per isolate. Nothing
|
|
78
|
+
* depends on it: a stale row is overwritten by the next window's reservation.
|
|
79
|
+
*/
|
|
80
|
+
async maybeSweep(windowStart) {
|
|
81
|
+
const now = Date.now();
|
|
82
|
+
if (now - this.lastSweep < SWEEP_INTERVAL_MS)
|
|
83
|
+
return;
|
|
84
|
+
this.lastSweep = now;
|
|
85
|
+
try {
|
|
86
|
+
await this.db
|
|
87
|
+
.prepare(`DELETE FROM ${this.table} WHERE window_start < ?`)
|
|
88
|
+
.bind(windowStart - SWEEP_INTERVAL_MS)
|
|
89
|
+
.run();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Best effort by design; a failed sweep must never fail a request.
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=rate-limit-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit-store.js","sourceRoot":"","sources":["../../../src/adapters/cloudflare-d1/rate-limit-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAQvC,MAAM,OAAO,gBAAgB;IACV,EAAE,CAAY;IACd,KAAK,CAAQ;IACtB,KAAK,GAAyB,IAAI,CAAA;IAClC,SAAS,GAAG,CAAC,CAAA;IAErB,YAAY,MAA8B;QACxC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,SAAS,aAAa,CAAA;IAC9D,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,IAAI,CAAC,EAAE;qBACV,OAAO,CACN,8BAA8B,IAAI,CAAC,KAAK;;;;;eAKrC,CACJ;qBACA,GAAG,EAAE,CAAA;YACV,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;gBACjB,MAAM,KAAK,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAA;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAwB;QACxE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QAEhD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN,eAAe,IAAI,CAAC,KAAK;;;;oBAIb,IAAI,CAAC,KAAK;wCACU,IAAI,CAAC,KAAK;;;oBAG9B,IAAI,CAAC,KAAK;oBACV,IAAI,CAAC,KAAK,+BAA+B,IAAI,CAAC,KAAK;;;2CAG5B,CACpC;aACA,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC;aAC1C,KAAK,EAAuB,CAAA;QAE/B,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QACjC,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,CAAC,CAAA;IAClC,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,UAAU,CAAC,WAAmB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,iBAAiB;YAAE,OAAM;QACpD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE;iBACV,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,yBAAyB,CAAC;iBAC3D,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;iBACrC,GAAG,EAAE,CAAA;QACV,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { D1Database } from '@cloudflare/workers-types';
|
|
2
|
+
export interface CloudflareD1AdapterConfig {
|
|
3
|
+
/**
|
|
4
|
+
* The D1 binding from the platform, e.g. `env.DB`. Required: unlike a
|
|
5
|
+
* connection string there is nothing an edge runtime can dial on its own.
|
|
6
|
+
*/
|
|
7
|
+
database: D1Database;
|
|
8
|
+
/** Table name prefix for all Trokky tables. @default 'trokky_' */
|
|
9
|
+
tablePrefix?: string;
|
|
10
|
+
/** Create tables and indexes on first use. @default true */
|
|
11
|
+
autoMigrate?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** A row of the documents table, before mapping. */
|
|
14
|
+
export interface D1DocumentRow {
|
|
15
|
+
collection: string;
|
|
16
|
+
id: string;
|
|
17
|
+
data: string;
|
|
18
|
+
status: string | null;
|
|
19
|
+
created_at: string;
|
|
20
|
+
updated_at: string;
|
|
21
|
+
created_by: string | null;
|
|
22
|
+
updated_by: string | null;
|
|
23
|
+
created_by_type: string | null;
|
|
24
|
+
updated_by_type: string | null;
|
|
25
|
+
revision: number;
|
|
26
|
+
}
|
|
27
|
+
/** A row of the users table, before mapping. */
|
|
28
|
+
export interface D1UserRow {
|
|
29
|
+
id: string;
|
|
30
|
+
username: string;
|
|
31
|
+
email: string;
|
|
32
|
+
password_hash: string | null;
|
|
33
|
+
first_name: string | null;
|
|
34
|
+
last_name: string | null;
|
|
35
|
+
role: string | null;
|
|
36
|
+
permissions: string | null;
|
|
37
|
+
is_active: number | null;
|
|
38
|
+
profile_image: string | null;
|
|
39
|
+
preferences: string | null;
|
|
40
|
+
oauth_providers: string | null;
|
|
41
|
+
mfa: string | null;
|
|
42
|
+
passkeys: string | null;
|
|
43
|
+
last_login_at: string | null;
|
|
44
|
+
created_at: string;
|
|
45
|
+
updated_at: string;
|
|
46
|
+
}
|
|
47
|
+
/** A row of the app_tokens table, before mapping. */
|
|
48
|
+
export interface D1AppTokenRow {
|
|
49
|
+
id: string;
|
|
50
|
+
name: string;
|
|
51
|
+
description: string | null;
|
|
52
|
+
hash: string;
|
|
53
|
+
permissions: string | null;
|
|
54
|
+
created_by: string | null;
|
|
55
|
+
is_active: number | null;
|
|
56
|
+
usage_count: number | null;
|
|
57
|
+
last_used_at: string | null;
|
|
58
|
+
expires_at: string | null;
|
|
59
|
+
created_at: string;
|
|
60
|
+
updated_at: string;
|
|
61
|
+
}
|
|
62
|
+
/** A row of the auth_flow_state table, before mapping. */
|
|
63
|
+
export interface D1AuthFlowStateRow {
|
|
64
|
+
id: string;
|
|
65
|
+
kind: string;
|
|
66
|
+
data: string;
|
|
67
|
+
expires_at: string;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/cloudflare-d1/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,EAAE,UAAU,CAAA;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,gDAAgD;AAChD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/cloudflare-d1/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare R2 media storage adapter.
|
|
3
|
+
*
|
|
4
|
+
* R2 is a flat key/value object store with no directories, no metadata queries and no
|
|
5
|
+
* transactions, which drives every choice below:
|
|
6
|
+
*
|
|
7
|
+
* - **Bytes and description are two objects.** `files/<id>` holds the content and
|
|
8
|
+
* `meta/<id>.json` holds the record. Updating a title must not rewrite a 12MB photo,
|
|
9
|
+
* and serving the photo must not parse JSON.
|
|
10
|
+
* - **The listing carries its own index.** The sortable and filterable fields are
|
|
11
|
+
* mirrored into each record object's `customMetadata`, so `listMedia` can filter, sort
|
|
12
|
+
* and count from one `list()` sweep and then read full records only for the page it is
|
|
13
|
+
* about to return. Without that, listing 900 files would mean 900 GETs.
|
|
14
|
+
* - **The record object is the source of truth for existence.** It is written last on
|
|
15
|
+
* upload and deleted first on delete, so a half-finished operation can leave an
|
|
16
|
+
* orphaned blob — which `cleanup()` reclaims — but never a listing entry pointing at
|
|
17
|
+
* bytes that are not there.
|
|
18
|
+
* - **Variant keys carry no format.** `variants/<id>/<name>` with the format in
|
|
19
|
+
* `customMetadata` means re-encoding a variant to another format overwrites it instead
|
|
20
|
+
* of leaving both behind, and reading one needs no lookup in the parent's metadata.
|
|
21
|
+
* - **Caller fields are namespaced under `custom`.** A caller passing `{ size: 0 }` to
|
|
22
|
+
* `updateFile` must not be able to shadow the real size in the listing index.
|
|
23
|
+
*/
|
|
24
|
+
import type { MediaFile, MediaMetadata } from '../../core/types/index.js';
|
|
25
|
+
import type { MediaListOptions, MediaListResult, MediaStorageAdapter, MediaVariant } from '../../core/types/storage-adapters.js';
|
|
26
|
+
import type { CloudflareR2AdapterConfig } from './types.js';
|
|
27
|
+
export declare class CloudflareR2Adapter implements MediaStorageAdapter {
|
|
28
|
+
private readonly bucket;
|
|
29
|
+
private readonly prefix;
|
|
30
|
+
private readonly publicBaseUrl?;
|
|
31
|
+
private readonly maxFileSize;
|
|
32
|
+
private readonly silent;
|
|
33
|
+
private readonly logger;
|
|
34
|
+
constructor(config: CloudflareR2AdapterConfig);
|
|
35
|
+
private fileKey;
|
|
36
|
+
private recordKey;
|
|
37
|
+
private variantKey;
|
|
38
|
+
private variantPrefix;
|
|
39
|
+
uploadFile(file: File, metadata: MediaMetadata): Promise<MediaFile>;
|
|
40
|
+
getFile(id: string): Promise<MediaFile | null>;
|
|
41
|
+
updateFile(id: string, metadata: Record<string, any>): Promise<MediaFile>;
|
|
42
|
+
getFileContent(id: string): Promise<ArrayBuffer | null>;
|
|
43
|
+
getFileUrl(id: string): Promise<string | null>;
|
|
44
|
+
fileExists(id: string): Promise<boolean>;
|
|
45
|
+
getFileSize(id: string): Promise<number | null>;
|
|
46
|
+
deleteFile(id: string): Promise<void>;
|
|
47
|
+
listMedia(options?: MediaListOptions): Promise<MediaListResult>;
|
|
48
|
+
saveVariantFile(parentId: string, variantName: string, buffer: Buffer, format: string): Promise<string>;
|
|
49
|
+
getVariantContent(parentId: string, variantName: string): Promise<ArrayBuffer | null>;
|
|
50
|
+
getVariantUrl(parentId: string, variantName: string): Promise<string | null>;
|
|
51
|
+
listVariants(parentId: string): Promise<MediaVariant[]>;
|
|
52
|
+
deleteVariantFiles(parentId: string): Promise<void>;
|
|
53
|
+
deleteVariant(parentId: string, variantName: string): Promise<void>;
|
|
54
|
+
healthCheck(): Promise<boolean>;
|
|
55
|
+
getStorageInfo(): Promise<{
|
|
56
|
+
totalFiles: number;
|
|
57
|
+
totalSize: number;
|
|
58
|
+
availableSpace?: number;
|
|
59
|
+
usedSpace?: number;
|
|
60
|
+
[key: string]: unknown;
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Delete blobs and variants no record points at any more.
|
|
64
|
+
*
|
|
65
|
+
* These accumulate when a delete or an upload is interrupted between its two writes. The
|
|
66
|
+
* record objects are the authority: anything under `files/` or `variants/` whose id has no
|
|
67
|
+
* record is unreachable and safe to drop.
|
|
68
|
+
*/
|
|
69
|
+
cleanup(): Promise<number>;
|
|
70
|
+
private writeRecord;
|
|
71
|
+
private readRecord;
|
|
72
|
+
/**
|
|
73
|
+
* Every record in the bucket, read from the listing's customMetadata rather than from the
|
|
74
|
+
* objects themselves. A record written without that index (an older adapter, a manual copy)
|
|
75
|
+
* falls back to a real read so it is not silently invisible.
|
|
76
|
+
*/
|
|
77
|
+
private listIndex;
|
|
78
|
+
/** Walk every page of a prefix; R2 truncates, and a partial listing would mis-count totals. */
|
|
79
|
+
private listAll;
|
|
80
|
+
/** R2 accepts up to 1000 keys per delete; anything longer is chunked. */
|
|
81
|
+
private deleteKeys;
|
|
82
|
+
private sortIndex;
|
|
83
|
+
private toMediaFile;
|
|
84
|
+
private validateMediaMetadata;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=cloudflare-r2-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-r2-adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/cloudflare-r2/cloudflare-r2-adapter.ts"],"names":[],"mappings":"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"}
|