@lunora/config 1.0.0-alpha.35 → 1.0.0-alpha.351

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 (129) hide show
  1. package/LICENSE.md +135 -0
  2. package/README.md +3 -3
  3. package/dist/cloudflare/index.d.mts +1252 -0
  4. package/dist/cloudflare/index.d.ts +1252 -0
  5. package/dist/cloudflare/index.mjs +1 -0
  6. package/dist/index.d.mts +1048 -917
  7. package/dist/index.d.ts +1048 -917
  8. package/dist/index.mjs +1 -23
  9. package/dist/packem_shared/ACCENT-CotPTfv7.mjs +7 -0
  10. package/dist/packem_shared/AGENT_MODE_ENV-D8MvSwPE.mjs +1 -0
  11. package/dist/packem_shared/AGENT_RULES_DIR-HrrbNZPy.mjs +1 -0
  12. package/dist/packem_shared/ALLOW_FORWARDED_ENV-BUndghJx.mjs +1 -0
  13. package/dist/packem_shared/BINDING_MANIFEST_VERSION-CfXEYG8e.mjs +1 -0
  14. package/dist/packem_shared/CLOUDFLARE_CLI_CONFIG_WARNING_ENV-BKMrOuXV.mjs +1 -0
  15. package/dist/packem_shared/CLOUDFLARE_DRIVER-CULavrYO.mjs +1 -0
  16. package/dist/packem_shared/CLOUDFLARE_TOOLCHAIN_VERSIONS-DV5E_f_q.mjs +1 -0
  17. package/dist/packem_shared/CODEGEN_ENV-ZsCxV1kP.mjs +1 -0
  18. package/dist/packem_shared/COMPOSED_WORKER_ENTRY-Ciiba5g_.mjs +1 -0
  19. package/dist/packem_shared/DEFAULT_DEPLOY_TARGET-rR7buNQw.mjs +1 -0
  20. package/dist/packem_shared/DEFAULT_OBSERVABILITY-bN6UkTMx.mjs +1 -0
  21. package/dist/packem_shared/DEV_BINDINGS_FILE-C0ZN_XlP.mjs +4 -0
  22. package/dist/packem_shared/DEV_VARS_EXAMPLE_FILE-CqLorAxT.mjs +6 -0
  23. package/dist/packem_shared/DEV_WORKER_ENV_VALUE-2XFXmRrP.mjs +1 -0
  24. package/dist/packem_shared/GLOBAL_FETCH_STRICTLY_PUBLIC_FLAG-f8CnJha3.mjs +1 -0
  25. package/dist/packem_shared/LINKED_PROJECT_DIR-Ba5qPEwo.mjs +2 -0
  26. package/dist/packem_shared/LUNORA_EVENT_SOURCE-B9ZVohjO.mjs +1 -0
  27. package/dist/packem_shared/LUNORA_IGNORED_PATHS-U93uPxrW.mjs +19 -0
  28. package/dist/packem_shared/LUNORA_TAG-CiQM3BkI.mjs +1 -0
  29. package/dist/packem_shared/LunoraReporter-f277GLNT.mjs +6 -0
  30. package/dist/packem_shared/PACKAGE_SECRETS_REGISTRY-38Plje8b.mjs +1 -0
  31. package/dist/packem_shared/POLICY_SCAFFOLD_ENDPOINT-BmJYwAy2.mjs +1 -0
  32. package/dist/packem_shared/REMOTE_ELIGIBLE_KEYS-PLeh_74E.mjs +1 -0
  33. package/dist/packem_shared/REQUIRED_COMPATIBILITY_DATE-OLQlG0oj.mjs +1 -0
  34. package/dist/packem_shared/SCHEMA_EDIT_ENDPOINT-BeTxqCuQ.mjs +1 -0
  35. package/dist/packem_shared/SEED_ENDPOINT-2B56PN_H.mjs +1 -0
  36. package/dist/packem_shared/STUDIO_PATH-CSx_psKS.mjs +1 -0
  37. package/dist/packem_shared/UNEXPORTED_CLASS_MARKER-DwJCN8fX.mjs +1 -0
  38. package/dist/packem_shared/WORKERS_CACHE_MIN_DATE-0k9ABJtF.mjs +1 -0
  39. package/dist/packem_shared/WRANGLER_FILES-UNW-xY5u.mjs +1 -0
  40. package/dist/packem_shared/acceptsConnection-DHhUYGjT.mjs +2 -0
  41. package/dist/packem_shared/addArgsFor-CYZKhNIo.mjs +1 -0
  42. package/dist/packem_shared/applyAdditiveEdit-CH0VhMJ2.mjs +6 -0
  43. package/dist/packem_shared/applyModify-DKP2l6S9.mjs +1 -0
  44. package/dist/packem_shared/applyStudioAssetCache-DHQEJuuv.mjs +1 -0
  45. package/dist/packem_shared/assertWranglerSatisfiesSchema-Dd7ZPhw7.mjs +3 -0
  46. package/dist/packem_shared/assetContentType-CUb5bpbI.mjs +1 -0
  47. package/dist/packem_shared/buildPackageSecretsBlock-BWV_VxqV.mjs +19 -0
  48. package/dist/packem_shared/celld-config-D-L6uskI.mjs +3 -0
  49. package/dist/packem_shared/classifyPolicyEdit-DJi9Fk8G.mjs +24 -0
  50. package/dist/packem_shared/collectExportGaps-BPuhGH2J.mjs +2 -0
  51. package/dist/packem_shared/createConfirm-D5mKTMHj.mjs +7 -0
  52. package/dist/packem_shared/createDiscoveryCache-npJI4uej.mjs +1 -0
  53. package/dist/packem_shared/describePreservedCrons-C5KPuPy3.mjs +1 -0
  54. package/dist/packem_shared/describeWithheldWorkersAi-IIxe3TuI.mjs +1 -0
  55. package/dist/packem_shared/detectFramework-Dfpvu6rD.mjs +1 -0
  56. package/dist/packem_shared/discover-info-DC2MrAIM.mjs +1 -0
  57. package/dist/packem_shared/discoverAgentInfo-pqFMJBtJ.mjs +1 -0
  58. package/dist/packem_shared/discoverContainerInfo-DzXr7Vm3.mjs +1 -0
  59. package/dist/packem_shared/discoverSchemaInfo-BBRlXZop.mjs +1 -0
  60. package/dist/packem_shared/discoverWorkflowInfo-zW7Tt0Tn.mjs +1 -0
  61. package/dist/packem_shared/guards-Buu_E7mP.mjs +1 -0
  62. package/dist/packem_shared/hasCloudflareCredentials-byvHpEiD.mjs +1 -0
  63. package/dist/packem_shared/infer-bindings-C1NFOdMi.mjs +1 -0
  64. package/dist/packem_shared/infer-bindings.d-CFxssIAC.d.mts +480 -0
  65. package/dist/packem_shared/infer-bindings.d-CFxssIAC.d.ts +480 -0
  66. package/dist/packem_shared/inferLunoraBindings-Gp_7yyIo.mjs +1 -0
  67. package/dist/packem_shared/interpretRemote-CcmGeGZ_.mjs +1 -0
  68. package/dist/packem_shared/lunora-manifest-DuH_Cmyu.mjs +6 -0
  69. package/dist/packem_shared/materializeServiceDevConfigs-DLUHefD-.mjs +1 -0
  70. package/dist/packem_shared/mergeWranglerEnvironment-DXiB-HcS.mjs +1 -0
  71. package/dist/packem_shared/package-secrets-registry-BeheNwsP.mjs +1 -0
  72. package/dist/packem_shared/parseDevVariable-teAAahVD.mjs +1 -0
  73. package/dist/packem_shared/parseSchema-D1Wbr1qv.mjs +1 -0
  74. package/dist/packem_shared/policy-scaffold.d-D2H4_G01.d.mts +86 -0
  75. package/dist/packem_shared/policy-scaffold.d-D2H4_G01.d.ts +86 -0
  76. package/dist/packem_shared/process-tree-once-Ou4SfxKM.mjs +1 -0
  77. package/dist/packem_shared/readProjectDependencies-l3uhUKjo.mjs +1 -0
  78. package/dist/packem_shared/reconcile-services-DFqH4eMQ.mjs +1 -0
  79. package/dist/packem_shared/reconcileBindingsSafely-7IJ58Uit.mjs +1 -0
  80. package/dist/packem_shared/reconcileWranglerCompatibilityDate-hocXEuRA.mjs +1 -0
  81. package/dist/packem_shared/renderStudioHtml-ByowDtMl.mjs +15 -0
  82. package/dist/packem_shared/resolveSchemaDirectory-Ca5P6KuP.mjs +1 -0
  83. package/dist/packem_shared/runPostCodegenHook-Dx3yTsYZ.mjs +1 -0
  84. package/dist/packem_shared/scanWranglerVariablesForSecrets-BFTVje1q.mjs +1 -0
  85. package/dist/packem_shared/serveJsonHandler-Dv0EdCb9.mjs +1 -0
  86. package/dist/packem_shared/startCelldDevSession-BLFsd6jG.mjs +1 -0
  87. package/dist/packem_shared/streamContainerLogs-0nko1qpv.mjs +2 -0
  88. package/dist/packem_shared/validate-bindings-CvNBF3U4.mjs +1 -0
  89. package/dist/packem_shared/withTailConsumer-DngzpJMK.mjs +1 -0
  90. package/dist/packem_shared/worker-entry-checks-AIASCYl7.mjs +1 -0
  91. package/dist/packem_shared/wranglerCodegenInputs-CbisphsH.mjs +1 -0
  92. package/dist/packem_shared/wranglerToAlchemy-CBO2ucRm.mjs +6 -0
  93. package/dist/packem_shared/write-atomic-CK6VZaPI.mjs +1 -0
  94. package/dist/studio-host/index.d.mts +314 -110
  95. package/dist/studio-host/index.d.ts +314 -110
  96. package/dist/studio-host/index.mjs +1 -7
  97. package/package.json +16 -7
  98. package/dist/packem_shared/ACCENT-DW1XJn8i.mjs +0 -40
  99. package/dist/packem_shared/AGENT_RULES_DIR-lcgC08aE.mjs +0 -40
  100. package/dist/packem_shared/DEV_VARS_EXAMPLE_FILE-dJPNTEnK.mjs +0 -37
  101. package/dist/packem_shared/LINKED_PROJECT_DIR-CXwXzV_C.mjs +0 -52
  102. package/dist/packem_shared/LUNORA_CONFIG_FILE-CtcIcB5-.mjs +0 -34
  103. package/dist/packem_shared/LUNORA_EVENT_SOURCE-D2fDeGB6.mjs +0 -86
  104. package/dist/packem_shared/LunoraReporter-Ci-bDCK9.mjs +0 -70
  105. package/dist/packem_shared/PACKAGE_SECRETS_REGISTRY-B8t_SdoZ.mjs +0 -70
  106. package/dist/packem_shared/POLICY_SCAFFOLD_ENDPOINT-CiC2IGKx.mjs +0 -103
  107. package/dist/packem_shared/REMOTE_ELIGIBLE_KEYS-BC7_e9Bz.mjs +0 -105
  108. package/dist/packem_shared/REQUIRED_COMPATIBILITY_DATE-2YYyWJUq.mjs +0 -561
  109. package/dist/packem_shared/SCHEMA_EDIT_ENDPOINT-Df-Wrix-.mjs +0 -99
  110. package/dist/packem_shared/SEED_ENDPOINT-DVCjaGO-.mjs +0 -61
  111. package/dist/packem_shared/WRANGLER_FILES-DwSuC-Kn.mjs +0 -25
  112. package/dist/packem_shared/applyAdditiveEdit-C-snTFEV.mjs +0 -228
  113. package/dist/packem_shared/buildPackageSecretsBlock-DWDKHViT.mjs +0 -243
  114. package/dist/packem_shared/classifyPolicyEdit-BHeAqF8P.mjs +0 -99
  115. package/dist/packem_shared/createConfirm-fvpdgJ9s.mjs +0 -100
  116. package/dist/packem_shared/detectFramework-Br-BcPBq.mjs +0 -41
  117. package/dist/packem_shared/discoverContainerInfo-BXFs6Wav.mjs +0 -19
  118. package/dist/packem_shared/discoverSchemaInfo-BB-CKlTK.mjs +0 -25
  119. package/dist/packem_shared/discoverWorkflowInfo-CedvR0mn.mjs +0 -19
  120. package/dist/packem_shared/inferLunoraBindings-ByMwG-gH.mjs +0 -352
  121. package/dist/packem_shared/loadStudioAssets-Csk5RS4E.mjs +0 -28
  122. package/dist/packem_shared/parseDevVariable-CJiq2IwE.mjs +0 -30
  123. package/dist/packem_shared/parseSchema-DSeyktvG.mjs +0 -107
  124. package/dist/packem_shared/policy-scaffold.d-DCmwn7zQ.d.mts +0 -74
  125. package/dist/packem_shared/policy-scaffold.d-DCmwn7zQ.d.ts +0 -74
  126. package/dist/packem_shared/reconcileWranglerBindings-Cruwwx1M.mjs +0 -334
  127. package/dist/packem_shared/renderStudioHtml-449Ysn75.mjs +0 -37
  128. package/dist/packem_shared/serveJsonHandler-B4OLTGLS.mjs +0 -86
  129. package/dist/packem_shared/streamContainerLogs-BZ4cOZwH.mjs +0 -157
@@ -1,86 +0,0 @@
1
- const MAX_BODY_BYTES = 1e6;
2
- const readBody = async (request) => await new Promise((resolve, reject) => {
3
- const chunks = [];
4
- let size = 0;
5
- request.on("data", (chunk) => {
6
- size += chunk.length;
7
- if (size > MAX_BODY_BYTES) {
8
- reject(new Error("request body too large"));
9
- return;
10
- }
11
- chunks.push(chunk);
12
- });
13
- request.on("end", () => {
14
- resolve(Buffer.concat(chunks).toString("utf8"));
15
- });
16
- request.on("error", reject);
17
- });
18
- const respondJson = (response, status, body) => {
19
- response.statusCode = status;
20
- response.setHeader("Content-Type", "application/json; charset=utf-8");
21
- response.end(JSON.stringify(body));
22
- };
23
- const headerValue = (raw) => {
24
- const value = Array.isArray(raw) ? raw[0] : raw;
25
- return typeof value === "string" ? value.trim().toLowerCase() : void 0;
26
- };
27
- const SAME_SITE_FETCH_VALUES = /* @__PURE__ */ new Set(["none", "same-origin", "same-site"]);
28
- const originRejectionReason = (request) => {
29
- const secFetchSite = headerValue(request.headers["sec-fetch-site"]);
30
- if (secFetchSite !== void 0) {
31
- return SAME_SITE_FETCH_VALUES.has(secFetchSite) ? void 0 : "cross-origin request rejected";
32
- }
33
- const origin = headerValue(request.headers.origin);
34
- if (origin === void 0 || origin === "null") {
35
- return void 0;
36
- }
37
- let originHost;
38
- try {
39
- originHost = new URL(origin).host.toLowerCase();
40
- } catch {
41
- return "invalid origin header";
42
- }
43
- return originHost === headerValue(request.headers.host) ? void 0 : "cross-origin request rejected";
44
- };
45
- const csrfRejectionReason = (request) => {
46
- const method = (request.method ?? "GET").toUpperCase();
47
- const isStateChanging = method !== "GET" && method !== "HEAD";
48
- const originReason = originRejectionReason(request);
49
- if (originReason !== void 0) {
50
- return originReason;
51
- }
52
- if (isStateChanging) {
53
- const contentType = headerValue(request.headers["content-type"]);
54
- if (!contentType?.startsWith("application/json")) {
55
- return "content-type must be application/json";
56
- }
57
- }
58
- return void 0;
59
- };
60
- const serveJsonHandler = (request, response, handle, projectRoot) => {
61
- const run = async () => {
62
- try {
63
- const rejection = csrfRejectionReason(request);
64
- if (rejection !== void 0) {
65
- respondJson(response, 403, { error: rejection, ok: false });
66
- return;
67
- }
68
- const raw = request.method === "GET" ? "" : await readBody(request);
69
- let parsed;
70
- try {
71
- parsed = raw === "" ? void 0 : JSON.parse(raw);
72
- } catch {
73
- respondJson(response, 400, { error: "invalid-json", ok: false });
74
- return;
75
- }
76
- const result = handle({ body: parsed, method: request.method ?? "POST", projectRoot });
77
- respondJson(response, result.status, result.body);
78
- } catch (error) {
79
- respondJson(response, 500, { error: error instanceof Error ? error.message : String(error), ok: false });
80
- }
81
- };
82
- run().catch(() => {
83
- });
84
- };
85
-
86
- export { serveJsonHandler };
@@ -1,157 +0,0 @@
1
- import { Writable } from 'node:stream';
2
- import { StringDecoder } from 'node:string_decoder';
3
-
4
- const DEV_CONTAINER_IMAGE_PREFIX = "cloudflare-dev/";
5
- const DEFAULT_POLL_INTERVAL_MS = 1500;
6
- const createDefaultDocker = async () => {
7
- const { default: Dockerode } = await import('dockerode');
8
- return new Dockerode();
9
- };
10
- const classFromImage = (image) => {
11
- if (!image.startsWith(DEV_CONTAINER_IMAGE_PREFIX)) {
12
- return void 0;
13
- }
14
- const [segment] = image.slice(DEV_CONTAINER_IMAGE_PREFIX.length).split(":");
15
- return segment !== void 0 && segment.length > 0 ? segment : void 0;
16
- };
17
- const lineBufferWritable = (emit) => {
18
- const decoder = new StringDecoder("utf8");
19
- let buffer = "";
20
- const flushLine = (line) => {
21
- emit(line.endsWith("\r") ? line.slice(0, -1) : line);
22
- };
23
- return new Writable({
24
- final(callback) {
25
- buffer += decoder.end();
26
- if (buffer.length > 0) {
27
- flushLine(buffer);
28
- buffer = "";
29
- }
30
- callback();
31
- },
32
- write(chunk, _encoding, callback) {
33
- buffer += decoder.write(chunk);
34
- const lines = buffer.split("\n");
35
- buffer = lines.pop() ?? "";
36
- for (const line of lines) {
37
- flushLine(line);
38
- }
39
- callback();
40
- }
41
- });
42
- };
43
- const streamContainerLogs = (options) => {
44
- const classToExport = new Map(options.containers.map((source) => [source.className.toLowerCase(), source.exportName]));
45
- if (classToExport.size === 0) {
46
- return { close: () => {
47
- } };
48
- }
49
- const interval = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
50
- const attached = /* @__PURE__ */ new Map();
51
- let closed = false;
52
- let unavailableNotified = false;
53
- let timer;
54
- let dockerPromise;
55
- const getDocker = async () => {
56
- dockerPromise ??= options.docker ? Promise.resolve(options.docker) : createDefaultDocker();
57
- return dockerPromise;
58
- };
59
- const attach = async (docker, id, exportName) => {
60
- try {
61
- const stream = await docker.getContainer(id).logs({ follow: true, stderr: true, stdout: true, tail: "all", timestamps: false });
62
- if (closed) {
63
- stream.destroy();
64
- return;
65
- }
66
- const stdout = lineBufferWritable((text) => {
67
- options.onLine({ level: "info", name: exportName, text });
68
- });
69
- const stderr = lineBufferWritable((text) => {
70
- options.onLine({ level: "error", name: exportName, text });
71
- });
72
- docker.modem.demuxStream(stream, stdout, stderr);
73
- stream.on("end", () => {
74
- stdout.end();
75
- stderr.end();
76
- attached.delete(id);
77
- });
78
- stream.on("error", () => {
79
- attached.delete(id);
80
- });
81
- attached.set(id, stream);
82
- } catch {
83
- }
84
- };
85
- const listRunning = async () => {
86
- try {
87
- const docker = await getDocker();
88
- const running = await docker.listContainers({ filters: { status: ["running"] } });
89
- unavailableNotified = false;
90
- return running;
91
- } catch (error) {
92
- if (!unavailableNotified) {
93
- unavailableNotified = true;
94
- options.onUnavailable?.(error instanceof Error ? error.message : String(error));
95
- }
96
- return void 0;
97
- }
98
- };
99
- const reconcile = async (docker, running) => {
100
- const live = /* @__PURE__ */ new Set();
101
- for (const summary of running) {
102
- const className = classFromImage(summary.Image);
103
- const exportName = className === void 0 ? void 0 : classToExport.get(className);
104
- if (exportName === void 0) {
105
- continue;
106
- }
107
- live.add(summary.Id);
108
- if (!attached.has(summary.Id)) {
109
- await attach(docker, summary.Id, exportName);
110
- }
111
- }
112
- for (const [id, stream] of attached) {
113
- if (!live.has(id)) {
114
- stream.destroy();
115
- attached.delete(id);
116
- }
117
- }
118
- };
119
- const poll = async () => {
120
- if (closed) {
121
- return;
122
- }
123
- const running = await listRunning();
124
- if (running === void 0) {
125
- return;
126
- }
127
- await reconcile(await getDocker(), running);
128
- };
129
- let polling = false;
130
- const onTick = () => {
131
- if (polling || closed) {
132
- return;
133
- }
134
- polling = true;
135
- poll().finally(() => {
136
- polling = false;
137
- }).catch(() => void 0);
138
- };
139
- timer = setInterval(onTick, interval);
140
- timer.unref();
141
- onTick();
142
- return {
143
- close: () => {
144
- closed = true;
145
- if (timer) {
146
- clearInterval(timer);
147
- timer = void 0;
148
- }
149
- for (const [id, stream] of attached) {
150
- stream.destroy();
151
- attached.delete(id);
152
- }
153
- }
154
- };
155
- };
156
-
157
- export { streamContainerLogs };