alchemy 0.16.0 → 0.16.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 (50) hide show
  1. package/lib/alchemy.d.ts.map +1 -1
  2. package/lib/alchemy.js +6 -5
  3. package/lib/alchemy.js.map +1 -1
  4. package/lib/apply.d.ts.map +1 -1
  5. package/lib/apply.js +31 -31
  6. package/lib/apply.js.map +1 -1
  7. package/lib/cloudflare/queue.d.ts.map +1 -1
  8. package/lib/cloudflare/queue.js +3 -2
  9. package/lib/cloudflare/queue.js.map +1 -1
  10. package/lib/cloudflare/r2-rest-state-store.d.ts +1 -1
  11. package/lib/cloudflare/r2-rest-state-store.d.ts.map +1 -1
  12. package/lib/cloudflare/r2-rest-state-store.js +5 -4
  13. package/lib/cloudflare/r2-rest-state-store.js.map +1 -1
  14. package/lib/cloudflare/worker.js +1 -1
  15. package/lib/cloudflare/worker.js.map +1 -1
  16. package/lib/context.d.ts +1 -1
  17. package/lib/context.d.ts.map +1 -1
  18. package/lib/context.js +6 -5
  19. package/lib/context.js.map +1 -1
  20. package/lib/destroy.d.ts.map +1 -1
  21. package/lib/destroy.js +20 -20
  22. package/lib/destroy.js.map +1 -1
  23. package/lib/fs/file-system-state-store.d.ts +1 -1
  24. package/lib/fs/file-system-state-store.d.ts.map +1 -1
  25. package/lib/fs/file-system-state-store.js +5 -3
  26. package/lib/fs/file-system-state-store.js.map +1 -1
  27. package/lib/resource.d.ts +15 -11
  28. package/lib/resource.d.ts.map +1 -1
  29. package/lib/resource.js +12 -7
  30. package/lib/resource.js.map +1 -1
  31. package/lib/scope.d.ts +1 -1
  32. package/lib/scope.d.ts.map +1 -1
  33. package/lib/scope.js +2 -1
  34. package/lib/scope.js.map +1 -1
  35. package/lib/state.d.ts +3 -2
  36. package/lib/state.d.ts.map +1 -1
  37. package/lib/state.js +29 -0
  38. package/lib/state.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/alchemy.ts +13 -6
  41. package/src/apply.ts +37 -30
  42. package/src/cloudflare/queue.ts +6 -3
  43. package/src/cloudflare/r2-rest-state-store.ts +5 -5
  44. package/src/cloudflare/worker.ts +1 -1
  45. package/src/context.ts +21 -13
  46. package/src/destroy.ts +34 -20
  47. package/src/fs/file-system-state-store.ts +5 -7
  48. package/src/resource.ts +22 -18
  49. package/src/scope.ts +2 -2
  50. package/src/state.ts +42 -2
package/lib/destroy.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { alchemy } from "./alchemy.js";
2
2
  import { context } from "./context.js";
3
- import { PROVIDERS } from "./resource.js";
3
+ import { PROVIDERS, ResourceFQN, ResourceID, ResourceKind, ResourceScope, ResourceSeq, } from "./resource.js";
4
4
  import { Scope } from "./scope.js";
5
5
  export class DestroyedSignal extends Error {
6
6
  }
@@ -33,38 +33,38 @@ export async function destroy(...args) {
33
33
  if (!instance) {
34
34
  return;
35
35
  }
36
- if (instance.Kind === Scope.KIND) {
36
+ if (instance[ResourceKind] === Scope.KIND) {
37
37
  const scope = new Scope({
38
- parent: instance.Scope,
39
- scopeName: instance.ID,
38
+ parent: instance[ResourceScope],
39
+ scopeName: instance[ResourceID],
40
40
  });
41
41
  console.log("Destroying scope", scope.chain.join("/"));
42
42
  return await destroy(scope, options);
43
43
  }
44
- const Provider = PROVIDERS.get(instance.Kind);
44
+ const Provider = PROVIDERS.get(instance[ResourceKind]);
45
45
  if (!Provider) {
46
- throw new Error(`Cannot destroy resource "${instance.FQN}" type ${instance.Kind} - no provider found. You may need to import the provider in your alchemy.config.ts.`);
46
+ throw new Error(`Cannot destroy resource "${instance[ResourceFQN]}" type ${instance[ResourceKind]} - no provider found. You may need to import the provider in your alchemy.config.ts.`);
47
47
  }
48
- const scope = instance.Scope;
48
+ const scope = instance[ResourceScope];
49
49
  if (!scope) {
50
- console.warn(`Resource "${instance.FQN}" has no scope`);
50
+ console.warn(`Resource "${instance[ResourceFQN]}" has no scope`);
51
51
  }
52
52
  const quiet = options?.quiet ?? scope.quiet;
53
53
  try {
54
54
  if (!quiet) {
55
- console.log(`Delete: "${instance.FQN}"`);
55
+ console.log(`Delete: "${instance[ResourceFQN]}"`);
56
56
  }
57
- const state = await scope.state.get(instance.ID);
57
+ const state = await scope.state.get(instance[ResourceID]);
58
58
  if (state === undefined) {
59
59
  return;
60
60
  }
61
61
  const ctx = context({
62
62
  scope,
63
63
  phase: "delete",
64
- kind: instance.Kind,
65
- id: instance.ID,
66
- fqn: instance.FQN,
67
- seq: instance.Seq,
64
+ kind: instance[ResourceKind],
65
+ id: instance[ResourceID],
66
+ fqn: instance[ResourceFQN],
67
+ seq: instance[ResourceSeq],
68
68
  props: state.props,
69
69
  state,
70
70
  replace: () => {
@@ -74,13 +74,13 @@ export async function destroy(...args) {
74
74
  let nestedScope;
75
75
  try {
76
76
  // BUG: this does not restore persisted scope
77
- await alchemy.run(instance.ID, {
77
+ await alchemy.run(instance[ResourceID], {
78
78
  // TODO(sam): this is an awful hack to differentiate between naked scopes and resources
79
- isResource: instance.Kind !== "alchemy::Scope",
79
+ isResource: instance[ResourceKind] !== "alchemy::Scope",
80
80
  parent: scope,
81
81
  }, async (scope) => {
82
82
  nestedScope = scope;
83
- return await Provider.handler.bind(ctx)(instance.ID, state.props);
83
+ return await Provider.handler.bind(ctx)(instance[ResourceID], state.props);
84
84
  });
85
85
  }
86
86
  catch (err) {
@@ -94,9 +94,9 @@ export async function destroy(...args) {
94
94
  if (nestedScope) {
95
95
  await destroy(nestedScope, options);
96
96
  }
97
- await scope.delete(instance.ID);
97
+ await scope.delete(instance[ResourceID]);
98
98
  if (!quiet) {
99
- console.log(`Deleted: "${instance.FQN}"`);
99
+ console.log(`Deleted: "${instance[ResourceFQN]}"`);
100
100
  }
101
101
  }
102
102
  catch (error) {
@@ -107,7 +107,7 @@ export async function destroy(...args) {
107
107
  (function (destroy) {
108
108
  async function all(resources, options) {
109
109
  if (options?.strategy !== "parallel") {
110
- const sorted = resources.sort((a, b) => b.Seq - a.Seq);
110
+ const sorted = resources.sort((a, b) => b[ResourceSeq] - a[ResourceSeq]);
111
111
  for (const resource of sorted) {
112
112
  await destroy(resource, options);
113
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Scope } from "../scope.js";
2
- import type { State, StateStore } from "../state.js";
2
+ import { type State, type StateStore } from "../state.js";
3
3
  export declare class FileSystemStateStore implements StateStore {
4
4
  readonly scope: Scope;
5
5
  readonly dir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"file-system-state-store.d.ts","sourceRoot":"","sources":["../../src/fs/file-system-state-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKrD,qBAAa,oBAAqB,YAAW,UAAU;aAGzB,KAAK,EAAE,KAAK;IAFxC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,WAAW,CAAS;gBACA,KAAK,EAAE,KAAK;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAoB5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAIrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAgB7D,OAAO,CAAC,OAAO;CAShB"}
1
+ {"version":3,"file":"file-system-state-store.d.ts","sourceRoot":"","sources":["../../src/fs/file-system-state-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAoB,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAK5E,qBAAa,oBAAqB,YAAW,UAAU;aAGzB,KAAK,EAAE,KAAK;IAFxC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,WAAW,CAAS;gBACA,KAAK,EAAE,KAAK;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAiB5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAIrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAgB7D,OAAO,CAAC,OAAO;CAShB"}
@@ -1,6 +1,8 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { deserialize, serialize } from "../serde.js";
3
+ import { ResourceScope } from "../resource.js";
4
+ import { serialize } from "../serde.js";
5
+ import { deserializeState } from "../state.js";
4
6
  import { ignore } from "../util/ignore.js";
5
7
  const stateRootDir = path.join(process.cwd(), ".alchemy");
6
8
  export class FileSystemStateStore {
@@ -44,11 +46,11 @@ export class FileSystemStateStore {
44
46
  async get(key) {
45
47
  try {
46
48
  const content = await fs.promises.readFile(this.getPath(key), "utf8");
47
- const state = (await deserialize(this.scope, JSON.parse(content)));
49
+ const state = await deserializeState(this.scope, content);
48
50
  if (state.output === undefined) {
49
51
  state.output = {};
50
52
  }
51
- state.output.Scope = this.scope;
53
+ state.output[ResourceScope] = this.scope;
52
54
  return state;
53
55
  }
54
56
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"file-system-state-store.js","sourceRoot":"","sources":["../../src/fs/file-system-state-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-system-state-store.js","sourceRoot":"","sources":["../../src/fs/file-system-state-store.ts"],"names":[],"mappings":"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"}
package/lib/resource.d.ts CHANGED
@@ -2,8 +2,13 @@ import type { Context } from "./context.js";
2
2
  import { Scope as _Scope } from "./scope.js";
3
3
  export declare const PROVIDERS: Map<string, any>;
4
4
  export type ResourceID = string;
5
+ export declare const ResourceID: unique symbol;
5
6
  export type ResourceFQN = string;
7
+ export declare const ResourceFQN: unique symbol;
6
8
  export type ResourceKind = string;
9
+ export declare const ResourceKind: unique symbol;
10
+ export declare const ResourceScope: unique symbol;
11
+ export declare const ResourceSeq: unique symbol;
7
12
  export interface ProviderOptions {
8
13
  /**
9
14
  * If true, the resource will be updated even if the inputs have not changed.
@@ -19,19 +24,18 @@ export type Provider<Type extends string = string, F extends ResourceLifecycleHa
19
24
  handler: F;
20
25
  };
21
26
  export type PendingResource<Out = unknown, Kind extends ResourceKind = ResourceKind, ID extends ResourceID = ResourceID, FQN extends ResourceFQN = ResourceFQN, Scope extends _Scope = _Scope, Seq extends number = number> = Promise<Out> & {
22
- Kind: Kind;
23
- ID: ID;
24
- FQN: FQN;
25
- Seq: Seq;
26
- Scope: Scope;
27
- signal: () => void;
27
+ [ResourceKind]: Kind;
28
+ [ResourceID]: ID;
29
+ [ResourceFQN]: FQN;
30
+ [ResourceScope]: Scope;
31
+ [ResourceSeq]: Seq;
28
32
  };
29
33
  export interface Resource<Kind extends ResourceKind = ResourceKind, ID extends ResourceID = ResourceID, FQN extends ResourceFQN = ResourceFQN, Scope extends _Scope = _Scope, Seq extends number = number> {
30
- Kind: Kind;
31
- ID: ID;
32
- FQN: FQN;
33
- Scope: Scope;
34
- Seq: Seq;
34
+ [ResourceKind]: Kind;
35
+ [ResourceID]: ID;
36
+ [ResourceFQN]: FQN;
37
+ [ResourceScope]: Scope;
38
+ [ResourceSeq]: Seq;
35
39
  }
36
40
  type IsClass = {
37
41
  new (_: never): never;
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
package/lib/resource.js CHANGED
@@ -1,6 +1,11 @@
1
1
  import { apply } from "./apply.js";
2
2
  import { Scope as _Scope } from "./scope.js";
3
3
  export const PROVIDERS = new Map();
4
+ export const ResourceID = Symbol.for("alchemy::ResourceID");
5
+ export const ResourceFQN = Symbol.for("alchemy::ResourceFQN");
6
+ export const ResourceKind = Symbol.for("alchemy::ResourceKind");
7
+ export const ResourceScope = Symbol.for("alchemy::ResourceScope");
8
+ export const ResourceSeq = Symbol.for("alchemy::ResourceSeq");
4
9
  export function Resource(type, ...args) {
5
10
  if (PROVIDERS.has(type)) {
6
11
  throw new Error(`Resource ${type} already exists`);
@@ -16,9 +21,9 @@ export function Resource(type, ...args) {
16
21
  // TODO(sam): do we want to throw?
17
22
  // it's kind of awesome that you can re-create a resource and call apply
18
23
  const otherResource = scope.resources.get(resourceID);
19
- if (otherResource?.Kind !== type) {
24
+ if (otherResource?.[ResourceKind] !== type) {
20
25
  scope.fail();
21
- throw new Error(`Resource ${resourceID} already exists in the stack and is of a different type: '${otherResource?.Kind}' !== '${type}'`);
26
+ throw new Error(`Resource ${resourceID} already exists in the stack and is of a different type: '${otherResource?.[ResourceKind]}' !== '${type}'`);
22
27
  }
23
28
  // console.warn(
24
29
  // `Resource ${resourceID} already exists in the stack: ${scope.chain.join("/")}`,
@@ -27,11 +32,11 @@ export function Resource(type, ...args) {
27
32
  // get a sequence number (unique within the scope) for the resource
28
33
  const seq = scope.seq();
29
34
  const meta = {
30
- Kind: type,
31
- ID: resourceID,
32
- FQN: scope.fqn(resourceID),
33
- Seq: seq,
34
- Scope: scope,
35
+ [ResourceKind]: type,
36
+ [ResourceID]: resourceID,
37
+ [ResourceFQN]: scope.fqn(resourceID),
38
+ [ResourceSeq]: seq,
39
+ [ResourceScope]: scope,
35
40
  };
36
41
  const promise = apply(meta, props, options);
37
42
  const resource = Object.assign(promise, meta);
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuC,CAAC;AAqFxE,MAAM,UAAU,QAAQ,CAGtB,IAAU,EAAE,GAAG,IAAyC;IACxD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAI3E,MAAM,QAAQ,GAAG,CAAC,CAChB,UAAkB,EAClB,KAAoB,EACO,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;QAE7B,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,0DAA0D;YAC1D,MAAM,IAAI,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,kCAAkC;YAClC,wEAAwE;YACxE,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,aAAa,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,YAAY,UAAU,6DAA6D,aAAa,EAAE,IAAI,UAAU,IAAI,GAAG,CACxH,CAAC;YACJ,CAAC;YACD,gBAAgB;YAChB,oFAAoF;YACpF,KAAK;QACP,CAAC;QAED,mEAAmE;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,IAAI;YACV,EAAE,EAAE,UAAU;YACd,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YAC1B,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,KAAK;SACkB,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAsB,CAAC;IACxB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
package/lib/scope.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Phase } from "./alchemy.js";
2
- import type { PendingResource, ResourceID } from "./resource.js";
2
+ import { ResourceID, type PendingResource } from "./resource.js";
3
3
  import type { StateStore, StateStoreType } from "./state.js";
4
4
  export type ScopeOptions = {
5
5
  appName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAKF,qBAAa,KAAK;IAChB,gBAAuB,IAAI,EAAG,gBAAgB,CAAU;WAE1C,GAAG,IAAI,KAAK,GAAG,SAAS;IAItC,WAAkB,OAAO,IAAI,KAAK,CAMjC;IAED,SAAgB,SAAS,+BAA0C;IACnE,SAAgB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,SAAgB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1C,SAAgB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,SAAgB,KAAK,EAAE,UAAU,CAAC;IAClC,SAAgB,UAAU,EAAE,cAAc,CAAC;IAC3C,SAAgB,KAAK,EAAE,OAAO,CAAC;IAC/B,SAAgB,KAAK,EAAE,KAAK,CAAC;IAE7B,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,YAAY;IA4BpB,MAAM,CAAC,UAAU,EAAE,UAAU;IAK1C,OAAO,CAAC,IAAI,CAAK;IAEV,GAAG;IAIV,IAAW,KAAK,IAAI,MAAM,EAAE,CAO3B;IAEM,IAAI;IAKJ,KAAK;IAIC,IAAI;IAIJ,MAAM;IAKZ,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IAI7B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE,CAAC,MAAM,CAAC,YAAY,CAAC;IAIR,QAAQ;IAuBrB;;OAEG;IACI,QAAQ;CAQhB"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAKF,qBAAa,KAAK;IAChB,gBAAuB,IAAI,EAAG,gBAAgB,CAAU;WAE1C,GAAG,IAAI,KAAK,GAAG,SAAS;IAItC,WAAkB,OAAO,IAAI,KAAK,CAMjC;IAED,SAAgB,SAAS,+BAA0C;IACnE,SAAgB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,SAAgB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1C,SAAgB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,SAAgB,KAAK,EAAE,UAAU,CAAC;IAClC,SAAgB,UAAU,EAAE,cAAc,CAAC;IAC3C,SAAgB,KAAK,EAAE,OAAO,CAAC;IAC/B,SAAgB,KAAK,EAAE,KAAK,CAAC;IAE7B,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,YAAY;IA4BpB,MAAM,CAAC,UAAU,EAAE,UAAU;IAK1C,OAAO,CAAC,IAAI,CAAK;IAEV,GAAG;IAIV,IAAW,KAAK,IAAI,MAAM,EAAE,CAO3B;IAEM,IAAI;IAKJ,KAAK;IAIC,IAAI;IAIJ,MAAM;IAKZ,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IAI7B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE,CAAC,MAAM,CAAC,YAAY,CAAC;IAIR,QAAQ;IAuBrB;;OAEG;IACI,QAAQ;CAQhB"}
package/lib/scope.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { destroy } from "./destroy.js";
3
3
  import { FileSystemStateStore } from "./fs/file-system-state-store.js";
4
+ import { ResourceID } from "./resource.js";
4
5
  const scopeStorage = new AsyncLocalStorage();
5
6
  // TODO: support browser
6
7
  const DEFAULT_STAGE = process.env.ALCHEMY_STAGE ?? process.env.USER ?? "dev";
@@ -116,7 +117,7 @@ export class Scope {
116
117
  return `Scope(
117
118
  chain=${this.chain.join("/")},
118
119
  resources=[${Array.from(this.resources.values())
119
- .map((r) => r.ID)
120
+ .map((r) => r[ResourceID])
120
121
  .join(",\n ")}]
121
122
  )`;
122
123
  }
package/lib/scope.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
package/lib/state.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Resource, ResourceProps } from "./resource.js";
2
- import type { Scope } from "./scope.js";
1
+ import { type Resource, type ResourceProps } from "./resource.js";
2
+ import { Scope } from "./scope.js";
3
3
  export type State<Kind extends string = string, Props extends ResourceProps | undefined = ResourceProps | undefined, Out extends Resource = Resource> = {
4
4
  status: `creating` | `created` | `updating` | `updated` | `deleting` | `deleted`;
5
5
  kind: Kind;
@@ -27,4 +27,5 @@ export interface StateStore {
27
27
  set(key: string, value: State): Promise<void>;
28
28
  delete(key: string): Promise<void>;
29
29
  }
30
+ export declare function deserializeState(scope: Scope, content: string): Promise<State>;
30
31
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,KAAK,CACf,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,KAAK,SAAS,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,EACnE,GAAG,SAAS,QAAQ,GAAG,QAAQ,IAC7B;IACF,MAAM,EACF,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE1B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,+CAA+C;IAC/C,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,6CAA6C;IAC7C,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1B,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,MAAM,MAAM,KAAK,CACf,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,KAAK,SAAS,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,EACnE,GAAG,SAAS,QAAQ,GAAG,QAAQ,IAC7B;IACF,MAAM,EACF,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE1B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,+CAA+C;IAC/C,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,6CAA6C;IAC7C,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1B,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC,CA0BhB"}
package/lib/state.js CHANGED
@@ -1 +1,30 @@
1
+ import { ResourceFQN, ResourceID, ResourceKind, ResourceScope, ResourceSeq, } from "./resource.js";
2
+ import { Scope } from "./scope.js";
3
+ import { deserialize } from "./serde.js";
4
+ export async function deserializeState(scope, content) {
5
+ const state = (await deserialize(scope, JSON.parse(content)));
6
+ if (ResourceID in state.output) {
7
+ // this is a new state
8
+ return state;
9
+ }
10
+ const output = state.output;
11
+ delete output.Kind;
12
+ delete output.ID;
13
+ delete output.FQN;
14
+ delete output.Scope;
15
+ delete output.Seq;
16
+ // fix this bug
17
+ if (state.kind === "scope") {
18
+ state.kind = Scope.KIND;
19
+ }
20
+ output[ResourceKind] = state.kind;
21
+ output[ResourceID] = state.id;
22
+ output[ResourceFQN] = state.fqn;
23
+ output[ResourceScope] = scope;
24
+ output[ResourceSeq] = state.seq;
25
+ state.output = output;
26
+ // re-write the state with the migrated format
27
+ await scope.state.set(state.id, state);
28
+ return state;
29
+ }
1
30
  //# sourceMappingURL=state.js.map
package/lib/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GAGZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2CzC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAY,EACZ,OAAe;IAEf,MAAM,KAAK,GAAG,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAU,CAAC;IAEvE,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/B,sBAAsB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAQ,KAAK,CAAC,MAAM,CAAC;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC;IACnB,OAAO,MAAM,CAAC,EAAE,CAAC;IACjB,OAAO,MAAM,CAAC,GAAG,CAAC;IAClB,OAAO,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,MAAM,CAAC,GAAG,CAAC;IAClB,eAAe;IACf,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;IAC9B,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;IAChC,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IAC9B,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;IAChC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,8CAA8C;IAC9C,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alchemy",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "type": "module",
5
5
  "module": "./lib/index.js",
6
6
  "scripts": {
package/src/alchemy.ts CHANGED
@@ -3,7 +3,14 @@ import path from "node:path";
3
3
 
4
4
  import { destroy, DestroyedSignal } from "./destroy.js";
5
5
  import { env } from "./env.js";
6
- import type { PendingResource } from "./resource.js";
6
+ import {
7
+ ResourceFQN,
8
+ ResourceID,
9
+ ResourceKind,
10
+ ResourceScope,
11
+ ResourceSeq,
12
+ type PendingResource,
13
+ } from "./resource.js";
7
14
  import { Scope } from "./scope.js";
8
15
  import { secret } from "./secret.js";
9
16
  import type { StateStoreType } from "./state.js";
@@ -325,11 +332,11 @@ async function run<T>(
325
332
  // TODO(sam): this is an awful hack to differentiate between naked scopes and resources
326
333
  const seq = _scope.parent.seq();
327
334
  const output = {
328
- ID: id,
329
- FQN: "",
330
- Kind: Scope.KIND,
331
- Scope: _scope,
332
- Seq: seq,
335
+ [ResourceID]: id,
336
+ [ResourceFQN]: "",
337
+ [ResourceKind]: Scope.KIND,
338
+ [ResourceScope]: _scope,
339
+ [ResourceSeq]: seq,
333
340
  } as const;
334
341
  const resource = {
335
342
  kind: Scope.KIND,
package/src/apply.ts CHANGED
@@ -2,6 +2,11 @@ import { alchemy } from "./alchemy.js";
2
2
  import { context } from "./context.js";
3
3
  import {
4
4
  PROVIDERS,
5
+ ResourceFQN,
6
+ ResourceID,
7
+ ResourceKind,
8
+ ResourceScope,
9
+ ResourceSeq,
5
10
  type PendingResource,
6
11
  type Provider,
7
12
  type Resource,
@@ -20,42 +25,44 @@ export async function apply<Out extends Resource>(
20
25
  props: ResourceProps | undefined,
21
26
  options?: ApplyOptions,
22
27
  ): Promise<Awaited<Out>> {
23
- const scope = resource.Scope;
28
+ const scope = resource[ResourceScope];
24
29
  try {
25
30
  const quiet = props?.quiet ?? scope.quiet;
26
31
  await scope.init();
27
- let state: State | undefined = (await scope.state.get(resource.ID))!;
28
- const provider: Provider = PROVIDERS.get(resource.Kind);
32
+ let state: State | undefined = (await scope.state.get(
33
+ resource[ResourceID],
34
+ ))!;
35
+ const provider: Provider = PROVIDERS.get(resource[ResourceKind]);
29
36
  if (provider === undefined) {
30
- throw new Error(`Provider "${resource.Kind}" not found`);
37
+ throw new Error(`Provider "${resource[ResourceKind]}" not found`);
31
38
  }
32
39
  if (scope.phase === "read") {
33
40
  if (state === undefined) {
34
41
  throw new Error(
35
- `Resource "${resource.FQN}" not found and running in 'read' phase.`,
42
+ `Resource "${resource[ResourceFQN]}" not found and running in 'read' phase.`,
36
43
  );
37
44
  }
38
45
  return state.output as Awaited<Out>;
39
46
  }
40
47
  if (state === undefined) {
41
48
  state = {
42
- kind: resource.Kind,
43
- id: resource.ID,
44
- fqn: resource.FQN,
45
- seq: resource.Seq,
49
+ kind: resource[ResourceKind],
50
+ id: resource[ResourceID],
51
+ fqn: resource[ResourceFQN],
52
+ seq: resource[ResourceSeq],
46
53
  status: "creating",
47
54
  data: {},
48
55
  output: {
49
- ID: resource.ID,
50
- FQN: resource.FQN,
51
- Kind: resource.Kind,
52
- Scope: scope,
53
- Seq: resource.Seq,
56
+ [ResourceID]: resource[ResourceID],
57
+ [ResourceFQN]: resource[ResourceFQN],
58
+ [ResourceKind]: resource[ResourceKind],
59
+ [ResourceScope]: scope,
60
+ [ResourceSeq]: resource[ResourceSeq],
54
61
  },
55
62
  // deps: [...deps],
56
63
  props,
57
64
  };
58
- await scope.state.set(resource.ID, state);
65
+ await scope.state.set(resource[ResourceID], state);
59
66
  }
60
67
 
61
68
  const alwaysUpdate =
@@ -87,27 +94,27 @@ export async function apply<Out extends Resource>(
87
94
 
88
95
  if (!quiet) {
89
96
  console.log(
90
- `${phase === "create" ? "Create" : "Update"}: "${resource.FQN}"`,
97
+ `${phase === "create" ? "Create" : "Update"}: "${resource[ResourceFQN]}"`,
91
98
  );
92
99
  }
93
100
 
94
- await scope.state.set(resource.ID, state);
101
+ await scope.state.set(resource[ResourceID], state);
95
102
 
96
103
  let isReplaced = false;
97
104
 
98
105
  const ctx = context({
99
106
  scope,
100
107
  phase,
101
- kind: resource.Kind,
102
- id: resource.ID,
103
- fqn: resource.FQN,
104
- seq: resource.Seq,
108
+ kind: resource[ResourceKind],
109
+ id: resource[ResourceID],
110
+ fqn: resource[ResourceFQN],
111
+ seq: resource[ResourceSeq],
105
112
  props: state.oldProps,
106
113
  state,
107
114
  replace: () => {
108
115
  if (isReplaced) {
109
116
  console.warn(
110
- `Resource ${resource.Kind} ${resource.FQN} is already marked as REPLACE`,
117
+ `Resource ${resource[ResourceKind]} ${resource[ResourceFQN]} is already marked as REPLACE`,
111
118
  );
112
119
  return;
113
120
  }
@@ -116,23 +123,23 @@ export async function apply<Out extends Resource>(
116
123
  });
117
124
 
118
125
  const output = await alchemy.run(
119
- resource.ID,
126
+ resource[ResourceID],
120
127
  {
121
128
  isResource: true,
122
129
  },
123
- async () => provider.handler.bind(ctx)(resource.ID, props),
130
+ async () => provider.handler.bind(ctx)(resource[ResourceID], props),
124
131
  );
125
132
  if (!quiet) {
126
133
  console.log(
127
- `${phase === "create" ? "Created" : "Updated"}: "${resource.FQN}"`,
134
+ `${phase === "create" ? "Created" : "Updated"}: "${resource[ResourceFQN]}"`,
128
135
  );
129
136
  }
130
137
 
131
- await scope.state.set(resource.ID, {
132
- kind: resource.Kind,
133
- id: resource.ID,
134
- fqn: resource.FQN,
135
- seq: resource.Seq,
138
+ await scope.state.set(resource[ResourceID], {
139
+ kind: resource[ResourceKind],
140
+ id: resource[ResourceID],
141
+ fqn: resource[ResourceFQN],
142
+ seq: resource[ResourceSeq],
136
143
  data: state.data,
137
144
  status: phase === "create" ? "created" : "updated",
138
145
  output,
@@ -1,9 +1,9 @@
1
1
  import type { Context } from "../context.js";
2
- import { Resource } from "../resource.js";
2
+ import { Resource, ResourceKind } from "../resource.js";
3
3
  import { CloudflareApiError, handleApiError } from "./api-error.js";
4
4
  import {
5
- type CloudflareApi,
6
5
  createCloudflareApi,
6
+ type CloudflareApi,
7
7
  type CloudflareApiOptions,
8
8
  } from "./api.js";
9
9
 
@@ -59,7 +59,10 @@ export interface QueueProps extends CloudflareApiOptions {
59
59
  }
60
60
 
61
61
  export function isQueue(eventSource: any): eventSource is Queue {
62
- return "Kind" in eventSource && eventSource.Kind === "cloudflare::Queue";
62
+ return (
63
+ ResourceKind in eventSource &&
64
+ eventSource[ResourceKind] === "cloudflare::Queue"
65
+ );
63
66
  }
64
67
 
65
68
  /**