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.
- package/LICENSE +21 -0
- package/README.md +101 -2
- package/bin/run-logged +16 -0
- package/bin/secret-list +7 -0
- package/bin/secret-psql +41 -0
- package/bin/secret-set +17 -0
- package/bin/secret-store +82 -0
- package/bin/secret-test +10 -0
- package/bin/with-secrets +25 -0
- package/dist/.built +1 -0
- package/dist/cli/agent.js +144 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/doctor.js +173 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/mcp.js +204 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/output.js +37 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/records.js +121 -0
- package/dist/cli/records.js.map +1 -0
- package/dist/cli/running.js +270 -0
- package/dist/cli/running.js.map +1 -0
- package/dist/cli/shell.js +43 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/cli/wait.js +59 -0
- package/dist/cli/wait.js.map +1 -0
- package/dist/core/addresses.js +55 -0
- package/dist/core/addresses.js.map +1 -0
- package/dist/core/arrange.js +329 -0
- package/dist/core/arrange.js.map +1 -0
- package/dist/core/cables.js +158 -0
- package/dist/core/cables.js.map +1 -0
- package/dist/core/expressions.js +72 -0
- package/dist/core/expressions.js.map +1 -0
- package/dist/core/frameworks.js +13 -0
- package/dist/core/frameworks.js.map +1 -0
- package/dist/core/kinds.js +244 -0
- package/dist/core/kinds.js.map +1 -0
- package/dist/core/launch.js +181 -0
- package/dist/core/launch.js.map +1 -0
- package/dist/core/logfmt.js +144 -0
- package/dist/core/logfmt.js.map +1 -0
- package/dist/core/mock.js +27 -0
- package/dist/core/mock.js.map +1 -0
- package/dist/core/plan.js +147 -0
- package/dist/core/plan.js.map +1 -0
- package/dist/core/ports.js +155 -0
- package/dist/core/ports.js.map +1 -0
- package/dist/core/presets.js +186 -0
- package/dist/core/presets.js.map +1 -0
- package/dist/core/secret-types.js +3 -0
- package/dist/core/secret-types.js.map +1 -0
- package/dist/core/sign-in.js +30 -0
- package/dist/core/sign-in.js.map +1 -0
- package/dist/core/stack-path.js +64 -0
- package/dist/core/stack-path.js.map +1 -0
- package/dist/core/stack.js +509 -0
- package/dist/core/stack.js.map +1 -0
- package/dist/core/terraform.js +393 -0
- package/dist/core/terraform.js.map +1 -0
- package/dist/data.js +37 -0
- package/dist/data.js.map +1 -0
- package/dist/engine/actions.js +99 -0
- package/dist/engine/actions.js.map +1 -0
- package/dist/engine/app-commands.js +106 -0
- package/dist/engine/app-commands.js.map +1 -0
- package/dist/engine/app-start.js +167 -0
- package/dist/engine/app-start.js.map +1 -0
- package/dist/engine/app-state.js +43 -0
- package/dist/engine/app-state.js.map +1 -0
- package/dist/engine/boards.js +219 -0
- package/dist/engine/boards.js.map +1 -0
- package/dist/engine/branch.js +194 -0
- package/dist/engine/branch.js.map +1 -0
- package/dist/engine/browser-console.js +45 -0
- package/dist/engine/browser-console.js.map +1 -0
- package/dist/engine/calls.js +97 -0
- package/dist/engine/calls.js.map +1 -0
- package/dist/engine/checks.js +270 -0
- package/dist/engine/checks.js.map +1 -0
- package/dist/engine/clones.js +67 -0
- package/dist/engine/clones.js.map +1 -0
- package/dist/engine/config.js +26 -0
- package/dist/engine/config.js.map +1 -0
- package/dist/engine/deployed.js +488 -0
- package/dist/engine/deployed.js.map +1 -0
- package/dist/engine/devices.js +81 -0
- package/dist/engine/devices.js.map +1 -0
- package/dist/engine/discover.js +236 -0
- package/dist/engine/discover.js.map +1 -0
- package/dist/engine/down.js +253 -0
- package/dist/engine/down.js.map +1 -0
- package/dist/engine/history.js +215 -0
- package/dist/engine/history.js.map +1 -0
- package/dist/engine/investigate.js +278 -0
- package/dist/engine/investigate.js.map +1 -0
- package/dist/engine/libraries.js +129 -0
- package/dist/engine/libraries.js.map +1 -0
- package/dist/engine/linked.js +146 -0
- package/dist/engine/linked.js.map +1 -0
- package/dist/engine/listen.js +223 -0
- package/dist/engine/listen.js.map +1 -0
- package/dist/engine/locks.js +38 -0
- package/dist/engine/locks.js.map +1 -0
- package/dist/engine/messages.js +177 -0
- package/dist/engine/messages.js.map +1 -0
- package/dist/engine/needs.js +363 -0
- package/dist/engine/needs.js.map +1 -0
- package/dist/engine/processes.js +350 -0
- package/dist/engine/processes.js.map +1 -0
- package/dist/engine/query.js +241 -0
- package/dist/engine/query.js.map +1 -0
- package/dist/engine/queues.js +100 -0
- package/dist/engine/queues.js.map +1 -0
- package/dist/engine/recipes.js +248 -0
- package/dist/engine/recipes.js.map +1 -0
- package/dist/engine/reload.js +32 -0
- package/dist/engine/reload.js.map +1 -0
- package/dist/engine/repos.js +214 -0
- package/dist/engine/repos.js.map +1 -0
- package/dist/engine/research.js +134 -0
- package/dist/engine/research.js.map +1 -0
- package/dist/engine/run-logs.js +79 -0
- package/dist/engine/run-logs.js.map +1 -0
- package/dist/engine/run.js +54 -0
- package/dist/engine/run.js.map +1 -0
- package/dist/engine/runs.js +223 -0
- package/dist/engine/runs.js.map +1 -0
- package/dist/engine/session.js +130 -0
- package/dist/engine/session.js.map +1 -0
- package/dist/engine/share.js +124 -0
- package/dist/engine/share.js.map +1 -0
- package/dist/engine/stack-file.js +206 -0
- package/dist/engine/stack-file.js.map +1 -0
- package/dist/engine/stack-share.js +86 -0
- package/dist/engine/stack-share.js.map +1 -0
- package/dist/engine/stacks.js +143 -0
- package/dist/engine/stacks.js.map +1 -0
- package/dist/engine/sync.js +214 -0
- package/dist/engine/sync.js.map +1 -0
- package/dist/engine/traces.js +65 -0
- package/dist/engine/traces.js.map +1 -0
- package/dist/engine/up.js +621 -0
- package/dist/engine/up.js.map +1 -0
- package/dist/engine/watch.js +71 -0
- package/dist/engine/watch.js.map +1 -0
- package/dist/engine/wire.js +120 -0
- package/dist/engine/wire.js.map +1 -0
- package/dist/failure.js +16 -0
- package/dist/failure.js.map +1 -0
- package/dist/github.js +95 -0
- package/dist/github.js.map +1 -0
- package/dist/ids.js +6 -0
- package/dist/ids.js.map +1 -0
- package/dist/json-files.js +36 -0
- package/dist/json-files.js.map +1 -0
- package/dist/koppler.mjs +840 -0
- package/dist/koppler.mjs.map +1 -0
- package/dist/lambda-local.mjs +250 -0
- package/dist/lambda-local.mjs.map +1 -0
- package/dist/lambda-secrets-proxy.go +31 -0
- package/dist/mock-server.mjs +23 -0
- package/dist/mock-server.mjs.map +1 -0
- package/dist/page/assets/JetBrainsMono-cyrillic-D2jMJ_bk.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-greek-D2nYnAec.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-latin-Db4Uuiha.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-latin-ext-Bnd2h4Br.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-vietnamese-CNlsqbWb.woff2 +0 -0
- package/dist/page/assets/SchibstedGrotesk-latin-DxefFeRw.woff2 +0 -0
- package/dist/page/assets/SchibstedGrotesk-latin-ext-CnpJE18X.woff2 +0 -0
- package/dist/page/assets/index-Bkj_pX35.js +42 -0
- package/dist/page/assets/index-Dq45jswH.css +1 -0
- package/dist/page/index.html +14 -0
- package/dist/page/theme.js +8 -0
- package/dist/paths.js +19 -0
- package/dist/paths.js.map +1 -0
- package/dist/safe-env.js +73 -0
- package/dist/safe-env.js.map +1 -0
- package/dist/sam-local.mjs +135 -0
- package/dist/sam-local.mjs.map +1 -0
- package/dist/scrub.js +87 -0
- package/dist/scrub.js.map +1 -0
- package/dist/secret-check.mjs +262 -0
- package/dist/secret-check.mjs.map +1 -0
- package/dist/server/browser-console.js +117 -0
- package/dist/server/browser-console.js.map +1 -0
- package/dist/server/cable-test.js +365 -0
- package/dist/server/cable-test.js.map +1 -0
- package/dist/server/choices.js +51 -0
- package/dist/server/choices.js.map +1 -0
- package/dist/server/files.js +107 -0
- package/dist/server/files.js.map +1 -0
- package/dist/server/gate.js +128 -0
- package/dist/server/gate.js.map +1 -0
- package/dist/server/logs.js +76 -0
- package/dist/server/logs.js.map +1 -0
- package/dist/server/mobile.js +113 -0
- package/dist/server/mobile.js.map +1 -0
- package/dist/server/routes.js +326 -0
- package/dist/server/routes.js.map +1 -0
- package/dist/server/runs.js +111 -0
- package/dist/server/runs.js.map +1 -0
- package/dist/server/sanitize.js +242 -0
- package/dist/server/sanitize.js.map +1 -0
- package/dist/server/secrets.js +111 -0
- package/dist/server/secrets.js.map +1 -0
- package/dist/server/status.js +321 -0
- package/dist/server/status.js.map +1 -0
- package/dist/server/token.js +38 -0
- package/dist/server/token.js.map +1 -0
- package/dist/server/waiting.js +79 -0
- package/dist/server/waiting.js.map +1 -0
- package/dist/status-watch.mjs +63 -0
- package/dist/status-watch.mjs.map +1 -0
- package/package.json +74 -4
- package/skills/koppler-run/SKILL.md +169 -0
- package/skills/koppler-run/VERSION +1 -0
- package/skills/koppler-run/references/action-log.md +50 -0
- package/skills/koppler-run/references/permissions.md +25 -0
- package/skills/koppler-run/references/preparing-nodes.md +62 -0
- package/skills/koppler-run/references/reporting-bugs.md +76 -0
- package/skills/koppler-run/references/research.md +40 -0
- package/skills/koppler-run/references/secrets.md +56 -0
- package/skills/koppler-run/references/stack.md +197 -0
- 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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|