@portel/photon-core 2.25.0 → 2.27.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 (55) hide show
  1. package/README.md +121 -0
  2. package/dist/asset-discovery.d.ts +8 -2
  3. package/dist/asset-discovery.d.ts.map +1 -1
  4. package/dist/asset-discovery.js +46 -9
  5. package/dist/asset-discovery.js.map +1 -1
  6. package/dist/base.d.ts +76 -0
  7. package/dist/base.d.ts.map +1 -1
  8. package/dist/base.js +80 -0
  9. package/dist/base.js.map +1 -1
  10. package/dist/cf.d.ts +121 -0
  11. package/dist/cf.d.ts.map +1 -0
  12. package/dist/cf.js +65 -0
  13. package/dist/cf.js.map +1 -0
  14. package/dist/cloudflare.d.ts +110 -0
  15. package/dist/cloudflare.d.ts.map +1 -0
  16. package/dist/cloudflare.js +138 -0
  17. package/dist/cloudflare.js.map +1 -0
  18. package/dist/collections/Collection.d.ts +12 -0
  19. package/dist/collections/Collection.d.ts.map +1 -1
  20. package/dist/collections/Collection.js +19 -0
  21. package/dist/collections/Collection.js.map +1 -1
  22. package/dist/env.d.ts +29 -0
  23. package/dist/env.d.ts.map +1 -0
  24. package/dist/env.js +2 -0
  25. package/dist/env.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/mixins.d.ts.map +1 -1
  31. package/dist/mixins.js +10 -0
  32. package/dist/mixins.js.map +1 -1
  33. package/dist/photon-loader-lite.d.ts +17 -0
  34. package/dist/photon-loader-lite.d.ts.map +1 -1
  35. package/dist/photon-loader-lite.js +150 -1
  36. package/dist/photon-loader-lite.js.map +1 -1
  37. package/dist/schema-extractor.d.ts +25 -6
  38. package/dist/schema-extractor.d.ts.map +1 -1
  39. package/dist/schema-extractor.js +86 -7
  40. package/dist/schema-extractor.js.map +1 -1
  41. package/dist/types.d.ts +1 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/types.js.map +1 -1
  44. package/package.json +3 -2
  45. package/src/asset-discovery.ts +44 -9
  46. package/src/base.ts +86 -0
  47. package/src/cf.ts +165 -0
  48. package/src/cloudflare.ts +198 -0
  49. package/src/collections/Collection.ts +19 -0
  50. package/src/env.ts +28 -0
  51. package/src/index.ts +27 -0
  52. package/src/mixins.ts +12 -0
  53. package/src/photon-loader-lite.ts +185 -0
  54. package/src/schema-extractor.ts +119 -9
  55. package/src/types.ts +16 -1
package/dist/cf.d.ts ADDED
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Cloudflare capability surface — `this.cf.*`
3
+ *
4
+ * Photons reach into Cloudflare features (R2, KV, D1, Workers AI, Queues,
5
+ * Vectorize, Images, Browser Rendering, Durable Objects) through one
6
+ * namespace. The runtime adapter that wraps a photon decides what backs
7
+ * each binding:
8
+ *
9
+ * - Local: `miniflare` provides an in-process sandbox seeded from the
10
+ * photon's `protected cfBindings = { ... }` config.
11
+ * - Deployed Worker: the real `env` is proxied through.
12
+ *
13
+ * Both paths satisfy the same shape, so the photon source is unchanged.
14
+ *
15
+ * Typing: we publish minimal structural shapes here rather than re-exporting
16
+ * `@cloudflare/workers-types`. The cost of importing the full workers-types
17
+ * tree (~6k lines of declarations) into every photon's transform pipeline
18
+ * showed up as flaky `EPIPE` errors under tsx. Photons that already use
19
+ * workers-types get exact compatibility through structural typing — assign
20
+ * a `R2Bucket` from workers-types into our `R2BucketLike` and TS accepts
21
+ * it. Photons that don't use workers-types still see typed methods on
22
+ * the namespace and full autocomplete on the runtime methods we expose
23
+ * here.
24
+ */
25
+ /**
26
+ * Minimal R2 bucket surface — covers the methods photons actually call.
27
+ * Structurally compatible with `@cloudflare/workers-types` `R2Bucket`.
28
+ */
29
+ export interface R2BucketLike {
30
+ head(key: string): Promise<unknown>;
31
+ get(key: string, options?: unknown): Promise<unknown>;
32
+ put(key: string, value: unknown, options?: unknown): Promise<unknown>;
33
+ delete(keys: string | string[]): Promise<void>;
34
+ list(options?: unknown): Promise<unknown>;
35
+ }
36
+ /** Minimal KV namespace surface. */
37
+ export interface KVNamespaceLike {
38
+ get(key: string, options?: unknown): Promise<unknown>;
39
+ put(key: string, value: string | ArrayBuffer | ArrayBufferView | ReadableStream, options?: unknown): Promise<void>;
40
+ delete(key: string): Promise<void>;
41
+ list(options?: unknown): Promise<unknown>;
42
+ }
43
+ /** Minimal D1 database surface. */
44
+ export interface D1DatabaseLike {
45
+ prepare(query: string): D1PreparedStatementLike;
46
+ batch<T = unknown>(statements: D1PreparedStatementLike[]): Promise<T[]>;
47
+ exec(query: string): Promise<unknown>;
48
+ dump(): Promise<ArrayBuffer>;
49
+ }
50
+ /** Minimal D1 prepared statement surface. */
51
+ export interface D1PreparedStatementLike {
52
+ bind(...values: unknown[]): D1PreparedStatementLike;
53
+ first<T = unknown>(colName?: string): Promise<T | null>;
54
+ run<T = unknown>(): Promise<T>;
55
+ all<T = unknown>(): Promise<T>;
56
+ raw<T = unknown>(): Promise<T[]>;
57
+ }
58
+ /** Minimal queue surface. */
59
+ export interface QueueLike<Body = unknown> {
60
+ send(message: Body, options?: unknown): Promise<void>;
61
+ sendBatch(messages: {
62
+ body: Body;
63
+ }[], options?: unknown): Promise<void>;
64
+ }
65
+ /** Minimal vectorize surface. */
66
+ export interface VectorizeIndexLike {
67
+ insert(vectors: unknown[]): Promise<unknown>;
68
+ upsert(vectors: unknown[]): Promise<unknown>;
69
+ query(vector: number[], options?: unknown): Promise<unknown>;
70
+ getByIds(ids: string[]): Promise<unknown>;
71
+ deleteByIds(ids: string[]): Promise<unknown>;
72
+ }
73
+ /** Minimal Workers AI surface. */
74
+ export interface AiLike {
75
+ run(model: string, inputs: unknown, options?: unknown): Promise<unknown>;
76
+ }
77
+ /** Minimal Cloudflare Images binding surface. */
78
+ export interface ImagesBindingLike {
79
+ info(stream: ReadableStream): Promise<unknown>;
80
+ input(stream: ReadableStream): unknown;
81
+ }
82
+ /** Minimal Fetcher surface (Service binding / Browser Rendering). */
83
+ export interface FetcherLike {
84
+ fetch(input: string, init?: unknown): Promise<unknown>;
85
+ }
86
+ /** Minimal Durable Object namespace surface. */
87
+ export interface DurableObjectNamespaceLike {
88
+ idFromName(name: string): unknown;
89
+ idFromString(id: string): unknown;
90
+ newUniqueId(): unknown;
91
+ get(id: unknown): {
92
+ fetch(input: string, init?: unknown): Promise<unknown>;
93
+ };
94
+ }
95
+ /**
96
+ * Cloudflare runtime surface as exposed via `this.cf`.
97
+ *
98
+ * Each subnamespace returns either an upstream Cloudflare type or a
99
+ * runtime-supplied proxy with the same shape. Backends:
100
+ * - Local: miniflare instance configured from `protected cfBindings`.
101
+ * - Deployed Worker: real `env.<binding>` passed through.
102
+ */
103
+ export interface CFRuntime {
104
+ r2(name: string): R2BucketLike;
105
+ kv(name: string): KVNamespaceLike;
106
+ d1(name: string): D1DatabaseLike;
107
+ queue<Body = unknown>(name: string): QueueLike<Body>;
108
+ vectorize(name: string): VectorizeIndexLike;
109
+ ai: AiLike;
110
+ images: ImagesBindingLike;
111
+ browser: FetcherLike;
112
+ fetch(input: string, init?: unknown): Promise<unknown>;
113
+ }
114
+ /**
115
+ * Returns a stub `CFRuntime` whose subnamespaces throw a helpful error
116
+ * when used. Callers should hold one instance per photon (mirrors the
117
+ * `_memory` and `_schedule` lazy-init pattern) so identity-sensitive
118
+ * checks remain consistent across reads of `this.cf`.
119
+ */
120
+ export declare function notConfiguredCF(): CFRuntime;
121
+ //# sourceMappingURL=cf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cf.d.ts","sourceRoot":"","sources":["../src/cf.ts"],"names":[],"mappings":"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"}
package/dist/cf.js ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Cloudflare capability surface — `this.cf.*`
3
+ *
4
+ * Photons reach into Cloudflare features (R2, KV, D1, Workers AI, Queues,
5
+ * Vectorize, Images, Browser Rendering, Durable Objects) through one
6
+ * namespace. The runtime adapter that wraps a photon decides what backs
7
+ * each binding:
8
+ *
9
+ * - Local: `miniflare` provides an in-process sandbox seeded from the
10
+ * photon's `protected cfBindings = { ... }` config.
11
+ * - Deployed Worker: the real `env` is proxied through.
12
+ *
13
+ * Both paths satisfy the same shape, so the photon source is unchanged.
14
+ *
15
+ * Typing: we publish minimal structural shapes here rather than re-exporting
16
+ * `@cloudflare/workers-types`. The cost of importing the full workers-types
17
+ * tree (~6k lines of declarations) into every photon's transform pipeline
18
+ * showed up as flaky `EPIPE` errors under tsx. Photons that already use
19
+ * workers-types get exact compatibility through structural typing — assign
20
+ * a `R2Bucket` from workers-types into our `R2BucketLike` and TS accepts
21
+ * it. Photons that don't use workers-types still see typed methods on
22
+ * the namespace and full autocomplete on the runtime methods we expose
23
+ * here.
24
+ */
25
+ const HINT = 'No Cloudflare runtime is configured. Either run this photon under a ' +
26
+ 'CF-aware host (local Beam with miniflare, or deployed to Cloudflare ' +
27
+ 'Workers), declare `protected cfBindings = { ... }` on the class, or ' +
28
+ 'remove the `this.cf` usage.';
29
+ function throwingFn(category) {
30
+ return (..._args) => {
31
+ throw new Error(`this.cf.${category}() called but ${HINT}`);
32
+ };
33
+ }
34
+ function throwingProperty(category) {
35
+ return new Proxy(Object.create(null), {
36
+ get(_target, prop) {
37
+ if (prop === Symbol.toPrimitive || prop === 'toString') {
38
+ return () => `[unconfigured this.cf.${category}]`;
39
+ }
40
+ throw new Error(`this.cf.${category}.${String(prop)} accessed but ${HINT}`);
41
+ },
42
+ });
43
+ }
44
+ /**
45
+ * Returns a stub `CFRuntime` whose subnamespaces throw a helpful error
46
+ * when used. Callers should hold one instance per photon (mirrors the
47
+ * `_memory` and `_schedule` lazy-init pattern) so identity-sensitive
48
+ * checks remain consistent across reads of `this.cf`.
49
+ */
50
+ export function notConfiguredCF() {
51
+ return {
52
+ r2: throwingFn('r2'),
53
+ kv: throwingFn('kv'),
54
+ d1: throwingFn('d1'),
55
+ queue: throwingFn('queue'),
56
+ vectorize: throwingFn('vectorize'),
57
+ ai: throwingProperty('ai'),
58
+ images: throwingProperty('images'),
59
+ browser: throwingProperty('browser'),
60
+ fetch: ((_input, _init) => {
61
+ throw new Error(`this.cf.fetch() called but ${HINT}`);
62
+ }),
63
+ };
64
+ }
65
+ //# sourceMappingURL=cf.js.map
package/dist/cf.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cf.js","sourceRoot":"","sources":["../src/cf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAkGH,MAAM,IAAI,GACR,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,6BAA6B,CAAC;AAEhC,SAAS,UAAU,CAAC,QAAgB;IAClC,OAAO,CAAC,GAAG,KAAgB,EAAE,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACpC,GAAG,CAAC,OAAO,EAAE,IAAI;YACf,IAAI,IAAI,KAAK,MAAM,CAAC,WAAW,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACvD,OAAO,GAAG,EAAE,CAAC,yBAAyB,QAAQ,GAAG,CAAC;YACpD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;KACF,CAAU,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,IAAI,CAAoB;QACvC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAoB;QACvC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAoB;QACvC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAuB;QAChD,SAAS,EAAE,UAAU,CAAC,WAAW,CAA2B;QAC5D,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAsB;QAC/C,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAiC;QAClE,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAA2B;QAC9D,KAAK,EAAE,CAAC,CAAC,MAAc,EAAE,KAAe,EAAE,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC,CAAuB;KACzB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Cloudflare — wrapped, auto-named CF surface injected via constructor.
3
+ *
4
+ * Where `CloudflareEnv<T>` exposes the raw Worker `env` (escape hatch for
5
+ * service bindings, exotic features, anything we don't wrap), `Cloudflare`
6
+ * is the ergonomic 95% path: photons call `cf.kv()` / `cf.r2()` / etc.
7
+ * with optional qualifier strings, and the runtime resolves bindings by
8
+ * the **photon name + suffix** convention — so authors never pick names
9
+ * that could collide across photons.
10
+ *
11
+ * Importing `Cloudflare` (or `CloudflareEnv`) into a photon's source is
12
+ * the explicit signal that the photon depends on a Cloudflare deploy
13
+ * target. Outside of CF (or its local miniflare mirror), the loader
14
+ * injects a throwing Proxy and the message names the imported symbol so
15
+ * the diagnostic is unambiguous.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import type { Photon, Cloudflare } from "@portel/photon";
20
+ *
21
+ * export class Gallery {
22
+ * constructor(
23
+ * private photon: Photon,
24
+ * private cf: Cloudflare,
25
+ * ) {}
26
+ * async upload(name: string, blob: Blob) {
27
+ * await this.cf.r2().put(name, blob); // gallery_r2
28
+ * await this.cf.d1().prepare("...").bind(name).run(); // gallery_d1
29
+ * await this.photon.memory.set(name, Date.now());
30
+ * }
31
+ * }
32
+ * ```
33
+ *
34
+ * Multi-resource case — qualifier namespaces under the photon:
35
+ * ```ts
36
+ * this.cf.kv() // gallery_kv (default for this photon)
37
+ * this.cf.kv("cache") // gallery_cache_kv
38
+ * this.cf.kv("sessions") // gallery_sessions_kv
39
+ * ```
40
+ *
41
+ * Override path stays in `protected cfBindings = { ... }` — present only
42
+ * when an author needs to point a named binding at a pre-existing CF
43
+ * resource owned outside the photon.
44
+ */
45
+ import { type R2BucketLike, type KVNamespaceLike, type D1DatabaseLike, type QueueLike, type VectorizeIndexLike, type AiLike, type ImagesBindingLike, type FetcherLike } from './cf.js';
46
+ /**
47
+ * The wrapped Cloudflare surface. Methods that take a resource type
48
+ * (kv, r2, d1, queue, vectorize) accept an **optional** qualifier — when
49
+ * omitted, the runtime resolves the photon's default binding for that
50
+ * category. AI / images / browser are single shared bindings per Worker
51
+ * and have no qualifier.
52
+ */
53
+ export interface Cloudflare {
54
+ /** Resolves to `<photonName>_kv` (default) or `<photonName>_<qualifier>_kv`. */
55
+ kv(qualifier?: string): KVNamespaceLike;
56
+ /** Resolves to `<photonName>_r2` (default) or `<photonName>_<qualifier>_r2`. */
57
+ r2(qualifier?: string): R2BucketLike;
58
+ /** Resolves to `<photonName>_d1` (default) or `<photonName>_<qualifier>_d1`. */
59
+ d1(qualifier?: string): D1DatabaseLike;
60
+ /** Resolves to `<photonName>_queue` (default) or `<photonName>_<qualifier>_queue`. */
61
+ queue<Body = unknown>(qualifier?: string): QueueLike<Body>;
62
+ /** Resolves to `<photonName>_vectorize` (default) or `<photonName>_<qualifier>_vectorize`. */
63
+ vectorize(qualifier?: string): VectorizeIndexLike;
64
+ /** Workers AI — shared `AI` binding. */
65
+ readonly ai: AiLike;
66
+ /** Cloudflare Images — shared `IMAGES` binding. */
67
+ readonly images: ImagesBindingLike;
68
+ /** Browser Rendering — shared `BROWSER` binding. */
69
+ readonly browser: FetcherLike;
70
+ /** Top-level fetch (with optional service-binding routing). */
71
+ fetch(input: string, init?: unknown): Promise<unknown>;
72
+ }
73
+ /**
74
+ * Categories that are scoped per-photon and use the auto-naming
75
+ * convention. Shared categories (ai, images, browser) live outside this
76
+ * list and resolve to fixed binding names.
77
+ */
78
+ export type ScopedBindingCategory = 'kv' | 'r2' | 'd1' | 'queue' | 'vectorize';
79
+ /**
80
+ * Build the env binding name for a scoped category on a given photon.
81
+ * Default (no qualifier): `<photon>_<category>` (e.g. `gallery_kv`).
82
+ * With qualifier: `<photon>_<qualifier>_<category>` (e.g. `gallery_cache_kv`).
83
+ *
84
+ * The helper is exported so deploy-side codegen (wrangler.toml emission)
85
+ * uses the same naming rule the runtime resolves with.
86
+ */
87
+ export declare function bindingNameFor(photonName: string, category: ScopedBindingCategory, qualifier?: string): string;
88
+ /** Fixed binding name for a shared category. */
89
+ export declare const SHARED_AI_BINDING = "AI";
90
+ export declare const SHARED_IMAGES_BINDING = "IMAGES";
91
+ export declare const SHARED_BROWSER_BINDING = "BROWSER";
92
+ /**
93
+ * Throwing-Proxy fallback. Used by the loader when a photon's
94
+ * constructor types a `Cloudflare` parameter but no CF runtime was
95
+ * provided (e.g. unit tests that didn't pass a stub, or local hosts
96
+ * without miniflare configured).
97
+ */
98
+ export declare function notConfiguredCloudflare(): Cloudflare;
99
+ /**
100
+ * Build a `Cloudflare` surface backed directly by a Worker `env` (the
101
+ * deployed-CF case). Resolves auto-named bindings via the convention in
102
+ * `bindingNameFor`. Local hosts use the miniflare-backed factory in the
103
+ * photon repo's `runtime/cf-local.ts` instead.
104
+ *
105
+ * `env` is typed loosely so this module stays free of
106
+ * `@cloudflare/workers-types`. The deployed Worker template passes the
107
+ * real `env` straight through.
108
+ */
109
+ export declare function createCloudflareFromEnv(env: Record<string, unknown>, photonName: string): Cloudflare;
110
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IACxC,gFAAgF;IAChF,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,gFAAgF;IAChF,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACvC,sFAAsF;IACtF,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3D,8FAA8F;IAC9F,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAClD,wCAAwC;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,+DAA+D;IAC/D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/E;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAOR;AAED,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAQhD;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,CAwBpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,UAAU,EAAE,MAAM,GACjB,UAAU,CA6BZ"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Cloudflare — wrapped, auto-named CF surface injected via constructor.
3
+ *
4
+ * Where `CloudflareEnv<T>` exposes the raw Worker `env` (escape hatch for
5
+ * service bindings, exotic features, anything we don't wrap), `Cloudflare`
6
+ * is the ergonomic 95% path: photons call `cf.kv()` / `cf.r2()` / etc.
7
+ * with optional qualifier strings, and the runtime resolves bindings by
8
+ * the **photon name + suffix** convention — so authors never pick names
9
+ * that could collide across photons.
10
+ *
11
+ * Importing `Cloudflare` (or `CloudflareEnv`) into a photon's source is
12
+ * the explicit signal that the photon depends on a Cloudflare deploy
13
+ * target. Outside of CF (or its local miniflare mirror), the loader
14
+ * injects a throwing Proxy and the message names the imported symbol so
15
+ * the diagnostic is unambiguous.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import type { Photon, Cloudflare } from "@portel/photon";
20
+ *
21
+ * export class Gallery {
22
+ * constructor(
23
+ * private photon: Photon,
24
+ * private cf: Cloudflare,
25
+ * ) {}
26
+ * async upload(name: string, blob: Blob) {
27
+ * await this.cf.r2().put(name, blob); // gallery_r2
28
+ * await this.cf.d1().prepare("...").bind(name).run(); // gallery_d1
29
+ * await this.photon.memory.set(name, Date.now());
30
+ * }
31
+ * }
32
+ * ```
33
+ *
34
+ * Multi-resource case — qualifier namespaces under the photon:
35
+ * ```ts
36
+ * this.cf.kv() // gallery_kv (default for this photon)
37
+ * this.cf.kv("cache") // gallery_cache_kv
38
+ * this.cf.kv("sessions") // gallery_sessions_kv
39
+ * ```
40
+ *
41
+ * Override path stays in `protected cfBindings = { ... }` — present only
42
+ * when an author needs to point a named binding at a pre-existing CF
43
+ * resource owned outside the photon.
44
+ */
45
+ /**
46
+ * Build the env binding name for a scoped category on a given photon.
47
+ * Default (no qualifier): `<photon>_<category>` (e.g. `gallery_kv`).
48
+ * With qualifier: `<photon>_<qualifier>_<category>` (e.g. `gallery_cache_kv`).
49
+ *
50
+ * The helper is exported so deploy-side codegen (wrangler.toml emission)
51
+ * uses the same naming rule the runtime resolves with.
52
+ */
53
+ export function bindingNameFor(photonName, category, qualifier) {
54
+ const safePhoton = photonName.toLowerCase().replace(/-/g, '_');
55
+ if (qualifier && qualifier.length > 0) {
56
+ const safeQualifier = qualifier.toLowerCase().replace(/-/g, '_');
57
+ return `${safePhoton}_${safeQualifier}_${category}`;
58
+ }
59
+ return `${safePhoton}_${category}`;
60
+ }
61
+ /** Fixed binding name for a shared category. */
62
+ export const SHARED_AI_BINDING = 'AI';
63
+ export const SHARED_IMAGES_BINDING = 'IMAGES';
64
+ export const SHARED_BROWSER_BINDING = 'BROWSER';
65
+ const CF_HINT = 'This photon imports `Cloudflare` from "@portel/photon" but no CF ' +
66
+ 'runtime is attached. Run via `photon host run` (miniflare-backed) ' +
67
+ 'or deploy with `photon host deploy cloudflare`. Outside CF, this ' +
68
+ 'photon\'s CF-dependent methods cannot execute.';
69
+ /**
70
+ * Throwing-Proxy fallback. Used by the loader when a photon's
71
+ * constructor types a `Cloudflare` parameter but no CF runtime was
72
+ * provided (e.g. unit tests that didn't pass a stub, or local hosts
73
+ * without miniflare configured).
74
+ */
75
+ export function notConfiguredCloudflare() {
76
+ const throwing = (label) => (..._args) => {
77
+ throw new Error(`Cloudflare.${label} called but ${CF_HINT}`);
78
+ };
79
+ const throwingProp = (label) => new Proxy(Object.create(null), {
80
+ get(_t, prop) {
81
+ if (prop === Symbol.toPrimitive || prop === 'toString') {
82
+ return () => `[unconfigured Cloudflare.${label}]`;
83
+ }
84
+ throw new Error(`Cloudflare.${label}.${String(prop)} accessed but ${CF_HINT}`);
85
+ },
86
+ });
87
+ return {
88
+ kv: throwing('kv'),
89
+ r2: throwing('r2'),
90
+ d1: throwing('d1'),
91
+ queue: throwing('queue'),
92
+ vectorize: throwing('vectorize'),
93
+ ai: throwingProp('ai'),
94
+ images: throwingProp('images'),
95
+ browser: throwingProp('browser'),
96
+ fetch: throwing('fetch'),
97
+ };
98
+ }
99
+ /**
100
+ * Build a `Cloudflare` surface backed directly by a Worker `env` (the
101
+ * deployed-CF case). Resolves auto-named bindings via the convention in
102
+ * `bindingNameFor`. Local hosts use the miniflare-backed factory in the
103
+ * photon repo's `runtime/cf-local.ts` instead.
104
+ *
105
+ * `env` is typed loosely so this module stays free of
106
+ * `@cloudflare/workers-types`. The deployed Worker template passes the
107
+ * real `env` straight through.
108
+ */
109
+ export function createCloudflareFromEnv(env, photonName) {
110
+ const scoped = (category) => (qualifier) => {
111
+ const name = bindingNameFor(photonName, category, qualifier);
112
+ const binding = env[name];
113
+ if (binding === undefined) {
114
+ throw new Error(`Cloudflare.${category}(${qualifier ? JSON.stringify(qualifier) : ''}) ` +
115
+ `requires binding "${name}" on the Worker env, but it is not defined. ` +
116
+ `Add it to wrangler.toml (or run \`photon host deploy cloudflare\` to ` +
117
+ `regenerate bindings from the photon's declarations).`);
118
+ }
119
+ return binding;
120
+ };
121
+ return {
122
+ kv: scoped('kv'),
123
+ r2: scoped('r2'),
124
+ d1: scoped('d1'),
125
+ queue: scoped('queue'),
126
+ vectorize: scoped('vectorize'),
127
+ ai: (env[SHARED_AI_BINDING] ?? notConfiguredCloudflare().ai),
128
+ images: (env[SHARED_IMAGES_BINDING] ?? notConfiguredCloudflare().images),
129
+ browser: (env[SHARED_BROWSER_BINDING] ?? notConfiguredCloudflare().browser),
130
+ fetch: (input, init) => {
131
+ const fetcher = env['fetch'];
132
+ if (typeof fetcher === 'function')
133
+ return fetcher(input, init);
134
+ return fetch(input, init);
135
+ },
136
+ };
137
+ }
138
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -129,6 +129,18 @@ export declare class Collection<T> extends ReactiveArray<T> {
129
129
  /**
130
130
  * Attach a rendering hint for auto-UI.
131
131
  * Returns `this` for chaining at the end of a query.
132
+ *
133
+ * Pins `toJSON` as an own property here. Bun's `JSON.stringify`
134
+ * resolves the array branch before consulting the prototype's
135
+ * `toJSON`, so a prototype-only definition is silently bypassed
136
+ * for Array subclasses (Node 22 calls it correctly; Bun 1.2 does
137
+ * not). Installing the bound function as an own enumerable: false
138
+ * property makes both engines route through our serialization.
139
+ * Without `.as()` the photon shouldn't produce the metadata
140
+ * envelope at all, so the prototype-level `toJSON` (returns plain
141
+ * array) is fine — and JSON.stringify's array path produces the
142
+ * same plain array anyway, so the Bun divergence is invisible
143
+ * for that case.
132
144
  */
133
145
  as(format: RenderFormat, options?: Record<string, unknown>): this;
134
146
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/collections/Collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/collections/Collection.ts"],"names":[],"mappings":"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"}
@@ -286,9 +286,28 @@ export class Collection extends ReactiveArray {
286
286
  /**
287
287
  * Attach a rendering hint for auto-UI.
288
288
  * Returns `this` for chaining at the end of a query.
289
+ *
290
+ * Pins `toJSON` as an own property here. Bun's `JSON.stringify`
291
+ * resolves the array branch before consulting the prototype's
292
+ * `toJSON`, so a prototype-only definition is silently bypassed
293
+ * for Array subclasses (Node 22 calls it correctly; Bun 1.2 does
294
+ * not). Installing the bound function as an own enumerable: false
295
+ * property makes both engines route through our serialization.
296
+ * Without `.as()` the photon shouldn't produce the metadata
297
+ * envelope at all, so the prototype-level `toJSON` (returns plain
298
+ * array) is fine — and JSON.stringify's array path produces the
299
+ * same plain array anyway, so the Bun divergence is invisible
300
+ * for that case.
289
301
  */
290
302
  as(format, options) {
291
303
  this._renderHint = { format, options };
304
+ if (!Object.prototype.hasOwnProperty.call(this, 'toJSON')) {
305
+ Object.defineProperty(this, 'toJSON', {
306
+ value: this.toJSON.bind(this),
307
+ enumerable: false,
308
+ configurable: true,
309
+ });
310
+ }
292
311
  return this;
293
312
  }
294
313
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../src/collections/Collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAcjE,qEAAqE;AACrE,MAAM,YAAY,GAAY,GAAG,EAAE,GAAE,CAAC,CAAC;AAEvC,MAAM,OAAO,UAAc,SAAQ,aAAgB;IACjD,kCAAkC;IAClC,WAAW,GAAsB,IAAI,CAAC;IAEtC;;;OAGG;IACH,YAAY,KAAW;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAU,MAAM,CACpB,YAAoB,EACpB,OAAgB,EAChB,YAAkB;QAElB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAI,YAAY,CAAC,CAAC;QAC5C,GAAG,CAAC,aAAa,GAAG,YAAY,CAAC;QACjC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAI,KAAU;QACvB,OAAO,IAAI,UAAU,CAAI,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAEtD,OAAO,CAAI,KAAU;QAC3B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAI,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,4DAA4D;IAE5D;;;;;OAKG;IACH,KAAK,CAAC,GAAqB,EAAE,OAA+B,EAAE,GAAgB;QAC5E,IAAI,EAAa,CAAC;QAClB,IAAI,UAAmB,CAAC;QAExB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,kDAAkD;YAClD,EAAE,GAAG,GAAG,CAAC;YACT,UAAU,GAAG,OAAO,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,OAAoB,CAAC;YAC1B,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAO,EAAE,EAAE;YACvD,MAAM,QAAQ,GAAI,IAAgC,CAAC,GAAG,CAAC,CAAC;YACxD,QAAQ,EAAE,EAAE,CAAC;gBACX,KAAK,GAAG,CAAC,CAAC,OAAO,QAAQ,IAAI,UAAU,CAAC;gBACxC,KAAK,KAAK,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,CAAC;gBAC3C,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,UAAU,CAAC;gBACzC,KAAK,GAAG,CAAC,CAAC,OAAQ,QAAmB,GAAI,UAAqB,CAAC;gBAC/D,KAAK,GAAG,CAAC,CAAC,OAAQ,QAAmB,GAAI,UAAqB,CAAC;gBAC/D,KAAK,IAAI,CAAC,CAAC,OAAQ,QAAmB,IAAK,UAAqB,CAAC;gBACjE,KAAK,IAAI,CAAC,CAAC,OAAQ,QAAmB,IAAK,UAAqB,CAAC;gBACjE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAQ,CACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,EAAwB;QAC5B,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAQ,CACxD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO,CAAI,EAAkB;QAC3B,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAQ,CACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAoB,GAAM;QAC7B,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAW,CAC5E,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAoD,EAAE,YAA4B,KAAK;QAC5F,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC;QACjD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,OAAO,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAI,CAA6B,CAAC,GAAG,CAAW,CAAC;gBAC3D,MAAM,IAAI,GAAI,CAA6B,CAAC,GAAG,CAAW,CAAC;gBAC3D,IAAI,IAAI,GAAG,IAAI;oBAAE,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,IAAI,GAAG,IAAI;oBAAE,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,OAAiD;QACvD,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,UAAU;gBAC5C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBACf,CAAC,CAAC,MAAM,CAAE,IAAgC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAkC,EAAE,CAAC;QACjD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAsB;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAW,CAAC;QAC3C,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,IAAgC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,CAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAQ,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,CAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,2BAA2B;IAE3B;;OAEG;IACH,KAAK,CAAC,EAAyB;QAC7B,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,EAAyB;QAC5B,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAsB;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAsB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAsB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,OAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,IAAK,GAAc,GAAI,MAAiB,EAAE,CAAC;gBACzC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAsB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,OAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,IAAK,GAAc,GAAI,MAAiB,EAAE,CAAC;gBACzC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,SAAS,CAAI,EAA0B,EAAE,OAAU;QACjD,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0BAA0B;IAE1B;;;OAGG;IACH,EAAE,CAAC,MAAoB,EAAE,OAAiC;QACxD,IAAI,CAAC,WAAW,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO;YACL,WAAW,EAAE,cAAc,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACpD,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../src/collections/Collection.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * CloudflareEnv — raw Cloudflare Worker `env`, surfaced as an explicit
3
+ * constructor injection so the import line itself signals that the
4
+ * importing photon depends on a Cloudflare deploy target.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import type { CloudflareEnv } from "@portel/photon";
9
+ *
10
+ * interface MyBindings {
11
+ * WEATHER_KV: KVNamespace;
12
+ * PHOTOS: R2Bucket;
13
+ * }
14
+ *
15
+ * export class Weather {
16
+ * constructor(private env: CloudflareEnv<MyBindings>) {}
17
+ * async forecast() {
18
+ * await this.env.WEATHER_KV.put("k", "v");
19
+ * }
20
+ * }
21
+ * ```
22
+ *
23
+ * The default loose type (`Record<string, unknown>`) keeps the no-types
24
+ * path working. Authors who want strict binding shapes pass their own
25
+ * type parameter; future codegen from `protected cfBindings` can fill
26
+ * this in automatically.
27
+ */
28
+ export type CloudflareEnv<T = Record<string, unknown>> = T;
29
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/dist/env.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -35,6 +35,9 @@
35
35
  export { type TextWrapOptions, type FuzzyMatch, type ExecutionContext, type LogLevel, type LoggerOptions, formatOutput, detectFormat, renderPrimitive, renderList, renderTable, renderTree, renderNone, formatKey, formatValue, formatToMimeType, printSuccess, printError, printInfo, printWarning, printHeader, STATUS, ProgressRenderer, getProgressRenderer, startSpinner, showProgress, updateProgressMessage, stopProgress, isProgressActive, executionContext, runWithContext, getContext, type CallerInfo, TextUtils, FuzzyMatcher, fuzzyMatch, fuzzyScore, findBestMatch, Logger, createLogger, getLogger, } from '@portel/cli';
36
36
  export { type MCPToolInfo, type MCPToolResult, type MCPTransport, type MCPSourceType, type MissingMCPInfo, type MCPServerConfig, type MCPConfig, type PhotonMCPConfig, type ElicitOptions, type ElicitResult, type PromptHandler, type ElicitHandler, MCPClient, type MCPClientFactory, MCPError, MCPNotConnectedError, MCPToolError, MCPConfigurationError, createMCPProxy, SDKMCPTransport, SDKMCPClientFactory, loadMCPConfig, createSDKMCPClientFactory, resolveMCPSource, PHOTON_CONFIG_DIR, MCP_SERVERS_CONFIG_FILE, loadPhotonMCPConfig, savePhotonMCPConfig, isMCPConfigured, getMCPServerConfig, listMCPServers, setMCPServerConfig, removeMCPServerConfig, toMCPConfig, resolveEnvVars, prompt, confirm, elicit, elicitReadline, elicitNativeDialog, setPromptHandler, getPromptHandler, setElicitHandler, getElicitHandler, } from '@portel/mcp';
37
37
  export { Photon, Photon as PhotonMCP } from './base.js';
38
+ export { type Cloudflare, type ScopedBindingCategory, bindingNameFor, notConfiguredCloudflare, createCloudflareFromEnv, SHARED_AI_BINDING, SHARED_IMAGES_BINDING, SHARED_BROWSER_BINDING, } from './cloudflare.js';
39
+ export { type CloudflareEnv } from './env.js';
40
+ export { type R2BucketLike, type KVNamespaceLike, type D1DatabaseLike, type D1PreparedStatementLike, type QueueLike, type VectorizeIndexLike, type AiLike, type ImagesBindingLike, type FetcherLike, } from './cf.js';
38
41
  export { withPhotonCapabilities } from './mixins.js';
39
42
  export { DependencyManager } from './dependency-manager.js';
40
43
  export { SchemaExtractor, detectCapabilities, type PhotonCapability } from './schema-extractor.js';