alchemy 0.76.1 → 0.77.1

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 (123) hide show
  1. package/bin/alchemy.js +109 -29
  2. package/bin/services/execute-alchemy.ts +10 -1
  3. package/lib/aws/ec2/index.d.ts +1 -0
  4. package/lib/aws/ec2/index.d.ts.map +1 -1
  5. package/lib/aws/ec2/index.js +1 -0
  6. package/lib/aws/ec2/index.js.map +1 -1
  7. package/lib/aws/index.d.ts +1 -7
  8. package/lib/aws/index.d.ts.map +1 -1
  9. package/lib/aws/index.js +1 -8
  10. package/lib/aws/index.js.map +1 -1
  11. package/lib/cloudflare/bucket-custom-domain.d.ts +90 -0
  12. package/lib/cloudflare/bucket-custom-domain.d.ts.map +1 -0
  13. package/lib/cloudflare/bucket-custom-domain.js +81 -0
  14. package/lib/cloudflare/bucket-custom-domain.js.map +1 -0
  15. package/lib/cloudflare/bucket.d.ts +28 -4
  16. package/lib/cloudflare/bucket.d.ts.map +1 -1
  17. package/lib/cloudflare/bucket.js +41 -14
  18. package/lib/cloudflare/bucket.js.map +1 -1
  19. package/lib/cloudflare/cloudflare-env-proxy.d.ts.map +1 -1
  20. package/lib/cloudflare/cloudflare-env-proxy.js +0 -3
  21. package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -1
  22. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  23. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  24. package/lib/cloudflare/container.d.ts.map +1 -1
  25. package/lib/cloudflare/container.js +8 -5
  26. package/lib/cloudflare/container.js.map +1 -1
  27. package/lib/cloudflare/d1-database.d.ts +13 -3
  28. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  29. package/lib/cloudflare/d1-database.js +31 -15
  30. package/lib/cloudflare/d1-database.js.map +1 -1
  31. package/lib/cloudflare/index.d.ts +1 -0
  32. package/lib/cloudflare/index.d.ts.map +1 -1
  33. package/lib/cloudflare/index.js +1 -0
  34. package/lib/cloudflare/index.js.map +1 -1
  35. package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
  36. package/lib/cloudflare/miniflare/remote-binding-proxy.js +73 -9
  37. package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
  38. package/lib/cloudflare/react-router/plugin.d.ts +2 -1
  39. package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
  40. package/lib/cloudflare/react-router/plugin.js +6 -14
  41. package/lib/cloudflare/react-router/plugin.js.map +1 -1
  42. package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
  43. package/lib/cloudflare/vite/plugin.js +0 -3
  44. package/lib/cloudflare/vite/plugin.js.map +1 -1
  45. package/lib/cloudflare/worker-bundle.d.ts.map +1 -1
  46. package/lib/cloudflare/worker-bundle.js +17 -0
  47. package/lib/cloudflare/worker-bundle.js.map +1 -1
  48. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  49. package/lib/cloudflare/worker-metadata.js +6 -4
  50. package/lib/cloudflare/worker-metadata.js.map +1 -1
  51. package/lib/cloudflare/worker-subdomain.d.ts.map +1 -1
  52. package/lib/cloudflare/worker-subdomain.js +0 -1
  53. package/lib/cloudflare/worker-subdomain.js.map +1 -1
  54. package/lib/cloudflare/worker.d.ts.map +1 -1
  55. package/lib/cloudflare/worker.js +28 -38
  56. package/lib/cloudflare/worker.js.map +1 -1
  57. package/lib/cloudflare/wrangler.json.d.ts +2 -281
  58. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  59. package/lib/cloudflare/wrangler.json.js +23 -11
  60. package/lib/cloudflare/wrangler.json.js.map +1 -1
  61. package/lib/docker/api.d.ts +4 -0
  62. package/lib/docker/api.d.ts.map +1 -1
  63. package/lib/docker/api.js +3 -0
  64. package/lib/docker/api.js.map +1 -1
  65. package/lib/docker/image.d.ts +50 -12
  66. package/lib/docker/image.d.ts.map +1 -1
  67. package/lib/docker/image.js +86 -58
  68. package/lib/docker/image.js.map +1 -1
  69. package/lib/docker/remote-image.d.ts +1 -0
  70. package/lib/docker/remote-image.d.ts.map +1 -1
  71. package/lib/docker/remote-image.js +2 -0
  72. package/lib/docker/remote-image.js.map +1 -1
  73. package/lib/encrypt.d.ts +28 -3
  74. package/lib/encrypt.d.ts.map +1 -1
  75. package/lib/encrypt.js +77 -3
  76. package/lib/encrypt.js.map +1 -1
  77. package/lib/planetscale/role.d.ts +9 -0
  78. package/lib/planetscale/role.d.ts.map +1 -1
  79. package/lib/planetscale/role.js +18 -3
  80. package/lib/planetscale/role.js.map +1 -1
  81. package/lib/prisma-postgres/api.d.ts.map +1 -1
  82. package/lib/prisma-postgres/api.js +1 -0
  83. package/lib/prisma-postgres/api.js.map +1 -1
  84. package/lib/scope.d.ts +5 -0
  85. package/lib/scope.d.ts.map +1 -1
  86. package/lib/scope.js +23 -0
  87. package/lib/scope.js.map +1 -1
  88. package/lib/serde.js +1 -1
  89. package/lib/serde.js.map +1 -1
  90. package/lib/util/telemetry.js +4 -0
  91. package/lib/util/telemetry.js.map +1 -1
  92. package/package.json +12 -10
  93. package/src/aws/ec2/index.ts +1 -0
  94. package/src/aws/index.ts +1 -9
  95. package/src/cloudflare/bucket-custom-domain.ts +281 -0
  96. package/src/cloudflare/bucket.ts +85 -18
  97. package/src/cloudflare/cloudflare-env-proxy.ts +0 -3
  98. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  99. package/src/cloudflare/container.ts +10 -7
  100. package/src/cloudflare/d1-database.ts +44 -6
  101. package/src/cloudflare/index.ts +1 -0
  102. package/src/cloudflare/miniflare/remote-binding-proxy.ts +80 -9
  103. package/src/cloudflare/react-router/plugin.ts +9 -21
  104. package/src/cloudflare/vite/plugin.ts +0 -3
  105. package/src/cloudflare/worker-bundle.ts +28 -1
  106. package/src/cloudflare/worker-metadata.ts +8 -4
  107. package/src/cloudflare/worker-subdomain.ts +0 -1
  108. package/src/cloudflare/worker.ts +32 -45
  109. package/src/cloudflare/wrangler.json.ts +62 -397
  110. package/src/docker/api.ts +7 -0
  111. package/src/docker/image.ts +164 -89
  112. package/src/docker/remote-image.ts +3 -0
  113. package/src/encrypt.ts +115 -3
  114. package/src/planetscale/role.ts +30 -3
  115. package/src/prisma-postgres/api.ts +1 -0
  116. package/src/scope.ts +27 -0
  117. package/src/serde.ts +1 -1
  118. package/src/util/telemetry.ts +5 -0
  119. package/workers/cloudflare-state-store.js +4802 -8
  120. package/workers/dofs-state-store.js +632 -2
  121. package/workers/remote-binding-proxy.js +1929 -3
  122. package/workers/tunnel-proxy.js +58 -6
  123. package/workers/tunnel-proxy.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/docker/image.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,UAAU;IACvC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,KAAK,yFAGR,OAAO,CAAC,KAAK,CAAC,MAChB,MAAM,SACH,UAAU,KAChB,OAAO,CAAC,KAAK,CAAC,CA8IlB,CAAC"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/docker/image.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,CACA;IACE;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IACpC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,GACD;IACE;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;IAE1B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,KAAK,yFAGR,OAAO,CAAC,KAAK,CAAC,MAChB,MAAM,SACH,UAAU,KAChB,OAAO,CAAC,KAAK,CAAC,CA8KlB,CAAC"}
@@ -28,11 +28,26 @@ export const Image = Resource("docker::Image", async function (id, props) {
28
28
  // This is intentional as other resources might depend on the same image
29
29
  return this.destroy();
30
30
  }
31
+ const tag = props.tag || "latest";
32
+ const name = props.name ||
33
+ (typeof props.image === "string"
34
+ ? props.image
35
+ : props.image?.name)?.split(":")[0] ||
36
+ id;
37
+ const imageRef = `${name}:${tag}`;
38
+ let imageId;
39
+ if (props.image) {
40
+ const image = typeof props.image === "string" ? props.image : props.image.imageRef;
41
+ const kind = typeof props.image === "object" && props.image.kind === "Image"
42
+ ? "local"
43
+ : "remote";
44
+ if (kind === "remote") {
45
+ await api.pullImage(image);
46
+ }
47
+ await api.tagImage(image, imageRef);
48
+ // TODO: Extract image ID from pull output if available
49
+ }
31
50
  else {
32
- // Normalize properties
33
- const tag = props.tag || "latest";
34
- const name = props.name || id;
35
- const imageRef = `${name}:${tag}`;
36
51
  let context;
37
52
  let dockerfile;
38
53
  if (props.build?.dockerfile && props.build?.context) {
@@ -56,7 +71,7 @@ export const Image = Resource("docker::Image", async function (id, props) {
56
71
  // Prepare build options
57
72
  const buildOptions = props.build?.args || {};
58
73
  // Add platform if specified
59
- let buildArgs = ["build", "-t", imageRef];
74
+ const buildArgs = ["build", "-t", imageRef];
60
75
  if (props.build?.platform) {
61
76
  buildArgs.push("--platform", props.build.platform);
62
77
  }
@@ -70,10 +85,20 @@ export const Image = Resource("docker::Image", async function (id, props) {
70
85
  buildArgs.push("--cache-from", cacheSource);
71
86
  }
72
87
  }
88
+ // Add cache destinations if specified
89
+ if (props.build?.cacheTo && props.build.cacheTo.length > 0) {
90
+ for (const cacheTarget of props.build.cacheTo) {
91
+ buildArgs.push("--cache-to", cacheTarget);
92
+ }
93
+ }
73
94
  // Add build arguments
74
95
  for (const [key, value] of Object.entries(buildOptions)) {
75
96
  buildArgs.push("--build-arg", `${key}=${value}`);
76
97
  }
98
+ // Add build options if specified
99
+ if (props.build?.options && props.build.options.length > 0) {
100
+ buildArgs.push(...props.build.options);
101
+ }
77
102
  buildArgs.push("-f", dockerfile);
78
103
  // Add context path
79
104
  buildArgs.push(context);
@@ -81,62 +106,65 @@ export const Image = Resource("docker::Image", async function (id, props) {
81
106
  const { stdout } = await api.exec(buildArgs);
82
107
  // Extract image ID from build output if available
83
108
  const imageIdMatch = /Successfully built ([a-f0-9]+)/.exec(stdout);
84
- const imageId = imageIdMatch ? imageIdMatch[1] : undefined;
85
- // Handle push if required
86
- let repoDigest;
87
- let finalImageRef = imageRef;
88
- if (props.registry && !props.skipPush) {
89
- const { server, username, password } = props.registry;
90
- // Ensure the registry server does not have trailing slash
91
- const registryHost = server.replace(/\/$/, "");
92
- // Determine if the built image already includes a registry host (e.g. ghcr.io/user/repo)
93
- const firstSegment = imageRef.split("/")[0];
94
- const hasRegistryPrefix = firstSegment.includes(".");
95
- // Compose the target image reference that will be pushed
96
- const targetImage = hasRegistryPrefix
97
- ? imageRef // already fully-qualified
98
- : `${registryHost}/${imageRef}`;
99
- try {
100
- // Create a temporary directory that will act as an isolated Docker config
101
- // (credentials) directory. This prevents race-conditions when multiple
102
- // concurrent tests perform `docker login` / `logout` by ensuring each
103
- // Image operation has its own credential store.
104
- const tempConfigDir = await fs.mkdtemp(path.join(os.tmpdir(), "docker-config-"));
105
- const api = new DockerApi({ configDir: tempConfigDir });
106
- // Authenticate to registry using the isolated config directory
107
- await api.login(registryHost, username, password.unencrypted);
108
- // Tag local image with fully qualified name if necessary
109
- if (targetImage !== imageRef) {
110
- await api.exec(["tag", imageRef, targetImage]);
111
- }
112
- // Push the image
113
- const { stdout: pushOut } = await api.exec(["push", targetImage]);
114
- // Attempt to extract the repo digest from push output
115
- const digestMatch = /digest:\s+([a-z0-9]+:[a-f0-9]{64})/.exec(pushOut);
116
- if (digestMatch) {
117
- const digestHash = digestMatch[1];
118
- // Strip tag (anything after last :) to build image@digest reference
119
- const [repoWithoutTag] = targetImage.split(":").length > 2
120
- ? [targetImage] // unlikely but safety
121
- : [targetImage.substring(0, targetImage.lastIndexOf(":"))];
122
- repoDigest = `${repoWithoutTag}@${digestHash}`;
123
- }
124
- // Update the final image reference to point at the pushed image
125
- finalImageRef = targetImage;
109
+ imageId = imageIdMatch ? imageIdMatch[1] : undefined;
110
+ }
111
+ // Handle push if required
112
+ let repoDigest;
113
+ let finalImageRef = imageRef;
114
+ if (props.registry && !props.skipPush) {
115
+ const { server, username, password } = props.registry;
116
+ // Ensure the registry server does not have trailing slash
117
+ const registryHost = server.replace(/\/$/, "");
118
+ // Determine if the built image already includes a registry host (e.g. ghcr.io/user/repo)
119
+ const firstSegment = imageRef.split("/")[0];
120
+ const hasRegistryPrefix = firstSegment.includes(".");
121
+ // Compose the target image reference that will be pushed
122
+ const targetImage = hasRegistryPrefix
123
+ ? imageRef // already fully-qualified
124
+ : `${registryHost}/${imageRef}`;
125
+ try {
126
+ // Create a temporary directory that will act as an isolated Docker config
127
+ // (credentials) directory. This prevents race-conditions when multiple
128
+ // concurrent tests perform `docker login` / `logout` by ensuring each
129
+ // Image operation has its own credential store.
130
+ const tempConfigDir = await fs.mkdtemp(path.join(os.tmpdir(), "docker-config-"));
131
+ const api = new DockerApi({ configDir: tempConfigDir });
132
+ // Authenticate to registry using the isolated config directory
133
+ await api.login(registryHost, username, password.unencrypted);
134
+ // Tag local image with fully qualified name if necessary
135
+ if (targetImage !== imageRef) {
136
+ await api.exec(["tag", imageRef, targetImage]);
126
137
  }
127
- finally {
128
- // Clean up credentials from the isolated config
129
- await api.logout(registryHost);
138
+ // Push the image
139
+ const { stdout: pushOut } = await api.exec(["push", targetImage]);
140
+ // Attempt to extract the repo digest from push output
141
+ const digestMatch = /digest:\s+([a-z0-9]+:[a-f0-9]{64})/.exec(pushOut);
142
+ if (digestMatch) {
143
+ const digestHash = digestMatch[1];
144
+ // Strip tag (anything after last :) to build image@digest reference
145
+ const [repoWithoutTag] = targetImage.split(":").length > 2
146
+ ? [targetImage] // unlikely but safety
147
+ : [targetImage.substring(0, targetImage.lastIndexOf(":"))];
148
+ repoDigest = `${repoWithoutTag}@${digestHash}`;
130
149
  }
150
+ // Update the final image reference to point at the pushed image
151
+ finalImageRef = targetImage;
152
+ }
153
+ finally {
154
+ // Clean up credentials from the isolated config
155
+ await api.logout(registryHost);
131
156
  }
132
- return {
133
- ...props,
134
- name,
135
- imageRef: finalImageRef,
136
- imageId,
137
- repoDigest,
138
- builtAt: Date.now(),
139
- };
140
157
  }
158
+ return {
159
+ kind: "Image",
160
+ ...props,
161
+ tag,
162
+ name,
163
+ imageRef: finalImageRef,
164
+ imageId,
165
+ repoDigest,
166
+ builtAt: Date.now(),
167
+ build: props.build,
168
+ };
141
169
  });
142
170
  //# sourceMappingURL=image.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/docker/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/docker/image.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ export interface RemoteImageProps {
20
20
  * Docker Remote Image resource
21
21
  */
22
22
  export interface RemoteImage extends RemoteImageProps {
23
+ kind: "RemoteImage";
23
24
  /**
24
25
  * Full image reference (name:tag)
25
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"remote-image.d.ts","sourceRoot":"","sources":["../../src/docker/remote-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,yFAGd,OAAO,CAAC,WAAW,CAAC,OACrB,MAAM,SACJ,gBAAgB,KACtB,OAAO,CAAC,WAAW,CAAC,CAuBxB,CAAC"}
1
+ {"version":3,"file":"remote-image.d.ts","sourceRoot":"","sources":["../../src/docker/remote-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,yFAGd,OAAO,CAAC,WAAW,CAAC,OACrB,MAAM,SACJ,gBAAgB,KACtB,OAAO,CAAC,WAAW,CAAC,CAyBxB,CAAC"}
@@ -26,8 +26,10 @@ export const RemoteImage = Resource("docker::RemoteImage", async function (_id,
26
26
  // Pull image
27
27
  await api.pullImage(imageRef);
28
28
  return {
29
+ kind: "RemoteImage",
29
30
  ...props,
30
31
  imageRef,
32
+ tag,
31
33
  createdAt: Date.now(),
32
34
  };
33
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remote-image.js","sourceRoot":"","sources":["../../src/docker/remote-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAqCrC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CACjC,qBAAqB,EACrB,KAAK,WAEH,GAAW,EACX,KAAuB;IAEvB,+BAA+B;IAC/B,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,4EAA4E;QAC5E,wEAAwE;QACxE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC;QAClC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAExC,aAAa;QACb,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO;YACL,GAAG,KAAK;YACR,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"remote-image.js","sourceRoot":"","sources":["../../src/docker/remote-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAsCrC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CACjC,qBAAqB,EACrB,KAAK,WAEH,GAAW,EACX,KAAuB;IAEvB,+BAA+B;IAC/B,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,4EAA4E;QAC5E,wEAAwE;QACxE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC;QAClC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAExC,aAAa;QACb,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,GAAG,KAAK;YACR,QAAQ;YACR,GAAG;YACH,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
package/lib/encrypt.d.ts CHANGED
@@ -1,17 +1,42 @@
1
+ interface Encrypted {
2
+ version: "v1";
3
+ ciphertext: string;
4
+ iv: string;
5
+ salt: string;
6
+ tag: string;
7
+ }
8
+ /**
9
+ * Decrypts a value encrypted with a symmetric key.
10
+ * For backwards compatibility, uses the legacy libsodium implementation if the value is a string.
11
+ * Otherwise, uses the AES-256-GCM implementation with scrypt key derivation.
12
+ */
13
+ export declare function decryptWithKey(value: string | Encrypted, key: string): Promise<string>;
14
+ /**
15
+ * Encrypt a value with a symmetric key using AES-256-GCM with scrypt key derivation.
16
+ */
17
+ export declare function encrypt(value: string, passphrase: string): Promise<Encrypted>;
18
+ /**
19
+ * Decrypt a value encrypted with a symmetric key using AES-256-GCM with scrypt key derivation.
20
+ * @internal - Exposed for testing. Use `decryptWithKey` instead.
21
+ */
22
+ export declare function aes256Decrypt(parts: Encrypted, passphrase: string): Promise<string>;
1
23
  /**
2
24
  * Encrypt a value with a symmetric key using libsodium
25
+ * @internal - Exposed to test backwards compatibility. Use `encrypt` instead.
3
26
  *
4
27
  * @param value - The value to encrypt
5
28
  * @param key - The encryption key
6
29
  * @returns The base64-encoded encrypted value with nonce
7
30
  */
8
- export declare function encrypt(value: string, key: string): Promise<string>;
31
+ export declare function libsodiumEncrypt(value: string, key: string): Promise<string>;
9
32
  /**
10
- * Decrypt a value encrypted with a symmetric key
33
+ * Decrypt a value encrypted with a symmetric key using libsodium.
34
+ * @internal - Exposed to test backwards compatibility. Use `decryptWithKey` instead.
11
35
  *
12
36
  * @param encryptedValue - The base64-encoded encrypted value with nonce
13
37
  * @param key - The decryption key
14
38
  * @returns The decrypted string
15
39
  */
16
- export declare function decryptWithKey(encryptedValue: string, key: string): Promise<string>;
40
+ export declare function libsodiumDecrypt(encryptedValue: string, key: string): Promise<string>;
41
+ export {};
17
42
  //# sourceMappingURL=encrypt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../src/encrypt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BzE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
1
+ {"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../src/encrypt.ts"],"names":[],"mappings":"AAUA,UAAU,SAAS;IACjB,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,CAmBpB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAwBD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
package/lib/encrypt.js CHANGED
@@ -1,11 +1,84 @@
1
+ import crypto from "node:crypto";
2
+ const KEY_LEN = 32;
3
+ const SCRYPT_N = 16384;
4
+ const SCRYPT_R = 8;
5
+ const SCRYPT_P = 1;
6
+ const SALT_LEN = 16;
7
+ const IV_LEN = 12;
8
+ const ALGO = "aes-256-gcm";
9
+ /**
10
+ * Decrypts a value encrypted with a symmetric key.
11
+ * For backwards compatibility, uses the legacy libsodium implementation if the value is a string.
12
+ * Otherwise, uses the AES-256-GCM implementation with scrypt key derivation.
13
+ */
14
+ export function decryptWithKey(value, key) {
15
+ if (typeof value === "string") {
16
+ return libsodiumDecrypt(value, key);
17
+ }
18
+ return aes256Decrypt(value, key);
19
+ }
20
+ /**
21
+ * Encrypt a value with a symmetric key using AES-256-GCM with scrypt key derivation.
22
+ */
23
+ export async function encrypt(value, passphrase) {
24
+ const salt = crypto.randomBytes(SALT_LEN);
25
+ const key = await deriveScryptKey(passphrase, salt);
26
+ const iv = crypto.randomBytes(IV_LEN);
27
+ const cipher = crypto.createCipheriv(ALGO, key, iv);
28
+ const ciphertext = Buffer.concat([
29
+ cipher.update(value, "utf8"),
30
+ cipher.final(),
31
+ ]);
32
+ const tag = cipher.getAuthTag();
33
+ return {
34
+ version: "v1",
35
+ ciphertext: ciphertext.toString("base64"),
36
+ iv: iv.toString("base64"),
37
+ salt: salt.toString("base64"),
38
+ tag: tag.toString("base64"),
39
+ };
40
+ }
41
+ /**
42
+ * Decrypt a value encrypted with a symmetric key using AES-256-GCM with scrypt key derivation.
43
+ * @internal - Exposed for testing. Use `decryptWithKey` instead.
44
+ */
45
+ export async function aes256Decrypt(parts, passphrase) {
46
+ const salt = Buffer.from(parts.salt, "base64");
47
+ const iv = Buffer.from(parts.iv, "base64");
48
+ const ciphertext = Buffer.from(parts.ciphertext, "base64");
49
+ const tag = Buffer.from(parts.tag, "base64");
50
+ const key = await deriveScryptKey(passphrase, salt);
51
+ const decipher = crypto.createDecipheriv(ALGO, key, iv);
52
+ decipher.setAuthTag(tag);
53
+ const plaintext = Buffer.concat([
54
+ decipher.update(ciphertext),
55
+ decipher.final(),
56
+ ]);
57
+ return plaintext.toString("utf8");
58
+ }
59
+ async function deriveScryptKey(passphrase, salt) {
60
+ return new Promise((resolve, reject) => {
61
+ crypto.scrypt(passphrase, salt, KEY_LEN, {
62
+ N: SCRYPT_N,
63
+ r: SCRYPT_R,
64
+ p: SCRYPT_P,
65
+ }, (err, derivedKey) => {
66
+ if (err)
67
+ reject(err);
68
+ else
69
+ resolve(derivedKey);
70
+ });
71
+ });
72
+ }
1
73
  /**
2
74
  * Encrypt a value with a symmetric key using libsodium
75
+ * @internal - Exposed to test backwards compatibility. Use `encrypt` instead.
3
76
  *
4
77
  * @param value - The value to encrypt
5
78
  * @param key - The encryption key
6
79
  * @returns The base64-encoded encrypted value with nonce
7
80
  */
8
- export async function encrypt(value, key) {
81
+ export async function libsodiumEncrypt(value, key) {
9
82
  const sodium = (await import("libsodium-wrappers")).default;
10
83
  // Initialize libsodium
11
84
  await sodium.ready;
@@ -22,13 +95,14 @@ export async function encrypt(value, key) {
22
95
  return sodium.to_base64(combined, sodium.base64_variants.ORIGINAL);
23
96
  }
24
97
  /**
25
- * Decrypt a value encrypted with a symmetric key
98
+ * Decrypt a value encrypted with a symmetric key using libsodium.
99
+ * @internal - Exposed to test backwards compatibility. Use `decryptWithKey` instead.
26
100
  *
27
101
  * @param encryptedValue - The base64-encoded encrypted value with nonce
28
102
  * @param key - The decryption key
29
103
  * @returns The decrypted string
30
104
  */
31
- export async function decryptWithKey(encryptedValue, key) {
105
+ export async function libsodiumDecrypt(encryptedValue, key) {
32
106
  const sodium = (await import("libsodium-wrappers")).default;
33
107
  // Initialize libsodium
34
108
  await sodium.ready;
@@ -1 +1 @@
1
- {"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../src/encrypt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAa,EAAE,GAAW;IACtD,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,uBAAuB;IACvB,MAAM,MAAM,CAAC,KAAK,CAAC;IAEnB,mCAAmC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CACzC,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CACxB,CAAC;IAEF,0BAA0B;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAEzE,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAC/C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EACzB,KAAK,EACL,SAAS,CACV,CAAC;IAEF,sDAAsD;IACtD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,cAAsB,EACtB,GAAW;IAEX,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,uBAAuB;IACvB,MAAM,MAAM,CAAC,KAAK,CAAC;IAEnB,mCAAmC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CACzC,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CACxB,CAAC;IAEF,mCAAmC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,cAAc,EACd,MAAM,CAAC,eAAe,CAAC,QAAQ,CAChC,CAAC;IAEF,+BAA+B;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAEtE,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,0BAA0B,CACpD,UAAU,EACV,KAAK,EACL,SAAS,CACV,CAAC;IAEF,OAAO,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../src/encrypt.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,11 @@ export interface RoleProps extends PlanetScaleProps {
40
40
  * @default true
41
41
  */
42
42
  delete?: boolean;
43
+ /**
44
+ * successor role
45
+ * @default postgres
46
+ */
47
+ successor?: string | Role;
43
48
  }
44
49
  /**
45
50
  * Roles that can be inherited from.
@@ -88,6 +93,10 @@ export interface Role extends Omit<RoleProps, "inheritedRoles"> {
88
93
  * The roles that this role inherits from.
89
94
  */
90
95
  inheritedRoles: InheritedRole[];
96
+ /**
97
+ * The successor role
98
+ */
99
+ successor: string;
91
100
  }
92
101
  /**
93
102
  * Create and manage database roles for PlanetScale PostgreSQL branches. Database roles provide secure access to your database with specific roles and permissions.
@@ -1 +1 @@
1
- {"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/planetscale/role.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAEvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,eAAe,GACf,wBAAwB,GACxB,aAAa,GACb,YAAY,GACZ,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,6BAA6B,GAC7B,mBAAmB,GACnB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,IAAK,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7D;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9B;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEpC;;OAEG;IACH,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,IAAI,yFAGP,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,MAC1B,MAAM,SACH,SAAS,KACf,OAAO,CAAC,IAAI,CAAC,CAwHjB,CAAC"}
1
+ {"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/planetscale/role.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAEvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,eAAe,GACf,wBAAwB,GACxB,aAAa,GACb,YAAY,GACZ,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,6BAA6B,GAC7B,mBAAmB,GACnB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,IAAK,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7D;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9B;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEpC;;OAEG;IACH,cAAc,EAAE,aAAa,EAAE,CAAC;IAEhC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,IAAI,yFAGP,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,MAC1B,MAAM,SACH,SAAS,KACf,OAAO,CAAC,IAAI,CAAC,CAwIjB,CAAC"}
@@ -63,10 +63,16 @@ export const Role = Resource("planetscale::Role", async function (id, props) {
63
63
  ? props.inheritedRoles
64
64
  : props.inheritedRoles.inheritedRoles;
65
65
  const shouldDelete = props.delete ?? false;
66
+ const successorRole = typeof props.successor === "string"
67
+ ? props.successor
68
+ : (props.successor?.name ?? "postgres");
66
69
  switch (this.phase) {
67
70
  case "delete": {
68
71
  if (shouldDelete && this.output?.id) {
69
72
  const res = await api.deleteRole({
73
+ body: {
74
+ successor: successorRole,
75
+ },
70
76
  path: {
71
77
  organization,
72
78
  database,
@@ -134,14 +140,23 @@ export const Role = Resource("planetscale::Role", async function (id, props) {
134
140
  expiresAt: data.expires_at,
135
141
  databaseName: data.database_name,
136
142
  inheritedRoles,
143
+ successor: successorRole,
137
144
  connectionUrl: alchemy.secret(`postgresql://${data.username}:${data.password}@${data.access_host_url}:5432/${data.database_name}?sslmode=verify-full`),
138
145
  connectionUrlPooled: alchemy.secret(`postgresql://${data.username}:${data.password}@${data.access_host_url}:6432/${data.database_name}?sslmode=verify-full`),
139
146
  };
140
147
  }
141
148
  case "update": {
142
- // According to the types, the only property that can be updated is the name.
143
- // However, I was getting 500 errors when trying to update the name, so we'll just replace.
144
- return this.replace();
149
+ if (successorRole !== this.output.successor) {
150
+ // According to the types, the only property that can be updated is the name.
151
+ // However, I was getting 500 errors when trying to update the name, so we'll just replace.
152
+ return this.replace();
153
+ }
154
+ else {
155
+ return {
156
+ ...this.output,
157
+ successor: successorRole,
158
+ };
159
+ }
145
160
  }
146
161
  }
147
162
  });
@@ -1 +1 @@
1
- {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/planetscale/role.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/planetscale/role.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/prisma-postgres/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;gBAED,KAAK,EAAE;QACjB,KAAK,EAAE;YACL,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,QAAQ,CAAC;KACpB;CAWF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACtC,YAAY,CAgCd"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/prisma-postgres/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;gBAED,KAAK,EAAE;QACjB,KAAK,EAAE;YACL,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,QAAQ,CAAC;KACpB;CAWF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACtC,YAAY,CAiCd"}
@@ -31,6 +31,7 @@ export function createPrismaApi(options = {}) {
31
31
  throwOnError: true,
32
32
  headers: {
33
33
  Authorization: `Bearer ${serviceToken}`,
34
+ "User-Agent": "alchemy/1.0",
34
35
  },
35
36
  }));
36
37
  client.interceptors.error.use((error, response, request, options) => {
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/prisma-postgres/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAShD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,MAAM,CAAS;IACf,MAAM,CAAS;IACf,GAAG,CAAS;IACZ,IAAI,CAAS;IAEb,YAAY,KAOX;QACC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACtC,KAAK,CACH,uCAAuC,KAAK,CAAC,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAC1E,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAqC,EAAE;IAEvC,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACxE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CACzB,YAAY,CAAgB;QAC1B,OAAO,EAAE,uBAAuB;QAChC,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,YAAY,EAAE;SACxC;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAClE,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC;gBAClB,KAAK,EAAE,KAGN;gBACD,OAAO;gBACP,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,YAAY,CAAC;QACtB,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/prisma-postgres/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAShD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,MAAM,CAAS;IACf,MAAM,CAAS;IACf,GAAG,CAAS;IACZ,IAAI,CAAS;IAEb,YAAY,KAOX;QACC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACtC,KAAK,CACH,uCAAuC,KAAK,CAAC,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAC1E,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAqC,EAAE;IAEvC,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACxE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CACzB,YAAY,CAAgB;QAC1B,OAAO,EAAE,uBAAuB;QAChC,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,YAAY,EAAE;YACvC,YAAY,EAAE,aAAa;SAC5B;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAClE,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC;gBAClB,KAAK,EAAE,KAGN;gBACD,OAAO;gBACP,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,YAAY,CAAC;QACtB,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
package/lib/scope.d.ts CHANGED
@@ -169,6 +169,11 @@ export declare class Scope {
169
169
  spawn<E extends ((line: string) => string | undefined) | undefined>(id: string, options: Omit<IdempotentSpawnOptions, "log" | "stateFile"> & {
170
170
  extract?: E;
171
171
  }): Promise<E extends undefined ? undefined : string>;
172
+ exec(id: string, command: string): Promise<{
173
+ exitCode: number;
174
+ stdout: string;
175
+ stderr: string;
176
+ }>;
172
177
  /**
173
178
  * @internal
174
179
  */
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
package/lib/scope.js CHANGED
@@ -1,4 +1,7 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { spawn } from "node:child_process";
3
+ import { once } from "node:events";
4
+ import fs from "node:fs/promises";
2
5
  import util from "node:util";
3
6
  import path from "pathe";
4
7
  import pc from "picocolors";
@@ -162,6 +165,26 @@ export class Scope {
162
165
  this.onCleanup(result.stop);
163
166
  return result.extracted;
164
167
  }
168
+ async exec(id, command) {
169
+ const logFilePath = path.join(this.dotAlchemy, "logs", `${id}.log`);
170
+ const [cmd, ...args] = command.split(/\s+/);
171
+ const child = spawn(cmd, args, { stdio: "pipe" });
172
+ await once(child, "spawn"); // throws if command not found
173
+ await fs.mkdir(path.dirname(logFilePath), { recursive: true });
174
+ const logFile = await fs.open(logFilePath, "w");
175
+ let stdout = "";
176
+ let stderr = "";
177
+ child.stdout.on("data", (chunk) => {
178
+ stdout += chunk.toString();
179
+ logFile.write(chunk);
180
+ });
181
+ child.stderr.on("data", (chunk) => {
182
+ stderr += chunk.toString();
183
+ logFile.write(chunk);
184
+ });
185
+ const [exitCode] = (await once(child, "exit"));
186
+ return { exitCode, stdout, stderr };
187
+ }
165
188
  /**
166
189
  * @internal
167
190
  */