alchemy 2.0.0-beta.18 → 2.0.0-beta.19

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 (128) hide show
  1. package/bin/alchemy.js +428 -80
  2. package/bin/alchemy.js.map +1 -1
  3. package/bin/alchemy.ts +2 -0
  4. package/bin/commands/_shared.ts +34 -0
  5. package/bin/commands/bootstrap.ts +10 -3
  6. package/bin/commands/deploy.ts +23 -3
  7. package/bin/commands/login.ts +18 -3
  8. package/bin/commands/logs.ts +11 -2
  9. package/bin/commands/profile.ts +11 -5
  10. package/bin/commands/state.ts +21 -13
  11. package/bin/commands/tail.ts +10 -2
  12. package/lib/Agent/lsp/client.d.ts +2 -2
  13. package/lib/Apply.d.ts.map +1 -1
  14. package/lib/Apply.js +41 -9
  15. package/lib/Apply.js.map +1 -1
  16. package/lib/Axiom/Annotation.d.ts +49 -0
  17. package/lib/Axiom/Annotation.d.ts.map +1 -0
  18. package/lib/Axiom/Annotation.js +74 -0
  19. package/lib/Axiom/Annotation.js.map +1 -0
  20. package/lib/Axiom/ApiToken.d.ts +62 -0
  21. package/lib/Axiom/ApiToken.d.ts.map +1 -0
  22. package/lib/Axiom/ApiToken.js +98 -0
  23. package/lib/Axiom/ApiToken.js.map +1 -0
  24. package/lib/Axiom/AuthProvider.d.ts +48 -0
  25. package/lib/Axiom/AuthProvider.d.ts.map +1 -0
  26. package/lib/Axiom/AuthProvider.js +177 -0
  27. package/lib/Axiom/AuthProvider.js.map +1 -0
  28. package/lib/Axiom/Chart.d.ts +72 -0
  29. package/lib/Axiom/Chart.d.ts.map +1 -0
  30. package/lib/Axiom/Chart.js +14 -0
  31. package/lib/Axiom/Chart.js.map +1 -0
  32. package/lib/Axiom/Credentials.d.ts +12 -0
  33. package/lib/Axiom/Credentials.d.ts.map +1 -0
  34. package/lib/Axiom/Credentials.js +34 -0
  35. package/lib/Axiom/Credentials.js.map +1 -0
  36. package/lib/Axiom/Dashboard.d.ts +124 -0
  37. package/lib/Axiom/Dashboard.d.ts.map +1 -0
  38. package/lib/Axiom/Dashboard.js +140 -0
  39. package/lib/Axiom/Dashboard.js.map +1 -0
  40. package/lib/Axiom/Dataset.d.ts +101 -0
  41. package/lib/Axiom/Dataset.d.ts.map +1 -0
  42. package/lib/Axiom/Dataset.js +183 -0
  43. package/lib/Axiom/Dataset.js.map +1 -0
  44. package/lib/Axiom/Monitor.d.ts +74 -0
  45. package/lib/Axiom/Monitor.d.ts.map +1 -0
  46. package/lib/Axiom/Monitor.js +103 -0
  47. package/lib/Axiom/Monitor.js.map +1 -0
  48. package/lib/Axiom/Notifier.d.ts +63 -0
  49. package/lib/Axiom/Notifier.d.ts.map +1 -0
  50. package/lib/Axiom/Notifier.js +83 -0
  51. package/lib/Axiom/Notifier.js.map +1 -0
  52. package/lib/Axiom/Providers.d.ts +15 -0
  53. package/lib/Axiom/Providers.d.ts.map +1 -0
  54. package/lib/Axiom/Providers.js +32 -0
  55. package/lib/Axiom/Providers.js.map +1 -0
  56. package/lib/Axiom/View.d.ts +55 -0
  57. package/lib/Axiom/View.d.ts.map +1 -0
  58. package/lib/Axiom/View.js +79 -0
  59. package/lib/Axiom/View.js.map +1 -0
  60. package/lib/Axiom/VirtualField.d.ts +42 -0
  61. package/lib/Axiom/VirtualField.d.ts.map +1 -0
  62. package/lib/Axiom/VirtualField.js +71 -0
  63. package/lib/Axiom/VirtualField.js.map +1 -0
  64. package/lib/Axiom/index.d.ts +13 -0
  65. package/lib/Axiom/index.d.ts.map +1 -0
  66. package/lib/Axiom/index.js +13 -0
  67. package/lib/Axiom/index.js.map +1 -0
  68. package/lib/Bundle/Bundle.d.ts +20 -2
  69. package/lib/Bundle/Bundle.d.ts.map +1 -1
  70. package/lib/Bundle/Bundle.js +18 -3
  71. package/lib/Bundle/Bundle.js.map +1 -1
  72. package/lib/Bundle/PurePlugin.d.ts +109 -0
  73. package/lib/Bundle/PurePlugin.d.ts.map +1 -0
  74. package/lib/Bundle/PurePlugin.js +469 -0
  75. package/lib/Bundle/PurePlugin.js.map +1 -0
  76. package/lib/Bundle/index.d.ts +1 -0
  77. package/lib/Bundle/index.d.ts.map +1 -1
  78. package/lib/Bundle/index.js +1 -0
  79. package/lib/Bundle/index.js.map +1 -1
  80. package/lib/Cloudflare/Workers/Worker.d.ts +12 -0
  81. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  82. package/lib/Cloudflare/Workers/Worker.js +19 -4
  83. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  84. package/lib/Output.d.ts.map +1 -1
  85. package/lib/Output.js +1 -1
  86. package/lib/Output.js.map +1 -1
  87. package/lib/Plan.d.ts.map +1 -1
  88. package/lib/Plan.js +10 -4
  89. package/lib/Plan.js.map +1 -1
  90. package/lib/Resource.d.ts +2 -2
  91. package/lib/Resource.d.ts.map +1 -1
  92. package/lib/Telemetry/Attributes.d.ts +43 -0
  93. package/lib/Telemetry/Attributes.d.ts.map +1 -0
  94. package/lib/Telemetry/Attributes.js +144 -0
  95. package/lib/Telemetry/Attributes.js.map +1 -0
  96. package/lib/Telemetry/Layer.d.ts +14 -0
  97. package/lib/Telemetry/Layer.d.ts.map +1 -0
  98. package/lib/Telemetry/Layer.js +50 -0
  99. package/lib/Telemetry/Layer.js.map +1 -0
  100. package/lib/Telemetry/Metrics.d.ts +34 -0
  101. package/lib/Telemetry/Metrics.d.ts.map +1 -0
  102. package/lib/Telemetry/Metrics.js +57 -0
  103. package/lib/Telemetry/Metrics.js.map +1 -0
  104. package/package.json +12 -1
  105. package/src/Apply.ts +118 -9
  106. package/src/Axiom/Annotation.ts +95 -0
  107. package/src/Axiom/ApiToken.ts +125 -0
  108. package/src/Axiom/AuthProvider.ts +341 -0
  109. package/src/Axiom/Chart.ts +94 -0
  110. package/src/Axiom/Credentials.ts +70 -0
  111. package/src/Axiom/Dashboard.ts +192 -0
  112. package/src/Axiom/Dataset.ts +291 -0
  113. package/src/Axiom/Monitor.ts +122 -0
  114. package/src/Axiom/Notifier.ts +104 -0
  115. package/src/Axiom/Providers.ts +58 -0
  116. package/src/Axiom/View.ts +106 -0
  117. package/src/Axiom/VirtualField.ts +90 -0
  118. package/src/Axiom/index.ts +12 -0
  119. package/src/Bundle/Bundle.ts +39 -1
  120. package/src/Bundle/PurePlugin.ts +556 -0
  121. package/src/Bundle/index.ts +1 -0
  122. package/src/Cloudflare/Workers/Worker.ts +37 -6
  123. package/src/Output.ts +2 -1
  124. package/src/Plan.ts +13 -4
  125. package/src/Resource.ts +2 -2
  126. package/src/Telemetry/Attributes.ts +216 -0
  127. package/src/Telemetry/Layer.ts +65 -0
  128. package/src/Telemetry/Metrics.ts +101 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Axiom/Providers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAQhD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;;AAEjE,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,SAAS,2HA8BnB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
2
+ import * as Layer from "effect/Layer";
3
+ import * as Provider from "../Provider.js";
4
+ import { Annotation, AnnotationProvider } from "./Annotation.js";
5
+ import { ApiToken, ApiTokenProvider } from "./ApiToken.js";
6
+ import { AxiomAuth } from "./AuthProvider.js";
7
+ import * as Credentials from "./Credentials.js";
8
+ import { Dashboard, DashboardProvider } from "./Dashboard.js";
9
+ import { Dataset, DatasetProvider } from "./Dataset.js";
10
+ import { Monitor, MonitorProvider } from "./Monitor.js";
11
+ import { Notifier, NotifierProvider } from "./Notifier.js";
12
+ import { View, ViewProvider } from "./View.js";
13
+ import { VirtualField, VirtualFieldProvider } from "./VirtualField.js";
14
+ export { Credentials } from "@distilled.cloud/axiom/Credentials";
15
+ export class Providers extends Provider.ProviderCollection()("Axiom") {
16
+ }
17
+ /**
18
+ * Axiom providers and credentials. Wires up Dataset, ApiToken, Notifier,
19
+ * Monitor, Dashboard, VirtualField, View and Annotation resources, and
20
+ * registers the Axiom AuthProvider so `alchemy login` can configure it.
21
+ */
22
+ export const providers = () => Layer.effect(Providers, Provider.collection([
23
+ Annotation,
24
+ ApiToken,
25
+ Dashboard,
26
+ Dataset,
27
+ Monitor,
28
+ Notifier,
29
+ View,
30
+ VirtualField,
31
+ ])).pipe(Layer.provide(Layer.mergeAll(AnnotationProvider(), ApiTokenProvider(), DashboardProvider(), DatasetProvider(), MonitorProvider(), NotifierProvider(), ViewProvider(), VirtualFieldProvider())), Layer.provideMerge(Credentials.fromAuthProvider()), Layer.provideMerge(FetchHttpClient.layer), Layer.provideMerge(AxiomAuth), Layer.orDie);
32
+ //# sourceMappingURL=Providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Providers.js","sourceRoot":"","sources":["../../src/Axiom/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,MAAM,OAAO,SAAU,SAAQ,QAAQ,CAAC,kBAAkB,EAAa,CACrE,OAAO,CACR;CAAG;AAIJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAC5B,KAAK,CAAC,MAAM,CACV,SAAS,EACT,QAAQ,CAAC,UAAU,CAAC;IAClB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,YAAY;CACb,CAAC,CACH,CAAC,IAAI,CACJ,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,QAAQ,CACZ,kBAAkB,EAAE,EACpB,gBAAgB,EAAE,EAClB,iBAAiB,EAAE,EACnB,eAAe,EAAE,EACjB,eAAe,EAAE,EACjB,gBAAgB,EAAE,EAClB,YAAY,EAAE,EACd,oBAAoB,EAAE,CACvB,CACF,EACD,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAClD,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EACzC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,EAC7B,KAAK,CAAC,KAAK,CACZ,CAAC"}
@@ -0,0 +1,55 @@
1
+ import * as Operations from "@distilled.cloud/axiom/Operations";
2
+ import * as Provider from "../Provider.ts";
3
+ import { Resource } from "../Resource.ts";
4
+ import type { Providers } from "./Providers.ts";
5
+ export type ViewProps = Operations.CreateViewInput;
6
+ export type View = Resource<"Axiom.View", ViewProps, Operations.CreateViewOutput & {
7
+ /**
8
+ * Path identifier used by `updateView` / `getView` / `deleteView`.
9
+ * Currently derived from `name` because Axiom's view list/get responses
10
+ * don't expose a separate id field.
11
+ */
12
+ id: string;
13
+ }, never, Providers>;
14
+ /**
15
+ * An Axiom saved view — a named, shareable APL query. Useful for building
16
+ * starter dashboards, providing canned "open in Axiom" links from your app,
17
+ * or pinning common investigations the team revisits.
18
+ *
19
+ * The path identifier is `name`. Renaming a view triggers a replacement
20
+ * (the old one is deleted, a new one is created).
21
+ *
22
+ * @see https://axiom.co/docs/query-data/datasets — APL query reference
23
+ *
24
+ * @section Creating a View
25
+ * @example Recent errors across one dataset
26
+ * ```typescript
27
+ * yield* Axiom.View("recent-errors", {
28
+ * name: "recent-errors",
29
+ * description: "Last 100 5xx responses",
30
+ * datasets: ["my-app-traces"],
31
+ * aplQuery: `
32
+ * ['my-app-traces']
33
+ * | where status >= 500
34
+ * | order by _time desc
35
+ * | take 100
36
+ * `,
37
+ * });
38
+ * ```
39
+ *
40
+ * @example Cross-dataset join (logs + traces by trace_id)
41
+ * ```typescript
42
+ * yield* Axiom.View("trace-with-logs", {
43
+ * name: "trace-with-logs",
44
+ * datasets: ["my-app-traces", "my-app-logs"],
45
+ * aplQuery: `
46
+ * ['my-app-traces']
47
+ * | where duration_ms > 1000
48
+ * | join kind=leftouter (['my-app-logs']) on trace_id
49
+ * `,
50
+ * });
51
+ * ```
52
+ */
53
+ export declare const View: import("../Resource.ts").ResourceClass<View>;
54
+ export declare const ViewProvider: () => import("effect/Layer").Layer<Provider.Provider<View>, never, any>;
55
+ //# sourceMappingURL=View.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../src/Axiom/View.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAGhE,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC;AAEnD,MAAM,MAAM,IAAI,GAAG,QAAQ,CACzB,YAAY,EACZ,SAAS,EACT,UAAU,CAAC,gBAAgB,GAAG;IAC5B;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,IAAI,8CAA+B,CAAC;AAEjD,eAAO,MAAM,YAAY,yEAwCtB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import * as Operations from "@distilled.cloud/axiom/Operations";
2
+ import * as Effect from "effect/Effect";
3
+ import { isResolved } from "../Diff.js";
4
+ import * as Provider from "../Provider.js";
5
+ import { Resource } from "../Resource.js";
6
+ /**
7
+ * An Axiom saved view — a named, shareable APL query. Useful for building
8
+ * starter dashboards, providing canned "open in Axiom" links from your app,
9
+ * or pinning common investigations the team revisits.
10
+ *
11
+ * The path identifier is `name`. Renaming a view triggers a replacement
12
+ * (the old one is deleted, a new one is created).
13
+ *
14
+ * @see https://axiom.co/docs/query-data/datasets — APL query reference
15
+ *
16
+ * @section Creating a View
17
+ * @example Recent errors across one dataset
18
+ * ```typescript
19
+ * yield* Axiom.View("recent-errors", {
20
+ * name: "recent-errors",
21
+ * description: "Last 100 5xx responses",
22
+ * datasets: ["my-app-traces"],
23
+ * aplQuery: `
24
+ * ['my-app-traces']
25
+ * | where status >= 500
26
+ * | order by _time desc
27
+ * | take 100
28
+ * `,
29
+ * });
30
+ * ```
31
+ *
32
+ * @example Cross-dataset join (logs + traces by trace_id)
33
+ * ```typescript
34
+ * yield* Axiom.View("trace-with-logs", {
35
+ * name: "trace-with-logs",
36
+ * datasets: ["my-app-traces", "my-app-logs"],
37
+ * aplQuery: `
38
+ * ['my-app-traces']
39
+ * | where duration_ms > 1000
40
+ * | join kind=leftouter (['my-app-logs']) on trace_id
41
+ * `,
42
+ * });
43
+ * ```
44
+ */
45
+ export const View = Resource("Axiom.View");
46
+ export const ViewProvider = () => Provider.effect(View, Effect.gen(function* () {
47
+ const create = yield* Operations.createView;
48
+ const update = yield* Operations.updateView;
49
+ const get = yield* Operations.getView;
50
+ const del = yield* Operations.deleteView;
51
+ return {
52
+ stables: ["id"],
53
+ diff: Effect.fn(function* ({ news, output }) {
54
+ if (!isResolved(news))
55
+ return undefined;
56
+ if (output && news.name !== output.name) {
57
+ return { action: "replace" };
58
+ }
59
+ return undefined;
60
+ }),
61
+ create: Effect.fn(function* ({ news }) {
62
+ const result = yield* create(news);
63
+ return { ...result, id: news.name };
64
+ }),
65
+ update: Effect.fn(function* ({ news, output }) {
66
+ const result = yield* update({ ...news, id: output.id });
67
+ return { ...result, id: output.id };
68
+ }),
69
+ delete: Effect.fn(function* ({ output }) {
70
+ yield* del({ id: output.id }).pipe(Effect.catchTag("NotFound", () => Effect.void));
71
+ }),
72
+ read: Effect.fn(function* ({ output }) {
73
+ if (!output?.id)
74
+ return undefined;
75
+ return yield* get({ id: output.id }).pipe(Effect.map((current) => ({ ...current, id: output.id })), Effect.catchTag("NotFound", () => Effect.succeed(undefined)));
76
+ }),
77
+ };
78
+ }));
79
+ //# sourceMappingURL=View.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/Axiom/View.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import * as Operations from "@distilled.cloud/axiom/Operations";
2
+ import * as Provider from "../Provider.ts";
3
+ import { Resource } from "../Resource.ts";
4
+ import type { Providers } from "./Providers.ts";
5
+ export type VirtualFieldProps = Operations.CreateVirtualFieldInput;
6
+ export type VirtualField = Resource<"Axiom.VirtualField", VirtualFieldProps, Operations.CreateVirtualFieldOutput, never, Providers>;
7
+ /**
8
+ * An Axiom virtual field — a saved APL expression that appears as a derived
9
+ * column on a dataset at query time. Use these to standardise common
10
+ * computations (status classes, latency buckets, parsed JSON paths) so
11
+ * dashboards and monitors don't have to redefine them.
12
+ *
13
+ * Bound to a single `dataset`; changing the dataset triggers a replacement.
14
+ *
15
+ * @see https://axiom.co/docs/query-data/virtual-fields
16
+ *
17
+ * @section Creating a Virtual Field
18
+ * @example HTTP status class (e.g. 200 → "2xx")
19
+ * ```typescript
20
+ * yield* Axiom.VirtualField("status-class", {
21
+ * dataset: "my-app-traces",
22
+ * name: "status_class",
23
+ * description: "HTTP response class bucket",
24
+ * expression: 'strcat(tostring(toint(status / 100)), "xx")',
25
+ * type: "string",
26
+ * });
27
+ * ```
28
+ *
29
+ * @example Latency bucket in seconds
30
+ * ```typescript
31
+ * yield* Axiom.VirtualField("latency-bucket", {
32
+ * dataset: "my-app-traces",
33
+ * name: "latency_bucket_s",
34
+ * expression: "bin(duration_ms / 1000.0, 0.5)",
35
+ * type: "number",
36
+ * unit: "s",
37
+ * });
38
+ * ```
39
+ */
40
+ export declare const VirtualField: import("../Resource.ts").ResourceClass<VirtualField>;
41
+ export declare const VirtualFieldProvider: () => import("effect/Layer").Layer<Provider.Provider<VirtualField>, never, any>;
42
+ //# sourceMappingURL=VirtualField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualField.d.ts","sourceRoot":"","sources":["../../src/Axiom/VirtualField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAGhE,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,uBAAuB,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,QAAQ,CACjC,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,CAAC,wBAAwB,EACnC,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,YAAY,sDAA+C,CAAC;AAEzE,eAAO,MAAM,oBAAoB,iFAqC9B,CAAC"}
@@ -0,0 +1,71 @@
1
+ import * as Operations from "@distilled.cloud/axiom/Operations";
2
+ import * as Effect from "effect/Effect";
3
+ import { isResolved } from "../Diff.js";
4
+ import * as Provider from "../Provider.js";
5
+ import { Resource } from "../Resource.js";
6
+ /**
7
+ * An Axiom virtual field — a saved APL expression that appears as a derived
8
+ * column on a dataset at query time. Use these to standardise common
9
+ * computations (status classes, latency buckets, parsed JSON paths) so
10
+ * dashboards and monitors don't have to redefine them.
11
+ *
12
+ * Bound to a single `dataset`; changing the dataset triggers a replacement.
13
+ *
14
+ * @see https://axiom.co/docs/query-data/virtual-fields
15
+ *
16
+ * @section Creating a Virtual Field
17
+ * @example HTTP status class (e.g. 200 → "2xx")
18
+ * ```typescript
19
+ * yield* Axiom.VirtualField("status-class", {
20
+ * dataset: "my-app-traces",
21
+ * name: "status_class",
22
+ * description: "HTTP response class bucket",
23
+ * expression: 'strcat(tostring(toint(status / 100)), "xx")',
24
+ * type: "string",
25
+ * });
26
+ * ```
27
+ *
28
+ * @example Latency bucket in seconds
29
+ * ```typescript
30
+ * yield* Axiom.VirtualField("latency-bucket", {
31
+ * dataset: "my-app-traces",
32
+ * name: "latency_bucket_s",
33
+ * expression: "bin(duration_ms / 1000.0, 0.5)",
34
+ * type: "number",
35
+ * unit: "s",
36
+ * });
37
+ * ```
38
+ */
39
+ export const VirtualField = Resource("Axiom.VirtualField");
40
+ export const VirtualFieldProvider = () => Provider.effect(VirtualField, Effect.gen(function* () {
41
+ const create = yield* Operations.createVirtualField;
42
+ const update = yield* Operations.updateVirtualField;
43
+ const get = yield* Operations.getVirtualField;
44
+ const del = yield* Operations.deleteVirtualField;
45
+ return {
46
+ stables: ["id"],
47
+ diff: Effect.fn(function* ({ news, output }) {
48
+ if (!isResolved(news))
49
+ return undefined;
50
+ if (output && news.dataset !== output.dataset) {
51
+ return { action: "replace" };
52
+ }
53
+ return undefined;
54
+ }),
55
+ create: Effect.fn(function* ({ news }) {
56
+ return yield* create(news);
57
+ }),
58
+ update: Effect.fn(function* ({ news, output }) {
59
+ return yield* update({ ...news, id: output.id });
60
+ }),
61
+ delete: Effect.fn(function* ({ output }) {
62
+ yield* del({ id: output.id }).pipe(Effect.catchTag("NotFound", () => Effect.void));
63
+ }),
64
+ read: Effect.fn(function* ({ output }) {
65
+ if (!output?.id)
66
+ return undefined;
67
+ return yield* get({ id: output.id }).pipe(Effect.catchTag("NotFound", () => Effect.succeed(undefined)));
68
+ }),
69
+ };
70
+ }));
71
+ //# sourceMappingURL=VirtualField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualField.js","sourceRoot":"","sources":["../../src/Axiom/VirtualField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAChE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAa1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAe,oBAAoB,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CACvC,QAAQ,CAAC,MAAM,CACb,YAAY,EACZ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC;IAEjD,OAAO;QACL,OAAO,EAAE,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACxC,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAW,CAAC;YACxC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE;YACrC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC/C,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,IAAI,CAAC,MAAM,EAAE,EAAE;gBAAE,OAAO,SAAS,CAAC;YAClC,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CACvC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAC7D,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./Annotation.ts";
2
+ export * from "./ApiToken.ts";
3
+ export * from "./AuthProvider.ts";
4
+ export * from "./Chart.ts";
5
+ export * from "./Credentials.ts";
6
+ export * from "./Dashboard.ts";
7
+ export * from "./Dataset.ts";
8
+ export * from "./Monitor.ts";
9
+ export * from "./Notifier.ts";
10
+ export * from "./Providers.ts";
11
+ export * from "./View.ts";
12
+ export * from "./VirtualField.ts";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Axiom/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./Annotation.js";
2
+ export * from "./ApiToken.js";
3
+ export * from "./AuthProvider.js";
4
+ export * from "./Chart.js";
5
+ export * from "./Credentials.js";
6
+ export * from "./Dashboard.js";
7
+ export * from "./Dataset.js";
8
+ export * from "./Monitor.js";
9
+ export * from "./Notifier.js";
10
+ export * from "./Providers.js";
11
+ export * from "./View.js";
12
+ export * from "./VirtualField.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Axiom/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC"}
@@ -3,6 +3,24 @@ import * as Path from "effect/Path";
3
3
  import * as Result from "effect/Result";
4
4
  import * as Stream from "effect/Stream";
5
5
  import * as rolldown from "rolldown";
6
+ import { type PurePluginOptions } from "./PurePlugin.ts";
7
+ /**
8
+ * Extra options accepted by {@link build} / {@link watch} on top of the
9
+ * standard rolldown input/output options.
10
+ */
11
+ export interface BundleExtraOptions {
12
+ /**
13
+ * Configures the {@link purePlugin} which annotates top-level
14
+ * call/new expressions in matching packages with `/*#__PURE__*\/`
15
+ * so rolldown can tree-shake them.
16
+ *
17
+ * - `undefined` (default): plugin is enabled with default packages
18
+ * (`effect`, `@effect/*`).
19
+ * - `PurePluginOptions`: plugin is enabled with the provided options.
20
+ * - `false`: plugin is disabled.
21
+ */
22
+ readonly pure?: PurePluginOptions | false;
23
+ }
6
24
  export interface BundleOutput {
7
25
  /**
8
26
  * The files in the bundle.
@@ -33,14 +51,14 @@ export declare class BundleError extends BundleError_base<{
33
51
  * @param outputOptions - The output options for the bundle.
34
52
  * @returns The bundle output.
35
53
  */
36
- export declare const build: (inputOptions: rolldown.InputOptions, outputOptions?: rolldown.OutputOptions) => Effect.Effect<BundleOutput, BundleError>;
54
+ export declare const build: (inputOptions: rolldown.InputOptions, outputOptions?: rolldown.OutputOptions, extra?: BundleExtraOptions) => Effect.Effect<BundleOutput, BundleError>;
37
55
  /**
38
56
  * Watch for changes in the bundle and return a stream of bundle output.
39
57
  * @param inputOptions - The input options for the bundle.
40
58
  * @param outputOptions - The output options for the bundle.
41
59
  * @returns A stream of Result instances containing either the bundle output or an error.
42
60
  */
43
- export declare const watch: (inputOptions: rolldown.InputOptions, outputOptions?: rolldown.OutputOptions) => Stream.Stream<Result.Result<BundleOutput, BundleError>>;
61
+ export declare const watch: (inputOptions: rolldown.InputOptions, outputOptions?: rolldown.OutputOptions, extra?: BundleExtraOptions) => Stream.Stream<Result.Result<BundleOutput, BundleError>>;
44
62
  export declare const virtualEntryPlugin: Effect.Effect<(content: (importPath: string) => string) => {
45
63
  name: string;
46
64
  options(this: rolldown.MinimalPluginContext, inputOptions: rolldown.InputOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Bundle.d.ts","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAGrC,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;;;;AAED,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;AAEL;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,cAAc,QAAQ,CAAC,YAAY,EACnC,gBAAgB,QAAQ,CAAC,aAAa,KACrC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAoBvC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,cAAc,QAAQ,CAAC,YAAY,EACnC,gBAAgB,QAAQ,CAAC,aAAa,KACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAmDtD,CAAC;AAKJ,eAAO,MAAM,kBAAkB,0BAEZ,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;oBA2B/C,CAAC;AAEH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,QAAQ,CAAC,YAAY,GAC5B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAiB1C"}
1
+ {"version":3,"file":"Bundle.d.ts","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;;;;AAED,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;AAEL;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,cAAc,QAAQ,CAAC,YAAY,EACnC,gBAAgB,QAAQ,CAAC,aAAa,EACtC,QAAQ,kBAAkB,KACzB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAqBvC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,cAAc,QAAQ,CAAC,YAAY,EACnC,gBAAgB,QAAQ,CAAC,aAAa,EACtC,QAAQ,kBAAkB,KACzB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAmDtD,CAAC;AAKJ,eAAO,MAAM,kBAAkB,0BAEZ,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;oBA2B/C,CAAC;AAEH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,QAAQ,CAAC,YAAY,GAC5B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAiB1C"}
@@ -7,6 +7,7 @@ import * as Stream from "effect/Stream";
7
7
  import assert from "node:assert";
8
8
  import * as rolldown from "rolldown";
9
9
  import { sha256, sha256Object } from "../Util/sha256.js";
10
+ import { purePlugin } from "./PurePlugin.js";
10
11
  export class BundleError extends Data.TaggedError("BundleError") {
11
12
  }
12
13
  /**
@@ -15,10 +16,11 @@ export class BundleError extends Data.TaggedError("BundleError") {
15
16
  * @param outputOptions - The output options for the bundle.
16
17
  * @returns The bundle output.
17
18
  */
18
- export const build = (inputOptions, outputOptions) => Effect.tryPromise({
19
+ export const build = (inputOptions, outputOptions, extra) => Effect.tryPromise({
19
20
  try: async () => {
20
21
  const bundle = await rolldown.rolldown({
21
22
  ...inputOptions,
23
+ plugins: withPurePlugin(inputOptions.plugins, extra?.pure),
22
24
  optimization: inputOptions.optimization ?? {
23
25
  inlineConst: {
24
26
  mode: "smart",
@@ -38,11 +40,11 @@ export const build = (inputOptions, outputOptions) => Effect.tryPromise({
38
40
  * @param outputOptions - The output options for the bundle.
39
41
  * @returns A stream of Result instances containing either the bundle output or an error.
40
42
  */
41
- export const watch = (inputOptions, outputOptions) => Stream.callback((queue) => Effect.acquireRelease(Effect.sync(() => {
43
+ export const watch = (inputOptions, outputOptions, extra) => Stream.callback((queue) => Effect.acquireRelease(Effect.sync(() => {
42
44
  const watcher = rolldown.watch({
43
45
  ...inputOptions,
44
46
  plugins: [
45
- inputOptions.plugins,
47
+ withPurePlugin(inputOptions.plugins, extra?.pure),
46
48
  // The watcher event listener does not receive the bundle output, so we grab it using a plugin.
47
49
  {
48
50
  name: "alchemy:watch-bundle",
@@ -113,6 +115,19 @@ export function bundleOutputFromRolldownOutputBundle(bundle) {
113
115
  }
114
116
  return Effect.forEach(files, bundleFileFromOutputChunk).pipe(Effect.flatMap(bundleOutputFromFiles));
115
117
  }
118
+ /**
119
+ * Composes the user-provided plugin chain with the default
120
+ * {@link purePlugin} according to the `pure` option.
121
+ *
122
+ * The pure plugin is appended LAST so it sees module ids that have already
123
+ * been resolved into `node_modules/<pkg>/...` by upstream resolver plugins
124
+ * such as `@distilled.cloud/cloudflare-rolldown-plugin`.
125
+ */
126
+ function withPurePlugin(plugins, pure) {
127
+ if (pure === false)
128
+ return plugins;
129
+ return [plugins, purePlugin(pure ?? {})];
130
+ }
116
131
  function bundleErrorFromUnknown(error) {
117
132
  const message = error instanceof Error ? error.message : String(error);
118
133
  return new BundleError({
@@ -1 +1 @@
1
- {"version":3,"file":"Bundle.js","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Bundle.js","sourceRoot":"","sources":["../../src/Bundle/Bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import MagicString from "magic-string";
2
+ import type * as rolldown from "rolldown";
3
+ /**
4
+ * Default packages whose modules will receive `/*#__PURE__*\/` annotations.
5
+ * Mirrors what `effect-smol` ships via `babel-plugin-annotate-pure-calls`
6
+ * applied to its own `dist/` output.
7
+ *
8
+ * `alchemy` is included so its own resources (which consist almost entirely
9
+ * of `Effect.fn(...)`, `Context.Service(...)(...)`, `Layer.effect(...)` and
10
+ * `Data.TaggedError(...)` top-level calls) become tree-shakeable. The
11
+ * package already declares `"sideEffects": false`, so it is safe.
12
+ */
13
+ export declare const DEFAULT_PURE_PACKAGES: ReadonlyArray<string>;
14
+ /**
15
+ * Options for {@link purePlugin}.
16
+ */
17
+ export interface PurePluginOptions {
18
+ /**
19
+ * Extra package names or globs to annotate, in addition to
20
+ * {@link DEFAULT_PURE_PACKAGES}. Globs are matched with picomatch
21
+ * against the package name (e.g. `effect`, `@effect/cluster`).
22
+ */
23
+ readonly packages?: ReadonlyArray<string>;
24
+ /**
25
+ * If true, the configured `packages` list replaces the defaults
26
+ * entirely instead of extending them.
27
+ * @default false
28
+ */
29
+ readonly replaceDefaults?: boolean;
30
+ /**
31
+ * If true, also marks matched modules as side-effect free
32
+ * (mirrors `"sideEffects": []` in package.json), so rolldown drops
33
+ * unused re-exports from those packages.
34
+ * @default true
35
+ */
36
+ readonly markSideEffectFree?: boolean;
37
+ /**
38
+ * If true, automatically detect the npm package that owns the bundle
39
+ * entry (by walking up to the nearest `package.json`) and annotate it
40
+ * too. This makes the user's own source tree-shakeable without any
41
+ * configuration.
42
+ *
43
+ * The package's `sideEffects` field is NOT consulted for this gate —
44
+ * if your entry's package has init-time side effects you wish to
45
+ * preserve, declare them in `package.json` (`"sideEffects": ["./foo.ts"]`)
46
+ * or set this option to `false`.
47
+ *
48
+ * @default true
49
+ */
50
+ readonly autoDetectEntryPackage?: boolean;
51
+ }
52
+ /**
53
+ * Rolldown plugin that injects `/*#__PURE__*\/` annotations on top-level
54
+ * call/new expressions of modules belonging to the configured packages,
55
+ * enabling tree-shaking of `effect`, `@effect/*`, and any user-listed
56
+ * packages without requiring a babel post-build pass.
57
+ */
58
+ export declare const purePlugin: (options?: PurePluginOptions) => rolldown.Plugin;
59
+ /**
60
+ * Metadata extracted from a `package.json`. `name` may be `null` when the
61
+ * file exists but has no `"name"` field (rare, but possible for private
62
+ * subpackage roots).
63
+ */
64
+ export interface PackageInfo {
65
+ readonly name: string | null;
66
+ readonly sideEffects: unknown;
67
+ }
68
+ /**
69
+ * Extracts the npm package name from a resolved module id by walking back to
70
+ * the last `node_modules/` segment. Handles scoped packages. This is the
71
+ * fast path that does not hit the filesystem; it works for ordinary
72
+ * `node_modules/<pkg>/...` ids but NOT for workspace-linked sources whose
73
+ * resolved path is e.g. `<repo>/packages/alchemy/src/Bundle/PurePlugin.ts`.
74
+ *
75
+ * @example
76
+ * packageNameFromId("/proj/node_modules/effect/dist/Effect.js")
77
+ * // => "effect"
78
+ * packageNameFromId("/proj/node_modules/@effect/cluster/dist/index.js")
79
+ * // => "@effect/cluster"
80
+ */
81
+ export declare function packageNameFromId(id: string): string | null;
82
+ /**
83
+ * Resolves the owning {@link PackageInfo} for a module id by walking up
84
+ * the directory tree to the nearest `package.json`. This is what makes
85
+ * the plugin work for workspace-linked sources (e.g. our own
86
+ * `packages/alchemy/src/**` when consumers import via the `worker`/`bun`
87
+ * conditions which resolve to `.ts`).
88
+ *
89
+ * Caches both positive and negative results per directory to keep the
90
+ * filesystem walk bounded across an entire bundle pass.
91
+ */
92
+ export declare function resolvePackageInfo(id: string, cache: Map<string, PackageInfo | null>): Promise<PackageInfo | null>;
93
+ /**
94
+ * Convenience wrapper that returns just the package name. Equivalent to
95
+ * `resolvePackageInfo(...)?.name ?? packageNameFromId(id)`.
96
+ */
97
+ export declare function resolvePackageName(id: string, cache: Map<string, string | null>): Promise<string | null>;
98
+ interface AnnotatedModule {
99
+ readonly code: string;
100
+ readonly map: ReturnType<MagicString["generateMap"]>;
101
+ }
102
+ /**
103
+ * Parses `code` and inserts `/*#__PURE__*\/` before every top-level
104
+ * `CallExpression` / `NewExpression` callee. Returns `null` if the file
105
+ * does not need to be modified (parse failure or no annotations added).
106
+ */
107
+ export declare function annotateModule(code: string, filename: string): AnnotatedModule | null;
108
+ export {};
109
+ //# sourceMappingURL=PurePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PurePlugin.d.ts","sourceRoot":"","sources":["../../src/Bundle/PurePlugin.ts"],"names":[],"mappings":"AAWA,OAAO,WAAW,MAAM,cAAc,CAAC;AAIvC,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAG1C;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAKvD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAKD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACrB,UAAS,iBAAsB,KAC9B,QAAQ,CAAC,MA+DX,CAAC;AAkDF;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAkDD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY3D;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,GACrC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqE7B;AA6BD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAChC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED,UAAU,eAAe;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;CACtD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,eAAe,GAAG,IAAI,CA4GxB"}