@prisma/composer 0.23.0-dev.2 → 0.23.0-dev.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/composer",
3
- "version": "0.23.0-dev.2",
3
+ "version": "0.23.0-dev.4",
4
4
  "type": "module",
5
5
  "description": "Prisma Composer — build a Prisma App by composing Modules. Core authoring, deploy pipeline, and the service-rpc/node/nextjs authoring surfaces. The `prisma-composer` CLI lives in @prisma/composer-cli.",
6
6
  "exports": {
@@ -37,18 +37,18 @@
37
37
  "cross-spawn": "^7.0.6",
38
38
  "effect": "4.0.0-rc.115",
39
39
  "esbuild": "^0.28.1",
40
- "@prisma/management-api-sdk": "^1.79.0"
40
+ "@prisma/management-api-sdk": "^1.80.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@internal/assemble": "0.23.0-dev.2",
44
- "@internal/cli": "0.23.0-dev.2",
45
- "@internal/core": "0.23.0-dev.2",
46
- "@internal/foundation": "0.23.0-dev.2",
47
- "@internal/lowering": "0.23.0-dev.2",
48
- "@internal/nextjs": "0.23.0-dev.2",
49
- "@internal/node": "0.23.0-dev.2",
50
- "@internal/service-rpc": "0.23.0-dev.2",
51
- "@internal/tsdown-config": "0.23.0-dev.2",
43
+ "@internal/assemble": "0.23.0-dev.4",
44
+ "@internal/cli": "0.23.0-dev.4",
45
+ "@internal/core": "0.23.0-dev.4",
46
+ "@internal/foundation": "0.23.0-dev.4",
47
+ "@internal/lowering": "0.23.0-dev.4",
48
+ "@internal/nextjs": "0.23.0-dev.4",
49
+ "@internal/node": "0.23.0-dev.4",
50
+ "@internal/service-rpc": "0.23.0-dev.4",
51
+ "@internal/tsdown-config": "0.23.0-dev.4",
52
52
  "@types/node": "^26.0.1",
53
53
  "tsdown": "^0.22.7",
54
54
  "typescript": "^6.0.3"
@@ -2,7 +2,7 @@
2
2
  name: prisma-composer-core-concepts
3
3
  metadata:
4
4
  library: "@prisma/composer"
5
- library_version: "0.23.0-dev.2"
5
+ library_version: "0.23.0-dev.4"
6
6
  version: 2026.9.1
7
7
  description: >-
8
8
  Use when deploying or managing an app that uses Prisma Composer
@@ -1,70 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- //#region ../../0-framework/2-authoring/bundle-paths/dist/index.mjs
4
- /**
5
- * The path-containment predicate and bundle-link validation shared by every
6
- * assembly and packaging seam (node/nextjs adapters, the compute artifact
7
- * writer, the local extractor). This predicate is the enforcement point of
8
- * ADR-0047's boundary — a symlink may be preserved only while its target
9
- * stays inside the assembled bundle — so it exists exactly once.
10
- */
11
- /** Restores directory-link metadata lost by `fs.cp` on Windows. */
12
- async function repairWindowsDirectorySymlinks(root) {
13
- if (process.platform !== "win32") return;
14
- const visit = async (directory) => {
15
- for (const entry of await fs.promises.readdir(directory, { withFileTypes: true })) {
16
- const full = path.join(directory, entry.name);
17
- if (entry.isSymbolicLink()) {
18
- const target = await fs.promises.readlink(full);
19
- const resolvedTarget = path.resolve(path.dirname(full), target);
20
- try {
21
- if (!(await fs.promises.stat(resolvedTarget)).isDirectory()) continue;
22
- } catch {
23
- continue;
24
- }
25
- await fs.promises.unlink(full);
26
- await fs.promises.symlink(target, full, "dir");
27
- } else if (entry.isDirectory()) await visit(full);
28
- }
29
- };
30
- await visit(root);
31
- }
32
- async function copyTreeVerbatim(source, destination) {
33
- await fs.promises.cp(source, destination, {
34
- recursive: true,
35
- verbatimSymlinks: true
36
- });
37
- await repairWindowsDirectorySymlinks(destination);
38
- }
39
- /** Lexical containment: `candidate` is `root` itself or below it. Both paths
40
- * must already be absolute or share a resolution base; no filesystem access. */
41
- function isWithin(root, candidate) {
42
- const relative = path.relative(root, candidate);
43
- return relative === "" || !relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative);
44
- }
45
- /** Walks the assembled bundle and rejects a dangling symlink or one whose
46
- * resolved target escapes the bundle root. Symlinked directories are not
47
- * descended: their targets are validated, and their contents belong to the
48
- * target's own location. */
49
- async function assertBundleSymlinksStayInside(bundleDir) {
50
- const realRoot = await fs.promises.realpath(bundleDir);
51
- const walk = async (directory) => {
52
- for (const entry of await fs.promises.readdir(directory, { withFileTypes: true })) {
53
- const full = path.join(directory, entry.name);
54
- if (entry.isSymbolicLink()) {
55
- let realTarget;
56
- try {
57
- realTarget = await fs.promises.realpath(full);
58
- } catch {
59
- throw new Error(`the assembled bundle contains a dangling symlink: ${full}`);
60
- }
61
- if (!isWithin(realRoot, realTarget)) throw new Error(`the assembled bundle contains a symlink whose target escapes the bundle: ${full} -> ${await fs.promises.readlink(full)}`);
62
- } else if (entry.isDirectory()) await walk(full);
63
- }
64
- };
65
- await walk(bundleDir);
66
- }
67
- //#endregion
68
- export { repairWindowsDirectorySymlinks as i, copyTreeVerbatim as n, isWithin as r, assertBundleSymlinksStayInside as t };
69
-
70
- //# sourceMappingURL=dist-D1TA1xGC.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-D1TA1xGC.mjs","names":[],"sources":["../../../0-framework/2-authoring/bundle-paths/dist/index.mjs"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\n//#region src/bundle-paths.ts\n/**\n* The path-containment predicate and bundle-link validation shared by every\n* assembly and packaging seam (node/nextjs adapters, the compute artifact\n* writer, the local extractor). This predicate is the enforcement point of\n* ADR-0047's boundary — a symlink may be preserved only while its target\n* stays inside the assembled bundle — so it exists exactly once.\n*/\n/** Restores directory-link metadata lost by `fs.cp` on Windows. */\nasync function repairWindowsDirectorySymlinks(root) {\n\tif (process.platform !== \"win32\") return;\n\tconst visit = async (directory) => {\n\t\tfor (const entry of await fs.promises.readdir(directory, { withFileTypes: true })) {\n\t\t\tconst full = path.join(directory, entry.name);\n\t\t\tif (entry.isSymbolicLink()) {\n\t\t\t\tconst target = await fs.promises.readlink(full);\n\t\t\t\tconst resolvedTarget = path.resolve(path.dirname(full), target);\n\t\t\t\ttry {\n\t\t\t\t\tif (!(await fs.promises.stat(resolvedTarget)).isDirectory()) continue;\n\t\t\t\t} catch {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tawait fs.promises.unlink(full);\n\t\t\t\tawait fs.promises.symlink(target, full, \"dir\");\n\t\t\t} else if (entry.isDirectory()) await visit(full);\n\t\t}\n\t};\n\tawait visit(root);\n}\nasync function copyTreeVerbatim(source, destination) {\n\tawait fs.promises.cp(source, destination, {\n\t\trecursive: true,\n\t\tverbatimSymlinks: true\n\t});\n\tawait repairWindowsDirectorySymlinks(destination);\n}\n/** Lexical containment: `candidate` is `root` itself or below it. Both paths\n* must already be absolute or share a resolution base; no filesystem access. */\nfunction isWithin(root, candidate) {\n\tconst relative = path.relative(root, candidate);\n\treturn relative === \"\" || !relative.startsWith(`..${path.sep}`) && relative !== \"..\" && !path.isAbsolute(relative);\n}\n/** Walks the assembled bundle and rejects a dangling symlink or one whose\n* resolved target escapes the bundle root. Symlinked directories are not\n* descended: their targets are validated, and their contents belong to the\n* target's own location. */\nasync function assertBundleSymlinksStayInside(bundleDir) {\n\tconst realRoot = await fs.promises.realpath(bundleDir);\n\tconst walk = async (directory) => {\n\t\tfor (const entry of await fs.promises.readdir(directory, { withFileTypes: true })) {\n\t\t\tconst full = path.join(directory, entry.name);\n\t\t\tif (entry.isSymbolicLink()) {\n\t\t\t\tlet realTarget;\n\t\t\t\ttry {\n\t\t\t\t\trealTarget = await fs.promises.realpath(full);\n\t\t\t\t} catch {\n\t\t\t\t\tthrow new Error(`the assembled bundle contains a dangling symlink: ${full}`);\n\t\t\t\t}\n\t\t\t\tif (!isWithin(realRoot, realTarget)) throw new Error(`the assembled bundle contains a symlink whose target escapes the bundle: ${full} -> ${await fs.promises.readlink(full)}`);\n\t\t\t} else if (entry.isDirectory()) await walk(full);\n\t\t}\n\t};\n\tawait walk(bundleDir);\n}\n//#endregion\nexport { assertBundleSymlinksStayInside, copyTreeVerbatim, isWithin, repairWindowsDirectorySymlinks };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;;;;;;;;;AAWA,eAAe,+BAA+B,MAAM;CACnD,IAAI,QAAQ,aAAa,SAAS;CAClC,MAAM,QAAQ,OAAO,cAAc;EAClC,KAAK,MAAM,SAAS,MAAM,GAAG,SAAS,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC,GAAG;GAClF,MAAM,OAAO,KAAK,KAAK,WAAW,MAAM,IAAI;GAC5C,IAAI,MAAM,eAAe,GAAG;IAC3B,MAAM,SAAS,MAAM,GAAG,SAAS,SAAS,IAAI;IAC9C,MAAM,iBAAiB,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,MAAM;IAC9D,IAAI;KACH,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,cAAc,EAAA,CAAG,YAAY,GAAG;IAC9D,QAAQ;KACP;IACD;IACA,MAAM,GAAG,SAAS,OAAO,IAAI;IAC7B,MAAM,GAAG,SAAS,QAAQ,QAAQ,MAAM,KAAK;GAC9C,OAAO,IAAI,MAAM,YAAY,GAAG,MAAM,MAAM,IAAI;EACjD;CACD;CACA,MAAM,MAAM,IAAI;AACjB;AACA,eAAe,iBAAiB,QAAQ,aAAa;CACpD,MAAM,GAAG,SAAS,GAAG,QAAQ,aAAa;EACzC,WAAW;EACX,kBAAkB;CACnB,CAAC;CACD,MAAM,+BAA+B,WAAW;AACjD;;;AAGA,SAAS,SAAS,MAAM,WAAW;CAClC,MAAM,WAAW,KAAK,SAAS,MAAM,SAAS;CAC9C,OAAO,aAAa,MAAM,CAAC,SAAS,WAAW,KAAK,KAAK,KAAK,KAAK,aAAa,QAAQ,CAAC,KAAK,WAAW,QAAQ;AAClH;;;;;AAKA,eAAe,+BAA+B,WAAW;CACxD,MAAM,WAAW,MAAM,GAAG,SAAS,SAAS,SAAS;CACrD,MAAM,OAAO,OAAO,cAAc;EACjC,KAAK,MAAM,SAAS,MAAM,GAAG,SAAS,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC,GAAG;GAClF,MAAM,OAAO,KAAK,KAAK,WAAW,MAAM,IAAI;GAC5C,IAAI,MAAM,eAAe,GAAG;IAC3B,IAAI;IACJ,IAAI;KACH,aAAa,MAAM,GAAG,SAAS,SAAS,IAAI;IAC7C,QAAQ;KACP,MAAM,IAAI,MAAM,qDAAqD,MAAM;IAC5E;IACA,IAAI,CAAC,SAAS,UAAU,UAAU,GAAG,MAAM,IAAI,MAAM,4EAA4E,KAAK,MAAM,MAAM,GAAG,SAAS,SAAS,IAAI,GAAG;GAC/K,OAAO,IAAI,MAAM,YAAY,GAAG,MAAM,KAAK,IAAI;EAChD;CACD;CACA,MAAM,KAAK,SAAS;AACrB"}