alchemy 0.1.8 → 0.1.10

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 (242) hide show
  1. package/lib/$.d.ts +7 -0
  2. package/lib/$.d.ts.map +1 -0
  3. package/lib/$.js +31 -0
  4. package/lib/$.js.map +1 -0
  5. package/lib/agent/ai.d.ts +40 -0
  6. package/lib/agent/ai.d.ts.map +1 -0
  7. package/lib/agent/ai.js +132 -0
  8. package/lib/agent/ai.js.map +1 -0
  9. package/lib/agent/anthropic.d.ts +9 -0
  10. package/lib/agent/anthropic.d.ts.map +1 -0
  11. package/lib/agent/anthropic.js +25 -0
  12. package/lib/agent/anthropic.js.map +1 -0
  13. package/lib/agent/dependencies.d.ts +4 -0
  14. package/lib/agent/dependencies.d.ts.map +1 -0
  15. package/lib/agent/dependencies.js +48 -0
  16. package/lib/agent/dependencies.js.map +1 -0
  17. package/lib/agent/file-context.d.ts +13 -0
  18. package/lib/agent/file-context.d.ts.map +1 -0
  19. package/lib/agent/file-context.js +6 -0
  20. package/lib/agent/file-context.js.map +1 -0
  21. package/lib/agent/index.d.ts +10 -0
  22. package/lib/agent/index.d.ts.map +1 -0
  23. package/lib/agent/index.js +10 -0
  24. package/lib/agent/index.js.map +1 -0
  25. package/lib/agent/model.d.ts +8 -0
  26. package/lib/agent/model.d.ts.map +1 -0
  27. package/lib/agent/model.js +29 -0
  28. package/lib/agent/model.js.map +1 -0
  29. package/lib/agent/module.d.ts +81 -0
  30. package/lib/agent/module.d.ts.map +1 -0
  31. package/lib/agent/module.js +309 -0
  32. package/lib/agent/module.js.map +1 -0
  33. package/lib/agent/openai.d.ts +6 -0
  34. package/lib/agent/openai.d.ts.map +1 -0
  35. package/lib/agent/openai.js +41 -0
  36. package/lib/agent/openai.js.map +1 -0
  37. package/lib/agent/program.d.ts +12 -0
  38. package/lib/agent/program.d.ts.map +1 -0
  39. package/lib/agent/program.js +21 -0
  40. package/lib/agent/program.js.map +1 -0
  41. package/lib/agent/prompts.d.ts +4 -0
  42. package/lib/agent/prompts.d.ts.map +1 -0
  43. package/lib/agent/prompts.js +11 -0
  44. package/lib/agent/prompts.js.map +1 -0
  45. package/lib/agent/scrape.d.ts +71 -0
  46. package/lib/agent/scrape.d.ts.map +1 -0
  47. package/lib/agent/scrape.js +45 -0
  48. package/lib/agent/scrape.js.map +1 -0
  49. package/lib/alchemize.d.ts +43 -0
  50. package/lib/alchemize.d.ts.map +1 -0
  51. package/lib/alchemize.js +105 -0
  52. package/lib/alchemize.js.map +1 -0
  53. package/lib/apply.d.ts +23 -0
  54. package/lib/apply.d.ts.map +1 -0
  55. package/lib/apply.js +84 -0
  56. package/lib/apply.js.map +1 -0
  57. package/lib/aws/auto/docs.d.ts +11 -0
  58. package/lib/aws/auto/docs.d.ts.map +1 -0
  59. package/lib/aws/auto/docs.js +56 -0
  60. package/lib/aws/auto/docs.js.map +1 -0
  61. package/lib/aws/auto/index.d.ts +5 -0
  62. package/lib/aws/auto/index.d.ts.map +1 -0
  63. package/lib/aws/auto/index.js +5 -0
  64. package/lib/aws/auto/index.js.map +1 -0
  65. package/lib/aws/auto/resource.d.ts +24 -0
  66. package/lib/aws/auto/resource.d.ts.map +1 -0
  67. package/lib/aws/auto/resource.js +194 -0
  68. package/lib/aws/auto/resource.js.map +1 -0
  69. package/lib/aws/auto/service.d.ts +10 -0
  70. package/lib/aws/auto/service.d.ts.map +1 -0
  71. package/lib/aws/auto/service.js +34 -0
  72. package/lib/aws/auto/service.js.map +1 -0
  73. package/lib/aws/auto/spec.d.ts +83 -0
  74. package/lib/aws/auto/spec.d.ts.map +1 -0
  75. package/lib/aws/auto/spec.js +58 -0
  76. package/lib/aws/auto/spec.js.map +1 -0
  77. package/lib/aws/bucket.d.ts +21 -0
  78. package/lib/aws/bucket.d.ts.map +1 -0
  79. package/lib/aws/bucket.js +114 -0
  80. package/lib/aws/bucket.js.map +1 -0
  81. package/lib/aws/function.d.ts +53 -0
  82. package/lib/aws/function.d.ts.map +1 -0
  83. package/lib/aws/function.js +195 -0
  84. package/lib/aws/function.js.map +1 -0
  85. package/lib/aws/index.d.ts +7 -0
  86. package/lib/aws/index.d.ts.map +1 -0
  87. package/lib/aws/index.js +7 -0
  88. package/lib/aws/index.js.map +1 -0
  89. package/lib/aws/policy.d.ts +46 -0
  90. package/lib/aws/policy.d.ts.map +1 -0
  91. package/lib/aws/policy.js +139 -0
  92. package/lib/aws/policy.js.map +1 -0
  93. package/lib/aws/queue.d.ts +38 -0
  94. package/lib/aws/queue.d.ts.map +1 -0
  95. package/lib/aws/queue.js +162 -0
  96. package/lib/aws/queue.js.map +1 -0
  97. package/lib/aws/role.d.ts +27 -0
  98. package/lib/aws/role.d.ts.map +1 -0
  99. package/lib/aws/role.js +149 -0
  100. package/lib/aws/role.js.map +1 -0
  101. package/lib/aws/table.d.ts +26 -0
  102. package/lib/aws/table.d.ts.map +1 -0
  103. package/lib/aws/table.js +120 -0
  104. package/lib/aws/table.js.map +1 -0
  105. package/lib/destroy.d.ts +19 -0
  106. package/lib/destroy.d.ts.map +1 -0
  107. package/lib/destroy.js +47 -0
  108. package/lib/destroy.js.map +1 -0
  109. package/lib/error.d.ts +2 -0
  110. package/lib/error.d.ts.map +1 -0
  111. package/lib/error.js +13 -0
  112. package/lib/error.js.map +1 -0
  113. package/lib/esbuild.d.ts +70 -0
  114. package/lib/esbuild.d.ts.map +1 -0
  115. package/lib/esbuild.js +58 -0
  116. package/lib/esbuild.js.map +1 -0
  117. package/lib/fs.d.ts +12 -0
  118. package/lib/fs.d.ts.map +1 -0
  119. package/lib/fs.js +41 -0
  120. package/lib/fs.js.map +1 -0
  121. package/lib/global.d.ts +18 -0
  122. package/lib/global.d.ts.map +1 -0
  123. package/lib/global.js +42 -0
  124. package/lib/global.js.map +1 -0
  125. package/lib/index.d.ts +9 -0
  126. package/lib/index.d.ts.map +1 -0
  127. package/lib/index.js +8 -0
  128. package/lib/index.js.map +1 -0
  129. package/lib/input.d.ts +6 -0
  130. package/lib/input.d.ts.map +1 -0
  131. package/lib/input.js +2 -0
  132. package/lib/input.js.map +1 -0
  133. package/lib/main.d.ts +3 -0
  134. package/lib/main.d.ts.map +1 -0
  135. package/lib/main.js +32 -0
  136. package/lib/main.js.map +1 -0
  137. package/lib/markdown/design.d.ts +17 -0
  138. package/lib/markdown/design.d.ts.map +1 -0
  139. package/lib/markdown/design.js +92 -0
  140. package/lib/markdown/design.js.map +1 -0
  141. package/lib/markdown/extract.d.ts +7 -0
  142. package/lib/markdown/extract.d.ts.map +1 -0
  143. package/lib/markdown/extract.js +10 -0
  144. package/lib/markdown/extract.js.map +1 -0
  145. package/lib/markdown/index.d.ts +4 -0
  146. package/lib/markdown/index.d.ts.map +1 -0
  147. package/lib/markdown/index.js +4 -0
  148. package/lib/markdown/index.js.map +1 -0
  149. package/lib/markdown/requirements.d.ts +79 -0
  150. package/lib/markdown/requirements.d.ts.map +1 -0
  151. package/lib/markdown/requirements.js +105 -0
  152. package/lib/markdown/requirements.js.map +1 -0
  153. package/lib/output.d.ts +19 -0
  154. package/lib/output.d.ts.map +1 -0
  155. package/lib/output.js +16 -0
  156. package/lib/output.js.map +1 -0
  157. package/lib/resource.d.ts +66 -0
  158. package/lib/resource.d.ts.map +1 -0
  159. package/lib/resource.js +242 -0
  160. package/lib/resource.js.map +1 -0
  161. package/lib/scope.d.ts +15 -0
  162. package/lib/scope.d.ts.map +1 -0
  163. package/lib/scope.js +38 -0
  164. package/lib/scope.js.map +1 -0
  165. package/lib/slug.d.ts +2 -0
  166. package/lib/slug.d.ts.map +1 -0
  167. package/lib/slug.js +4 -0
  168. package/lib/slug.js.map +1 -0
  169. package/lib/state.d.ts +40 -0
  170. package/lib/state.d.ts.map +1 -0
  171. package/lib/state.js +73 -0
  172. package/lib/state.js.map +1 -0
  173. package/lib/stripe/index.d.ts +4 -0
  174. package/lib/stripe/index.d.ts.map +1 -0
  175. package/lib/stripe/index.js +4 -0
  176. package/lib/stripe/index.js.map +1 -0
  177. package/lib/stripe/price.d.ts +109 -0
  178. package/lib/stripe/price.d.ts.map +1 -0
  179. package/lib/stripe/price.js +112 -0
  180. package/lib/stripe/price.js.map +1 -0
  181. package/lib/stripe/product.d.ts +86 -0
  182. package/lib/stripe/product.d.ts.map +1 -0
  183. package/lib/stripe/product.js +90 -0
  184. package/lib/stripe/product.js.map +1 -0
  185. package/lib/stripe/webhook.d.ts +73 -0
  186. package/lib/stripe/webhook.d.ts.map +1 -0
  187. package/lib/stripe/webhook.js +94 -0
  188. package/lib/stripe/webhook.js.map +1 -0
  189. package/lib/typescript/check-omission.d.ts +2 -0
  190. package/lib/typescript/check-omission.d.ts.map +1 -0
  191. package/lib/typescript/check-omission.js +43 -0
  192. package/lib/typescript/check-omission.js.map +1 -0
  193. package/lib/typescript/debug-type-errors.d.ts +3 -0
  194. package/lib/typescript/debug-type-errors.d.ts.map +1 -0
  195. package/lib/typescript/debug-type-errors.js +35 -0
  196. package/lib/typescript/debug-type-errors.js.map +1 -0
  197. package/lib/typescript/extract.d.ts +7 -0
  198. package/lib/typescript/extract.d.ts.map +1 -0
  199. package/lib/typescript/extract.js +10 -0
  200. package/lib/typescript/extract.js.map +1 -0
  201. package/lib/typescript/index.d.ts +7 -0
  202. package/lib/typescript/index.d.ts.map +1 -0
  203. package/lib/typescript/index.js +7 -0
  204. package/lib/typescript/index.js.map +1 -0
  205. package/lib/typescript/install-dependencies.d.ts +29 -0
  206. package/lib/typescript/install-dependencies.d.ts.map +1 -0
  207. package/lib/typescript/install-dependencies.js +52 -0
  208. package/lib/typescript/install-dependencies.js.map +1 -0
  209. package/lib/typescript/package.d.ts +157 -0
  210. package/lib/typescript/package.d.ts.map +1 -0
  211. package/lib/typescript/package.js +115 -0
  212. package/lib/typescript/package.js.map +1 -0
  213. package/lib/typescript/repair-omissions.d.ts +3 -0
  214. package/lib/typescript/repair-omissions.d.ts.map +1 -0
  215. package/lib/typescript/repair-omissions.js +23 -0
  216. package/lib/typescript/repair-omissions.js.map +1 -0
  217. package/lib/typescript/repair.d.ts +3 -0
  218. package/lib/typescript/repair.d.ts.map +1 -0
  219. package/lib/typescript/repair.js +34 -0
  220. package/lib/typescript/repair.js.map +1 -0
  221. package/lib/typescript/tsconfig.d.ts +469 -0
  222. package/lib/typescript/tsconfig.d.ts.map +1 -0
  223. package/lib/typescript/tsconfig.js +143 -0
  224. package/lib/typescript/tsconfig.js.map +1 -0
  225. package/lib/typescript/typescript.d.ts +107 -0
  226. package/lib/typescript/typescript.d.ts.map +1 -0
  227. package/lib/typescript/typescript.js +180 -0
  228. package/lib/typescript/typescript.js.map +1 -0
  229. package/lib/typescript/validate.d.ts +10 -0
  230. package/lib/typescript/validate.d.ts.map +1 -0
  231. package/lib/typescript/validate.js +49 -0
  232. package/lib/typescript/validate.js.map +1 -0
  233. package/package.json +4 -3
  234. package/test/aws/function.test.ts +0 -144
  235. package/test/aws/queue.test.ts +0 -85
  236. package/test/aws/role.test.ts +0 -153
  237. package/test/aws/table.test.ts +0 -73
  238. package/test/esbuild.test.ts +0 -41
  239. package/test/handler.ts +0 -9
  240. package/test/scope.test.ts +0 -67
  241. package/test/stripe/stripe.test.ts +0 -136
  242. package/tsconfig.json +0 -33
@@ -0,0 +1,120 @@
1
+ import { CreateTableCommand, DeleteTableCommand, DescribeTableCommand, DynamoDBClient, ResourceInUseException, ResourceNotFoundException, } from "@aws-sdk/client-dynamodb";
2
+ import { ignore } from "../error";
3
+ import { Resource } from "../resource";
4
+ export class Table extends Resource("dynamo::Table", async (ctx, props) => {
5
+ const client = new DynamoDBClient({});
6
+ if (ctx.event === "delete") {
7
+ await ignore(ResourceNotFoundException.name, () => client.send(new DeleteTableCommand({
8
+ TableName: props.tableName,
9
+ })));
10
+ // Wait for table to be deleted
11
+ let tableDeleted = false;
12
+ while (!tableDeleted) {
13
+ try {
14
+ await client.send(new DescribeTableCommand({
15
+ TableName: props.tableName,
16
+ }));
17
+ // If we get here, table still exists
18
+ await new Promise((resolve) => setTimeout(resolve, 1000));
19
+ }
20
+ catch (error) {
21
+ if (error instanceof ResourceNotFoundException) {
22
+ tableDeleted = true;
23
+ }
24
+ else {
25
+ throw error;
26
+ }
27
+ }
28
+ }
29
+ return {
30
+ ...props,
31
+ id: props.tableName,
32
+ arn: `arn:aws:dynamodb:${client.config.region}:${process.env.AWS_ACCOUNT_ID}:table/${props.tableName}`,
33
+ tableId: "",
34
+ };
35
+ }
36
+ else {
37
+ try {
38
+ const attributeDefinitions = [
39
+ {
40
+ AttributeName: props.partitionKey.name,
41
+ AttributeType: props.partitionKey.type,
42
+ },
43
+ ];
44
+ const keySchema = [
45
+ {
46
+ AttributeName: props.partitionKey.name,
47
+ KeyType: "HASH",
48
+ },
49
+ ];
50
+ if (props.sortKey) {
51
+ attributeDefinitions.push({
52
+ AttributeName: props.sortKey.name,
53
+ AttributeType: props.sortKey.type,
54
+ });
55
+ keySchema.push({
56
+ AttributeName: props.sortKey.name,
57
+ KeyType: "RANGE",
58
+ });
59
+ }
60
+ await client.send(new CreateTableCommand({
61
+ TableName: props.tableName,
62
+ AttributeDefinitions: attributeDefinitions,
63
+ KeySchema: keySchema,
64
+ BillingMode: props.billingMode || "PAY_PER_REQUEST",
65
+ ProvisionedThroughput: props.billingMode === "PROVISIONED"
66
+ ? {
67
+ ReadCapacityUnits: props.readCapacity || 5,
68
+ WriteCapacityUnits: props.writeCapacity || 5,
69
+ }
70
+ : undefined,
71
+ Tags: props.tags
72
+ ? Object.entries(props.tags).map(([Key, Value]) => ({
73
+ Key,
74
+ Value,
75
+ }))
76
+ : undefined,
77
+ }));
78
+ // Wait for table to be active
79
+ let tableActive = false;
80
+ let tableDescription;
81
+ while (!tableActive) {
82
+ const response = await client.send(new DescribeTableCommand({
83
+ TableName: props.tableName,
84
+ }));
85
+ tableActive = response.Table?.TableStatus === "ACTIVE";
86
+ if (tableActive) {
87
+ tableDescription = response.Table;
88
+ }
89
+ else {
90
+ await new Promise((resolve) => setTimeout(resolve, 1000));
91
+ }
92
+ }
93
+ return {
94
+ ...props,
95
+ id: props.tableName,
96
+ arn: tableDescription.TableArn,
97
+ streamArn: tableDescription.LatestStreamArn,
98
+ tableId: tableDescription.TableId,
99
+ };
100
+ }
101
+ catch (error) {
102
+ if (error instanceof ResourceInUseException) {
103
+ // Table already exists, get its details
104
+ const response = await client.send(new DescribeTableCommand({
105
+ TableName: props.tableName,
106
+ }));
107
+ return {
108
+ ...props,
109
+ id: props.tableName,
110
+ arn: response.Table.TableArn,
111
+ streamArn: response.Table.LatestStreamArn,
112
+ tableId: response.Table.TableId,
113
+ };
114
+ }
115
+ throw error;
116
+ }
117
+ }
118
+ }) {
119
+ }
120
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/aws/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Output } from "./output";
2
+ import { Provider, ResourceID } from "./resource";
3
+ import type { Scope } from "./scope";
4
+ import type { State, StateStore } from "./state";
5
+ export interface DestroyOptions {
6
+ stage?: string;
7
+ stateStore?: StateStore;
8
+ scope?: Scope;
9
+ quiet?: boolean;
10
+ }
11
+ /**
12
+ * Prune all resources from an Output and "down", i.e. that branches from it.
13
+ */
14
+ export declare function destroy<T>(output: Output<T>, options?: DestroyOptions): Promise<void>;
15
+ /**
16
+ * @internal
17
+ */
18
+ export declare function destroy<T>(stage: string, scope: Scope, resourceID: ResourceID, resourceState: State, resourceProvider: Provider, stateStore: StateStore, options: DestroyOptions): Promise<void>;
19
+ //# sourceMappingURL=destroy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjB;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,KAAK,EACpB,gBAAgB,EAAE,QAAQ,EAC1B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/lib/destroy.js ADDED
@@ -0,0 +1,47 @@
1
+ import { defaultStage, defaultStateStore, rootScope } from "./global";
2
+ import { Provider, ResourceID, isResource } from "./resource";
3
+ export async function destroy(...args) {
4
+ let resourceID;
5
+ let resourceState;
6
+ let resourceProvider;
7
+ let stage;
8
+ let stateStore;
9
+ let scope = undefined;
10
+ let options = undefined;
11
+ if (args.length === 7) {
12
+ stage = args[0];
13
+ scope = args[1];
14
+ resourceID = args[2];
15
+ resourceState = args[3];
16
+ resourceProvider = args[4];
17
+ stateStore = args[5];
18
+ options = args[6];
19
+ }
20
+ else if (isResource(args[0])) {
21
+ const resource = args[0];
22
+ // stage = args[1]?.stage ?? defaultStage;
23
+ resourceID = resource[ResourceID];
24
+ stage = args[1]?.stage ?? defaultStage;
25
+ scope = args[1]?.scope ?? rootScope;
26
+ const statePath = scope.getScopePath(stage);
27
+ stateStore = args[1]?.stateStore ?? new defaultStateStore(statePath);
28
+ // First destroy all dependencies
29
+ const _resourceState = await stateStore.get(resourceID);
30
+ if (_resourceState === undefined) {
31
+ // we have no record of this resource, we must assume it's already deleted
32
+ return;
33
+ }
34
+ resourceState = _resourceState;
35
+ resourceProvider = resource[Provider];
36
+ options = args[1];
37
+ }
38
+ else {
39
+ console.log(args[0]);
40
+ throw new Error("Not implemented: must handle destroy a Output chain");
41
+ }
42
+ await resourceProvider.delete(stage, scope, resourceID, resourceState, resourceState.inputs, options ?? {
43
+ quiet: false,
44
+ });
45
+ await stateStore.delete(resourceID);
46
+ }
47
+ //# sourceMappingURL=destroy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAgC9D,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAG,IAEyE;IAE5E,IAAI,UAAsB,CAAC;IAC3B,IAAI,aAAoB,CAAC;IACzB,IAAI,gBAA0B,CAAC;IAC/B,IAAI,KAAa,CAAC;IAClB,IAAI,UAAsB,CAAC;IAC3B,IAAI,KAAK,GAAsB,SAAS,CAAC;IACzC,IAAI,OAAO,GAA+B,SAAS,CAAC;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,0CAA0C;QAC1C,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC;QACvC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5C,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrE,iCAAiC;QACjC,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,0EAA0E;YAC1E,OAAO;QACT,CAAC;QACD,aAAa,GAAG,cAAc,CAAC;QAC/B,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,gBAAgB,CAAC,MAAM,CAC3B,KAAK,EACL,KAAK,EACL,UAAU,EACV,aAAa,EACb,aAAa,CAAC,MAAY,EAC1B,OAAO,IAAI;QACT,KAAK,EAAE,KAAK;KACb,CACF,CAAC;IACF,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC"}
package/lib/error.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function ignore<T>(codes: string | string[], fn: () => Promise<T>): Promise<T | undefined>;
2
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,wBAAsB,MAAM,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAYxB"}
package/lib/error.js ADDED
@@ -0,0 +1,13 @@
1
+ export async function ignore(codes, fn) {
2
+ try {
3
+ return await fn();
4
+ }
5
+ catch (error) {
6
+ const errorCode = error.code || error.name;
7
+ if (Array.isArray(codes) ? codes.includes(errorCode) : errorCode === codes) {
8
+ return undefined;
9
+ }
10
+ throw error;
11
+ }
12
+ }
13
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAwB,EACxB,EAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;QAC3C,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,EACtE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,70 @@
1
+ import * as esbuild from "esbuild";
2
+ export interface BundleProps {
3
+ /**
4
+ * Entry point for the bundle
5
+ */
6
+ entryPoint: string;
7
+ /**
8
+ * Output directory for the bundle
9
+ */
10
+ outdir?: string;
11
+ /**
12
+ * Output filename for the bundle
13
+ */
14
+ outfile?: string;
15
+ /**
16
+ * Bundle format (iife, cjs, esm)
17
+ */
18
+ format?: "iife" | "cjs" | "esm";
19
+ /**
20
+ * Target environment (e.g., 'node16', 'es2020')
21
+ */
22
+ target?: string | string[];
23
+ /**
24
+ * Whether to minify the output
25
+ */
26
+ minify?: boolean;
27
+ /**
28
+ * Whether to generate sourcemaps
29
+ */
30
+ sourcemap?: boolean | "inline" | "external" | "both";
31
+ /**
32
+ * External packages to exclude from bundle
33
+ */
34
+ external?: string[];
35
+ /**
36
+ * Platform to target (browser, node, neutral)
37
+ */
38
+ platform?: "browser" | "node" | "neutral";
39
+ /**
40
+ * Additional esbuild options
41
+ */
42
+ options?: Partial<esbuild.BuildOptions>;
43
+ }
44
+ export interface BundleOutput {
45
+ /**
46
+ * Path to the bundled file
47
+ */
48
+ path: string;
49
+ /**
50
+ * SHA-256 hash of the bundle contents
51
+ */
52
+ hash: string;
53
+ }
54
+ declare const Bundle_base: import("./resource").Provider<"esbuild::Bundle", [props: BundleProps], BundleOutput>;
55
+ export declare class Bundle extends Bundle_base {
56
+ /**
57
+ * Get the metafile from the last build
58
+ */
59
+ getMetafile(ctx: {
60
+ get<T>(key: string): Promise<T | undefined>;
61
+ }): Promise<esbuild.Metafile | undefined>;
62
+ /**
63
+ * Get the hash from the last build
64
+ */
65
+ getHash(ctx: {
66
+ get<T>(key: string): Promise<T | undefined>;
67
+ }): Promise<string | undefined>;
68
+ }
69
+ export {};
70
+ //# sourceMappingURL=esbuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../src/esbuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAMnC,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACrD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;;AAED,qBAAa,MAAO,SAAQ,WAmD3B;IACC;;OAEG;IACU,WAAW,CAAC,GAAG,EAAE;QAC5B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;KAC7C;IAID;;OAEG;IACU,OAAO,CAAC,GAAG,EAAE;QAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;KAAE;CAG1E"}
package/lib/esbuild.js ADDED
@@ -0,0 +1,58 @@
1
+ import * as esbuild from "esbuild";
2
+ import crypto from "node:crypto";
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
+ import { Resource } from "./resource";
6
+ export class Bundle extends Resource("esbuild::Bundle", async (ctx, props) => {
7
+ // Determine output path
8
+ const outputPath = props.outfile ||
9
+ path.join(props.outdir || "dist", path.basename(props.entryPoint, path.extname(props.entryPoint)) + ".js");
10
+ // Ensure output directory exists
11
+ await fs.promises.mkdir(path.dirname(outputPath), { recursive: true });
12
+ if (ctx.event === "delete") {
13
+ await fs.promises.unlink(outputPath).catch(() => { });
14
+ // Also clean up sourcemap if it exists
15
+ await fs.promises.unlink(outputPath + ".map").catch(() => { });
16
+ return { path: outputPath, hash: "" };
17
+ }
18
+ // Build the bundle
19
+ const result = await esbuild.build({
20
+ entryPoints: [props.entryPoint],
21
+ outfile: outputPath,
22
+ bundle: true,
23
+ format: props.format,
24
+ target: props.target,
25
+ minify: props.minify,
26
+ sourcemap: props.sourcemap,
27
+ external: props.external,
28
+ platform: props.platform,
29
+ metafile: true,
30
+ write: true,
31
+ ...props.options,
32
+ });
33
+ // Calculate hash of the output
34
+ const contents = await fs.promises.readFile(outputPath);
35
+ const hash = crypto.createHash("sha256").update(contents).digest("hex");
36
+ // Store metadata in context
37
+ await ctx.set("metafile", result.metafile);
38
+ await ctx.set("hash", hash);
39
+ // Return output info
40
+ return {
41
+ path: outputPath,
42
+ hash,
43
+ };
44
+ }) {
45
+ /**
46
+ * Get the metafile from the last build
47
+ */
48
+ async getMetafile(ctx) {
49
+ return ctx.get("metafile");
50
+ }
51
+ /**
52
+ * Get the hash from the last build
53
+ */
54
+ async getHash(ctx) {
55
+ return ctx.get("hash");
56
+ }
57
+ }
58
+ //# sourceMappingURL=esbuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.js","sourceRoot":"","sources":["../src/esbuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAwDtC,MAAM,OAAO,MAAO,SAAQ,QAAQ,CAClC,iBAAiB,EACjB,KAAK,EAAE,GAAG,EAAE,KAAkB,EAAyB,EAAE;IACvD,wBAAwB;IACxB,MAAM,UAAU,GACd,KAAK,CAAC,OAAO;QACb,IAAI,CAAC,IAAI,CACP,KAAK,CAAC,MAAM,IAAI,MAAM,EACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CACxE,CAAC;IAEJ,iCAAiC;IACjC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvE,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrD,uCAAuC;QACvC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;QACjC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAC/B,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,GAAG,KAAK,CAAC,OAAO;KACjB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAExE,4BAA4B;IAC5B,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5B,qBAAqB;IACrB,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI;KACL,CAAC;AACJ,CAAC,CACF;IACC;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,GAExB;QACC,OAAO,GAAG,CAAC,GAAG,CAAmB,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,GAAoD;QACvE,OAAO,GAAG,CAAC,GAAG,CAAS,MAAM,CAAC,CAAC;IACjC,CAAC;CACF"}
package/lib/fs.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ declare const File_base: import("./resource").Provider<"fs::File", [filePath: string, content: string], unknown>;
2
+ export declare class File extends File_base {
3
+ }
4
+ declare const Folder_base: import("./resource").Provider<"fs::Folder", [dirPath: string], {
5
+ path: string;
6
+ }>;
7
+ export declare class Folder extends Folder_base {
8
+ file(filePath: string, content: string): File;
9
+ }
10
+ export declare function rm(filePath: string): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":";AAMA,qBAAa,IAAK,SAAQ,SAWzB;CAAG;;UAI4C,MAAM;;AAFtD,qBAAa,MAAO,SAAQ,WAa3B;IACQ,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAG9C;AAED,wBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,iBAQxC"}
package/lib/fs.js ADDED
@@ -0,0 +1,41 @@
1
+ import fs from "node:fs";
2
+ import { unlink } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { ignore } from "./error";
5
+ import { Resource } from "./resource";
6
+ export class File extends Resource("fs::File", async (ctx, filePath, content) => {
7
+ if (ctx.event === "delete") {
8
+ await ignore("ENOENT", () => fs.promises.unlink(filePath));
9
+ }
10
+ else {
11
+ await fs.promises.mkdir(path.dirname(filePath), { recursive: true });
12
+ await fs.promises.writeFile(filePath, content);
13
+ }
14
+ return filePath;
15
+ }) {
16
+ }
17
+ export class Folder extends Resource("fs::Folder", async (ctx, dirPath) => {
18
+ if (ctx.event === "delete") {
19
+ // we just do a best effort attempt
20
+ await ignore(["ENOENT", "ENOTEMPTY"], () => fs.promises.rmdir(dirPath));
21
+ }
22
+ else {
23
+ await ignore("EEXIST", () => fs.promises.mkdir(dirPath, { recursive: true }));
24
+ }
25
+ return { path: dirPath };
26
+ }) {
27
+ file(filePath, content) {
28
+ return new File(path.basename(filePath), filePath, content);
29
+ }
30
+ }
31
+ export async function rm(filePath) {
32
+ try {
33
+ await unlink(filePath);
34
+ }
35
+ catch (error) {
36
+ if (error.code !== "ENOENT") {
37
+ throw error;
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=fs.js.map
package/lib/fs.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAO,IAAK,SAAQ,QAAQ,CAChC,UAAU,EACV,KAAK,EAAE,GAAG,EAAE,QAAgB,EAAE,OAAe,EAAE,EAAE;IAC/C,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CACF;CAAG;AAEJ,MAAM,OAAO,MAAO,SAAQ,QAAQ,CAClC,YAAY,EACZ,KAAK,EAAE,GAAG,EAAE,OAAe,EAA6B,EAAE;IACxD,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3B,mCAAmC;QACnC,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAC1B,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC,CACF;IACQ,IAAI,CAAC,QAAgB,EAAE,OAAe;QAC3C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Provider } from "./resource";
2
+ import { Scope } from "./scope";
3
+ import { FileSystemStateStore } from "./state";
4
+ export interface Config {
5
+ defaultStage?: string;
6
+ stateStore?: new (dir: string) => FileSystemStateStore;
7
+ }
8
+ export declare const config: Config;
9
+ export declare const defaultStage: string;
10
+ export declare const defaultStateStore: typeof FileSystemStateStore;
11
+ export declare const rootScope: Scope;
12
+ export declare const providers: Map<string, Provider<string, any[], any>>;
13
+ export declare const deletions: {
14
+ id: string;
15
+ data: Record<string, any>;
16
+ inputs: any[];
17
+ }[];
18
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,MAAM;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,oBAAoB,CAAC;CACxD;AAmCD,eAAO,MAAM,MAAM,EAAE,MAGpB,CAAC;AAEF,eAAO,MAAM,YAAY,QAAgC,CAAC;AAE1D,eAAO,MAAM,iBAAiB,6BAA4C,CAAC;AAE3E,eAAO,MAAM,SAAS,OAAkB,CAAC;AAEzC,eAAO,MAAM,SAAS,2CAGnB,CAAC;AAEJ,eAAO,MAAM,SAAS,EAAE;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,EAAE,CAAC;CACf,EAAO,CAAC"}
package/lib/global.js ADDED
@@ -0,0 +1,42 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { Scope } from "./scope";
4
+ import { FileSystemStateStore } from "./state";
5
+ const alchemy = path.resolve(process.cwd(), "alchemy.ts");
6
+ let _config;
7
+ const exists = fs.promises.exists ??
8
+ async function exists(path) {
9
+ try {
10
+ await fs.promises.access(path);
11
+ return true;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ };
17
+ if (await exists(alchemy)) {
18
+ const mod = await import(alchemy);
19
+ if (mod) {
20
+ const config = mod.default;
21
+ if (config) {
22
+ if (typeof config !== "object") {
23
+ throw new Error("Config is not an object");
24
+ }
25
+ if (typeof config.defaultStage !== "string") {
26
+ throw new Error("Config.stage is not a string");
27
+ }
28
+ _config = config;
29
+ }
30
+ }
31
+ }
32
+ const _stage = process.env.ALCHEMY_STAGE ?? process.env.USER ?? "dev";
33
+ export const config = _config ?? {
34
+ defaultStage: _stage,
35
+ stateStore: FileSystemStateStore,
36
+ };
37
+ export const defaultStage = config.defaultStage ?? _stage;
38
+ export const defaultStateStore = config.stateStore ?? FileSystemStateStore;
39
+ export const rootScope = new Scope(null);
40
+ export const providers = new Map();
41
+ export const deletions = [];
42
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAO/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;AAE1D,IAAI,OAA2B,CAAC;AAEhC,MAAM,MAAM,GACV,EAAE,CAAC,QAAQ,CAAC,MAAM;IAClB,KAAK,UAAU,MAAM,CAAC,IAAY;QAChC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;AAEJ,IAAI,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,MAAM,GAAG,GAAG,CAAC,OAA6B,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;AAEtE,MAAM,CAAC,MAAM,MAAM,GAAW,OAAO,IAAI;IACvC,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,oBAAoB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC;AAE1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,IAAI,oBAAoB,CAAC;AAE3E,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,EAG7B,CAAC;AAEJ,MAAM,CAAC,MAAM,SAAS,GAIhB,EAAE,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from "./$";
2
+ export * from "./alchemize";
3
+ export * from "./error";
4
+ export * from "./global";
5
+ export * from "./input";
6
+ export * from "./output";
7
+ export { Resource, type Context, type CreateContext, type DeleteContext, type UpdateContext, } from "./resource";
8
+ export type { FileSystemStateStore as StateStore } from "./state";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,KAAK,CAAC;AACpB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,QAAQ,EACR,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,oBAAoB,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export * from "./$";
2
+ export * from "./alchemize";
3
+ export * from "./error";
4
+ export * from "./global";
5
+ export * from "./input";
6
+ export * from "./output";
7
+ export { Resource, } from "./resource";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,KAAK,CAAC;AACpB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,QAAQ,GAKT,MAAM,YAAY,CAAC"}
package/lib/input.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { Output } from "./output";
2
+ export type Inputs<P extends any[]> = P extends [infer First, ...infer Rest] ? [Input<First>, ...Inputs<Rest>] : [];
3
+ export type Input<T = any> = T | Output<T> | (T extends any[] ? Inputs<T> : never) | (T extends string | number | boolean ? Output<T> : never) | (T extends object ? {
4
+ [k in keyof T]: Input<T[k]>;
5
+ } : never);
6
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GACxE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAC/B,EAAE,CAAC;AAEP,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,IACrB,CAAC,GACD,MAAM,CAAC,CAAC,CAAC,GACT,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GACrC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GACzD,CAAC,CAAC,SAAS,MAAM,GACb;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,GACD,KAAK,CAAC,CAAC"}
package/lib/input.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":""}
package/lib/main.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export {};
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
package/lib/main.js ADDED
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env bun
2
+ import { parseArgs } from "util";
3
+ const { values, positionals } = parseArgs({
4
+ args: Bun.argv.slice(2),
5
+ options: {
6
+ help: {
7
+ type: "boolean",
8
+ short: "h",
9
+ },
10
+ },
11
+ strict: true,
12
+ allowPositionals: true,
13
+ });
14
+ if (values.help || positionals.length === 0) {
15
+ console.error("Usage: iac <command> [args]");
16
+ console.error("\nCommands:");
17
+ console.error(" destroy [stack names] Delete the specified stacks");
18
+ process.exit(1);
19
+ }
20
+ const [command, ...restArgs] = positionals;
21
+ if (command.toLowerCase() === "destroy") {
22
+ if (restArgs.length === 0) {
23
+ console.error("Error: Please specify at least one stack name to destroy");
24
+ process.exit(1);
25
+ }
26
+ console.log("Deleting stacks:", restArgs);
27
+ }
28
+ else {
29
+ console.error(`Unknown command: ${command}`);
30
+ process.exit(1);
31
+ }
32
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;SACX;KACF;IACD,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;AAE3C,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;IACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type FileContext, type ModelId } from "../agent";
2
+ export interface DesignInput {
3
+ prompt: string;
4
+ path: string;
5
+ deps?: any[];
6
+ model?: ModelId;
7
+ dependencies: FileContext[];
8
+ }
9
+ export interface DesignOutput {
10
+ path: string;
11
+ content: string;
12
+ }
13
+ declare const Design_base: import("../resource").Provider<"design", [props: DesignInput], DesignOutput>;
14
+ export declare class Design extends Design_base {
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=design.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../src/markdown/design.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,OAAO,EAIb,MAAM,UAAU,CAAC;AAMlB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;;AAED,qBAAa,MAAO,SAAQ,WA+F3B;CAAG"}