@prisma/composer-prisma-cloud 0.3.0-dev.6 → 0.3.0-dev.8

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 (64) hide show
  1. package/dist/control.d.mts +1 -1
  2. package/dist/control.mjs +28 -17
  3. package/dist/control.mjs.map +1 -1
  4. package/dist/cron/index.d.mts +33 -26
  5. package/dist/cron/index.d.mts.map +1 -1
  6. package/dist/cron/index.mjs +202 -77
  7. package/dist/cron/index.mjs.map +1 -1
  8. package/dist/cron/scheduler-entrypoint.mjs +133 -114
  9. package/dist/cron/scheduler-entrypoint.mjs.map +1 -1
  10. package/dist/cron/scheduler-service.mjs +200 -76
  11. package/dist/cron/scheduler-service.mjs.map +1 -1
  12. package/dist/email/email-entrypoint.mjs +162 -126
  13. package/dist/email/email-entrypoint.mjs.map +1 -1
  14. package/dist/email/email-service.mjs +230 -79
  15. package/dist/email/email-service.mjs.map +1 -1
  16. package/dist/email/index.d.mts +33 -29
  17. package/dist/email/index.d.mts.map +1 -1
  18. package/dist/email/index.mjs +236 -84
  19. package/dist/email/index.mjs.map +1 -1
  20. package/dist/email/testing.mjs +112 -89
  21. package/dist/email/testing.mjs.map +1 -1
  22. package/dist/index.d.mts +51 -43
  23. package/dist/index.d.mts.map +1 -1
  24. package/dist/index.mjs +47 -51
  25. package/dist/index.mjs.map +1 -1
  26. package/dist/local-target.mjs +1 -1
  27. package/dist/local-target.mjs.map +1 -1
  28. package/dist/{preflight-names-BPL-qsZF-BfoRgbgb.mjs → preflight-names-CpJUd9ZA-BCU-W3cT.mjs} +30 -14
  29. package/dist/{preflight-names-BPL-qsZF-BfoRgbgb.mjs.map → preflight-names-CpJUd9ZA-BCU-W3cT.mjs.map} +1 -1
  30. package/dist/{provisioned-edges-C1wSO3cx-YC5C19f9.mjs → provisioned-edges-Cxy18aoh-CUnaY96r.mjs} +3 -3
  31. package/dist/{provisioned-edges-C1wSO3cx-YC5C19f9.mjs.map → provisioned-edges-Cxy18aoh-CUnaY96r.mjs.map} +1 -1
  32. package/dist/{param-BTzY0ne5-CW6ojZ3E.mjs → secret-BVGxqHxY-DYDfiULl.mjs} +45 -4
  33. package/dist/secret-BVGxqHxY-DYDfiULl.mjs.map +1 -0
  34. package/dist/{serializer-Cx5slrV4-xJfH6EWS.d.mts → serializer-BD_6nkr4-DWn5NNTC.d.mts} +2 -2
  35. package/dist/serializer-BD_6nkr4-DWn5NNTC.d.mts.map +1 -0
  36. package/dist/serializer-sVE4UAmg-CikRngbR.mjs +475 -0
  37. package/dist/serializer-sVE4UAmg-CikRngbR.mjs.map +1 -0
  38. package/dist/storage/index.d.mts +31 -26
  39. package/dist/storage/index.d.mts.map +1 -1
  40. package/dist/storage/index.mjs +215 -89
  41. package/dist/storage/index.mjs.map +1 -1
  42. package/dist/storage/storage-entrypoint.mjs +147 -122
  43. package/dist/storage/storage-entrypoint.mjs.map +1 -1
  44. package/dist/storage/storage-service.mjs +212 -87
  45. package/dist/storage/storage-service.mjs.map +1 -1
  46. package/dist/streams/index.d.mts +29 -22
  47. package/dist/streams/index.d.mts.map +1 -1
  48. package/dist/streams/index.mjs +213 -88
  49. package/dist/streams/index.mjs.map +1 -1
  50. package/dist/streams/streams-entrypoint.mjs +139 -118
  51. package/dist/streams/streams-entrypoint.mjs.map +1 -1
  52. package/dist/streams/streams-service.mjs +212 -87
  53. package/dist/streams/streams-service.mjs.map +1 -1
  54. package/dist/testing.d.mts +19 -5
  55. package/dist/testing.d.mts.map +1 -1
  56. package/dist/testing.mjs +11 -3
  57. package/dist/testing.mjs.map +1 -1
  58. package/package.json +17 -17
  59. package/dist/param-BTzY0ne5-CW6ojZ3E.mjs.map +0 -1
  60. package/dist/secret-rz_ZqNeq-_xd97Jd9.mjs +0 -47
  61. package/dist/secret-rz_ZqNeq-_xd97Jd9.mjs.map +0 -1
  62. package/dist/serializer-CJiOhF2d-DJUjQj1i.mjs +0 -251
  63. package/dist/serializer-CJiOhF2d-DJUjQj1i.mjs.map +0 -1
  64. package/dist/serializer-Cx5slrV4-xJfH6EWS.d.mts.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,8 +1,7 @@
1
- import { n as secretName, t as envSecret } from "./secret-rz_ZqNeq-_xd97Jd9.mjs";
2
- import { c as readOrigin, d as stashProviderParams, f as stashSecrets, i as deserializeSecrets, n as configKey, r as deserialize, u as stash } from "./serializer-CJiOhF2d-DJUjQj1i.mjs";
3
- import { a as provisionedEdges, i as STREAMS_API_KEY_ENV, o as streamsApiKeyNeed, r as STREAMS_API_KEY, t as RESERVED_PROVIDER_PARAMS } from "./provisioned-edges-C1wSO3cx-YC5C19f9.mjs";
4
- import { i as paramName, t as envParam } from "./param-BTzY0ne5-CW6ojZ3E.mjs";
5
- import { dependency, hydrateSecrets, hydrateSync, number, resource, service, string } from "@prisma/composer";
1
+ import { a as paramName, n as envSecret, o as secretName, t as envParam } from "./secret-BVGxqHxY-DYDfiULl.mjs";
2
+ import { c as readOrigin, d as stashInput, f as stashProviderParams, n as configKey, r as deserialize, s as readInput, u as stash } from "./serializer-sVE4UAmg-CikRngbR.mjs";
3
+ import { a as provisionedEdges, i as STREAMS_API_KEY_ENV, o as streamsApiKeyNeed, r as STREAMS_API_KEY, t as RESERVED_PROVIDER_PARAMS } from "./provisioned-edges-Cxy18aoh-CUnaY96r.mjs";
4
+ import { dependency, hydrateSync, number, resource, service, string } from "@prisma/composer";
6
5
  import { blindCast } from "@prisma/composer/casts";
7
6
  //#region ../../1-prisma-cloud/1-extensions/target/dist/index.mjs
8
7
  /**
@@ -47,20 +46,24 @@ function bucket(opts) {
47
46
  }
48
47
  const reservedParams = { port: number({ default: 3e3 }) };
49
48
  /**
50
- * A Prisma Compute service — declarations only (deps + params + build + the
51
- * ports it exposes), no descriptor. `params` merges with the reserved
52
- * `ReservedParams` (`port`); a user param whose name collides with a reserved
53
- * one fails at authoring, the same way a colliding dependency name does.
49
+ * A Prisma Compute service — declarations only (deps + one input schema +
50
+ * build + the ports it exposes), no descriptor. The reserved `port` param
51
+ * rides its own channel (ADR-0042 leaves it untouched); a dependency named
52
+ * like it fails at authoring.
54
53
  *
55
54
  * · run(address, boot) — the process controller: deserialize the platform
56
55
  * environment (keyed off `address`, the extension's ONE env read) into a
57
- * typed Config, re-emit it under address-free process-local stash keys,
58
- * then call boot() to start the app's entry.
59
- * · load() / config() — called from inside the app's entry: read the stash;
60
- * load() hydrates + memoizes the deps, config() returns the typed params.
61
- * Separate accessors so a dep and a param never share a namespace (ADR-0021).
56
+ * typed Config, re-emit it (and the input document row) under address-free
57
+ * process-local stash keys, then call boot() to start the app's entry.
58
+ * · load() / input() — called from inside the app's entry: read the stash;
59
+ * load() hydrates + memoizes the deps, input() parses the input document,
60
+ * replaces each `$secret` pointer with a redacting box over the named
61
+ * platform var, validates with the declared schema, and memoizes (ADR-0042).
62
62
  * · origin() — this service's platform-assigned public origin, read from the
63
63
  * stash `run()` populates; memoized per process.
64
+ * · port() — this service's resolved reserved port (the value `run()` routes
65
+ * to and exports as PORT), read from that same stash via #processConfig();
66
+ * defaults to 3000 when the platform binds none.
64
67
  *
65
68
  * The underlying node carries `extension: '@prisma/composer-prisma-cloud'` —
66
69
  * the control-plane registry key `prisma-composer deploy` resolves through the
@@ -70,8 +73,7 @@ const reservedParams = { port: number({ default: 3e3 }) };
70
73
  var ComputeService = class {
71
74
  #resolved;
72
75
  #loadedDeps;
73
- #loadedParams;
74
- #loadedSecrets;
76
+ #loadedInput;
75
77
  #origin;
76
78
  constructor(node) {
77
79
  Object.assign(this, node);
@@ -84,7 +86,7 @@ var ComputeService = class {
84
86
  const config = deserialize(this, address);
85
87
  stash(this, config);
86
88
  stashProviderParams(RESERVED_PROVIDER_PARAMS, address);
87
- stashSecrets(this, address);
89
+ stashInput(this, address);
88
90
  const port = config.service["port"];
89
91
  if (typeof port === "number") process.env["PORT"] = String(port);
90
92
  return boot();
@@ -93,13 +95,9 @@ var ComputeService = class {
93
95
  if (this.#loadedDeps === void 0) this.#loadedDeps = blindCast(hydrateSync(this, this.#processConfig()));
94
96
  return this.#loadedDeps;
95
97
  }
96
- config() {
97
- if (this.#loadedParams === void 0) this.#loadedParams = blindCast(this.#processConfig().service);
98
- return this.#loadedParams;
99
- }
100
- secrets() {
101
- if (this.#loadedSecrets === void 0) this.#loadedSecrets = blindCast(hydrateSecrets(this, deserializeSecrets(this, "")));
102
- return this.#loadedSecrets;
98
+ input() {
99
+ if (this.#loadedInput === void 0) this.#loadedInput = blindCast(readInput(this, ""));
100
+ return this.#loadedInput;
103
101
  }
104
102
  /** This service's platform-assigned public origin — read from the stash
105
103
  * run() populates and memoized per process. Throws if called before run()
@@ -108,26 +106,24 @@ var ComputeService = class {
108
106
  this.#origin ??= readOrigin();
109
107
  return this.#origin;
110
108
  }
109
+ /** This service's resolved reserved port — the value run() routes to and
110
+ * exports as PORT — read the same way load() reads the stash. Defaults to
111
+ * 3000 when the platform binds none. */
112
+ port() {
113
+ const port = this.#processConfig().service["port"];
114
+ if (typeof port !== "number") throw new Error(`service "${this.name}" resolved a non-numeric port — the reserved port param is number({ default: 3000 }), so a stashed config always carries a number here.`);
115
+ return port;
116
+ }
111
117
  };
112
118
  const compute = (def) => {
113
- const userParams = def.params ?? blindCast({});
114
- for (const reserved of Object.keys(reservedParams)) {
115
- if (reserved in def.deps) throw new Error(`compute(): dependency "${reserved}" collides with the reserved service param of the same name — rename the dependency.`);
116
- if (reserved in userParams) throw new Error(`compute(): param "${reserved}" collides with the reserved service param of the same name — rename the param.`);
117
- }
118
- for (const name of Object.keys(userParams)) if (name.toUpperCase() === "ORIGIN") throw new Error(`compute(): param "${name}" collides with the framework-written origin row — rename the param.`);
119
- for (const name of Object.keys(def.secrets ?? {})) if (name.toUpperCase() === "ORIGIN") throw new Error(`compute(): secret "${name}" collides with the framework-written origin row — rename the secret.`);
120
- const params = blindCast({
121
- ...userParams,
122
- ...reservedParams
123
- });
119
+ for (const reserved of Object.keys(reservedParams)) if (reserved in def.deps) throw new Error(`compute(): dependency "${reserved}" collides with the reserved service param of the same name — rename the dependency.`);
124
120
  const instance = new ComputeService(service({
125
121
  name: def.name,
126
122
  extension: "@prisma/composer-prisma-cloud",
127
123
  type: "compute",
128
124
  inputs: def.deps,
129
- params,
130
- ...def.secrets !== void 0 ? { secrets: def.secrets } : {},
125
+ params: reservedParams,
126
+ ...def.input !== void 0 ? { input: def.input } : {},
131
127
  build: def.build,
132
128
  ...def.expose !== void 0 ? { expose: def.expose } : {}
133
129
  }));
@@ -216,21 +212,21 @@ function s3Credentials(opts) {
216
212
  /**
217
213
  * The storage service authoring factory — a `compute` service routed to the
218
214
  * `s3-store` lowering instead of `compute`'s. It is exactly `compute`'s
219
- * runnable (run/load/config, deps, params, build, expose) with the routing
220
- * `type` overridden to `'s3-store'`: nothing at runtime keys off `type` (the
221
- * serializer keys off the deployment address and each param's owner/name, and
222
- * `load`/`config` off deps/params), so only the deploy-time descriptor lookup
223
- * sees the override and routes to the extended-output lowering (§ 5). The
224
- * return type is compute's exactly (including the reserved `port` param). The
225
- * storage module (D4b) calls this with its `db`/`credentials` deps, a `bucket`
226
- * param, and `expose: { store: s3Contract }`.
215
+ * runnable (run/load/input, deps, input schema, build, expose) with the
216
+ * routing `type` overridden to `'s3-store'`: nothing at runtime keys off
217
+ * `type` (the serializer keys off the deployment address and each param's
218
+ * owner/name, and `load`/`input` off deps/the input schema), so only the
219
+ * deploy-time descriptor lookup sees the override and routes to the
220
+ * extended-output lowering (§ 5). The return type is compute's exactly
221
+ * (including the reserved `port` param). The storage module (D4b) calls this
222
+ * with its `db`/`credentials` deps and `expose: { store: s3Contract }`.
227
223
  *
228
- * `compute()`'s result is a `ComputeService` instance — its run/load/config/
229
- * secrets/origin methods live on the class prototype, not as the instance's
230
- * own properties, so a plain object spread (`{ ...node }`) would silently
231
- * drop them. Building a fresh `ComputeService` from the same data fields
232
- * (which `{ ...node }` DOES copy — they're the node's own enumerable
233
- * properties) with `type` overridden keeps every method intact.
224
+ * `compute()`'s result is a `ComputeService` instance — its run/load/input/
225
+ * origin methods live on the class prototype, not as the instance's own
226
+ * properties, so a plain object spread (`{ ...node }`) would silently drop
227
+ * them. Building a fresh `ComputeService` from the same data fields (which
228
+ * `{ ...node }` DOES copy — they're the node's own enumerable properties)
229
+ * with `type` overridden keeps every method intact.
234
230
  */
235
231
  function s3StoreService(def) {
236
232
  const instance = new ComputeService({
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["#resolved","#loadedDeps","#processConfig","#loadedParams","#loadedSecrets","#origin"],"sources":["../../../1-prisma-cloud/1-extensions/target/dist/index.mjs"],"sourcesContent":["import { n as secretName, t as envSecret } from \"./secret-rz_ZqNeq.mjs\";\nimport { c as readOrigin, d as stashProviderParams, f as stashSecrets, i as deserializeSecrets, n as configKey, r as deserialize, u as stash } from \"./serializer-CJiOhF2d.mjs\";\nimport { a as streamsApiKeyNeed, i as STREAMS_API_KEY_ENV, n as RESERVED_PROVIDER_PARAMS, r as STREAMS_API_KEY, t as provisionedEdges } from \"./provisioned-edges-C1wSO3cx.mjs\";\nimport { i as paramName, t as envParam } from \"./param-BTzY0ne5.mjs\";\nimport { dependency, hydrateSecrets, hydrateSync, number, resource, service, string } from \"@internal/core\";\nimport { blindCast } from \"@internal/foundation/casts\";\n//#region src/bucket.ts\n/**\n* The contract a provisioned Bucket provides — deliberately kind-equal to the\n* storage module's `s3Contract` (`kind: 's3'`). `satisfies` compares KIND,\n* not identity (mirrors `postgresContract`): a real bucket and the emulator\n* are interchangeable at every `s3()` dependency slot. Cross-layer import of\n* the storage module's contract is not allowed (layering: 2-shared-modules\n* depends on 1-extensions, not the reverse), which is exactly the design\n* rationale for kind-equality — the two contracts cooperate through their\n* shared kind string, not through object identity.\n*/\nconst bucketContract = Object.freeze({\n\tkind: \"s3\",\n\t__cmp: {\n\t\turl: \"\",\n\t\tbucket: \"\",\n\t\taccessKeyId: \"\",\n\t\tsecretAccessKey: \"\"\n\t},\n\tsatisfies: (required) => required.kind === \"s3\"\n});\nfunction bucket(opts) {\n\tif (opts?.name !== void 0) return resource({\n\t\tname: opts.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\tprovides: bucketContract\n\t});\n\treturn dependency({\n\t\ttype: \"s3\",\n\t\tconnection: {\n\t\t\tparams: {\n\t\t\t\turl: string(),\n\t\t\t\tbucket: string(),\n\t\t\t\taccessKeyId: string(),\n\t\t\t\tsecretAccessKey: string()\n\t\t\t},\n\t\t\thydrate: (v) => v\n\t\t},\n\t\trequired: bucketContract\n\t});\n}\n//#endregion\n//#region src/compute.ts\nconst reservedParams = { port: number({ default: 3e3 }) };\n/**\n* A Prisma Compute service — declarations only (deps + params + build + the\n* ports it exposes), no descriptor. `params` merges with the reserved\n* `ReservedParams` (`port`); a user param whose name collides with a reserved\n* one fails at authoring, the same way a colliding dependency name does.\n*\n* · run(address, boot) — the process controller: deserialize the platform\n* environment (keyed off `address`, the extension's ONE env read) into a\n* typed Config, re-emit it under address-free process-local stash keys,\n* then call boot() to start the app's entry.\n* · load() / config() — called from inside the app's entry: read the stash;\n* load() hydrates + memoizes the deps, config() returns the typed params.\n* Separate accessors so a dep and a param never share a namespace (ADR-0021).\n* · origin() — this service's platform-assigned public origin, read from the\n* stash `run()` populates; memoized per process.\n*\n* The underlying node carries `extension: '@prisma/composer-prisma-cloud'` —\n* the control-plane registry key `prisma-composer deploy` resolves through the\n* app's `prisma-composer.config.ts` (ADR-0017). This module loads nothing at\n* deploy time; nodes are pure data until run() or load() is called.\n*/\nvar ComputeService = class {\n\t#resolved;\n\t#loadedDeps;\n\t#loadedParams;\n\t#loadedSecrets;\n\t#origin;\n\tconstructor(node) {\n\t\tObject.assign(this, node);\n\t}\n\t#processConfig() {\n\t\tif (this.#resolved === void 0) this.#resolved = deserialize(this, \"\");\n\t\treturn this.#resolved;\n\t}\n\tasync run(address, boot) {\n\t\tconst config = deserialize(this, address);\n\t\tstash(this, config);\n\t\tstashProviderParams(RESERVED_PROVIDER_PARAMS, address);\n\t\tstashSecrets(this, address);\n\t\tconst port = config.service[\"port\"];\n\t\tif (typeof port === \"number\") process.env[\"PORT\"] = String(port);\n\t\treturn boot();\n\t}\n\tload() {\n\t\tif (this.#loadedDeps === void 0) this.#loadedDeps = blindCast(hydrateSync(this, this.#processConfig()));\n\t\treturn this.#loadedDeps;\n\t}\n\tconfig() {\n\t\tif (this.#loadedParams === void 0) this.#loadedParams = blindCast(this.#processConfig().service);\n\t\treturn this.#loadedParams;\n\t}\n\tsecrets() {\n\t\tif (this.#loadedSecrets === void 0) this.#loadedSecrets = blindCast(hydrateSecrets(this, deserializeSecrets(this, \"\")));\n\t\treturn this.#loadedSecrets;\n\t}\n\t/** This service's platform-assigned public origin — read from the stash\n\t* run() populates and memoized per process. Throws if called before run()\n\t* has stashed it (readOrigin's pinned message). */\n\torigin() {\n\t\tthis.#origin ??= readOrigin();\n\t\treturn this.#origin;\n\t}\n};\nconst compute = (def) => {\n\tconst userParams = def.params ?? blindCast({});\n\tfor (const reserved of Object.keys(reservedParams)) {\n\t\tif (reserved in def.deps) throw new Error(`compute(): dependency \"${reserved}\" collides with the reserved service param of the same name — rename the dependency.`);\n\t\tif (reserved in userParams) throw new Error(`compute(): param \"${reserved}\" collides with the reserved service param of the same name — rename the param.`);\n\t}\n\tfor (const name of Object.keys(userParams)) if (name.toUpperCase() === \"ORIGIN\") throw new Error(`compute(): param \"${name}\" collides with the framework-written origin row — rename the param.`);\n\tfor (const name of Object.keys(def.secrets ?? {})) if (name.toUpperCase() === \"ORIGIN\") throw new Error(`compute(): secret \"${name}\" collides with the framework-written origin row — rename the secret.`);\n\tconst params = blindCast({\n\t\t...userParams,\n\t\t...reservedParams\n\t});\n\tconst instance = new ComputeService(service({\n\t\tname: def.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\ttype: \"compute\",\n\t\tinputs: def.deps,\n\t\tparams,\n\t\t...def.secrets !== void 0 ? { secrets: def.secrets } : {},\n\t\tbuild: def.build,\n\t\t...def.expose !== void 0 ? { expose: def.expose } : {}\n\t}));\n\tObject.freeze(instance);\n\treturn instance;\n};\n//#endregion\n//#region src/http.ts\nconst defaultHttpClient = (cfg) => ({\n\turl: cfg.url,\n\tfetch: (path, init) => fetch(new URL(path, cfg.url), init)\n});\n/**\n* A service-to-service dependency. Its binding (what `load()` returns) is a\n* derived HttpClient — a thin URL-anchored fetch wrapper (fetch is standard\n* across runtimes — no driver, no runtime coupling). http() is a\n* protocol-owned kind: the framework owns the transport, so the client is\n* kind-canonical and derived from the contract, with no user client in the\n* declaration (ADR-0015). The typed generated client arrives with the\n* interface primitive (a later extension point).\n*/\nconst http = (opts) => dependency({\n\tname: opts.name,\n\ttype: \"http\",\n\tconnection: {\n\t\tparams: { url: string() },\n\t\thydrate: (v) => defaultHttpClient({ url: v.url })\n\t}\n});\n//#endregion\n//#region src/postgres.ts\n/**\n* The contract a Postgres provides — and the contract its consumers require.\n* `satisfies` compares KIND, not identity: an extension module can be duplicated\n* across a workspace (same rationale as the Symbol.for node brand), and every\n* duplicate's contract must still satisfy. `__cmp` is the connection config a\n* postgres offers; core never inspects it.\n*/\nconst postgresContract = Object.freeze({\n\tkind: \"postgres\",\n\t__cmp: { url: \"\" },\n\tsatisfies: (required) => required.kind === \"postgres\"\n});\nfunction postgres(opts) {\n\tif (opts?.name !== void 0) return resource({\n\t\tname: opts.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\tprovides: postgresContract\n\t});\n\treturn dependency({\n\t\ttype: \"postgres\",\n\t\tconnection: {\n\t\t\tparams: { url: string() },\n\t\t\thydrate: (v) => v\n\t\t},\n\t\trequired: postgresContract\n\t});\n}\n//#endregion\n//#region src/s3-credentials.ts\n/**\n* The contract the `s3-credentials` resource provides — a minted SigV4 key\n* pair. `satisfies` compares KIND only (mirrors `postgresContract`); `__cmp` is\n* the config the resource offers, which core never inspects.\n*/\nconst credentialsContract = Object.freeze({\n\tkind: \"credentials\",\n\t__cmp: {\n\t\taccessKeyId: \"\",\n\t\tsecretAccessKey: \"\"\n\t},\n\tsatisfies: (required) => required.kind === \"credentials\"\n});\nfunction s3Credentials(opts) {\n\tif (opts?.name !== void 0) return resource({\n\t\tname: opts.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\tprovides: credentialsContract\n\t});\n\treturn dependency({\n\t\ttype: \"credentials\",\n\t\tconnection: {\n\t\t\tparams: {\n\t\t\t\taccessKeyId: string(),\n\t\t\t\tsecretAccessKey: string()\n\t\t\t},\n\t\t\thydrate: (v) => v\n\t\t},\n\t\trequired: credentialsContract\n\t});\n}\n//#endregion\n//#region src/s3-store.ts\n/**\n* The storage service authoring factory — a `compute` service routed to the\n* `s3-store` lowering instead of `compute`'s. It is exactly `compute`'s\n* runnable (run/load/config, deps, params, build, expose) with the routing\n* `type` overridden to `'s3-store'`: nothing at runtime keys off `type` (the\n* serializer keys off the deployment address and each param's owner/name, and\n* `load`/`config` off deps/params), so only the deploy-time descriptor lookup\n* sees the override and routes to the extended-output lowering (§ 5). The\n* return type is compute's exactly (including the reserved `port` param). The\n* storage module (D4b) calls this with its `db`/`credentials` deps, a `bucket`\n* param, and `expose: { store: s3Contract }`.\n*\n* `compute()`'s result is a `ComputeService` instance — its run/load/config/\n* secrets/origin methods live on the class prototype, not as the instance's\n* own properties, so a plain object spread (`{ ...node }`) would silently\n* drop them. Building a fresh `ComputeService` from the same data fields\n* (which `{ ...node }` DOES copy — they're the node's own enumerable\n* properties) with `type` overridden keeps every method intact.\n*/\nfunction s3StoreService(def) {\n\tconst instance = new ComputeService({\n\t\t...compute(def),\n\t\ttype: \"s3-store\"\n\t});\n\tObject.freeze(instance);\n\treturn instance;\n}\n//#endregion\nexport { ComputeService, STREAMS_API_KEY, STREAMS_API_KEY_ENV, bucket, bucketContract, compute, configKey, credentialsContract, envParam, envSecret, http, paramName, postgres, postgresContract, provisionedEdges, s3Credentials, s3StoreService, secretName, streamsApiKeyNeed };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["#resolved","#loadedDeps","#processConfig","#loadedInput","#origin"],"sources":["../../../1-prisma-cloud/1-extensions/target/dist/index.mjs"],"sourcesContent":["import { n as secretName, o as paramName, r as envParam, t as envSecret } from \"./secret-BVGxqHxY.mjs\";\nimport { c as readOrigin, d as stashInput, f as stashProviderParams, n as configKey, r as deserialize, s as readInput, u as stash } from \"./serializer-sVE4UAmg.mjs\";\nimport { a as streamsApiKeyNeed, i as STREAMS_API_KEY_ENV, n as RESERVED_PROVIDER_PARAMS, r as STREAMS_API_KEY, t as provisionedEdges } from \"./provisioned-edges-Cxy18aoh.mjs\";\nimport { dependency, hydrateSync, number, resource, service, string } from \"@internal/core\";\nimport { blindCast } from \"@internal/foundation/casts\";\n//#region src/bucket.ts\n/**\n* The contract a provisioned Bucket provides — deliberately kind-equal to the\n* storage module's `s3Contract` (`kind: 's3'`). `satisfies` compares KIND,\n* not identity (mirrors `postgresContract`): a real bucket and the emulator\n* are interchangeable at every `s3()` dependency slot. Cross-layer import of\n* the storage module's contract is not allowed (layering: 2-shared-modules\n* depends on 1-extensions, not the reverse), which is exactly the design\n* rationale for kind-equality — the two contracts cooperate through their\n* shared kind string, not through object identity.\n*/\nconst bucketContract = Object.freeze({\n\tkind: \"s3\",\n\t__cmp: {\n\t\turl: \"\",\n\t\tbucket: \"\",\n\t\taccessKeyId: \"\",\n\t\tsecretAccessKey: \"\"\n\t},\n\tsatisfies: (required) => required.kind === \"s3\"\n});\nfunction bucket(opts) {\n\tif (opts?.name !== void 0) return resource({\n\t\tname: opts.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\tprovides: bucketContract\n\t});\n\treturn dependency({\n\t\ttype: \"s3\",\n\t\tconnection: {\n\t\t\tparams: {\n\t\t\t\turl: string(),\n\t\t\t\tbucket: string(),\n\t\t\t\taccessKeyId: string(),\n\t\t\t\tsecretAccessKey: string()\n\t\t\t},\n\t\t\thydrate: (v) => v\n\t\t},\n\t\trequired: bucketContract\n\t});\n}\n//#endregion\n//#region src/compute.ts\nconst reservedParams = { port: number({ default: 3e3 }) };\n/**\n* A Prisma Compute service — declarations only (deps + one input schema +\n* build + the ports it exposes), no descriptor. The reserved `port` param\n* rides its own channel (ADR-0042 leaves it untouched); a dependency named\n* like it fails at authoring.\n*\n* · run(address, boot) — the process controller: deserialize the platform\n* environment (keyed off `address`, the extension's ONE env read) into a\n* typed Config, re-emit it (and the input document row) under address-free\n* process-local stash keys, then call boot() to start the app's entry.\n* · load() / input() — called from inside the app's entry: read the stash;\n* load() hydrates + memoizes the deps, input() parses the input document,\n* replaces each `$secret` pointer with a redacting box over the named\n* platform var, validates with the declared schema, and memoizes (ADR-0042).\n* · origin() — this service's platform-assigned public origin, read from the\n* stash `run()` populates; memoized per process.\n* · port() — this service's resolved reserved port (the value `run()` routes\n* to and exports as PORT), read from that same stash via #processConfig();\n* defaults to 3000 when the platform binds none.\n*\n* The underlying node carries `extension: '@prisma/composer-prisma-cloud'` —\n* the control-plane registry key `prisma-composer deploy` resolves through the\n* app's `prisma-composer.config.ts` (ADR-0017). This module loads nothing at\n* deploy time; nodes are pure data until run() or load() is called.\n*/\nvar ComputeService = class {\n\t#resolved;\n\t#loadedDeps;\n\t#loadedInput;\n\t#origin;\n\tconstructor(node) {\n\t\tObject.assign(this, node);\n\t}\n\t#processConfig() {\n\t\tif (this.#resolved === void 0) this.#resolved = deserialize(this, \"\");\n\t\treturn this.#resolved;\n\t}\n\tasync run(address, boot) {\n\t\tconst config = deserialize(this, address);\n\t\tstash(this, config);\n\t\tstashProviderParams(RESERVED_PROVIDER_PARAMS, address);\n\t\tstashInput(this, address);\n\t\tconst port = config.service[\"port\"];\n\t\tif (typeof port === \"number\") process.env[\"PORT\"] = String(port);\n\t\treturn boot();\n\t}\n\tload() {\n\t\tif (this.#loadedDeps === void 0) this.#loadedDeps = blindCast(hydrateSync(this, this.#processConfig()));\n\t\treturn this.#loadedDeps;\n\t}\n\tinput() {\n\t\tif (this.#loadedInput === void 0) this.#loadedInput = blindCast(readInput(this, \"\"));\n\t\treturn this.#loadedInput;\n\t}\n\t/** This service's platform-assigned public origin — read from the stash\n\t* run() populates and memoized per process. Throws if called before run()\n\t* has stashed it (readOrigin's pinned message). */\n\torigin() {\n\t\tthis.#origin ??= readOrigin();\n\t\treturn this.#origin;\n\t}\n\t/** This service's resolved reserved port — the value run() routes to and\n\t* exports as PORT — read the same way load() reads the stash. Defaults to\n\t* 3000 when the platform binds none. */\n\tport() {\n\t\tconst port = this.#processConfig().service[\"port\"];\n\t\tif (typeof port !== \"number\") throw new Error(`service \"${this.name}\" resolved a non-numeric port — the reserved port param is number({ default: 3000 }), so a stashed config always carries a number here.`);\n\t\treturn port;\n\t}\n};\nconst compute = (def) => {\n\tfor (const reserved of Object.keys(reservedParams)) if (reserved in def.deps) throw new Error(`compute(): dependency \"${reserved}\" collides with the reserved service param of the same name — rename the dependency.`);\n\tconst instance = new ComputeService(service({\n\t\tname: def.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\ttype: \"compute\",\n\t\tinputs: def.deps,\n\t\tparams: reservedParams,\n\t\t...def.input !== void 0 ? { input: def.input } : {},\n\t\tbuild: def.build,\n\t\t...def.expose !== void 0 ? { expose: def.expose } : {}\n\t}));\n\tObject.freeze(instance);\n\treturn instance;\n};\n//#endregion\n//#region src/http.ts\nconst defaultHttpClient = (cfg) => ({\n\turl: cfg.url,\n\tfetch: (path, init) => fetch(new URL(path, cfg.url), init)\n});\n/**\n* A service-to-service dependency. Its binding (what `load()` returns) is a\n* derived HttpClient — a thin URL-anchored fetch wrapper (fetch is standard\n* across runtimes — no driver, no runtime coupling). http() is a\n* protocol-owned kind: the framework owns the transport, so the client is\n* kind-canonical and derived from the contract, with no user client in the\n* declaration (ADR-0015). The typed generated client arrives with the\n* interface primitive (a later extension point).\n*/\nconst http = (opts) => dependency({\n\tname: opts.name,\n\ttype: \"http\",\n\tconnection: {\n\t\tparams: { url: string() },\n\t\thydrate: (v) => defaultHttpClient({ url: v.url })\n\t}\n});\n//#endregion\n//#region src/postgres.ts\n/**\n* The contract a Postgres provides — and the contract its consumers require.\n* `satisfies` compares KIND, not identity: an extension module can be duplicated\n* across a workspace (same rationale as the Symbol.for node brand), and every\n* duplicate's contract must still satisfy. `__cmp` is the connection config a\n* postgres offers; core never inspects it.\n*/\nconst postgresContract = Object.freeze({\n\tkind: \"postgres\",\n\t__cmp: { url: \"\" },\n\tsatisfies: (required) => required.kind === \"postgres\"\n});\nfunction postgres(opts) {\n\tif (opts?.name !== void 0) return resource({\n\t\tname: opts.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\tprovides: postgresContract\n\t});\n\treturn dependency({\n\t\ttype: \"postgres\",\n\t\tconnection: {\n\t\t\tparams: { url: string() },\n\t\t\thydrate: (v) => v\n\t\t},\n\t\trequired: postgresContract\n\t});\n}\n//#endregion\n//#region src/s3-credentials.ts\n/**\n* The contract the `s3-credentials` resource provides — a minted SigV4 key\n* pair. `satisfies` compares KIND only (mirrors `postgresContract`); `__cmp` is\n* the config the resource offers, which core never inspects.\n*/\nconst credentialsContract = Object.freeze({\n\tkind: \"credentials\",\n\t__cmp: {\n\t\taccessKeyId: \"\",\n\t\tsecretAccessKey: \"\"\n\t},\n\tsatisfies: (required) => required.kind === \"credentials\"\n});\nfunction s3Credentials(opts) {\n\tif (opts?.name !== void 0) return resource({\n\t\tname: opts.name,\n\t\textension: \"@prisma/composer-prisma-cloud\",\n\t\tprovides: credentialsContract\n\t});\n\treturn dependency({\n\t\ttype: \"credentials\",\n\t\tconnection: {\n\t\t\tparams: {\n\t\t\t\taccessKeyId: string(),\n\t\t\t\tsecretAccessKey: string()\n\t\t\t},\n\t\t\thydrate: (v) => v\n\t\t},\n\t\trequired: credentialsContract\n\t});\n}\n//#endregion\n//#region src/s3-store.ts\n/**\n* The storage service authoring factory — a `compute` service routed to the\n* `s3-store` lowering instead of `compute`'s. It is exactly `compute`'s\n* runnable (run/load/input, deps, input schema, build, expose) with the\n* routing `type` overridden to `'s3-store'`: nothing at runtime keys off\n* `type` (the serializer keys off the deployment address and each param's\n* owner/name, and `load`/`input` off deps/the input schema), so only the\n* deploy-time descriptor lookup sees the override and routes to the\n* extended-output lowering (§ 5). The return type is compute's exactly\n* (including the reserved `port` param). The storage module (D4b) calls this\n* with its `db`/`credentials` deps and `expose: { store: s3Contract }`.\n*\n* `compute()`'s result is a `ComputeService` instance — its run/load/input/\n* origin methods live on the class prototype, not as the instance's own\n* properties, so a plain object spread (`{ ...node }`) would silently drop\n* them. Building a fresh `ComputeService` from the same data fields (which\n* `{ ...node }` DOES copy — they're the node's own enumerable properties)\n* with `type` overridden keeps every method intact.\n*/\nfunction s3StoreService(def) {\n\tconst instance = new ComputeService({\n\t\t...compute(def),\n\t\ttype: \"s3-store\"\n\t});\n\tObject.freeze(instance);\n\treturn instance;\n}\n//#endregion\nexport { ComputeService, STREAMS_API_KEY, STREAMS_API_KEY_ENV, bucket, bucketContract, compute, configKey, credentialsContract, envParam, envSecret, http, paramName, postgres, postgresContract, provisionedEdges, s3Credentials, s3StoreService, secretName, streamsApiKeyNeed };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { C as EnvironmentVariable, D as Bucket, O as BucketKey, S as Deployment, T as ServiceKeyProvider, _ as Connection, a as PnMigrationProvider, c as S3CredentialsProvider, d as deserialize, f as prismaCloudContainerOf, h as Providers, l as collectPreflightNames, m as mintKeyPair, o as PrismaCloudContainer, r as PgWarmProvider, v as Database, x as ComputeService, y as Project } from "./preflight-names-BPL-qsZF-BfoRgbgb.mjs";
1
+ import { C as EnvironmentVariable, D as Bucket, O as BucketKey, S as Deployment, T as ServiceKeyProvider, _ as Connection, a as PnMigrationProvider, c as S3CredentialsProvider, d as deserialize, f as prismaCloudContainerOf, h as Providers, l as collectPreflightNames, m as mintKeyPair, o as PrismaCloudContainer, r as PgWarmProvider, v as Database, x as ComputeService, y as Project } from "./preflight-names-CpJUd9ZA-BCU-W3cT.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { blindCast } from "@prisma/composer/casts";
4
4
  import * as Effect from "effect/Effect";