alchemy 0.1.15 → 0.1.16

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 (217) hide show
  1. package/lib/apply.js +1 -1
  2. package/lib/apply.js.map +1 -1
  3. package/lib/destroy.js +9 -3
  4. package/lib/destroy.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/apply.ts +1 -1
  7. package/src/destroy.ts +15 -10
  8. package/lib/$.d.ts +0 -12
  9. package/lib/$.d.ts.map +0 -1
  10. package/lib/$.js +0 -42
  11. package/lib/$.js.map +0 -1
  12. package/lib/alchemize.d.ts +0 -43
  13. package/lib/alchemize.d.ts.map +0 -1
  14. package/lib/alchemize.js +0 -112
  15. package/lib/alchemize.js.map +0 -1
  16. package/lib/apply.d.ts +0 -23
  17. package/lib/aws/account-id.d.ts +0 -5
  18. package/lib/aws/account-id.d.ts.map +0 -1
  19. package/lib/aws/account-id.js +0 -10
  20. package/lib/aws/account-id.js.map +0 -1
  21. package/lib/aws/bucket.d.ts +0 -21
  22. package/lib/aws/bucket.d.ts.map +0 -1
  23. package/lib/aws/bucket.js +0 -114
  24. package/lib/aws/bucket.js.map +0 -1
  25. package/lib/aws/function.d.ts +0 -53
  26. package/lib/aws/function.d.ts.map +0 -1
  27. package/lib/aws/function.js +0 -195
  28. package/lib/aws/function.js.map +0 -1
  29. package/lib/aws/index.d.ts +0 -9
  30. package/lib/aws/index.d.ts.map +0 -1
  31. package/lib/aws/index.js +0 -9
  32. package/lib/aws/index.js.map +0 -1
  33. package/lib/aws/oidc/github-oidc-provider.d.ts +0 -11
  34. package/lib/aws/oidc/github-oidc-provider.d.ts.map +0 -1
  35. package/lib/aws/oidc/github-oidc-provider.js +0 -22
  36. package/lib/aws/oidc/github-oidc-provider.js.map +0 -1
  37. package/lib/aws/oidc/index.d.ts +0 -3
  38. package/lib/aws/oidc/index.d.ts.map +0 -1
  39. package/lib/aws/oidc/index.js +0 -3
  40. package/lib/aws/oidc/index.js.map +0 -1
  41. package/lib/aws/oidc/oidc-provider.d.ts +0 -60
  42. package/lib/aws/oidc/oidc-provider.d.ts.map +0 -1
  43. package/lib/aws/oidc/oidc-provider.js +0 -140
  44. package/lib/aws/oidc/oidc-provider.js.map +0 -1
  45. package/lib/aws/policy.d.ts +0 -46
  46. package/lib/aws/policy.d.ts.map +0 -1
  47. package/lib/aws/policy.js +0 -139
  48. package/lib/aws/policy.js.map +0 -1
  49. package/lib/aws/queue.d.ts +0 -62
  50. package/lib/aws/queue.d.ts.map +0 -1
  51. package/lib/aws/queue.js +0 -167
  52. package/lib/aws/queue.js.map +0 -1
  53. package/lib/aws/role.d.ts +0 -27
  54. package/lib/aws/role.d.ts.map +0 -1
  55. package/lib/aws/role.js +0 -197
  56. package/lib/aws/role.js.map +0 -1
  57. package/lib/aws/ses.d.ts +0 -75
  58. package/lib/aws/ses.d.ts.map +0 -1
  59. package/lib/aws/ses.js +0 -189
  60. package/lib/aws/ses.js.map +0 -1
  61. package/lib/aws/table.d.ts +0 -26
  62. package/lib/aws/table.d.ts.map +0 -1
  63. package/lib/aws/table.js +0 -154
  64. package/lib/aws/table.js.map +0 -1
  65. package/lib/cloudflare/api.d.ts +0 -88
  66. package/lib/cloudflare/api.d.ts.map +0 -1
  67. package/lib/cloudflare/api.js +0 -184
  68. package/lib/cloudflare/api.js.map +0 -1
  69. package/lib/cloudflare/asset-manifest.d.ts +0 -15
  70. package/lib/cloudflare/asset-manifest.d.ts.map +0 -1
  71. package/lib/cloudflare/asset-manifest.js +0 -2
  72. package/lib/cloudflare/asset-manifest.js.map +0 -1
  73. package/lib/cloudflare/auth.d.ts +0 -52
  74. package/lib/cloudflare/auth.d.ts.map +0 -1
  75. package/lib/cloudflare/auth.js +0 -114
  76. package/lib/cloudflare/auth.js.map +0 -1
  77. package/lib/cloudflare/bindings.d.ts +0 -259
  78. package/lib/cloudflare/bindings.d.ts.map +0 -1
  79. package/lib/cloudflare/bindings.js +0 -2
  80. package/lib/cloudflare/bindings.js.map +0 -1
  81. package/lib/cloudflare/durable-object-namespace.d.ts +0 -20
  82. package/lib/cloudflare/durable-object-namespace.d.ts.map +0 -1
  83. package/lib/cloudflare/durable-object-namespace.js +0 -21
  84. package/lib/cloudflare/durable-object-namespace.js.map +0 -1
  85. package/lib/cloudflare/generate-asset-manifest.d.ts +0 -3
  86. package/lib/cloudflare/generate-asset-manifest.d.ts.map +0 -1
  87. package/lib/cloudflare/generate-asset-manifest.js +0 -69
  88. package/lib/cloudflare/generate-asset-manifest.js.map +0 -1
  89. package/lib/cloudflare/index.d.ts +0 -7
  90. package/lib/cloudflare/index.d.ts.map +0 -1
  91. package/lib/cloudflare/index.js +0 -7
  92. package/lib/cloudflare/index.js.map +0 -1
  93. package/lib/cloudflare/kv-namespace.d.ts +0 -64
  94. package/lib/cloudflare/kv-namespace.d.ts.map +0 -1
  95. package/lib/cloudflare/kv-namespace.js +0 -114
  96. package/lib/cloudflare/kv-namespace.js.map +0 -1
  97. package/lib/cloudflare/state.d.ts +0 -83
  98. package/lib/cloudflare/state.d.ts.map +0 -1
  99. package/lib/cloudflare/state.js +0 -109
  100. package/lib/cloudflare/state.js.map +0 -1
  101. package/lib/cloudflare/static-site-router.d.ts +0 -19
  102. package/lib/cloudflare/static-site-router.d.ts.map +0 -1
  103. package/lib/cloudflare/static-site-router.js +0 -110
  104. package/lib/cloudflare/static-site-router.js.map +0 -1
  105. package/lib/cloudflare/static-site.d.ts +0 -166
  106. package/lib/cloudflare/static-site.d.ts.map +0 -1
  107. package/lib/cloudflare/static-site.js +0 -150
  108. package/lib/cloudflare/static-site.js.map +0 -1
  109. package/lib/cloudflare/types.d.ts +0 -52
  110. package/lib/cloudflare/types.d.ts.map +0 -1
  111. package/lib/cloudflare/types.js +0 -21
  112. package/lib/cloudflare/types.js.map +0 -1
  113. package/lib/cloudflare/upload-asset-manifest.d.ts +0 -12
  114. package/lib/cloudflare/upload-asset-manifest.d.ts.map +0 -1
  115. package/lib/cloudflare/upload-asset-manifest.js +0 -55
  116. package/lib/cloudflare/upload-asset-manifest.js.map +0 -1
  117. package/lib/cloudflare/worker-metadata.d.ts +0 -130
  118. package/lib/cloudflare/worker-metadata.d.ts.map +0 -1
  119. package/lib/cloudflare/worker-metadata.js +0 -2
  120. package/lib/cloudflare/worker-metadata.js.map +0 -1
  121. package/lib/cloudflare/worker-migration.d.ts +0 -110
  122. package/lib/cloudflare/worker-migration.d.ts.map +0 -1
  123. package/lib/cloudflare/worker-migration.js +0 -11
  124. package/lib/cloudflare/worker-migration.js.map +0 -1
  125. package/lib/cloudflare/worker.d.ts +0 -108
  126. package/lib/cloudflare/worker.d.ts.map +0 -1
  127. package/lib/cloudflare/worker.js +0 -399
  128. package/lib/cloudflare/worker.js.map +0 -1
  129. package/lib/destroy.d.ts +0 -19
  130. package/lib/error.d.ts +0 -2
  131. package/lib/error.d.ts.map +0 -1
  132. package/lib/error.js +0 -13
  133. package/lib/error.js.map +0 -1
  134. package/lib/esbuild.d.ts +0 -152
  135. package/lib/esbuild.d.ts.map +0 -1
  136. package/lib/esbuild.js +0 -67
  137. package/lib/esbuild.js.map +0 -1
  138. package/lib/fs.d.ts +0 -12
  139. package/lib/fs.d.ts.map +0 -1
  140. package/lib/fs.js +0 -41
  141. package/lib/fs.js.map +0 -1
  142. package/lib/github/client.d.ts +0 -34
  143. package/lib/github/client.d.ts.map +0 -1
  144. package/lib/github/client.js +0 -91
  145. package/lib/github/client.js.map +0 -1
  146. package/lib/github/index.d.ts +0 -2
  147. package/lib/github/index.d.ts.map +0 -1
  148. package/lib/github/index.js +0 -2
  149. package/lib/github/index.js.map +0 -1
  150. package/lib/github/secret.d.ts +0 -46
  151. package/lib/github/secret.d.ts.map +0 -1
  152. package/lib/github/secret.js +0 -103
  153. package/lib/github/secret.js.map +0 -1
  154. package/lib/global.d.ts +0 -16
  155. package/lib/global.d.ts.map +0 -1
  156. package/lib/global.js +0 -42
  157. package/lib/global.js.map +0 -1
  158. package/lib/index.d.ts +0 -10
  159. package/lib/index.d.ts.map +0 -1
  160. package/lib/index.js +0 -9
  161. package/lib/index.js.map +0 -1
  162. package/lib/input.d.ts +0 -6
  163. package/lib/input.d.ts.map +0 -1
  164. package/lib/input.js +0 -2
  165. package/lib/input.js.map +0 -1
  166. package/lib/main.d.ts +0 -3
  167. package/lib/main.d.ts.map +0 -1
  168. package/lib/main.js +0 -32
  169. package/lib/main.js.map +0 -1
  170. package/lib/output.d.ts +0 -24
  171. package/lib/output.d.ts.map +0 -1
  172. package/lib/output.js +0 -23
  173. package/lib/output.js.map +0 -1
  174. package/lib/print.d.ts +0 -7
  175. package/lib/print.d.ts.map +0 -1
  176. package/lib/print.js +0 -10
  177. package/lib/print.js.map +0 -1
  178. package/lib/resource.d.ts +0 -71
  179. package/lib/resource.d.ts.map +0 -1
  180. package/lib/resource.js +0 -276
  181. package/lib/resource.js.map +0 -1
  182. package/lib/scope.d.ts +0 -18
  183. package/lib/scope.d.ts.map +0 -1
  184. package/lib/scope.js +0 -30
  185. package/lib/scope.js.map +0 -1
  186. package/lib/slug.d.ts +0 -2
  187. package/lib/slug.d.ts.map +0 -1
  188. package/lib/slug.js +0 -4
  189. package/lib/slug.js.map +0 -1
  190. package/lib/state.d.ts +0 -40
  191. package/lib/state.d.ts.map +0 -1
  192. package/lib/state.js +0 -73
  193. package/lib/state.js.map +0 -1
  194. package/lib/stripe/index.d.ts +0 -4
  195. package/lib/stripe/index.d.ts.map +0 -1
  196. package/lib/stripe/index.js +0 -4
  197. package/lib/stripe/index.js.map +0 -1
  198. package/lib/stripe/price.d.ts +0 -109
  199. package/lib/stripe/price.d.ts.map +0 -1
  200. package/lib/stripe/price.js +0 -112
  201. package/lib/stripe/price.js.map +0 -1
  202. package/lib/stripe/product.d.ts +0 -86
  203. package/lib/stripe/product.d.ts.map +0 -1
  204. package/lib/stripe/product.js +0 -90
  205. package/lib/stripe/product.js.map +0 -1
  206. package/lib/stripe/webhook.d.ts +0 -73
  207. package/lib/stripe/webhook.d.ts.map +0 -1
  208. package/lib/stripe/webhook.js +0 -94
  209. package/lib/stripe/webhook.js.map +0 -1
  210. package/lib/utils/content-type.d.ts +0 -8
  211. package/lib/utils/content-type.d.ts.map +0 -1
  212. package/lib/utils/content-type.js +0 -41
  213. package/lib/utils/content-type.js.map +0 -1
  214. package/lib/utils/retry.d.ts +0 -13
  215. package/lib/utils/retry.d.ts.map +0 -1
  216. package/lib/utils/retry.js +0 -32
  217. package/lib/utils/retry.js.map +0 -1
@@ -1,110 +0,0 @@
1
- import { Hono } from "hono";
2
- let isInit = false;
3
- const app = new Hono();
4
- export default {
5
- async fetch(request, env) {
6
- if (!isInit) {
7
- isInit = true;
8
- for (const [key, value] of Object.entries(env)) {
9
- if (key.startsWith("ROUTE_")) {
10
- console.log(key, value);
11
- const service = value;
12
- const patternKey = `__${key}`;
13
- if (!(patternKey in env)) {
14
- throw new Error(`Missing pattern key: ${patternKey}`);
15
- }
16
- const pattern = env[`__${key}`];
17
- console.log("pattern", pattern);
18
- // TODO(sam): we should support narrowing down METHOD
19
- app.all(pattern, (ctx) => service.fetch(ctx.req.raw));
20
- }
21
- }
22
- }
23
- return app.fetch(request, env);
24
- },
25
- };
26
- // fall back to assuming the request is a static file
27
- app.notFound(async (ctx) => {
28
- console.log("not found");
29
- const request = ctx.req;
30
- const env = ctx.env;
31
- const url = new URL(request.url);
32
- const pathname = url.pathname.replace(/^\//, "");
33
- const filePath = pathname === "" ? env.INDEX_PAGE : pathname;
34
- // Return from cache if available
35
- const cachedResponse = await lookupCache();
36
- if (cachedResponse) {
37
- return cachedResponse;
38
- }
39
- // Fetch from KV
40
- {
41
- const object = await env.ASSETS.getWithMetadata(filePath);
42
- if (object.value) {
43
- return await respond(200, filePath, object);
44
- }
45
- }
46
- {
47
- const guess = filePath + (filePath.endsWith("/") ? "" : "/") + "index.html";
48
- const object = await env.ASSETS.getWithMetadata(guess);
49
- if (object.value) {
50
- return await respond(200, guess, object);
51
- }
52
- }
53
- {
54
- const guess = filePath + ".html";
55
- const object = await env.ASSETS.getWithMetadata(guess);
56
- if (object.value) {
57
- return await respond(200, guess, object);
58
- }
59
- }
60
- // Handle error page
61
- if (env.ERROR_PAGE) {
62
- const object = await env.ASSETS.getWithMetadata(env.ERROR_PAGE);
63
- if (object.value) {
64
- return await respond(404, env.ERROR_PAGE, object);
65
- }
66
- }
67
- else {
68
- const object = await env.ASSETS.getWithMetadata(env.INDEX_PAGE);
69
- if (object.value) {
70
- return await respond(200, env.INDEX_PAGE, object);
71
- }
72
- }
73
- return new Response("Page Not Found", { status: 404 });
74
- async function lookupCache() {
75
- const cache = caches.default;
76
- const r = await cache.match(request.url);
77
- // cache does not exist
78
- if (!r)
79
- return;
80
- // cache exists but etag does not match
81
- if (r.headers.get("etag") !== __ASSET_MANIFEST__[filePath])
82
- return;
83
- // cache exists
84
- return r;
85
- }
86
- async function saveCache(response) {
87
- const cache = caches.default;
88
- await cache.put(request.url, response.clone());
89
- }
90
- async function respond(status, filePath, object) {
91
- // build response
92
- const headers = new Headers();
93
- if (__ASSET_MANIFEST__[filePath]) {
94
- headers.set("etag", __ASSET_MANIFEST__[filePath]);
95
- headers.set("content-type", object.metadata.contentType);
96
- headers.set("cache-control", object.metadata.cacheControl);
97
- }
98
- // TODO: do we need base64 encoded here?
99
- // const response = new Response(base64ToArrayBuffer(object.value), {
100
- const response = new Response(object.value, {
101
- status,
102
- headers,
103
- });
104
- if (request.method === "GET") {
105
- await saveCache(response);
106
- }
107
- return response;
108
- }
109
- });
110
- //# sourceMappingURL=static-site-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static-site-router.js","sourceRoot":"","sources":["../../src/cloudflare/static-site-router.ts"],"names":[],"mappings":"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"}
@@ -1,166 +0,0 @@
1
- import type { BundleProps } from "../esbuild";
2
- import { Worker } from "./worker";
3
- /**
4
- * Idea of using KV with timeout inspired by SST: https://github.com/sst/sst/blob/dev/platform/src/components/cloudflare/static-site.ts
5
- */
6
- /**
7
- * Properties for creating or updating a StaticSite
8
- */
9
- export interface StaticSiteProps {
10
- /**
11
- * Name for the site
12
- * This is mandatory - must be explicitly specified
13
- */
14
- name: string;
15
- /**
16
- * Path to the directory containing static assets
17
- */
18
- dir: string;
19
- /**
20
- * Custom Worker script to serve the site
21
- * If not provided, a default script will be used
22
- */
23
- workerScript?: string;
24
- /**
25
- * Worker script format
26
- * 'esm' - ECMAScript modules (default)
27
- * 'cjs' - CommonJS modules
28
- * @default 'esm'
29
- */
30
- format?: "esm" | "cjs";
31
- /**
32
- * Custom error page path (relative to directory)
33
- * @example "404.html"
34
- */
35
- errorPage?: string;
36
- /**
37
- * Index page filename
38
- * @default "index.html"
39
- */
40
- indexPage?: string;
41
- /**
42
- * Configure how the static site's assets are uploaded to KV
43
- */
44
- assets?: {
45
- /**
46
- * File options for configuring caching behavior
47
- */
48
- fileOptions?: {
49
- /**
50
- * File pattern(s) to match
51
- * Can be a glob string or array of glob strings
52
- */
53
- files: string | string[];
54
- /**
55
- * Files to ignore (glob patterns)
56
- */
57
- ignore?: string | string[];
58
- /**
59
- * Cache-Control header to set for matching files
60
- */
61
- cacheControl: string;
62
- /**
63
- * Content-Type to set (overrides auto-detection)
64
- */
65
- contentType?: string;
66
- }[];
67
- };
68
- /**
69
- * Whether the site should be deployed to production
70
- * @default true
71
- */
72
- production?: boolean;
73
- /**
74
- * Custom domain for the site
75
- */
76
- domain?: string | {
77
- name: string;
78
- redirects?: string[];
79
- };
80
- build?: {
81
- /**
82
- * Command to run before deploying the site
83
- * Will be executed in the shell to build the site
84
- */
85
- command?: string;
86
- };
87
- /**
88
- * Bundle options for the worker script
89
- */
90
- bundle?: Partial<BundleProps>;
91
- /**
92
- * Additional workers to route requests to.
93
- */
94
- routes?: {
95
- [key: string]: Worker;
96
- };
97
- }
98
- /**
99
- * Output returned after StaticSite creation/update
100
- */
101
- export interface StaticSiteOutput {
102
- /**
103
- * The ID of the site
104
- */
105
- id: string;
106
- /**
107
- * The ID of the worker
108
- */
109
- workerId: string;
110
- /**
111
- * Name for the site
112
- */
113
- name: string;
114
- /**
115
- * Path to the directory containing static assets
116
- */
117
- directory: string;
118
- /**
119
- * Worker script format
120
- */
121
- format?: "esm" | "cjs";
122
- /**
123
- * Custom error page path
124
- */
125
- errorPage?: string;
126
- /**
127
- * Index page filename
128
- */
129
- indexPage?: string;
130
- /**
131
- * Time at which the site was created
132
- */
133
- createdAt: number;
134
- /**
135
- * Time at which the site was last updated
136
- */
137
- updatedAt: number;
138
- /**
139
- * List of uploaded asset files
140
- */
141
- assets: string[];
142
- /**
143
- * Custom domain for the site
144
- */
145
- domain?: string | {
146
- name: string;
147
- redirects?: string[];
148
- };
149
- /**
150
- * Whether the site is deployed to production
151
- */
152
- production?: boolean;
153
- /**
154
- * The URL of the deployed site
155
- */
156
- url?: string;
157
- /**
158
- * Information about the backend worker if configured
159
- */
160
- routes?: Record<string, string>;
161
- }
162
- declare const StaticSite_base: import("../resource").Provider<string, [props: StaticSiteProps], StaticSiteOutput>;
163
- export declare class StaticSite extends StaticSite_base {
164
- }
165
- export {};
166
- //# sourceMappingURL=static-site.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static-site.d.ts","sourceRoot":"","sources":["../../src/cloudflare/static-site.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,WAAW,CAAC,EAAE;YACZ;;;eAGG;YACH,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;YAEzB;;eAEG;YACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;YAE3B;;eAEG;YACH,YAAY,EAAE,MAAM,CAAC;YAErB;;eAEG;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,EAAE,CAAC;KACL,CAAC;IAEF;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EACH,MAAM,GACN;QACE,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IAEN,KAAK,CAAC,EAAE;QACN;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EACH,MAAM,GACN;QACE,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IAEN;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;;AAED,qBAAa,UAAW,SAAQ,eAqK/B;CAAG"}
@@ -1,150 +0,0 @@
1
- import { exec } from "child_process";
2
- import { promises as fs } from "fs";
3
- import path from "path";
4
- import { promisify } from "util";
5
- import { apply } from "../apply";
6
- import { Resource } from "../resource";
7
- import { createCloudflareApi } from "./api";
8
- import { generateAssetManifest } from "./generate-asset-manifest";
9
- import { KVNamespace } from "./kv-namespace";
10
- import { uploadAssetManifest } from "./upload-asset-manifest";
11
- import { Worker } from "./worker";
12
- const __dirname = import.meta.dirname;
13
- export class StaticSite extends Resource("cloudflare::StaticSite", {
14
- alwaysUpdate: true,
15
- }, async (ctx, props) => {
16
- if (ctx.event === "delete") {
17
- // For delete operations, we'll rely on the Worker delete to clean up
18
- // Return empty output for deleted state
19
- return;
20
- }
21
- // Validate that a name is provided
22
- if (!props.name) {
23
- throw new Error("StaticSite name is required - must be explicitly specified");
24
- }
25
- // Validate directory exists
26
- if (!props.dir) {
27
- throw new Error("Directory is required for StaticSite");
28
- }
29
- try {
30
- const dirStat = await fs.stat(props.dir);
31
- if (!dirStat.isDirectory()) {
32
- throw new Error(`"${props.dir}" is not a directory`);
33
- }
34
- }
35
- catch (error) {
36
- throw new Error(`Directory "${props.dir}" does not exist: ${error.message}`);
37
- }
38
- // Run build command if provided
39
- if (props.build?.command) {
40
- try {
41
- if (!ctx.quiet) {
42
- console.log(props.build.command);
43
- }
44
- const execAsync = promisify(exec);
45
- const { stdout, stderr } = await execAsync(props.build.command, {
46
- cwd: process.cwd(),
47
- });
48
- if (stdout && !ctx.quiet)
49
- console.log(stdout);
50
- }
51
- catch (error) {
52
- // Log detailed error information
53
- console.error(`Build command failed with exit code ${error.code}`);
54
- if (error.stdout)
55
- console.error(`Command stdout: ${error.stdout}`);
56
- if (error.stderr)
57
- console.error(`Command stderr: ${error.stderr}`);
58
- // Throw a more descriptive error that includes the exit code and stderr
59
- throw new Error(`Build command "${props.build.command}" failed with exit code ${error.code}:\n${error.stderr || error.message}`);
60
- }
61
- }
62
- // Use the provided name
63
- const siteName = props.name;
64
- const indexPage = props.indexPage || "index.html";
65
- // Create Cloudflare API client with automatic account discovery
66
- const api = await createCloudflareApi();
67
- // Step 1: Create or get the KV namespace for assets
68
- const kv = new KVNamespace("assets", {
69
- title: `${siteName}-assets`,
70
- });
71
- const [{ id: kvNamespaceId }, assetManifest] = await Promise.all([
72
- apply(kv, {
73
- quiet: ctx.quiet,
74
- }),
75
- generateAssetManifest(props.dir),
76
- ]);
77
- // Step 3: Upload assets to KV
78
- await uploadAssetManifest(api, kvNamespaceId, assetManifest);
79
- // Prepare the bindings for the worker
80
- const bindings = {
81
- ASSETS: kv,
82
- INDEX_PAGE: indexPage,
83
- // Add error page binding if specified
84
- ...(props.errorPage ? { ERROR_PAGE: props.errorPage } : {}),
85
- };
86
- const routes = {};
87
- // Create backend worker if configured
88
- if (props.routes) {
89
- for (const [path, worker] of Object.entries(props.routes)) {
90
- // @ts-ignore - TODO: need to use Resolved<Worker> to get the string ...
91
- routes[path] = worker.id;
92
- bindings[`ROUTE_${worker.id}`] = worker;
93
- }
94
- }
95
- // Create asset manifest banner for static site router
96
- const assetManifestBanner = `const __ASSET_MANIFEST__ = ${JSON.stringify(Object.fromEntries(assetManifest.map((item) => [item.key, item.hash])))};\n`;
97
- const bundleOptions = {
98
- ...props.bundle,
99
- options: {
100
- ...props.bundle?.options,
101
- banner: {
102
- js: assetManifestBanner,
103
- ...props.bundle?.options?.banner,
104
- },
105
- },
106
- };
107
- const worker = new Worker("worker", {
108
- name: siteName,
109
- url: true,
110
- format: props.format || "esm",
111
- // If a custom worker script is provided, use it, otherwise use the entrypoint from router
112
- ...(props.workerScript
113
- ? { script: props.workerScript }
114
- : {
115
- entrypoint: path.resolve(__dirname, "static-site-router.ts"),
116
- bundle: bundleOptions,
117
- }),
118
- bindings,
119
- env: {
120
- ...Object.fromEntries(Object.entries(routes).map(([key, value]) => [
121
- `__ROUTE_${value}`,
122
- key,
123
- ])),
124
- },
125
- },
126
- // place a dependency on the namespace
127
- kv.id);
128
- // Get current timestamp
129
- const now = Date.now();
130
- // Construct the output
131
- const output = {
132
- id: siteName,
133
- workerId: worker.id,
134
- name: siteName,
135
- directory: props.dir,
136
- format: props.format || "esm",
137
- errorPage: props.errorPage,
138
- indexPage,
139
- assets: assetManifest.map((item) => item.key),
140
- createdAt: ctx.output?.createdAt || now,
141
- updatedAt: now,
142
- domain: props.domain,
143
- production: props.production !== false,
144
- url: worker.url,
145
- routes,
146
- };
147
- return output;
148
- }) {
149
- }
150
- //# sourceMappingURL=static-site.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static-site.js","sourceRoot":"","sources":["../../src/cloudflare/static-site.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Cloudflare API response format
3
- */
4
- export interface CloudflareApiResponse<T> {
5
- /**
6
- * API response result
7
- */
8
- result: T;
9
- /**
10
- * Success status
11
- */
12
- success: boolean;
13
- /**
14
- * Error details if success is false
15
- */
16
- errors: CloudflareApiError[];
17
- /**
18
- * Response messages
19
- */
20
- messages: string[];
21
- /**
22
- * Result information (typically for paginated results)
23
- */
24
- result_info?: {
25
- page: number;
26
- per_page: number;
27
- total_pages: number;
28
- count: number;
29
- total_count: number;
30
- };
31
- }
32
- /**
33
- * Cloudflare API error format
34
- */
35
- export interface CloudflareApiError {
36
- /**
37
- * Error code
38
- */
39
- code: number;
40
- /**
41
- * Error message
42
- */
43
- message: string;
44
- }
45
- /**
46
- * Helper to extract and handle Cloudflare API errors
47
- *
48
- * @param response Fetch response object
49
- * @returns Formatted error message
50
- */
51
- export declare function extractCloudflareError(response: Response): Promise<string>;
52
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cloudflare/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B;;OAEG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,CAAC,CAWjB"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Helper to extract and handle Cloudflare API errors
3
- *
4
- * @param response Fetch response object
5
- * @returns Formatted error message
6
- */
7
- export async function extractCloudflareError(response) {
8
- try {
9
- const data = (await response.json());
10
- if (data.errors && data.errors.length > 0) {
11
- return data.errors.map((e) => `Error ${e.code}: ${e.message}`).join(", ");
12
- }
13
- else {
14
- return `HTTP ${response.status}: ${response.statusText}`;
15
- }
16
- }
17
- catch (e) {
18
- return `HTTP ${response.status}: ${response.statusText}`;
19
- }
20
- }
21
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cloudflare/types.ts"],"names":[],"mappings":"AAmDA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAkB;IAElB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA+B,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { CloudflareApi } from "./api";
2
- import type { AssetManifest } from "./asset-manifest";
3
- type AssetItem = AssetManifest[number];
4
- type UploadResult = {
5
- item: AssetItem;
6
- success: boolean;
7
- status?: number;
8
- error?: unknown;
9
- };
10
- export declare function uploadAssetManifest(api: CloudflareApi, namespaceId: string, manifest: AssetManifest): Promise<UploadResult[]>;
11
- export {};
12
- //# sourceMappingURL=upload-asset-manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-asset-manifest.d.ts","sourceRoot":"","sources":["../../src/cloudflare/upload-asset-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,KAAK,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AACvC,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC,CA8DzB"}
@@ -1,55 +0,0 @@
1
- import fs from "node:fs/promises";
2
- // Maximum number of concurrent uploads
3
- const MAX_CONCURRENT = 100; // Adjust based on API limits and performance testing
4
- export async function uploadAssetManifest(api, namespaceId, manifest) {
5
- const results = [];
6
- // Process in batches with controlled concurrency
7
- let index = 0;
8
- const activePromises = new Set();
9
- while (index < manifest.length || activePromises.size > 0) {
10
- // Fill up to MAX_CONCURRENT active uploads
11
- while (activePromises.size < MAX_CONCURRENT && index < manifest.length) {
12
- const item = manifest[index++];
13
- const promise = uploadItem(item).then((result) => {
14
- results.push(result);
15
- activePromises.delete(promise);
16
- });
17
- activePromises.add(promise);
18
- }
19
- // Wait for at least one promise to complete if we have any active
20
- if (activePromises.size > 0) {
21
- await Promise.race(activePromises);
22
- }
23
- }
24
- return results;
25
- async function uploadItem(item) {
26
- const content = await fs.readFile(item.source);
27
- // Create metadata object
28
- const metadata = {
29
- key: item.key,
30
- hash: item.hash,
31
- contentType: item.contentType,
32
- cacheControl: item.cacheControl,
33
- };
34
- // Create FormData for multipart upload
35
- const formData = new FormData();
36
- formData.append("metadata", JSON.stringify(metadata));
37
- // Add file content as 'value'
38
- const blob = new Blob([content]);
39
- formData.append("value", blob);
40
- try {
41
- const response = await api.put(`/accounts/${api.accountId}/storage/kv/namespaces/${namespaceId}/values/${item.key}`, formData);
42
- const result = { item, success: response.ok, status: response.status };
43
- if (!result.success) {
44
- console.warn(`Error uploading asset ${item.key}: ${result.status}`);
45
- }
46
- return result;
47
- }
48
- catch (error) {
49
- const result = { item, success: false, error };
50
- console.warn(`Error uploading asset ${item.key}: ${error}`);
51
- return result;
52
- }
53
- }
54
- }
55
- //# sourceMappingURL=upload-asset-manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-asset-manifest.js","sourceRoot":"","sources":["../../src/cloudflare/upload-asset-manifest.ts"],"names":[],"mappings":"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"}