@graftsync/core 0.1.1 → 0.2.0
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/dist/command.d.ts +15 -0
- package/dist/command.d.ts.map +1 -0
- package/dist/command.js +48 -0
- package/dist/command.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/install.js +1 -1
- package/dist/install.js.map +1 -1
- package/dist/operations.d.ts +22 -0
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +63 -1
- package/dist/operations.js.map +1 -1
- package/dist/replay.d.ts +1 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/scaffold.d.ts +1 -2
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +3 -18
- package/dist/scaffold.js.map +1 -1
- package/dist/sync.d.ts +10 -6
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +26 -22
- package/dist/sync.js.map +1 -1
- package/dist/types.d.ts +9 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/upstream.d.ts +1 -1
- package/dist/upstream.d.ts.map +1 -1
- package/dist/upstream.js +45 -8
- package/dist/upstream.js.map +1 -1
- package/package.json +4 -7
- package/dist/oracle.d.ts +0 -49
- package/dist/oracle.d.ts.map +0 -1
- package/dist/oracle.js +0 -106
- package/dist/oracle.js.map +0 -1
package/dist/oracle.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
const DEFAULT_TIMEOUT_S = 600;
|
|
3
|
-
/** Run the graft's oracle once per mode. The oracle is the only proof that a graft holds. */
|
|
4
|
-
export async function runOracle(project, graft, options = {}) {
|
|
5
|
-
const { oracle, rootstock } = graft.frontmatter;
|
|
6
|
-
const version = options.version ?? (await project.currentVersion(graft));
|
|
7
|
-
const modes = options.modes?.length ? oracle.modes.filter((m) => options.modes.includes(m)) : oracle.modes;
|
|
8
|
-
const adapter = project.adapterFor(graft);
|
|
9
|
-
// A standalone graft installs nothing: its oracle runs in the materialized upstream source.
|
|
10
|
-
let workspace;
|
|
11
|
-
if (project.isStandalone(graft)) {
|
|
12
|
-
const failed = (output) => ({
|
|
13
|
-
graft: graft.id,
|
|
14
|
-
version,
|
|
15
|
-
passed: false,
|
|
16
|
-
modes: modes.map((mode) => ({ mode, command: oracle.command.replaceAll('{mode}', mode), passed: false, exitCode: null, output, durationMs: 0, timedOut: false })),
|
|
17
|
-
});
|
|
18
|
-
if (!version)
|
|
19
|
-
return failed(`[graft] no version to run the oracle against\n`);
|
|
20
|
-
if (!adapter.workspace)
|
|
21
|
-
return failed(`[graft] mechanism "${adapter.name}" is standalone but provides no workspace\n`);
|
|
22
|
-
try {
|
|
23
|
-
workspace = await adapter.workspace(project.context(graft), version);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
return failed(`[graft] could not materialize ${rootstock.package}@${version} with the graft applied: ${err.message}\n`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
const results = [];
|
|
30
|
-
try {
|
|
31
|
-
for (const mode of modes) {
|
|
32
|
-
const command = oracle.command.replaceAll('{mode}', mode);
|
|
33
|
-
results.push(await runCommand(command, {
|
|
34
|
-
cwd: workspace?.dir ?? project.root,
|
|
35
|
-
env: {
|
|
36
|
-
GRAFT_ID: graft.id,
|
|
37
|
-
GRAFT_DIR: graft.dir,
|
|
38
|
-
GRAFT_MODE: mode,
|
|
39
|
-
GRAFT_PACKAGE: rootstock.package,
|
|
40
|
-
GRAFT_UPSTREAM_VERSION: version ?? '',
|
|
41
|
-
GRAFT_PROJECT_ROOT: project.root,
|
|
42
|
-
...(workspace ? { GRAFT_WORKSPACE: workspace.dir } : {}),
|
|
43
|
-
},
|
|
44
|
-
timeoutMs: (oracle.timeout ?? DEFAULT_TIMEOUT_S) * 1000,
|
|
45
|
-
maxOutput: options.maxOutput ?? 20_000,
|
|
46
|
-
onOutput: options.onOutput,
|
|
47
|
-
}).then((r) => ({ mode, command, ...r })));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
await workspace?.dispose();
|
|
52
|
-
}
|
|
53
|
-
return {
|
|
54
|
-
graft: graft.id,
|
|
55
|
-
version,
|
|
56
|
-
passed: results.length > 0 && results.every((r) => r.passed),
|
|
57
|
-
modes: results,
|
|
58
|
-
...(workspace?.result ? { workspace: workspace.result } : {}),
|
|
59
|
-
...(workspace?.fetch ? { fetch: workspace.fetch } : {}),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
export function runCommand(command, opts) {
|
|
63
|
-
const started = Date.now();
|
|
64
|
-
const max = opts.maxOutput ?? 20_000;
|
|
65
|
-
return new Promise((resolve) => {
|
|
66
|
-
let output = '';
|
|
67
|
-
let timedOut = false;
|
|
68
|
-
const child = spawn(command, {
|
|
69
|
-
cwd: opts.cwd,
|
|
70
|
-
env: { ...process.env, ...opts.env },
|
|
71
|
-
shell: true,
|
|
72
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
73
|
-
});
|
|
74
|
-
const onData = (buf) => {
|
|
75
|
-
const chunk = buf.toString();
|
|
76
|
-
opts.onOutput?.(chunk);
|
|
77
|
-
output += chunk;
|
|
78
|
-
if (output.length > max * 2)
|
|
79
|
-
output = output.slice(-max);
|
|
80
|
-
};
|
|
81
|
-
child.stdout.on('data', onData);
|
|
82
|
-
child.stderr.on('data', onData);
|
|
83
|
-
const timer = opts.timeoutMs
|
|
84
|
-
? setTimeout(() => {
|
|
85
|
-
timedOut = true;
|
|
86
|
-
child.kill('SIGTERM');
|
|
87
|
-
}, opts.timeoutMs)
|
|
88
|
-
: undefined;
|
|
89
|
-
const finish = (exitCode, extra = '') => {
|
|
90
|
-
if (timer)
|
|
91
|
-
clearTimeout(timer);
|
|
92
|
-
output += extra;
|
|
93
|
-
const truncated = output.length > max ? `[…truncated…]\n${output.slice(-max)}` : output;
|
|
94
|
-
resolve({
|
|
95
|
-
passed: exitCode === 0 && !timedOut,
|
|
96
|
-
exitCode,
|
|
97
|
-
output: truncated,
|
|
98
|
-
durationMs: Date.now() - started,
|
|
99
|
-
timedOut,
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
child.on('error', (err) => finish(null, `\n[graft] failed to start oracle: ${err.message}\n`));
|
|
103
|
-
child.on('close', (code) => finish(code, timedOut ? '\n[graft] oracle timed out\n' : ''));
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=oracle.js.map
|
package/dist/oracle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|