koppler 0.0.0-stage → 0.0.2

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 (225) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +101 -2
  3. package/bin/run-logged +16 -0
  4. package/bin/secret-list +7 -0
  5. package/bin/secret-psql +41 -0
  6. package/bin/secret-set +17 -0
  7. package/bin/secret-store +82 -0
  8. package/bin/secret-test +10 -0
  9. package/bin/with-secrets +25 -0
  10. package/dist/.built +1 -0
  11. package/dist/cli/agent.js +144 -0
  12. package/dist/cli/agent.js.map +1 -0
  13. package/dist/cli/doctor.js +173 -0
  14. package/dist/cli/doctor.js.map +1 -0
  15. package/dist/cli/mcp.js +204 -0
  16. package/dist/cli/mcp.js.map +1 -0
  17. package/dist/cli/output.js +37 -0
  18. package/dist/cli/output.js.map +1 -0
  19. package/dist/cli/records.js +121 -0
  20. package/dist/cli/records.js.map +1 -0
  21. package/dist/cli/running.js +270 -0
  22. package/dist/cli/running.js.map +1 -0
  23. package/dist/cli/shell.js +43 -0
  24. package/dist/cli/shell.js.map +1 -0
  25. package/dist/cli/wait.js +59 -0
  26. package/dist/cli/wait.js.map +1 -0
  27. package/dist/core/addresses.js +55 -0
  28. package/dist/core/addresses.js.map +1 -0
  29. package/dist/core/arrange.js +329 -0
  30. package/dist/core/arrange.js.map +1 -0
  31. package/dist/core/cables.js +158 -0
  32. package/dist/core/cables.js.map +1 -0
  33. package/dist/core/expressions.js +72 -0
  34. package/dist/core/expressions.js.map +1 -0
  35. package/dist/core/frameworks.js +13 -0
  36. package/dist/core/frameworks.js.map +1 -0
  37. package/dist/core/kinds.js +244 -0
  38. package/dist/core/kinds.js.map +1 -0
  39. package/dist/core/launch.js +181 -0
  40. package/dist/core/launch.js.map +1 -0
  41. package/dist/core/logfmt.js +144 -0
  42. package/dist/core/logfmt.js.map +1 -0
  43. package/dist/core/mock.js +27 -0
  44. package/dist/core/mock.js.map +1 -0
  45. package/dist/core/plan.js +147 -0
  46. package/dist/core/plan.js.map +1 -0
  47. package/dist/core/ports.js +155 -0
  48. package/dist/core/ports.js.map +1 -0
  49. package/dist/core/presets.js +186 -0
  50. package/dist/core/presets.js.map +1 -0
  51. package/dist/core/secret-types.js +3 -0
  52. package/dist/core/secret-types.js.map +1 -0
  53. package/dist/core/sign-in.js +30 -0
  54. package/dist/core/sign-in.js.map +1 -0
  55. package/dist/core/stack-path.js +64 -0
  56. package/dist/core/stack-path.js.map +1 -0
  57. package/dist/core/stack.js +509 -0
  58. package/dist/core/stack.js.map +1 -0
  59. package/dist/core/terraform.js +393 -0
  60. package/dist/core/terraform.js.map +1 -0
  61. package/dist/data.js +37 -0
  62. package/dist/data.js.map +1 -0
  63. package/dist/engine/actions.js +99 -0
  64. package/dist/engine/actions.js.map +1 -0
  65. package/dist/engine/app-commands.js +106 -0
  66. package/dist/engine/app-commands.js.map +1 -0
  67. package/dist/engine/app-start.js +167 -0
  68. package/dist/engine/app-start.js.map +1 -0
  69. package/dist/engine/app-state.js +43 -0
  70. package/dist/engine/app-state.js.map +1 -0
  71. package/dist/engine/boards.js +219 -0
  72. package/dist/engine/boards.js.map +1 -0
  73. package/dist/engine/branch.js +194 -0
  74. package/dist/engine/branch.js.map +1 -0
  75. package/dist/engine/browser-console.js +45 -0
  76. package/dist/engine/browser-console.js.map +1 -0
  77. package/dist/engine/calls.js +97 -0
  78. package/dist/engine/calls.js.map +1 -0
  79. package/dist/engine/checks.js +270 -0
  80. package/dist/engine/checks.js.map +1 -0
  81. package/dist/engine/clones.js +67 -0
  82. package/dist/engine/clones.js.map +1 -0
  83. package/dist/engine/config.js +26 -0
  84. package/dist/engine/config.js.map +1 -0
  85. package/dist/engine/deployed.js +488 -0
  86. package/dist/engine/deployed.js.map +1 -0
  87. package/dist/engine/devices.js +81 -0
  88. package/dist/engine/devices.js.map +1 -0
  89. package/dist/engine/discover.js +236 -0
  90. package/dist/engine/discover.js.map +1 -0
  91. package/dist/engine/down.js +253 -0
  92. package/dist/engine/down.js.map +1 -0
  93. package/dist/engine/history.js +215 -0
  94. package/dist/engine/history.js.map +1 -0
  95. package/dist/engine/investigate.js +278 -0
  96. package/dist/engine/investigate.js.map +1 -0
  97. package/dist/engine/libraries.js +129 -0
  98. package/dist/engine/libraries.js.map +1 -0
  99. package/dist/engine/linked.js +146 -0
  100. package/dist/engine/linked.js.map +1 -0
  101. package/dist/engine/listen.js +223 -0
  102. package/dist/engine/listen.js.map +1 -0
  103. package/dist/engine/locks.js +38 -0
  104. package/dist/engine/locks.js.map +1 -0
  105. package/dist/engine/messages.js +177 -0
  106. package/dist/engine/messages.js.map +1 -0
  107. package/dist/engine/needs.js +363 -0
  108. package/dist/engine/needs.js.map +1 -0
  109. package/dist/engine/processes.js +350 -0
  110. package/dist/engine/processes.js.map +1 -0
  111. package/dist/engine/query.js +241 -0
  112. package/dist/engine/query.js.map +1 -0
  113. package/dist/engine/queues.js +100 -0
  114. package/dist/engine/queues.js.map +1 -0
  115. package/dist/engine/recipes.js +248 -0
  116. package/dist/engine/recipes.js.map +1 -0
  117. package/dist/engine/reload.js +32 -0
  118. package/dist/engine/reload.js.map +1 -0
  119. package/dist/engine/repos.js +214 -0
  120. package/dist/engine/repos.js.map +1 -0
  121. package/dist/engine/research.js +134 -0
  122. package/dist/engine/research.js.map +1 -0
  123. package/dist/engine/run-logs.js +79 -0
  124. package/dist/engine/run-logs.js.map +1 -0
  125. package/dist/engine/run.js +54 -0
  126. package/dist/engine/run.js.map +1 -0
  127. package/dist/engine/runs.js +223 -0
  128. package/dist/engine/runs.js.map +1 -0
  129. package/dist/engine/session.js +130 -0
  130. package/dist/engine/session.js.map +1 -0
  131. package/dist/engine/share.js +124 -0
  132. package/dist/engine/share.js.map +1 -0
  133. package/dist/engine/stack-file.js +206 -0
  134. package/dist/engine/stack-file.js.map +1 -0
  135. package/dist/engine/stack-share.js +86 -0
  136. package/dist/engine/stack-share.js.map +1 -0
  137. package/dist/engine/stacks.js +143 -0
  138. package/dist/engine/stacks.js.map +1 -0
  139. package/dist/engine/sync.js +214 -0
  140. package/dist/engine/sync.js.map +1 -0
  141. package/dist/engine/traces.js +65 -0
  142. package/dist/engine/traces.js.map +1 -0
  143. package/dist/engine/up.js +621 -0
  144. package/dist/engine/up.js.map +1 -0
  145. package/dist/engine/watch.js +71 -0
  146. package/dist/engine/watch.js.map +1 -0
  147. package/dist/engine/wire.js +120 -0
  148. package/dist/engine/wire.js.map +1 -0
  149. package/dist/failure.js +16 -0
  150. package/dist/failure.js.map +1 -0
  151. package/dist/github.js +95 -0
  152. package/dist/github.js.map +1 -0
  153. package/dist/ids.js +6 -0
  154. package/dist/ids.js.map +1 -0
  155. package/dist/json-files.js +36 -0
  156. package/dist/json-files.js.map +1 -0
  157. package/dist/koppler.mjs +840 -0
  158. package/dist/koppler.mjs.map +1 -0
  159. package/dist/lambda-local.mjs +250 -0
  160. package/dist/lambda-local.mjs.map +1 -0
  161. package/dist/lambda-secrets-proxy.go +31 -0
  162. package/dist/mock-server.mjs +23 -0
  163. package/dist/mock-server.mjs.map +1 -0
  164. package/dist/page/assets/JetBrainsMono-cyrillic-D2jMJ_bk.woff2 +0 -0
  165. package/dist/page/assets/JetBrainsMono-greek-D2nYnAec.woff2 +0 -0
  166. package/dist/page/assets/JetBrainsMono-latin-Db4Uuiha.woff2 +0 -0
  167. package/dist/page/assets/JetBrainsMono-latin-ext-Bnd2h4Br.woff2 +0 -0
  168. package/dist/page/assets/JetBrainsMono-vietnamese-CNlsqbWb.woff2 +0 -0
  169. package/dist/page/assets/SchibstedGrotesk-latin-DxefFeRw.woff2 +0 -0
  170. package/dist/page/assets/SchibstedGrotesk-latin-ext-CnpJE18X.woff2 +0 -0
  171. package/dist/page/assets/index-Bkj_pX35.js +42 -0
  172. package/dist/page/assets/index-Dq45jswH.css +1 -0
  173. package/dist/page/index.html +14 -0
  174. package/dist/page/theme.js +8 -0
  175. package/dist/paths.js +19 -0
  176. package/dist/paths.js.map +1 -0
  177. package/dist/safe-env.js +73 -0
  178. package/dist/safe-env.js.map +1 -0
  179. package/dist/sam-local.mjs +135 -0
  180. package/dist/sam-local.mjs.map +1 -0
  181. package/dist/scrub.js +87 -0
  182. package/dist/scrub.js.map +1 -0
  183. package/dist/secret-check.mjs +262 -0
  184. package/dist/secret-check.mjs.map +1 -0
  185. package/dist/server/browser-console.js +117 -0
  186. package/dist/server/browser-console.js.map +1 -0
  187. package/dist/server/cable-test.js +365 -0
  188. package/dist/server/cable-test.js.map +1 -0
  189. package/dist/server/choices.js +51 -0
  190. package/dist/server/choices.js.map +1 -0
  191. package/dist/server/files.js +107 -0
  192. package/dist/server/files.js.map +1 -0
  193. package/dist/server/gate.js +128 -0
  194. package/dist/server/gate.js.map +1 -0
  195. package/dist/server/logs.js +76 -0
  196. package/dist/server/logs.js.map +1 -0
  197. package/dist/server/mobile.js +113 -0
  198. package/dist/server/mobile.js.map +1 -0
  199. package/dist/server/routes.js +326 -0
  200. package/dist/server/routes.js.map +1 -0
  201. package/dist/server/runs.js +111 -0
  202. package/dist/server/runs.js.map +1 -0
  203. package/dist/server/sanitize.js +242 -0
  204. package/dist/server/sanitize.js.map +1 -0
  205. package/dist/server/secrets.js +111 -0
  206. package/dist/server/secrets.js.map +1 -0
  207. package/dist/server/status.js +321 -0
  208. package/dist/server/status.js.map +1 -0
  209. package/dist/server/token.js +38 -0
  210. package/dist/server/token.js.map +1 -0
  211. package/dist/server/waiting.js +79 -0
  212. package/dist/server/waiting.js.map +1 -0
  213. package/dist/status-watch.mjs +63 -0
  214. package/dist/status-watch.mjs.map +1 -0
  215. package/package.json +74 -4
  216. package/skills/koppler-run/SKILL.md +169 -0
  217. package/skills/koppler-run/VERSION +1 -0
  218. package/skills/koppler-run/references/action-log.md +50 -0
  219. package/skills/koppler-run/references/permissions.md +25 -0
  220. package/skills/koppler-run/references/preparing-nodes.md +62 -0
  221. package/skills/koppler-run/references/reporting-bugs.md +76 -0
  222. package/skills/koppler-run/references/research.md +40 -0
  223. package/skills/koppler-run/references/secrets.md +56 -0
  224. package/skills/koppler-run/references/stack.md +197 -0
  225. package/skills/koppler-run/references/status.md +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koppler.mjs","sourceRoot":"","sources":["../src/koppler.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ // Runs a queue-triggered AWS Lambda on this Mac: an AWS emulator in Docker (Floci) holds the queue, the function in its real
2
+ // runtime image and its secret; this process is the address callers post to, and prints the function's log.
3
+ // Usage (through `koppler run <app>`, which supplies the stored secret): lambda-local.mjs <config json> <port> [<overrides file>]
4
+ // Config, from the app's `lambda` in stack.json: { project, handler, runtime, timeout?, memory?, routes?: [paths],
5
+ // secret?: { id, from } } `from` names the stored value holding the secret's JSON; the overrides file sets keys in it.
6
+ import { execFileSync, spawn } from 'node:child_process';
7
+ import fs from 'node:fs';
8
+ import http from 'node:http';
9
+ import os from 'node:os';
10
+ import path from 'node:path';
11
+ import { fileURLToPath } from 'node:url';
12
+ import { takeSecrets } from "./safe-env.js";
13
+ const here = path.dirname(fileURLToPath(import.meta.url));
14
+ // Read once and taken out of the environment, so the build and Docker commands started below never carry them.
15
+ const stored = takeSecrets();
16
+ const config = JSON.parse(process.argv[2] ?? 'null');
17
+ const port = Number(process.argv[3]);
18
+ const overridesFile = process.argv[4];
19
+ if (!config?.handler || !config.runtime || !port) {
20
+ console.error('usage: lambda-local.mjs <config json> <port> [<overrides file>]');
21
+ process.exit(1);
22
+ }
23
+ const emulator = port + 1;
24
+ const name = `koppler-lambda-${String(port)}`;
25
+ const endpoint = `http://127.0.0.1:${String(emulator)}`;
26
+ // The emulator image by version and digest, so a new upstream push never changes what runs here unseen. To update:
27
+ // read the digest of the new version tag on Docker Hub, then change both together.
28
+ const EMULATOR_IMAGE = 'floci/floci:2.2.0@sha256:e97cd0c1dc2aa14e7697fb5ef5018404c4d6345169dbd276315f0bed2c7b0520';
29
+ const arch = os.arch() === 'arm64' ? 'arm64' : 'x86_64';
30
+ const work = fs.mkdtempSync(path.join(os.tmpdir(), 'koppler-lambda-'));
31
+ const state = process.env['KOPPLER_STATE'] || path.join(os.homedir(), '.local', 'state', 'koppler');
32
+ const cache = path.join(state, 'lambda');
33
+ const run = (command, args, options = {}) => execFileSync(command, args, { stdio: ['ignore', 'pipe', 'pipe'], ...options, encoding: 'utf8' }).trim();
34
+ // The emulator takes any credentials. The AWS CLI gets only what it needs to run, not the user's AWS profile.
35
+ const awsEnv = {
36
+ PATH: process.env['PATH'] ?? '',
37
+ HOME: process.env['HOME'] ?? '',
38
+ ...(process.env['TMPDIR'] && { TMPDIR: process.env['TMPDIR'] }),
39
+ AWS_ACCESS_KEY_ID: 'test',
40
+ AWS_SECRET_ACCESS_KEY: 'test',
41
+ AWS_PAGER: '',
42
+ AWS_CONFIG_FILE: '/dev/null',
43
+ AWS_SHARED_CREDENTIALS_FILE: '/dev/null',
44
+ };
45
+ const aws = (...args) => run('aws', ['--endpoint-url', endpoint, '--region', 'eu-west-1', '--output', 'text', ...args], { env: awsEnv });
46
+ const say = (text) => {
47
+ console.log(`koppler: ${text}`);
48
+ };
49
+ // The emulator starts one container per function; the ones that appear after this start are removed with it.
50
+ const functions = () => {
51
+ try {
52
+ return run('docker', ['ps', '-aq', '--filter', 'name=floci-aws-function']).split('\n').filter(Boolean);
53
+ }
54
+ catch {
55
+ return [];
56
+ }
57
+ };
58
+ const before = new Set(functions());
59
+ let logs;
60
+ const stop = (code) => {
61
+ try {
62
+ logs?.kill();
63
+ run('docker', ['rm', '-f', name, ...functions().filter(id => !before.has(id))]);
64
+ }
65
+ catch {
66
+ // Already gone.
67
+ }
68
+ fs.rmSync(work, { recursive: true, force: true });
69
+ process.exit(code);
70
+ };
71
+ for (const signal of ['SIGTERM', 'SIGINT', 'SIGHUP'])
72
+ process.on(signal, () => stop(0));
73
+ /** The function's secret in the emulator, and the layer through which the function reads it; the arguments that add the layer. */
74
+ function withSecret(secretOf) {
75
+ const value = stored[secretOf.from];
76
+ if (!value)
77
+ throw new Error(`${secretOf.from} is not stored; see koppler doctor`);
78
+ let secret;
79
+ try {
80
+ secret = JSON.parse(value);
81
+ }
82
+ catch {
83
+ throw new Error(`${secretOf.from} is not the secret's JSON`);
84
+ }
85
+ const set = overridesFile && fs.existsSync(overridesFile)
86
+ ? (JSON.parse(fs.readFileSync(overridesFile, 'utf8')).set ?? {})
87
+ : {};
88
+ for (const [key, points] of Object.entries(set))
89
+ say(`${key} points at ${String(points)}`);
90
+ const file = path.join(work, 'secret.json');
91
+ fs.writeFileSync(file, JSON.stringify({ ...secret, ...set }), { mode: 0o600 });
92
+ aws('secretsmanager', 'create-secret', '--name', secretOf.id, '--secret-string', `file://${file}`, '--query', 'Name');
93
+ fs.rmSync(file);
94
+ // The function asks the AWS secrets extension on localhost:2773; a stand-in answers there from the emulator's Secrets Manager.
95
+ const proxy = path.join(cache, `secrets-proxy-${arch}`);
96
+ if (!fs.existsSync(proxy)) {
97
+ say('building the secrets stand-in (once)');
98
+ fs.mkdirSync(cache, { recursive: true });
99
+ // Built in a folder under the home directory, which Docker on a Mac can always mount.
100
+ const src = path.join(cache, 'src');
101
+ fs.mkdirSync(src, { recursive: true });
102
+ fs.copyFileSync(path.join(here, 'lambda-secrets-proxy.go'), path.join(src, 'main.go'));
103
+ fs.writeFileSync(path.join(src, 'go.mod'), 'module secretsproxy\ngo 1.22\n');
104
+ const goArch = `GOARCH=${arch === 'arm64' ? 'arm64' : 'amd64'}`;
105
+ const build = ['go', 'build', '-ldflags=-s -w', '-o', 'secrets-proxy', '.'];
106
+ const inGo = ['-v', `${src}:/src`, '-w', '/src', '-e', 'CGO_ENABLED=0', '-e', goArch, 'golang:1.22-alpine'];
107
+ run('docker', ['run', '--rm', ...inGo, ...build]);
108
+ fs.copyFileSync(path.join(src, 'secrets-proxy'), proxy);
109
+ }
110
+ const layer = path.join(work, 'layer');
111
+ fs.mkdirSync(layer);
112
+ fs.copyFileSync(proxy, path.join(layer, 'secrets-proxy'));
113
+ fs.writeFileSync(path.join(layer, 'wrapper'), '#!/bin/sh\n/opt/secrets-proxy &\nexec "$@"\n');
114
+ for (const file of ['secrets-proxy', 'wrapper'])
115
+ fs.chmodSync(path.join(layer, file), 0o755);
116
+ const zipped = path.join(work, 'layer.zip');
117
+ run('zip', ['-q', '-r', zipped, '.'], { cwd: layer });
118
+ const published = [
119
+ '--layer-name',
120
+ 'secrets-standin',
121
+ '--zip-file',
122
+ `fileb://${zipped}`,
123
+ '--query',
124
+ 'LayerVersionArn',
125
+ ];
126
+ const arn = aws('lambda', 'publish-layer-version', ...published);
127
+ return ['--layers', arn, '--environment', 'Variables={AWS_LAMBDA_EXEC_WRAPPER=/opt/wrapper}'];
128
+ }
129
+ /** For Koppler's flow check: the emulator is up, the function is deployed and its queue trigger is on. */
130
+ function health() {
131
+ const of = (...query) => aws('lambda', ...query);
132
+ try {
133
+ const deployed = of('get-function', '--function-name', 'function', '--query', 'Configuration.State');
134
+ const trigger = of('list-event-source-mappings', '--function-name', 'function', '--query', 'EventSourceMappings[0].State');
135
+ return { ok: deployed === 'Active' && trigger === 'Enabled', function: deployed, trigger };
136
+ }
137
+ catch {
138
+ return { ok: false, error: 'the emulator does not answer' };
139
+ }
140
+ }
141
+ try {
142
+ say('starting the AWS emulator');
143
+ try {
144
+ run('docker', ['rm', '-f', name]);
145
+ }
146
+ catch {
147
+ // None left over.
148
+ }
149
+ const published = ['-p', `127.0.0.1:${String(emulator)}:4566`, '-v', '/var/run/docker.sock:/var/run/docker.sock'];
150
+ run('docker', ['run', '-d', '--name', name, ...published, EMULATOR_IMAGE]);
151
+ for (let tries = 0;; tries++) {
152
+ try {
153
+ await fetch(`${endpoint}/_floci/health`);
154
+ break;
155
+ }
156
+ catch {
157
+ if (tries > 60)
158
+ throw new Error('the emulator did not start');
159
+ await new Promise(resolve => setTimeout(resolve, 500));
160
+ }
161
+ }
162
+ say('building the function');
163
+ const out = path.join(work, 'out');
164
+ const project = config.project ?? '.';
165
+ if (config.runtime.startsWith('dotnet')) {
166
+ const target = `linux-${arch === 'arm64' ? 'arm64' : 'x64'}`;
167
+ run('dotnet', ['publish', project, '-c', 'Release', '-r', target, '--self-contained', 'false', '-o', out]);
168
+ }
169
+ // ponytail: other runtimes are zipped as they are, with no install or build step
170
+ else
171
+ fs.cpSync(path.resolve(project), out, { recursive: true });
172
+ const zipped = path.join(work, 'fn.zip');
173
+ run('zip', ['-q', '-r', zipped, '.'], { cwd: out });
174
+ const extra = config.secret ? withSecret(config.secret) : [];
175
+ say('creating the queue and the function');
176
+ const queue = aws('sqs', 'create-queue', '--queue-name', 'requests', '--query', 'QueueUrl');
177
+ const attribute = ['--attribute-names', 'QueueArn', '--query', 'Attributes.QueueArn'];
178
+ const queueArn = aws('sqs', 'get-queue-attributes', '--queue-url', queue, ...attribute);
179
+ aws('lambda', 'create-function', ...['--function-name', 'function', '--runtime', config.runtime, '--architectures', arch], ...['--handler', config.handler, '--role', 'arn:aws:iam::000000000000:role/lambda'], ...['--zip-file', `fileb://${zipped}`, '--timeout', String(config.timeout ?? 30)], ...['--memory-size', String(config.memory ?? 256), ...extra, '--query', 'FunctionName']);
180
+ aws('lambda', 'create-event-source-mapping', ...['--function-name', 'function', '--event-source-arn', queueArn, '--batch-size', '10'], ...['--function-response-types', 'ReportBatchItemFailures', '--query', 'State']);
181
+ // What API Gateway does in the cloud: a POST on one of the routes becomes a message on the queue.
182
+ const routes = (config.routes ?? []).map(route => `/${route.replace(/^\/+|\/+$/g, '')}`);
183
+ const toQueue = async (body) => {
184
+ const day = new Date().toISOString().slice(0, 10).replace(/-/g, '');
185
+ return fetch(endpoint, {
186
+ method: 'POST',
187
+ headers: {
188
+ 'content-type': 'application/x-www-form-urlencoded',
189
+ authorization: `AWS4-HMAC-SHA256 Credential=test/${day}/eu-west-1/sqs/aws4_request, SignedHeaders=host, Signature=0`,
190
+ },
191
+ body: new URLSearchParams({ Action: 'SendMessage', Version: '2012-11-05', QueueUrl: queue, MessageBody: body }),
192
+ });
193
+ };
194
+ const server = http.createServer((request, response) => {
195
+ const where = new URL(request.url ?? '', 'http://x').pathname.replace(/\/+$/, '') || '/';
196
+ if (request.method === 'GET' && where === '/') {
197
+ response.writeHead(200, { 'content-type': 'text/plain' }).end(`koppler: local Lambda ${config.handler}\n`);
198
+ return;
199
+ }
200
+ if (request.method === 'GET' && where === '/health') {
201
+ const { ok, ...found } = health();
202
+ const answer = JSON.stringify({ koppler: 'lambda', ok, ...found });
203
+ response.writeHead(ok ? 200 : 503, { 'content-type': 'application/json' }).end(answer);
204
+ return;
205
+ }
206
+ if (request.method !== 'POST' || (routes.length && !routes.includes(where))) {
207
+ response.writeHead(404).end();
208
+ return;
209
+ }
210
+ let body = '';
211
+ request.on('data', (chunk) => {
212
+ body += chunk.toString();
213
+ if (body.length > 262144)
214
+ request.destroy();
215
+ });
216
+ request.on('end', () => {
217
+ toQueue(body)
218
+ .then(async (sent) => {
219
+ console.log(`koppler: POST ${where} -> queue (${String(sent.status)})`);
220
+ const type = sent.headers.get('content-type') ?? 'text/xml';
221
+ response.writeHead(sent.status, { 'content-type': type }).end(await sent.text());
222
+ })
223
+ .catch(() => response.writeHead(502).end());
224
+ });
225
+ });
226
+ server.listen(port, '127.0.0.1', () => {
227
+ say(`ready: POST http://localhost:${String(port)}${routes[0] ?? '/'} reaches the function through its queue`);
228
+ });
229
+ const following = spawn('docker', ['logs', '-f', '--since', '0s', name], { stdio: ['ignore', 'pipe', 'pipe'] });
230
+ logs = following;
231
+ const print = (chunk) => {
232
+ for (const line of chunk.toString().split('\n')) {
233
+ const said = /\[lambda:[^\]]*\] (.*)$/.exec(line) ?? /(ESM [^:]*: .*)$/.exec(line);
234
+ if (said)
235
+ console.log(said[1]);
236
+ }
237
+ };
238
+ following.stdout.on('data', print);
239
+ following.stderr.on('data', print);
240
+ following.on('exit', () => {
241
+ console.error('koppler: the emulator stopped');
242
+ stop(1);
243
+ });
244
+ }
245
+ catch (error) {
246
+ const { stderr, message } = error;
247
+ console.error(`koppler: ${(stderr ?? '').trim().split('\n').pop() || message}`);
248
+ stop(1);
249
+ }
250
+ //# sourceMappingURL=lambda-local.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-local.mjs","sourceRoot":"","sources":["../src/lambda-local.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ // Stand-in for the AWS Parameters and Secrets Lambda Extension: answers on :2773 from the emulator's Secrets Manager.
2
+ package main
3
+
4
+ import (
5
+ "fmt"
6
+ "io"
7
+ "net/http"
8
+ "os"
9
+ "strings"
10
+ "time"
11
+ )
12
+
13
+ func main() {
14
+ endpoint, region := os.Getenv("AWS_ENDPOINT_URL"), os.Getenv("AWS_REGION")
15
+ http.HandleFunc("/secretsmanager/get", func(w http.ResponseWriter, r *http.Request) {
16
+ body := fmt.Sprintf(`{"SecretId":%q}`, r.URL.Query().Get("secretId"))
17
+ req, _ := http.NewRequest("POST", endpoint, strings.NewReader(body))
18
+ req.Header.Set("Content-Type", "application/x-amz-json-1.1")
19
+ req.Header.Set("X-Amz-Target", "secretsmanager.GetSecretValue")
20
+ req.Header.Set("Authorization", fmt.Sprintf("AWS4-HMAC-SHA256 Credential=test/%s/%s/secretsmanager/aws4_request, SignedHeaders=host, Signature=0", time.Now().UTC().Format("20060102"), region))
21
+ res, err := http.DefaultClient.Do(req)
22
+ if err != nil {
23
+ http.Error(w, err.Error(), http.StatusBadGateway)
24
+ return
25
+ }
26
+ defer res.Body.Close()
27
+ w.WriteHeader(res.StatusCode)
28
+ io.Copy(w, res.Body)
29
+ })
30
+ http.ListenAndServe("127.0.0.1:2773", nil)
31
+ }
@@ -0,0 +1,23 @@
1
+ // Answers an app's canned responses (its `mock` in stack.json) on its local port, for a card set to Mock.
2
+ // Usage (through `koppler run <app> --mock`): mock-server.mjs <port> <responses json>
3
+ import http from 'node:http';
4
+ import { answerFor } from "./core/mock.js";
5
+ const port = Number(process.argv[2]);
6
+ const responses = JSON.parse(process.argv[3] ?? '[]');
7
+ if (!port || !Array.isArray(responses)) {
8
+ console.error('usage: mock-server.mjs <port> <responses json>');
9
+ process.exit(1);
10
+ }
11
+ http
12
+ .createServer((request, response) => {
13
+ const method = request.method ?? 'GET';
14
+ const { pathname } = new URL(request.url ?? '/', 'http://mock');
15
+ const answer = answerFor(responses, method, pathname);
16
+ console.log(`${method} ${pathname} ${String(answer.status)}`);
17
+ request.resume();
18
+ response.writeHead(answer.status, answer.headers).end(answer.body);
19
+ })
20
+ .listen(port, () => {
21
+ console.log(`Mock answering ${String(responses.length)} responses on port ${String(port)}`);
22
+ });
23
+ //# sourceMappingURL=mock-server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-server.mjs","sourceRoot":"","sources":["../src/mock-server.mts"],"names":[],"mappings":"AAAA,0GAA0G;AAC1G,sFAAsF;AACtF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAC;AAE9D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAmB,CAAC;AACxE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,IAAI;KACD,YAAY,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC,CAAC;KACD,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC,CAAC,CAAC"}