alchemy 2.0.0-beta.43 → 2.0.0-beta.44

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 (207) hide show
  1. package/bin/cli.js +18 -5
  2. package/bin/exec.js +315 -233
  3. package/bin/exec.js.map +1 -1
  4. package/lib/Auth/Lock.js +2 -2
  5. package/lib/Auth/Lock.js.map +1 -1
  6. package/lib/Bundle/Bundle.d.ts +11 -0
  7. package/lib/Bundle/Bundle.d.ts.map +1 -1
  8. package/lib/Bundle/Bundle.js +19 -12
  9. package/lib/Bundle/Bundle.js.map +1 -1
  10. package/lib/Bundle/BundleAnalyzerPlugin.d.ts +25 -0
  11. package/lib/Bundle/BundleAnalyzerPlugin.d.ts.map +1 -0
  12. package/lib/Bundle/BundleAnalyzerPlugin.js +16 -0
  13. package/lib/Bundle/BundleAnalyzerPlugin.js.map +1 -0
  14. package/lib/Bundle/RawPlugin.d.ts +36 -0
  15. package/lib/Bundle/RawPlugin.d.ts.map +1 -0
  16. package/lib/Bundle/RawPlugin.js +80 -0
  17. package/lib/Bundle/RawPlugin.js.map +1 -0
  18. package/lib/Bundle/index.d.ts +2 -0
  19. package/lib/Bundle/index.d.ts.map +1 -1
  20. package/lib/Bundle/index.js +2 -0
  21. package/lib/Bundle/index.js.map +1 -1
  22. package/lib/Cli/commands/dev.d.ts +3 -2
  23. package/lib/Cli/commands/dev.d.ts.map +1 -1
  24. package/lib/Cli/commands/dev.js +9 -1
  25. package/lib/Cli/commands/dev.js.map +1 -1
  26. package/lib/Cli/exec.d.ts.map +1 -1
  27. package/lib/Cli/exec.js +2 -1
  28. package/lib/Cli/exec.js.map +1 -1
  29. package/lib/Cloudflare/Local.d.ts +2 -0
  30. package/lib/Cloudflare/Local.d.ts.map +1 -0
  31. package/lib/Cloudflare/Local.js +9 -0
  32. package/lib/Cloudflare/Local.js.map +1 -0
  33. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  34. package/lib/Cloudflare/Providers.js +3 -1
  35. package/lib/Cloudflare/Providers.js.map +1 -1
  36. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  37. package/lib/Cloudflare/Workers/DurableObjectBridge.js +0 -1
  38. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  39. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +22 -3
  40. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  41. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +413 -21
  42. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  43. package/lib/Cloudflare/Workers/Worker.d.ts +6 -19
  44. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  45. package/lib/Cloudflare/Workers/Worker.js +3 -4
  46. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  47. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  48. package/lib/Cloudflare/Workers/WorkerBridge.js +3 -5
  49. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  50. package/lib/Cloudflare/Workers/WorkerBundle.d.ts +1 -2
  51. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  52. package/lib/Cloudflare/Workers/WorkerBundle.js +3 -6
  53. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  54. package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts +184 -0
  55. package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts.map +1 -0
  56. package/lib/Cloudflare/Zaraz/ZarazConfig.js +216 -0
  57. package/lib/Cloudflare/Zaraz/ZarazConfig.js.map +1 -0
  58. package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts +188 -0
  59. package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts.map +1 -0
  60. package/lib/Cloudflare/Zaraz/ZarazEventTypes.js +4 -0
  61. package/lib/Cloudflare/Zaraz/ZarazEventTypes.js.map +1 -0
  62. package/lib/Cloudflare/Zaraz/index.d.ts +3 -0
  63. package/lib/Cloudflare/Zaraz/index.d.ts.map +1 -0
  64. package/lib/Cloudflare/Zaraz/index.js +2 -0
  65. package/lib/Cloudflare/Zaraz/index.js.map +1 -0
  66. package/lib/Cloudflare/index.d.ts +1 -0
  67. package/lib/Cloudflare/index.d.ts.map +1 -1
  68. package/lib/Cloudflare/index.js +1 -0
  69. package/lib/Cloudflare/index.js.map +1 -1
  70. package/lib/Local/RpcProvider.d.ts +54 -0
  71. package/lib/Local/RpcProvider.d.ts.map +1 -0
  72. package/lib/Local/RpcProvider.js +57 -0
  73. package/lib/Local/RpcProvider.js.map +1 -0
  74. package/lib/Local/RpcProviderProxy.d.ts +19 -0
  75. package/lib/Local/RpcProviderProxy.d.ts.map +1 -0
  76. package/lib/Local/RpcProviderProxy.js +48 -0
  77. package/lib/Local/RpcProviderProxy.js.map +1 -0
  78. package/lib/Local/RpcSerialization.d.ts +34 -0
  79. package/lib/Local/RpcSerialization.d.ts.map +1 -0
  80. package/lib/Local/RpcSerialization.js +120 -0
  81. package/lib/Local/RpcSerialization.js.map +1 -0
  82. package/lib/Local/RpcServer.d.ts +63 -0
  83. package/lib/Local/RpcServer.d.ts.map +1 -0
  84. package/lib/Local/RpcServer.js +72 -0
  85. package/lib/Local/RpcServer.js.map +1 -0
  86. package/lib/Local/RpcServerBun.d.ts +3 -0
  87. package/lib/Local/RpcServerBun.d.ts.map +1 -0
  88. package/lib/Local/RpcServerBun.js +47 -0
  89. package/lib/Local/RpcServerBun.js.map +1 -0
  90. package/lib/Local/RpcServerEnvironment.d.ts +20 -0
  91. package/lib/Local/RpcServerEnvironment.d.ts.map +1 -0
  92. package/lib/Local/RpcServerEnvironment.js +22 -0
  93. package/lib/Local/RpcServerEnvironment.js.map +1 -0
  94. package/lib/Local/RpcServerNode.d.ts +3 -0
  95. package/lib/Local/RpcServerNode.d.ts.map +1 -0
  96. package/lib/Local/RpcServerNode.js +43 -0
  97. package/lib/Local/RpcServerNode.js.map +1 -0
  98. package/lib/Local/RpcServerSession.d.ts +27 -0
  99. package/lib/Local/RpcServerSession.d.ts.map +1 -0
  100. package/lib/Local/RpcServerSession.js +68 -0
  101. package/lib/Local/RpcServerSession.js.map +1 -0
  102. package/lib/Local/RpcSpawner.d.ts +21 -0
  103. package/lib/Local/RpcSpawner.d.ts.map +1 -0
  104. package/lib/Local/RpcSpawner.js +132 -0
  105. package/lib/Local/RpcSpawner.js.map +1 -0
  106. package/lib/Util/PlatformServices.d.ts +7 -0
  107. package/lib/Util/PlatformServices.d.ts.map +1 -1
  108. package/lib/Util/PlatformServices.js +22 -11
  109. package/lib/Util/PlatformServices.js.map +1 -1
  110. package/lib/Util/camel.d.ts.map +1 -1
  111. package/lib/Util/camel.js +2 -3
  112. package/lib/Util/camel.js.map +1 -1
  113. package/lib/Util/data.d.ts +5 -0
  114. package/lib/Util/data.d.ts.map +1 -1
  115. package/lib/Util/data.js +29 -0
  116. package/lib/Util/data.js.map +1 -1
  117. package/lib/Util/stable.d.ts.map +1 -1
  118. package/lib/Util/stable.js +3 -6
  119. package/lib/Util/stable.js.map +1 -1
  120. package/lib/tsconfig.test.tsbuildinfo +1 -1
  121. package/package.json +12 -14
  122. package/src/Auth/Lock.ts +2 -2
  123. package/src/Bundle/Bundle.ts +35 -13
  124. package/src/Bundle/BundleAnalyzerPlugin.ts +33 -0
  125. package/src/Bundle/RawPlugin.ts +82 -0
  126. package/src/Bundle/index.ts +2 -0
  127. package/src/Cli/commands/dev.ts +51 -37
  128. package/src/Cli/exec.ts +12 -7
  129. package/src/Cloudflare/Local.ts +23 -0
  130. package/src/Cloudflare/Providers.ts +3 -0
  131. package/src/Cloudflare/Workers/DurableObjectBridge.ts +0 -1
  132. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +547 -21
  133. package/src/Cloudflare/Workers/Worker.ts +11 -22
  134. package/src/Cloudflare/Workers/WorkerBridge.ts +3 -5
  135. package/src/Cloudflare/Workers/WorkerBundle.ts +4 -8
  136. package/src/Cloudflare/Zaraz/ZarazConfig.ts +403 -0
  137. package/src/Cloudflare/Zaraz/ZarazEventTypes.ts +257 -0
  138. package/src/Cloudflare/Zaraz/index.ts +25 -0
  139. package/src/Cloudflare/index.ts +1 -0
  140. package/src/Local/RpcProvider.ts +102 -0
  141. package/src/Local/RpcProviderProxy.ts +86 -0
  142. package/src/Local/RpcSerialization.ts +225 -0
  143. package/src/Local/RpcServer.ts +138 -0
  144. package/src/Local/RpcServerBun.ts +59 -0
  145. package/src/Local/RpcServerEnvironment.ts +55 -0
  146. package/src/Local/RpcServerNode.ts +58 -0
  147. package/src/Local/RpcServerSession.ts +87 -0
  148. package/src/Local/RpcSpawner.ts +196 -0
  149. package/src/Util/PlatformServices.ts +41 -27
  150. package/src/Util/camel.ts +3 -5
  151. package/src/Util/data.ts +38 -0
  152. package/src/Util/stable.ts +4 -10
  153. package/lib/Cloudflare/Local/Sidecar.d.ts +0 -63
  154. package/lib/Cloudflare/Local/Sidecar.d.ts.map +0 -1
  155. package/lib/Cloudflare/Local/Sidecar.js +0 -50
  156. package/lib/Cloudflare/Local/Sidecar.js.map +0 -1
  157. package/lib/Cloudflare/Local/SidecarHandlers.d.ts +0 -8
  158. package/lib/Cloudflare/Local/SidecarHandlers.d.ts.map +0 -1
  159. package/lib/Cloudflare/Local/SidecarHandlers.js +0 -381
  160. package/lib/Cloudflare/Local/SidecarHandlers.js.map +0 -1
  161. package/lib/Cloudflare/Local/SidecarServer.d.ts +0 -2
  162. package/lib/Cloudflare/Local/SidecarServer.d.ts.map +0 -1
  163. package/lib/Cloudflare/Local/SidecarServer.js +0 -34
  164. package/lib/Cloudflare/Local/SidecarServer.js.map +0 -1
  165. package/lib/Sidecar/Lock.d.ts +0 -23
  166. package/lib/Sidecar/Lock.d.ts.map +0 -1
  167. package/lib/Sidecar/Lock.js +0 -39
  168. package/lib/Sidecar/Lock.js.map +0 -1
  169. package/lib/Sidecar/RpcClient.d.ts +0 -15
  170. package/lib/Sidecar/RpcClient.d.ts.map +0 -1
  171. package/lib/Sidecar/RpcClient.js +0 -78
  172. package/lib/Sidecar/RpcClient.js.map +0 -1
  173. package/lib/Sidecar/RpcHandler.d.ts +0 -51
  174. package/lib/Sidecar/RpcHandler.d.ts.map +0 -1
  175. package/lib/Sidecar/RpcHandler.js +0 -87
  176. package/lib/Sidecar/RpcHandler.js.map +0 -1
  177. package/lib/Sidecar/RpcPaths.d.ts +0 -19
  178. package/lib/Sidecar/RpcPaths.d.ts.map +0 -1
  179. package/lib/Sidecar/RpcPaths.js +0 -31
  180. package/lib/Sidecar/RpcPaths.js.map +0 -1
  181. package/lib/Sidecar/RpcServer.d.ts +0 -30
  182. package/lib/Sidecar/RpcServer.d.ts.map +0 -1
  183. package/lib/Sidecar/RpcServer.js +0 -105
  184. package/lib/Sidecar/RpcServer.js.map +0 -1
  185. package/lib/Sidecar/RpcServerBun.d.ts +0 -4
  186. package/lib/Sidecar/RpcServerBun.d.ts.map +0 -1
  187. package/lib/Sidecar/RpcServerBun.js +0 -28
  188. package/lib/Sidecar/RpcServerBun.js.map +0 -1
  189. package/lib/Sidecar/RpcServerNode.d.ts +0 -4
  190. package/lib/Sidecar/RpcServerNode.d.ts.map +0 -1
  191. package/lib/Sidecar/RpcServerNode.js +0 -39
  192. package/lib/Sidecar/RpcServerNode.js.map +0 -1
  193. package/lib/Sidecar/RpcServices.d.ts +0 -6
  194. package/lib/Sidecar/RpcServices.d.ts.map +0 -1
  195. package/lib/Sidecar/RpcServices.js +0 -29
  196. package/lib/Sidecar/RpcServices.js.map +0 -1
  197. package/src/Cloudflare/Local/Sidecar.ts +0 -81
  198. package/src/Cloudflare/Local/SidecarHandlers.ts +0 -491
  199. package/src/Cloudflare/Local/SidecarServer.ts +0 -70
  200. package/src/Sidecar/Lock.ts +0 -66
  201. package/src/Sidecar/RpcClient.ts +0 -142
  202. package/src/Sidecar/RpcHandler.ts +0 -205
  203. package/src/Sidecar/RpcPaths.ts +0 -39
  204. package/src/Sidecar/RpcServer.ts +0 -153
  205. package/src/Sidecar/RpcServerBun.ts +0 -41
  206. package/src/Sidecar/RpcServerNode.ts +0 -51
  207. package/src/Sidecar/RpcServices.ts +0 -48
@@ -0,0 +1,216 @@
1
+ import * as zaraz from "@distilled.cloud/cloudflare/zaraz";
2
+ import * as Effect from "effect/Effect";
3
+ import { deepEqual, isResolved } from "../../Diff.js";
4
+ import * as Provider from "../../Provider.js";
5
+ import { Resource } from "../../Resource.js";
6
+ import { stripNullFields, stripUndefinedFields, unwrapRedacted, } from "../../Util/data.js";
7
+ import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
8
+ import { resolveZoneId } from "../Zone.js";
9
+ import { defineZarazEvents } from "./ZarazEventTypes.js";
10
+ /**
11
+ * A Cloudflare Zaraz zone configuration.
12
+ *
13
+ * Cloudflare Zaraz is an edge-managed third-party tool manager and analytics
14
+ * event pipeline. See the
15
+ * {@link https://developers.cloudflare.com/zaraz/ | Cloudflare Zaraz docs} and
16
+ * {@link https://developers.cloudflare.com/zaraz/web-api/ | Web API docs}.
17
+ *
18
+ * Zaraz is a zone-level singleton. This resource reconciles the current zone
19
+ * config and workflow to the desired values while retaining existing settings
20
+ * for fields omitted from props.
21
+ *
22
+ * Destroy keeps the current Zaraz config by default to avoid wiping unrelated
23
+ * zone-level analytics setup. Set `delete: true` to restore Cloudflare's
24
+ * default Zaraz config on destroy.
25
+ *
26
+ * @section Managing Zaraz
27
+ * @example Enable data layer compatibility
28
+ * ```typescript
29
+ * const zaraz = yield* Cloudflare.ZarazConfig("Analytics", {
30
+ * zone: "example.com",
31
+ * dataLayer: true,
32
+ * });
33
+ * ```
34
+ *
35
+ * @example Update Zaraz settings
36
+ * ```typescript
37
+ * const zaraz = yield* Cloudflare.ZarazConfig("Analytics", {
38
+ * zone: "example.com",
39
+ * settings: {
40
+ * autoInjectScript: true,
41
+ * hideIPAddress: true,
42
+ * },
43
+ * });
44
+ * ```
45
+ *
46
+ * @example Enable preview workflow
47
+ * ```typescript
48
+ * const zaraz = yield* Cloudflare.ZarazConfig("Analytics", {
49
+ * zone: "example.com",
50
+ * workflow: "preview",
51
+ * });
52
+ * ```
53
+ */
54
+ export const ZarazConfig = Object.assign(Resource("Cloudflare.ZarazConfig"), {
55
+ /**
56
+ * Define a type-only contract for the events sent through this Zaraz config.
57
+ *
58
+ * The returned value carries only types. Browser code should use
59
+ * Cloudflare's injected `window.zaraz` API at runtime.
60
+ */
61
+ events: defineZarazEvents,
62
+ });
63
+ const toAttributes = (zoneId, config, workflow) => ({
64
+ zoneId,
65
+ dataLayer: config.dataLayer,
66
+ debugKey: config.debugKey,
67
+ settings: config.settings,
68
+ tools: config.tools,
69
+ triggers: config.triggers,
70
+ variables: config.variables,
71
+ zarazVersion: config.zarazVersion,
72
+ analytics: config.analytics,
73
+ consent: config.consent,
74
+ historyChange: config.historyChange,
75
+ workflow,
76
+ });
77
+ const fromAttributes = (attrs) => ({
78
+ dataLayer: attrs.dataLayer,
79
+ debugKey: attrs.debugKey,
80
+ settings: attrs.settings,
81
+ tools: attrs.tools,
82
+ triggers: attrs.triggers,
83
+ variables: attrs.variables,
84
+ zarazVersion: attrs.zarazVersion,
85
+ analytics: attrs.analytics,
86
+ consent: attrs.consent,
87
+ historyChange: attrs.historyChange,
88
+ });
89
+ const desiredConfig = (observed, props) => ({
90
+ dataLayer: props.dataLayer ?? observed.dataLayer,
91
+ debugKey: props.debugKey ?? observed.debugKey,
92
+ settings: {
93
+ ...stripNullFields(observed.settings),
94
+ ...props.settings,
95
+ },
96
+ tools: props.tools ?? observed.tools,
97
+ triggers: props.triggers ?? observed.triggers,
98
+ variables: props.variables ?? observed.variables,
99
+ zarazVersion: observed.zarazVersion,
100
+ analytics: props.analytics ??
101
+ (observed.analytics ? stripNullFields(observed.analytics) : undefined),
102
+ consent: props.consent ??
103
+ (observed.consent ? stripNullFields(observed.consent) : undefined),
104
+ historyChange: props.historyChange ?? observed.historyChange,
105
+ });
106
+ const toPutConfig = (zoneId, config) => stripUndefinedFields({
107
+ zoneId,
108
+ dataLayer: config.dataLayer,
109
+ debugKey: config.debugKey,
110
+ settings: stripNullFields(config.settings),
111
+ tools: unwrapRedacted(config.tools),
112
+ triggers: unwrapRedacted(config.triggers),
113
+ variables: unwrapRedacted(config.variables),
114
+ zarazVersion: config.zarazVersion,
115
+ analytics: config.analytics
116
+ ? stripNullFields(config.analytics)
117
+ : undefined,
118
+ consent: config.consent
119
+ ? stripNullFields(config.consent)
120
+ : undefined,
121
+ historyChange: config.historyChange ?? undefined,
122
+ });
123
+ const comparableConfig = (config) => {
124
+ const { zoneId: _, ...request } = toPutConfig("", config);
125
+ return request;
126
+ };
127
+ const configForCompare = (observed, oldProps, props) => {
128
+ if (props.variables === undefined ||
129
+ oldProps?.variables === undefined ||
130
+ !deepEqual(oldProps.variables, props.variables)) {
131
+ return observed;
132
+ }
133
+ // If props already requested these variables in the previous state, compare
134
+ // against props instead of Cloudflare's readback because secret variable
135
+ // values are intentionally write-only in the Zaraz API.
136
+ return {
137
+ ...observed,
138
+ variables: props.variables,
139
+ };
140
+ };
141
+ export const ZarazConfigProvider = () => Provider.effect(ZarazConfig, Effect.gen(function* () {
142
+ const { accountId } = yield* CloudflareEnvironment;
143
+ const getConfig = yield* zaraz.getConfig;
144
+ const putConfig = yield* zaraz.putConfig;
145
+ const getDefault = yield* zaraz.getDefault;
146
+ const getWorkflow = yield* zaraz.getWorkflow;
147
+ // Cloudflare's OpenAPI operation name is `putZaraz`, but the endpoint
148
+ // updates the zone's Zaraz workflow mode.
149
+ const putWorkflow = yield* zaraz.putZaraz;
150
+ const resolve = (zone) => resolveZoneId({
151
+ accountId,
152
+ zone,
153
+ hostname: typeof zone === "string" ? zone : (zone.name ?? ""),
154
+ });
155
+ const observe = (zoneId) => Effect.all({
156
+ config: getConfig({ zoneId }),
157
+ workflow: getWorkflow({ zoneId }),
158
+ }).pipe(Effect.map(({ config, workflow }) => toAttributes(zoneId, config, workflow)));
159
+ return {
160
+ stables: ["zoneId"],
161
+ diff: Effect.fn(function* ({ olds, news, output }) {
162
+ if (!output)
163
+ return undefined;
164
+ if (!isResolved(news))
165
+ return undefined;
166
+ const zoneId = yield* resolve(news.zone);
167
+ if (zoneId !== output.zoneId) {
168
+ return { action: "replace" };
169
+ }
170
+ const outputConfig = fromAttributes(output);
171
+ const comparableOutput = configForCompare(outputConfig, olds, news);
172
+ const desired = desiredConfig(outputConfig, news);
173
+ const desiredWorkflow = news.workflow ?? output.workflow;
174
+ if (desiredWorkflow !== output.workflow ||
175
+ !deepEqual(comparableConfig(comparableOutput), comparableConfig(desired))) {
176
+ return { action: "update" };
177
+ }
178
+ }),
179
+ read: Effect.fn(function* ({ olds, output }) {
180
+ const zoneId = output?.zoneId ?? (olds ? yield* resolve(olds.zone) : undefined);
181
+ if (!zoneId)
182
+ return undefined;
183
+ return yield* observe(zoneId);
184
+ }),
185
+ reconcile: Effect.fn(function* ({ news, output }) {
186
+ const zoneId = output?.zoneId ?? (yield* resolve(news.zone));
187
+ const observed = yield* observe(zoneId);
188
+ const observedConfig = fromAttributes(observed);
189
+ const desired = desiredConfig(observedConfig, news);
190
+ const desiredWorkflow = news.workflow ?? observed.workflow;
191
+ const updatedConfig = deepEqual(comparableConfig(observedConfig), comparableConfig(desired))
192
+ ? observedConfig
193
+ : yield* putConfig(toPutConfig(zoneId, desired));
194
+ const updatedWorkflow = desiredWorkflow === observed.workflow
195
+ ? observed.workflow
196
+ : yield* putWorkflow({
197
+ zoneId,
198
+ workflow: desiredWorkflow,
199
+ });
200
+ return toAttributes(zoneId, updatedConfig, updatedWorkflow);
201
+ }),
202
+ delete: Effect.fn(function* ({ output, olds }) {
203
+ if (olds.delete !== true)
204
+ return;
205
+ const defaults = yield* getDefault({ zoneId: output.zoneId });
206
+ yield* putConfig(toPutConfig(output.zoneId, defaults));
207
+ if (olds.workflow !== undefined) {
208
+ yield* putWorkflow({
209
+ zoneId: output.zoneId,
210
+ workflow: "realtime",
211
+ });
212
+ }
213
+ }),
214
+ };
215
+ }));
216
+ //# sourceMappingURL=ZarazConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZarazConfig.js","sourceRoot":"","sources":["../../../src/Cloudflare/Zaraz/ZarazConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ import type { Simplify } from "effect/Types";
2
+ /**
3
+ * Type-only helpers for Cloudflare Zaraz events.
4
+ *
5
+ * These declarations are not an Alchemy EventSource resource and do not send
6
+ * events at runtime. They only model the browser-side `window.zaraz` API and
7
+ * Zaraz HTTP event payloads so application code can share an event contract
8
+ * with infrastructure code.
9
+ */
10
+ /**
11
+ * A map of Zaraz event names to the properties accepted by each event.
12
+ *
13
+ * Use `undefined` for events that do not accept custom properties.
14
+ */
15
+ export type ZarazEventMap = Record<string, object | undefined>;
16
+ type RequireAtLeastOne<T extends object> = {
17
+ readonly [K in keyof T]-?: Required<Pick<T, K>> & Partial<Omit<T, K>>;
18
+ }[keyof T];
19
+ /**
20
+ * Product properties supported by Cloudflare Zaraz ecommerce events.
21
+ */
22
+ export type ZarazEcommerceProduct = {
23
+ readonly product_id?: string;
24
+ readonly sku?: string;
25
+ readonly category?: string;
26
+ readonly name?: string;
27
+ readonly brand?: string;
28
+ readonly variant?: string;
29
+ readonly price?: number;
30
+ readonly currency?: string;
31
+ readonly value?: number;
32
+ readonly quantity?: number;
33
+ readonly coupon?: string;
34
+ readonly position?: number;
35
+ };
36
+ /**
37
+ * Order and checkout properties supported by Cloudflare Zaraz ecommerce events.
38
+ */
39
+ export type ZarazEcommerceOrder = {
40
+ readonly checkout_id?: string;
41
+ readonly order_id?: string;
42
+ readonly affiliation?: string;
43
+ readonly total?: number;
44
+ readonly revenue?: number;
45
+ readonly shipping?: number;
46
+ readonly tax?: number;
47
+ readonly discount?: number;
48
+ readonly coupon?: string;
49
+ readonly currency?: string;
50
+ readonly products?: readonly ZarazEcommerceProduct[];
51
+ };
52
+ export type ZarazEcommercePromotion = {
53
+ readonly creative?: string;
54
+ };
55
+ export type ZarazEcommerceSearch = {
56
+ readonly query?: string;
57
+ };
58
+ export type ZarazEcommerceCheckoutStep = {
59
+ readonly step?: number;
60
+ };
61
+ export type ZarazEcommercePayment = {
62
+ readonly payment_type?: string;
63
+ };
64
+ export type ZarazEcommerceRefund = {
65
+ readonly amount?: number;
66
+ readonly amount_refunded?: number;
67
+ readonly currency?: string;
68
+ readonly refund_reason?: string;
69
+ };
70
+ /**
71
+ * Standard ecommerce events supported by Cloudflare's `zaraz.ecommerce()` API.
72
+ */
73
+ export type ZarazEcommerceEvents = {
74
+ readonly "Product List Viewed": RequireAtLeastOne<Pick<ZarazEcommerceOrder, "products">>;
75
+ readonly "Products Searched": RequireAtLeastOne<ZarazEcommerceSearch>;
76
+ readonly "Product Clicked": RequireAtLeastOne<ZarazEcommerceProduct>;
77
+ readonly "Product Added": RequireAtLeastOne<ZarazEcommerceProduct>;
78
+ readonly "Product Added to Wishlist": RequireAtLeastOne<ZarazEcommerceProduct>;
79
+ readonly "Product Removed": RequireAtLeastOne<ZarazEcommerceProduct>;
80
+ readonly "Product Viewed": RequireAtLeastOne<ZarazEcommerceProduct>;
81
+ readonly "Cart Viewed": RequireAtLeastOne<ZarazEcommerceOrder>;
82
+ readonly "Checkout Started": RequireAtLeastOne<ZarazEcommerceOrder>;
83
+ readonly "Checkout Step Viewed": RequireAtLeastOne<ZarazEcommerceCheckoutStep>;
84
+ readonly "Checkout Step Completed": RequireAtLeastOne<ZarazEcommerceCheckoutStep>;
85
+ readonly "Payment Info Entered": RequireAtLeastOne<ZarazEcommercePayment>;
86
+ readonly "Order Completed": RequireAtLeastOne<ZarazEcommerceOrder>;
87
+ readonly "Order Updated": RequireAtLeastOne<ZarazEcommerceOrder>;
88
+ readonly "Order Refunded": RequireAtLeastOne<ZarazEcommerceOrder & ZarazEcommerceRefund>;
89
+ readonly "Order Cancelled": RequireAtLeastOne<ZarazEcommerceOrder>;
90
+ readonly "Clicked Promotion": RequireAtLeastOne<ZarazEcommercePromotion>;
91
+ readonly "Viewed Promotion": RequireAtLeastOne<ZarazEcommercePromotion>;
92
+ readonly "Shipping Info Entered": RequireAtLeastOne<ZarazEcommerceOrder>;
93
+ };
94
+ declare const ZarazEventContractTypeId: unique symbol;
95
+ /**
96
+ * Type-only contract for an application's Zaraz events.
97
+ *
98
+ * The runtime value is intentionally empty. Application browser code should
99
+ * import derived types and call Cloudflare's injected `window.zaraz` API rather
100
+ * than importing Alchemy runtime code into the client bundle.
101
+ */
102
+ export type ZarazEventContract<Events extends ZarazEventMap, EcommerceEvents extends ZarazEventMap = {}> = {
103
+ readonly [ZarazEventContractTypeId]: {
104
+ readonly events: Events;
105
+ readonly ecommerceEvents: EcommerceEvents;
106
+ };
107
+ };
108
+ /**
109
+ * Define an application's Zaraz event contract.
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const zaraz = Cloudflare.ZarazConfig.events<{
114
+ * Login: { method: "google" | "email" | "email-link" };
115
+ * "Button Clicked": { button_label: string; context?: string };
116
+ * }>();
117
+ *
118
+ * const zarazWithEcommerce = Cloudflare.ZarazConfig.events<{
119
+ * Login: { method: "google" | "email" | "email-link" };
120
+ * }>({ ecommerce: true });
121
+ *
122
+ * export type AppZarazEvents = Cloudflare.InferZarazEvents<typeof zaraz>;
123
+ * ```
124
+ */
125
+ export declare function defineZarazEvents<const Events extends ZarazEventMap>(options: {
126
+ readonly ecommerce: true;
127
+ }): ZarazEventContract<Events, ZarazEcommerceEvents>;
128
+ export declare function defineZarazEvents<const Events extends ZarazEventMap>(options?: {
129
+ readonly ecommerce?: false;
130
+ }): ZarazEventContract<Events, {}>;
131
+ export type InferZarazEvents<Contract> = Contract extends ZarazEventContract<infer Events, ZarazEventMap> ? Events : never;
132
+ export type InferZarazEcommerceEvents<Contract> = Contract extends ZarazEventContract<ZarazEventMap, infer EcommerceEvents> ? EcommerceEvents : never;
133
+ export type ZarazEventName<Events extends ZarazEventMap> = Extract<keyof Events, string>;
134
+ export type ZarazEventProperties<Events extends ZarazEventMap, Name extends ZarazEventName<Events>> = Events[Name];
135
+ type ZarazEventPropertiesArgs<Properties> = [Properties] extends [undefined] ? [properties?: undefined] : undefined extends Properties ? [properties?: Exclude<Properties, undefined>] : [properties: Properties];
136
+ /**
137
+ * Type for Cloudflare's injected `window.zaraz.track` function.
138
+ */
139
+ export type ZarazTrack<Events extends ZarazEventMap> = <const Name extends ZarazEventName<Events>>(eventName: Name, ...args: ZarazEventPropertiesArgs<Events[Name]>) => Promise<void>;
140
+ /**
141
+ * Type for Cloudflare's injected `window.zaraz.ecommerce` function.
142
+ */
143
+ export type ZarazEcommerce<Events extends ZarazEventMap> = ZarazTrack<Events>;
144
+ export type ZarazSetScope = "page" | "session" | "persist";
145
+ /**
146
+ * Type for Cloudflare's injected browser-side Zaraz API.
147
+ */
148
+ export type ZarazWebApi<Events extends ZarazEventMap, EcommerceEvents extends ZarazEventMap = {}> = {
149
+ set: (name: string, value: unknown, options?: {
150
+ scope?: ZarazSetScope;
151
+ }) => void;
152
+ track: ZarazTrack<Events>;
153
+ ecommerce: ZarazEcommerce<EcommerceEvents>;
154
+ preview: (debugKey: string) => Promise<void>;
155
+ debug: (debugKey: string) => Promise<void>;
156
+ showConsentModal: () => Promise<void>;
157
+ pageVariables: Record<string, unknown>;
158
+ };
159
+ export type ZarazSystem = {
160
+ cookies?: Record<string, unknown>;
161
+ device?: {
162
+ ip?: string;
163
+ resolution?: string;
164
+ viewport?: string;
165
+ language?: string;
166
+ "user-agent"?: string;
167
+ };
168
+ page?: {
169
+ title?: string;
170
+ url?: string;
171
+ referrer?: string;
172
+ encoding?: string;
173
+ };
174
+ };
175
+ export type ZarazClientProperties<Events extends ZarazEventMap, Name extends ZarazEventName<Events> = ZarazEventName<Events>> = Name extends ZarazEventName<Events> ? Events[Name] extends undefined ? {
176
+ readonly __zarazTrack: Name;
177
+ } : Simplify<Events[Name] & {
178
+ readonly __zarazTrack: Name;
179
+ }> : never;
180
+ export type ZarazHttpEvent<Events extends ZarazEventMap> = {
181
+ readonly client: ZarazClientProperties<Events>;
182
+ readonly system?: ZarazSystem;
183
+ };
184
+ export type ZarazHttpEventsPayload<Events extends ZarazEventMap> = {
185
+ readonly events: readonly ZarazHttpEvent<Events>[];
186
+ };
187
+ export {};
188
+ //# sourceMappingURL=ZarazEventTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZarazEventTypes.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Zaraz/ZarazEventTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export function defineZarazEvents(_options) {
2
+ return {};
3
+ }
4
+ //# sourceMappingURL=ZarazEventTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZarazEventTypes.js","sourceRoot":"","sources":["../../../src/Cloudflare/Zaraz/ZarazEventTypes.ts"],"names":[],"mappings":"AAuJA,MAAM,UAAU,iBAAiB,CAE/B,QAED;IACC,OAAO,EAAoC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./ZarazConfig.ts";
2
+ export type { InferZarazEcommerceEvents, InferZarazEvents, ZarazClientProperties, ZarazEcommerce, ZarazEcommerceCheckoutStep, ZarazEcommerceEvents, ZarazEcommerceOrder, ZarazEcommercePayment, ZarazEcommerceProduct, ZarazEcommercePromotion, ZarazEcommerceRefund, ZarazEcommerceSearch, ZarazEventContract, ZarazEventMap, ZarazEventName, ZarazEventProperties, ZarazHttpEvent, ZarazHttpEventsPayload, ZarazSetScope, ZarazSystem, ZarazTrack, ZarazWebApi, } from "./ZarazEventTypes.ts";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Zaraz/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,YAAY,EACV,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./ZarazConfig.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/Zaraz/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -21,4 +21,5 @@ export * from "./VpcService/index.ts";
21
21
  export * from "./Website/index.ts";
22
22
  export * from "./Workers/index.ts";
23
23
  export * from "./Workers/RpcAsync.ts";
24
+ export * from "./Zaraz/index.ts";
24
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
@@ -21,4 +21,5 @@ export * from "./VpcService/index.js";
21
21
  export * from "./Website/index.js";
22
22
  export * from "./Workers/index.js";
23
23
  export * from "./Workers/RpcAsync.js";
24
+ export * from "./Zaraz/index.js";
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Cloudflare/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Cloudflare/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import type { Scope } from "effect/Scope";
4
+ import type { Platform } from "../Platform.ts";
5
+ import * as Provider from "../Provider.ts";
6
+ import type { ResourceClass, ResourceLike } from "../Resource.ts";
7
+ /**
8
+ * Constructs an RpcProvider for a given resource.
9
+ *
10
+ * An RpcProvider is a resource provider that can run in a separate process.
11
+ * This is used for local development so that the resource provider and its state can outlive the user's code when it is hot-reloaded.
12
+ * If the {@link RpcProviderProxy} is provided, the provider is run in a separate process, which we communicate with here using a websocket.
13
+ * Otherwise, the given effect is used to construct the provider directly.
14
+ *
15
+ * @note If the provider is running in a separate process, you may not need to construct all of its layers in this process.
16
+ * You can use {@link providerServices} or {@link providerServicesEffect} to construct such layers only when they are needed.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * export const MyProvider = RpcProvider.effect(
21
+ * MyResource,
22
+ * import.meta.resolve("./my-rpc-provider-server.ts"),
23
+ * Effect.gen(function* () {
24
+ * return {
25
+ * diff: ...,
26
+ * reconcile: ...,
27
+ * delete: ...,
28
+ * }
29
+ * })
30
+ * )
31
+ * ```
32
+ *
33
+ * @param cls - The tag of the resource class to construct a provider for.
34
+ * @param serverEntryUrl - The main file for the server entry point, if the provider is to be run in a separate process. This is typically obtained using `import.meta.url` or `import.meta.resolve`.
35
+ * @param eff - The Effect to use to construct the provider.
36
+ * @returns A layer containing the RpcProvider.
37
+ */
38
+ export declare const effect: <R extends ResourceLike, Req = never, ReadReq = never, DiffReq = never, PrecreateReq = never, ReconcileReq = never, DeleteReq = never, TailReq = never, LogsReq = never>(cls: ResourceClass<R> | Platform<R, any, any, any, any>, serverEntryUrl: string, eff: Effect.Effect<Provider.ProviderService<R, ReadReq, DiffReq, PrecreateReq, ReconcileReq, DeleteReq, TailReq, LogsReq>, never, Req>) => Layer.Layer<Provider.Provider<R>, never, import("../AlchemyContext.ts").AlchemyContext | import("../Stack.ts").Stack | Exclude<Req, import("../Artifacts.ts").Artifacts | import("../InstanceId.ts").InstanceId> | Exclude<ReadReq, import("../Artifacts.ts").Artifacts | import("../InstanceId.ts").InstanceId> | Exclude<DiffReq, import("../Artifacts.ts").Artifacts | import("../InstanceId.ts").InstanceId> | Exclude<PrecreateReq, import("../Artifacts.ts").Artifacts | import("../InstanceId.ts").InstanceId> | Exclude<ReconcileReq, import("../Artifacts.ts").Artifacts | import("../InstanceId.ts").InstanceId> | Exclude<DeleteReq, import("../Artifacts.ts").Artifacts | import("../InstanceId.ts").InstanceId>>;
39
+ /**
40
+ * Conditionally constructs a layer for use by an RpcProvider.
41
+ * If the {@link RpcProviderProxy} is present in context, the layer is empty because it will not be used in this process.
42
+ * Otherwise, the given layer is returned.
43
+ * @param self - The layer that is used by the RpcProvider.
44
+ * @returns A layer that is empty if the {@link RpcProviderProxy} is present in context, otherwise the given layer.
45
+ */
46
+ export declare const providerServices: <ROut, E, RIn>(self: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut, E, RIn>;
47
+ /**
48
+ * Conditionally constructs a layer for use by an RpcProvider.
49
+ * If the {@link RpcProviderProxy} is present in context, the layer is empty because it will not be used in this process.
50
+ * Otherwise, the given layer is returned.
51
+ * @param self - An effect which returns a layer that is used by the RpcProvider.
52
+ */
53
+ export declare const providerServicesEffect: <A, E1, R1, E, R>(self: Effect.Effect<Layer.Layer<A, E1, R1>, E, R>) => Layer.Layer<A, E | E1, R1 | Exclude<R, Scope>>;
54
+ //# sourceMappingURL=RpcProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcProvider.d.ts","sourceRoot":"","sources":["../../src/Local/RpcProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,MAAM,GACjB,CAAC,SAAS,YAAY,EACtB,GAAG,GAAG,KAAK,EACX,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,KAAK,EACf,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,KAAK,EACpB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,KAAK,EAEf,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACvD,gBAAgB,MAAM,EACtB,KAAK,MAAM,CAAC,MAAM,CAChB,QAAQ,CAAC,eAAe,CACtB,CAAC,EACD,OAAO,EACP,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,OAAO,CACR,EACD,KAAK,EACL,GAAG,CACJ,ksBASA,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,IAAI,EAAE,CAAC,EAAE,GAAG,EAC3C,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAC9B,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAiD,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EACpD,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAChD,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAM7C,CAAC"}
@@ -0,0 +1,57 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import * as Provider from "../Provider.js";
4
+ import { RpcProviderProxy } from "./RpcProviderProxy.js";
5
+ /**
6
+ * Constructs an RpcProvider for a given resource.
7
+ *
8
+ * An RpcProvider is a resource provider that can run in a separate process.
9
+ * This is used for local development so that the resource provider and its state can outlive the user's code when it is hot-reloaded.
10
+ * If the {@link RpcProviderProxy} is provided, the provider is run in a separate process, which we communicate with here using a websocket.
11
+ * Otherwise, the given effect is used to construct the provider directly.
12
+ *
13
+ * @note If the provider is running in a separate process, you may not need to construct all of its layers in this process.
14
+ * You can use {@link providerServices} or {@link providerServicesEffect} to construct such layers only when they are needed.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * export const MyProvider = RpcProvider.effect(
19
+ * MyResource,
20
+ * import.meta.resolve("./my-rpc-provider-server.ts"),
21
+ * Effect.gen(function* () {
22
+ * return {
23
+ * diff: ...,
24
+ * reconcile: ...,
25
+ * delete: ...,
26
+ * }
27
+ * })
28
+ * )
29
+ * ```
30
+ *
31
+ * @param cls - The tag of the resource class to construct a provider for.
32
+ * @param serverEntryUrl - The main file for the server entry point, if the provider is to be run in a separate process. This is typically obtained using `import.meta.url` or `import.meta.resolve`.
33
+ * @param eff - The Effect to use to construct the provider.
34
+ * @returns A layer containing the RpcProvider.
35
+ */
36
+ export const effect = (cls, serverEntryUrl, eff) => Provider.effect(cls, Effect.gen(function* () {
37
+ const client = yield* Effect.serviceOption(RpcProviderProxy);
38
+ if (client._tag === "None")
39
+ return yield* eff;
40
+ return yield* client.value.get(serverEntryUrl, cls.Type);
41
+ }));
42
+ /**
43
+ * Conditionally constructs a layer for use by an RpcProvider.
44
+ * If the {@link RpcProviderProxy} is present in context, the layer is empty because it will not be used in this process.
45
+ * Otherwise, the given layer is returned.
46
+ * @param self - The layer that is used by the RpcProvider.
47
+ * @returns A layer that is empty if the {@link RpcProviderProxy} is present in context, otherwise the given layer.
48
+ */
49
+ export const providerServices = (self) => providerServicesEffect(Effect.succeed(self));
50
+ /**
51
+ * Conditionally constructs a layer for use by an RpcProvider.
52
+ * If the {@link RpcProviderProxy} is present in context, the layer is empty because it will not be used in this process.
53
+ * Otherwise, the given layer is returned.
54
+ * @param self - An effect which returns a layer that is used by the RpcProvider.
55
+ */
56
+ export const providerServicesEffect = (self) => Effect.serviceOption(RpcProviderProxy).pipe(Effect.flatMap((client) => client._tag === "None" ? self : Effect.succeed(Layer.empty)), Layer.unwrap);
57
+ //# sourceMappingURL=RpcProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcProvider.js","sourceRoot":"","sources":["../../src/Local/RpcProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAWpB,GAAuD,EACvD,cAAsB,EACtB,GAaC,EACD,EAAE,CACF,QAAQ,CAAC,MAAM,CACb,GAAG,EACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC,CAAC,CACH,CAAC;AAEJ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAA+B,EACJ,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAiD,EACD,EAAE,CAClD,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAW,CACvE,EACD,KAAK,CAAC,MAAM,CACb,CAAC"}
@@ -0,0 +1,19 @@
1
+ import * as Config from "effect/Config";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as HttpClient from "effect/unstable/http/HttpClient";
6
+ import { AlchemyContext } from "../AlchemyContext.ts";
7
+ import type { ProviderService } from "../Provider.ts";
8
+ import type { ResourceLike } from "../Resource.ts";
9
+ import { Stack } from "../Stack.ts";
10
+ declare const RpcProviderProxy_base: Context.ServiceClass<RpcProviderProxy, "alchemy/Local/RpcProviderProxy", {
11
+ readonly get: <R extends ResourceLike>(serverEntryUrl: string, providerName: R["Type"]) => Effect.Effect<ProviderService<R>, never, AlchemyContext | Stack>;
12
+ }>;
13
+ export declare class RpcProviderProxy extends RpcProviderProxy_base {
14
+ }
15
+ export declare const SPAWNER_URL_ENV_KEY: "ALCHEMY_RPC_SPAWNER_URL";
16
+ export declare const layer: (url: string) => Layer.Layer<RpcProviderProxy, never, HttpClient.HttpClient>;
17
+ export declare const fromEnv: () => Layer.Layer<RpcProviderProxy, Config.ConfigError, HttpClient.HttpClient>;
18
+ export {};
19
+ //# sourceMappingURL=RpcProviderProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcProviderProxy.d.ts","sourceRoot":"","sources":["../../src/Local/RpcProviderProxy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;;kBAQlB,CAAC,CAAC,SAAS,YAAY,EACnC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KACpB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC;;AANzE,qBAAa,gBAAiB,SAAQ,qBAQD;CAAG;AAExC,eAAO,MAAM,mBAAmB,EAAG,yBAAkC,CAAC;AAqDtE,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,gEAA8C,CAAC;AAEhF,eAAO,MAAM,OAAO,gFAIjB,CAAC"}