@package-broker/runtime-node 0.0.0-stage → 2.0.0-rc.1
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 +661 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/assets.d.ts +4 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +68 -0
- package/dist/assets.js.map +1 -0
- package/dist/blob/archive-staging.d.ts +15 -0
- package/dist/blob/archive-staging.d.ts.map +1 -0
- package/dist/blob/archive-staging.js +154 -0
- package/dist/blob/archive-staging.js.map +1 -0
- package/dist/blob/filesystem.d.ts +18 -0
- package/dist/blob/filesystem.d.ts.map +1 -0
- package/dist/blob/filesystem.js +631 -0
- package/dist/blob/filesystem.js.map +1 -0
- package/dist/blob/hasher.d.ts +3 -0
- package/dist/blob/hasher.d.ts.map +1 -0
- package/dist/blob/hasher.js +26 -0
- package/dist/blob/hasher.js.map +1 -0
- package/dist/blob/s3.d.ts +40 -0
- package/dist/blob/s3.d.ts.map +1 -0
- package/dist/blob/s3.js +494 -0
- package/dist/blob/s3.js.map +1 -0
- package/dist/cache/lru.d.ts +8 -0
- package/dist/cache/lru.d.ts.map +1 -0
- package/dist/cache/lru.js +103 -0
- package/dist/cache/lru.js.map +1 -0
- package/dist/client-ip.d.ts +2 -0
- package/dist/client-ip.d.ts.map +1 -0
- package/dist/client-ip.js +51 -0
- package/dist/client-ip.js.map +1 -0
- package/dist/codec/node-codec.d.ts +3 -0
- package/dist/codec/node-codec.d.ts.map +1 -0
- package/dist/codec/node-codec.js +163 -0
- package/dist/codec/node-codec.js.map +1 -0
- package/dist/db/better-sqlite3-executor.d.ts +10 -0
- package/dist/db/better-sqlite3-executor.d.ts.map +1 -0
- package/dist/db/better-sqlite3-executor.js +129 -0
- package/dist/db/better-sqlite3-executor.js.map +1 -0
- package/dist/entry.d.ts +32 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +158 -0
- package/dist/entry.js.map +1 -0
- package/dist/import-jobs.d.ts +18 -0
- package/dist/import-jobs.d.ts.map +1 -0
- package/dist/import-jobs.js +56 -0
- package/dist/import-jobs.js.map +1 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +981 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/seams-key.d.ts +2 -0
- package/dist/internal/seams-key.d.ts.map +1 -0
- package/dist/internal/seams-key.js +2 -0
- package/dist/internal/seams-key.js.map +1 -0
- package/dist/jobs/loop.d.ts +38 -0
- package/dist/jobs/loop.d.ts.map +1 -0
- package/dist/jobs/loop.js +318 -0
- package/dist/jobs/loop.js.map +1 -0
- package/dist/observability/stdio.d.ts +11 -0
- package/dist/observability/stdio.d.ts.map +1 -0
- package/dist/observability/stdio.js +47 -0
- package/dist/observability/stdio.js.map +1 -0
- package/dist/organization-administration.d.ts +5 -0
- package/dist/organization-administration.d.ts.map +1 -0
- package/dist/organization-administration.js +16 -0
- package/dist/organization-administration.js.map +1 -0
- package/dist/sources/dns-guard.d.ts +33 -0
- package/dist/sources/dns-guard.d.ts.map +1 -0
- package/dist/sources/dns-guard.js +202 -0
- package/dist/sources/dns-guard.js.map +1 -0
- package/dist/sources/git-provider.d.ts +30 -0
- package/dist/sources/git-provider.d.ts.map +1 -0
- package/dist/sources/git-provider.js +213 -0
- package/dist/sources/git-provider.js.map +1 -0
- package/dist/sources/guarded-fetch.d.ts +15 -0
- package/dist/sources/guarded-fetch.d.ts.map +1 -0
- package/dist/sources/guarded-fetch.js +217 -0
- package/dist/sources/guarded-fetch.js.map +1 -0
- package/dist/sources/ssh-archive-store.d.ts +19 -0
- package/dist/sources/ssh-archive-store.d.ts.map +1 -0
- package/dist/sources/ssh-archive-store.js +284 -0
- package/dist/sources/ssh-archive-store.js.map +1 -0
- package/dist/sources/ssh-git.d.ts +46 -0
- package/dist/sources/ssh-git.d.ts.map +1 -0
- package/dist/sources/ssh-git.js +430 -0
- package/dist/sources/ssh-git.js.map +1 -0
- package/dist/sources/ssh-provider.d.ts +55 -0
- package/dist/sources/ssh-provider.d.ts.map +1 -0
- package/dist/sources/ssh-provider.js +369 -0
- package/dist/sources/ssh-provider.js.map +1 -0
- package/dist/startup.d.ts +49 -0
- package/dist/startup.d.ts.map +1 -0
- package/dist/startup.js +687 -0
- package/dist/startup.js.map +1 -0
- package/dist/token-jobs.d.ts +18 -0
- package/dist/token-jobs.d.ts.map +1 -0
- package/dist/token-jobs.js +45 -0
- package/dist/token-jobs.js.map +1 -0
- package/package.json +45 -3
- package/README.md +0 -3
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
const DEFAULT_MAX_BYTES = 32 * 1024 * 1024;
|
|
2
|
+
const DEFAULT_MAX_ENTRIES = 1000;
|
|
3
|
+
const DEFAULT_MAX_ENTRY_BYTES = 1024 * 1024;
|
|
4
|
+
function resolveLimit(name, value, fallback) {
|
|
5
|
+
const limit = value ?? fallback;
|
|
6
|
+
if (!Number.isInteger(limit) || limit < 1) {
|
|
7
|
+
throw new RangeError(`${name} must be an integer greater than or equal to 1`);
|
|
8
|
+
}
|
|
9
|
+
return limit;
|
|
10
|
+
}
|
|
11
|
+
function sizeOf(storageKey, envelope) {
|
|
12
|
+
return (storageKey.length +
|
|
13
|
+
envelope.value.byteLength +
|
|
14
|
+
envelope.freshUntil.length +
|
|
15
|
+
(envelope.staleUntil?.length ?? 0) +
|
|
16
|
+
envelope.insertedAt.length);
|
|
17
|
+
}
|
|
18
|
+
function isStorable(envelope) {
|
|
19
|
+
return (envelope.value instanceof Uint8Array &&
|
|
20
|
+
typeof envelope.freshUntil === 'string' &&
|
|
21
|
+
typeof envelope.insertedAt === 'string' &&
|
|
22
|
+
(envelope.staleUntil === null || typeof envelope.staleUntil === 'string') &&
|
|
23
|
+
typeof envelope.negative === 'boolean');
|
|
24
|
+
}
|
|
25
|
+
export function createLruCache(options = {}) {
|
|
26
|
+
const maxBytes = resolveLimit('maxBytes', options.maxBytes, DEFAULT_MAX_BYTES);
|
|
27
|
+
const maxEntries = resolveLimit('maxEntries', options.maxEntries, DEFAULT_MAX_ENTRIES);
|
|
28
|
+
const maxEntryBytes = resolveLimit('maxEntryBytes', options.maxEntryBytes, DEFAULT_MAX_ENTRY_BYTES);
|
|
29
|
+
// A Map iterates in insertion order, so the first key is always the least recently used.
|
|
30
|
+
const slots = new Map();
|
|
31
|
+
let totalBytes = 0;
|
|
32
|
+
function storageKey(ctx, key) {
|
|
33
|
+
return `${ctx.orgId}\u0000${key.digest}`;
|
|
34
|
+
}
|
|
35
|
+
function remove(id) {
|
|
36
|
+
const slot = slots.get(id);
|
|
37
|
+
if (slot === undefined)
|
|
38
|
+
return;
|
|
39
|
+
slots.delete(id);
|
|
40
|
+
totalBytes -= slot.bytes;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
get(ctx, key) {
|
|
44
|
+
try {
|
|
45
|
+
const id = storageKey(ctx, key);
|
|
46
|
+
const slot = slots.get(id);
|
|
47
|
+
if (slot === undefined)
|
|
48
|
+
return Promise.resolve(null);
|
|
49
|
+
const { envelope } = slot;
|
|
50
|
+
const now = Date.now();
|
|
51
|
+
const freshUntil = Date.parse(envelope.freshUntil);
|
|
52
|
+
const expiry = Math.max(freshUntil, envelope.staleUntil === null ? freshUntil : Date.parse(envelope.staleUntil));
|
|
53
|
+
if (!(expiry > now)) {
|
|
54
|
+
remove(id);
|
|
55
|
+
return Promise.resolve(null);
|
|
56
|
+
}
|
|
57
|
+
const state = freshUntil > now ? 'fresh' : 'stale';
|
|
58
|
+
slots.delete(id);
|
|
59
|
+
slots.set(id, slot);
|
|
60
|
+
return Promise.resolve({
|
|
61
|
+
entry: { ...envelope, value: envelope.value.slice() },
|
|
62
|
+
state,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return Promise.resolve(null);
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
set(ctx, key, entry) {
|
|
70
|
+
try {
|
|
71
|
+
const id = storageKey(ctx, key);
|
|
72
|
+
remove(id);
|
|
73
|
+
if (!isStorable(entry))
|
|
74
|
+
return Promise.resolve();
|
|
75
|
+
const bytes = sizeOf(id, entry);
|
|
76
|
+
if (entry.value.byteLength > maxEntryBytes || bytes > maxBytes)
|
|
77
|
+
return Promise.resolve();
|
|
78
|
+
slots.set(id, { envelope: { ...entry, value: entry.value.slice() }, bytes });
|
|
79
|
+
totalBytes += bytes;
|
|
80
|
+
while (slots.size > maxEntries || totalBytes > maxBytes) {
|
|
81
|
+
const oldest = slots.keys().next();
|
|
82
|
+
if (oldest.done === true)
|
|
83
|
+
break;
|
|
84
|
+
remove(oldest.value);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return Promise.resolve();
|
|
89
|
+
}
|
|
90
|
+
return Promise.resolve();
|
|
91
|
+
},
|
|
92
|
+
delete(ctx, key) {
|
|
93
|
+
try {
|
|
94
|
+
remove(storageKey(ctx, key));
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return Promise.resolve();
|
|
98
|
+
}
|
|
99
|
+
return Promise.resolve();
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=lru.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru.js","sourceRoot":"","sources":["../../src/cache/lru.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-ip.d.ts","sourceRoot":"","sources":["../src/client-ip.ts"],"names":[],"mappings":"AAyCA,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,YAAY,UAAQ,GACnB,MAAM,GAAG,IAAI,CAQf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { isIpLiteral } from '@package-broker/core/audit/actions';
|
|
2
|
+
function ipLiteral(value) {
|
|
3
|
+
const ip = value?.trim();
|
|
4
|
+
return ip !== undefined && isIpLiteral(ip) ? ip : null;
|
|
5
|
+
}
|
|
6
|
+
function forwardedParameters(value) {
|
|
7
|
+
const parameters = [];
|
|
8
|
+
let start = 0;
|
|
9
|
+
let quoted = false;
|
|
10
|
+
for (let index = 0; index < value.length; index++) {
|
|
11
|
+
const character = value[index];
|
|
12
|
+
if (quoted && character === '\\') {
|
|
13
|
+
index++;
|
|
14
|
+
}
|
|
15
|
+
else if (character === '"') {
|
|
16
|
+
quoted = !quoted;
|
|
17
|
+
}
|
|
18
|
+
else if (!quoted && (character === ';' || character === ',')) {
|
|
19
|
+
parameters.push(value.slice(start, index));
|
|
20
|
+
if (character === ',')
|
|
21
|
+
return parameters;
|
|
22
|
+
start = index + 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (quoted)
|
|
26
|
+
return null;
|
|
27
|
+
parameters.push(value.slice(start));
|
|
28
|
+
return parameters;
|
|
29
|
+
}
|
|
30
|
+
function forwardedIp(value) {
|
|
31
|
+
if (value === null)
|
|
32
|
+
return null;
|
|
33
|
+
const parameter = forwardedParameters(value)?.find((part) => /^\s*for\s*=/i.test(part));
|
|
34
|
+
const match = parameter?.match(/^\s*for\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^"\s]+))\s*$/i);
|
|
35
|
+
const candidate = match?.[1]?.replace(/\\(.)/g, '$1') ?? match?.[2];
|
|
36
|
+
const bracketed = candidate?.match(/^\[([0-9a-f:.]+)\](?::[0-9]+)?$/i);
|
|
37
|
+
if (bracketed !== undefined && bracketed !== null) {
|
|
38
|
+
const ip = bracketed[1];
|
|
39
|
+
return ip !== undefined && ip.includes(':') && isIpLiteral(ip) ? ip : null;
|
|
40
|
+
}
|
|
41
|
+
return ipLiteral(candidate);
|
|
42
|
+
}
|
|
43
|
+
export function nodeClientIp(request, remoteAddress, trustedProxy = false) {
|
|
44
|
+
if (!trustedProxy)
|
|
45
|
+
return ipLiteral(remoteAddress);
|
|
46
|
+
const candidate = request.headers.get('cf-connecting-ip') ??
|
|
47
|
+
request.headers.get('x-forwarded-for')?.split(',')[0];
|
|
48
|
+
const forwarded = candidate === undefined ? forwardedIp(request.headers.get('forwarded')) : ipLiteral(candidate);
|
|
49
|
+
return forwarded ?? ipLiteral(remoteAddress);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=client-ip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-ip.js","sourceRoot":"","sources":["../src/client-ip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-codec.d.ts","sourceRoot":"","sources":["../../src/codec/node-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,MAAM,EAEZ,MAAM,qCAAqC,CAAC;AA+J7C,eAAO,MAAM,UAAU,EAAE,MAQxB,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { constants as bufferConstants } from 'node:buffer';
|
|
3
|
+
import { createDeflateRaw, createGunzip, inflateSync } from 'node:zlib';
|
|
4
|
+
import { CodecCorruptError, CodecLimitError, CodecTruncatedError, } from '@package-broker/core/platform/codec';
|
|
5
|
+
function assertMaxOutput(maxOutput) {
|
|
6
|
+
if (!Number.isSafeInteger(maxOutput) || maxOutput < 0) {
|
|
7
|
+
throw new RangeError('maxOutput must be a non-negative safe integer');
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function mapZlibError(error, operation, maxOutput) {
|
|
11
|
+
const code = error?.code;
|
|
12
|
+
if (code === 'ERR_BUFFER_TOO_LARGE')
|
|
13
|
+
return new CodecLimitError(operation, maxOutput);
|
|
14
|
+
if (code === 'Z_BUF_ERROR')
|
|
15
|
+
return new CodecTruncatedError(operation);
|
|
16
|
+
if (code === 'Z_MEM_ERROR')
|
|
17
|
+
return error;
|
|
18
|
+
if (typeof code === 'string' && code.startsWith('Z_'))
|
|
19
|
+
return new CodecCorruptError(operation);
|
|
20
|
+
return error;
|
|
21
|
+
}
|
|
22
|
+
function assertExpectedSize(expectedSize) {
|
|
23
|
+
if (!Number.isSafeInteger(expectedSize) || expectedSize < 0) {
|
|
24
|
+
throw new RangeError('expectedSize must be a non-negative safe integer');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function digestTap(algs) {
|
|
28
|
+
const hashes = algs.map((alg) => [alg, createHash(alg)]);
|
|
29
|
+
let resolve;
|
|
30
|
+
let reject;
|
|
31
|
+
const digests = new Promise((res, rej) => {
|
|
32
|
+
resolve = res;
|
|
33
|
+
reject = rej;
|
|
34
|
+
});
|
|
35
|
+
digests.catch(() => undefined);
|
|
36
|
+
const transform = new TransformStream({
|
|
37
|
+
transform(chunk, controller) {
|
|
38
|
+
for (const [, hash] of hashes)
|
|
39
|
+
hash.update(chunk);
|
|
40
|
+
controller.enqueue(chunk);
|
|
41
|
+
},
|
|
42
|
+
flush() {
|
|
43
|
+
resolve(Object.fromEntries(hashes.map(([alg, hash]) => [alg, new Uint8Array(hash.digest())])));
|
|
44
|
+
},
|
|
45
|
+
cancel(reason) {
|
|
46
|
+
reject(reason);
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
return { transform, digests };
|
|
50
|
+
}
|
|
51
|
+
function inflateConsumed(input, maxOutput, expectedSize) {
|
|
52
|
+
assertMaxOutput(maxOutput);
|
|
53
|
+
if (expectedSize !== undefined)
|
|
54
|
+
assertExpectedSize(expectedSize);
|
|
55
|
+
try {
|
|
56
|
+
if (expectedSize !== undefined && expectedSize > maxOutput) {
|
|
57
|
+
throw new CodecLimitError('inflate', maxOutput);
|
|
58
|
+
}
|
|
59
|
+
const limit = expectedSize ?? maxOutput;
|
|
60
|
+
const options = {
|
|
61
|
+
info: true,
|
|
62
|
+
maxOutputLength: Math.min(Math.max(1, limit), bufferConstants.MAX_LENGTH),
|
|
63
|
+
...(expectedSize === undefined ? {} : { chunkSize: Math.max(64, expectedSize + 1) }),
|
|
64
|
+
};
|
|
65
|
+
const { buffer, engine } = inflateSync(input, options);
|
|
66
|
+
if (buffer.length > limit)
|
|
67
|
+
throw new CodecLimitError('inflate', maxOutput);
|
|
68
|
+
if (expectedSize !== undefined && buffer.length !== expectedSize) {
|
|
69
|
+
throw new CodecCorruptError('inflate');
|
|
70
|
+
}
|
|
71
|
+
const exact = buffer.byteOffset === 0 && buffer.buffer.byteLength === buffer.length
|
|
72
|
+
? new Uint8Array(buffer.buffer, 0, buffer.length)
|
|
73
|
+
: new Uint8Array(buffer);
|
|
74
|
+
return { data: exact, consumed: engine.bytesWritten };
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
throw mapZlibError(error, 'inflate', maxOutput);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function zlibTransform(engine, operation, maxOutput, rejectTrailing) {
|
|
81
|
+
let produced = 0;
|
|
82
|
+
let fed = 0;
|
|
83
|
+
let failure;
|
|
84
|
+
let sink;
|
|
85
|
+
let finished = false;
|
|
86
|
+
const fail = (error) => {
|
|
87
|
+
if (finished)
|
|
88
|
+
return;
|
|
89
|
+
finished = true;
|
|
90
|
+
failure = error;
|
|
91
|
+
engine.destroy();
|
|
92
|
+
sink.error(error);
|
|
93
|
+
};
|
|
94
|
+
const readable = new ReadableStream({
|
|
95
|
+
start(controller) {
|
|
96
|
+
sink = controller;
|
|
97
|
+
engine.pause();
|
|
98
|
+
engine.on('data', (data) => {
|
|
99
|
+
if (finished)
|
|
100
|
+
return;
|
|
101
|
+
produced += data.length;
|
|
102
|
+
if (produced > maxOutput)
|
|
103
|
+
return fail(new CodecLimitError(operation, maxOutput));
|
|
104
|
+
sink.enqueue(new Uint8Array(data));
|
|
105
|
+
if ((sink.desiredSize ?? 0) <= 0)
|
|
106
|
+
engine.pause();
|
|
107
|
+
});
|
|
108
|
+
engine.on('error', (error) => fail(mapZlibError(error, operation, maxOutput)));
|
|
109
|
+
engine.on('end', () => {
|
|
110
|
+
if (finished)
|
|
111
|
+
return;
|
|
112
|
+
if (rejectTrailing && engine.bytesWritten < fed) {
|
|
113
|
+
return fail(new CodecCorruptError(operation));
|
|
114
|
+
}
|
|
115
|
+
finished = true;
|
|
116
|
+
sink.close();
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
pull() {
|
|
120
|
+
engine.resume();
|
|
121
|
+
},
|
|
122
|
+
cancel() {
|
|
123
|
+
finished = true;
|
|
124
|
+
engine.destroy();
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
const writable = new WritableStream({
|
|
128
|
+
write(chunk) {
|
|
129
|
+
if (failure)
|
|
130
|
+
throw failure;
|
|
131
|
+
return new Promise((resolve, reject) => {
|
|
132
|
+
fed += chunk.length;
|
|
133
|
+
engine.write(chunk, (error) => (error ? reject(failure ?? error) : resolve()));
|
|
134
|
+
});
|
|
135
|
+
},
|
|
136
|
+
close() {
|
|
137
|
+
if (failure)
|
|
138
|
+
throw failure;
|
|
139
|
+
return new Promise((resolve, reject) => {
|
|
140
|
+
const done = () => (failure ? reject(failure) : resolve());
|
|
141
|
+
engine.once('finish', done);
|
|
142
|
+
engine.once('close', done);
|
|
143
|
+
engine.end();
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
abort(reason) {
|
|
147
|
+
finished = true;
|
|
148
|
+
engine.destroy();
|
|
149
|
+
sink.error(reason);
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
return { readable, writable };
|
|
153
|
+
}
|
|
154
|
+
export const nodeCodecs = {
|
|
155
|
+
digestTap,
|
|
156
|
+
inflateConsumed,
|
|
157
|
+
gunzip(maxOutput) {
|
|
158
|
+
assertMaxOutput(maxOutput);
|
|
159
|
+
return zlibTransform(createGunzip(), 'gunzip', maxOutput, true);
|
|
160
|
+
},
|
|
161
|
+
deflateRaw: () => zlibTransform(createDeflateRaw(), 'deflate', Number.MAX_SAFE_INTEGER, false),
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=node-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-codec.js","sourceRoot":"","sources":["../../src/codec/node-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SqlExecutor } from '@package-broker/core/db/port';
|
|
2
|
+
export interface BetterSqliteOptions {
|
|
3
|
+
readonly busyTimeoutMs?: number;
|
|
4
|
+
readonly statementCacheSize?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function openBetterSqliteExecutor(path: string, options?: BetterSqliteOptions): {
|
|
7
|
+
readonly executor: SqlExecutor;
|
|
8
|
+
close(): Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=better-sqlite3-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-sqlite3-executor.d.ts","sourceRoot":"","sources":["../../src/db/better-sqlite3-executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAoED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC;IAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAsE5D"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import { assertBatchStatementCount, classifySqliteError } from '@package-broker/core/db/errors';
|
|
3
|
+
const DEFAULT_BUSY_TIMEOUT_MS = 5000;
|
|
4
|
+
const DEFAULT_STATEMENT_CACHE_SIZE = 256;
|
|
5
|
+
const RETURNING = /\breturning\b/i;
|
|
6
|
+
function resolveStatementCacheSize(value) {
|
|
7
|
+
const size = value ?? DEFAULT_STATEMENT_CACHE_SIZE;
|
|
8
|
+
if (!Number.isInteger(size) || size < 1) {
|
|
9
|
+
throw new RangeError('statementCacheSize must be an integer greater than or equal to 1');
|
|
10
|
+
}
|
|
11
|
+
return size;
|
|
12
|
+
}
|
|
13
|
+
function assertParam(value, index) {
|
|
14
|
+
if (value === null || typeof value === 'string' || value instanceof Uint8Array)
|
|
15
|
+
return;
|
|
16
|
+
if (typeof value === 'number') {
|
|
17
|
+
if (!Number.isFinite(value)) {
|
|
18
|
+
throw new TypeError(`parameter ${index} must be a finite number`);
|
|
19
|
+
}
|
|
20
|
+
if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
|
|
21
|
+
throw new TypeError(`parameter ${index} must be a safe integer`);
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
throw new TypeError(`parameter ${index} is not a SQL value`);
|
|
26
|
+
}
|
|
27
|
+
function bindParams(params) {
|
|
28
|
+
return params.map((value, index) => {
|
|
29
|
+
assertParam(value, index);
|
|
30
|
+
return value instanceof Uint8Array
|
|
31
|
+
? Buffer.from(value.buffer, value.byteOffset, value.byteLength)
|
|
32
|
+
: value;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function toPlainRow(row) {
|
|
36
|
+
return Object.fromEntries(Object.entries(row).map(([key, value]) => [
|
|
37
|
+
key,
|
|
38
|
+
Buffer.isBuffer(value) ? new Uint8Array(value) : value,
|
|
39
|
+
]));
|
|
40
|
+
}
|
|
41
|
+
function openDatabase(path, busyTimeoutMs) {
|
|
42
|
+
let database;
|
|
43
|
+
try {
|
|
44
|
+
database = new Database(path);
|
|
45
|
+
database.pragma('foreign_keys = ON');
|
|
46
|
+
database.pragma(`busy_timeout = ${Math.trunc(busyTimeoutMs)}`);
|
|
47
|
+
if (path !== ':memory:') {
|
|
48
|
+
database.pragma('journal_mode = WAL');
|
|
49
|
+
}
|
|
50
|
+
return database;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
try {
|
|
54
|
+
database?.close();
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// the connection is already gone; the original error wins
|
|
58
|
+
}
|
|
59
|
+
throw classifySqliteError(error);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function openBetterSqliteExecutor(path, options = {}) {
|
|
63
|
+
const cacheLimit = resolveStatementCacheSize(options.statementCacheSize);
|
|
64
|
+
const database = openDatabase(path, options.busyTimeoutMs ?? DEFAULT_BUSY_TIMEOUT_MS);
|
|
65
|
+
const cache = new Map();
|
|
66
|
+
const prepare = (sql) => {
|
|
67
|
+
const cached = cache.get(sql);
|
|
68
|
+
if (cached !== undefined) {
|
|
69
|
+
cache.delete(sql);
|
|
70
|
+
cache.set(sql, cached);
|
|
71
|
+
return cached;
|
|
72
|
+
}
|
|
73
|
+
const statement = database.prepare(sql);
|
|
74
|
+
cache.set(sql, statement);
|
|
75
|
+
if (cache.size > cacheLimit) {
|
|
76
|
+
const oldest = cache.keys().next().value;
|
|
77
|
+
if (oldest !== undefined)
|
|
78
|
+
cache.delete(oldest);
|
|
79
|
+
}
|
|
80
|
+
return statement;
|
|
81
|
+
};
|
|
82
|
+
function runStatement(statement, params) {
|
|
83
|
+
const prepared = prepare(statement.sql);
|
|
84
|
+
if (prepared.reader) {
|
|
85
|
+
const rows = prepared.all(...params).map(toPlainRow);
|
|
86
|
+
return { changes: RETURNING.test(statement.sql) ? rows.length : 0, rows };
|
|
87
|
+
}
|
|
88
|
+
const info = prepared.run(...params);
|
|
89
|
+
return { changes: info.changes, rows: [] };
|
|
90
|
+
}
|
|
91
|
+
const runBatch = database.transaction((statements, bound) => statements.map((statement, index) => runStatement(statement, bound[index] ?? [])));
|
|
92
|
+
const executor = {
|
|
93
|
+
driver: 'better-sqlite3',
|
|
94
|
+
async all(statement) {
|
|
95
|
+
const params = bindParams(statement.params);
|
|
96
|
+
try {
|
|
97
|
+
const prepared = prepare(statement.sql);
|
|
98
|
+
if (prepared.reader) {
|
|
99
|
+
return prepared.all(...params).map(toPlainRow);
|
|
100
|
+
}
|
|
101
|
+
prepared.run(...params);
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
throw classifySqliteError(error);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
async batch(statements) {
|
|
109
|
+
assertBatchStatementCount(statements.length);
|
|
110
|
+
if (statements.length === 0)
|
|
111
|
+
return [];
|
|
112
|
+
const bound = statements.map((statement) => bindParams(statement.params));
|
|
113
|
+
try {
|
|
114
|
+
return runBatch.immediate(statements, bound);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
throw classifySqliteError(error);
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
return {
|
|
122
|
+
executor,
|
|
123
|
+
close: async () => {
|
|
124
|
+
cache.clear();
|
|
125
|
+
database.close();
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=better-sqlite3-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-sqlite3-executor.js","sourceRoot":"","sources":["../../src/db/better-sqlite3-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/entry.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BrokerConfig } from '@package-broker/core/config';
|
|
2
|
+
import type { PlatformPortConfig } from '@package-broker/core/platform/port-config';
|
|
3
|
+
import type { PluginDefinition } from '@package-broker/core/plugin';
|
|
4
|
+
import type { MigrationSource } from '@package-broker/db-sqlite/migrations/source';
|
|
5
|
+
import type { NodeBroker } from './index.js';
|
|
6
|
+
import { type StartOptions } from './startup.js';
|
|
7
|
+
export interface EntryManifest {
|
|
8
|
+
readonly observability?: BrokerConfig['observability'];
|
|
9
|
+
readonly registry?: BrokerConfig['registry'];
|
|
10
|
+
readonly tokens?: BrokerConfig['tokens'];
|
|
11
|
+
readonly vulnerability?: BrokerConfig['vulnerability'];
|
|
12
|
+
readonly mcp?: BrokerConfig['mcp'];
|
|
13
|
+
readonly plugins: readonly PluginDefinition[];
|
|
14
|
+
readonly migrations: readonly MigrationSource[];
|
|
15
|
+
readonly platformPorts?: PlatformPortConfig | null;
|
|
16
|
+
}
|
|
17
|
+
export interface EntryRuntime {
|
|
18
|
+
readonly start: (options: StartOptions) => Promise<NodeBroker>;
|
|
19
|
+
readonly exit: (code: number) => void;
|
|
20
|
+
readonly error: (message: string) => void;
|
|
21
|
+
readonly onProcessError?: (event: 'uncaughtException' | 'unhandledRejection', listener: (error: unknown) => void) => void;
|
|
22
|
+
readonly onSignal: (signal: 'SIGTERM' | 'SIGINT', listener: () => void) => void;
|
|
23
|
+
}
|
|
24
|
+
export declare function describeError(error: unknown): string;
|
|
25
|
+
export declare function parsePort(raw: string | undefined): number;
|
|
26
|
+
export declare function createShutdown(close: () => Promise<void>, exit: (code: number) => void, code?: number, options?: {
|
|
27
|
+
readonly timeoutMs?: number;
|
|
28
|
+
readonly error?: (message: string) => void;
|
|
29
|
+
}): () => void;
|
|
30
|
+
export declare function runEntry(manifest: Promise<EntryManifest>, env: Readonly<Record<string, string | undefined>>, runtime: EntryRuntime): Promise<void>;
|
|
31
|
+
export declare function isMainEntry(argv1: string | undefined, moduleUrl: string): boolean;
|
|
32
|
+
//# sourceMappingURL=entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAEnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKhF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,EACjD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAC/B,IAAI,CAAC;IACV,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACjF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOzD;AAWD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC5B,IAAI,SAAI,EACR,OAAO,GAAE;IACP,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,GACL,MAAM,IAAI,CA8BZ;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,EAChC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACjD,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Df;AA2BD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAOjF"}
|