@async/pipeline 0.1.3

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 (82) hide show
  1. package/README.md +68 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +3 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core.d.ts +2 -0
  7. package/dist/core.d.ts.map +1 -0
  8. package/dist/core.js +2 -0
  9. package/dist/core.js.map +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +4 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/internal/core/cache.d.ts +47 -0
  15. package/dist/internal/core/cache.d.ts.map +1 -0
  16. package/dist/internal/core/cache.js +81 -0
  17. package/dist/internal/core/cache.js.map +1 -0
  18. package/dist/internal/core/errors.d.ts +7 -0
  19. package/dist/internal/core/errors.d.ts.map +1 -0
  20. package/dist/internal/core/errors.js +14 -0
  21. package/dist/internal/core/errors.js.map +1 -0
  22. package/dist/internal/core/index.d.ts +347 -0
  23. package/dist/internal/core/index.d.ts.map +1 -0
  24. package/dist/internal/core/index.js +584 -0
  25. package/dist/internal/core/index.js.map +1 -0
  26. package/dist/internal/core/runtime.d.ts +111 -0
  27. package/dist/internal/core/runtime.d.ts.map +1 -0
  28. package/dist/internal/core/runtime.js +495 -0
  29. package/dist/internal/core/runtime.js.map +1 -0
  30. package/dist/internal/lima/index.d.ts +15 -0
  31. package/dist/internal/lima/index.d.ts.map +1 -0
  32. package/dist/internal/lima/index.js +65 -0
  33. package/dist/internal/lima/index.js.map +1 -0
  34. package/dist/internal/node/cli.d.ts +3 -0
  35. package/dist/internal/node/cli.d.ts.map +1 -0
  36. package/dist/internal/node/cli.js +410 -0
  37. package/dist/internal/node/cli.js.map +1 -0
  38. package/dist/internal/node/doctor.d.ts +7 -0
  39. package/dist/internal/node/doctor.d.ts.map +1 -0
  40. package/dist/internal/node/doctor.js +21 -0
  41. package/dist/internal/node/doctor.js.map +1 -0
  42. package/dist/internal/node/github.d.ts +48 -0
  43. package/dist/internal/node/github.d.ts.map +1 -0
  44. package/dist/internal/node/github.js +351 -0
  45. package/dist/internal/node/github.js.map +1 -0
  46. package/dist/internal/node/index.d.ts +8 -0
  47. package/dist/internal/node/index.d.ts.map +1 -0
  48. package/dist/internal/node/index.js +8 -0
  49. package/dist/internal/node/index.js.map +1 -0
  50. package/dist/internal/node/loader.d.ts +3 -0
  51. package/dist/internal/node/loader.d.ts.map +1 -0
  52. package/dist/internal/node/loader.js +10 -0
  53. package/dist/internal/node/loader.js.map +1 -0
  54. package/dist/internal/node/runner.d.ts +35 -0
  55. package/dist/internal/node/runner.d.ts.map +1 -0
  56. package/dist/internal/node/runner.js +527 -0
  57. package/dist/internal/node/runner.js.map +1 -0
  58. package/dist/internal/node/sources.d.ts +44 -0
  59. package/dist/internal/node/sources.d.ts.map +1 -0
  60. package/dist/internal/node/sources.js +187 -0
  61. package/dist/internal/node/sources.js.map +1 -0
  62. package/dist/internal/node/store.d.ts +23 -0
  63. package/dist/internal/node/store.d.ts.map +1 -0
  64. package/dist/internal/node/store.js +224 -0
  65. package/dist/internal/node/store.js.map +1 -0
  66. package/dist/internal/node/sync.d.ts +41 -0
  67. package/dist/internal/node/sync.d.ts.map +1 -0
  68. package/dist/internal/node/sync.js +332 -0
  69. package/dist/internal/node/sync.js.map +1 -0
  70. package/dist/lima.d.ts +2 -0
  71. package/dist/lima.d.ts.map +1 -0
  72. package/dist/lima.js +2 -0
  73. package/dist/lima.js.map +1 -0
  74. package/dist/node.d.ts +2 -0
  75. package/dist/node.d.ts.map +1 -0
  76. package/dist/node.js +2 -0
  77. package/dist/node.js.map +1 -0
  78. package/dist/runtime.d.ts +2 -0
  79. package/dist/runtime.d.ts.map +1 -0
  80. package/dist/runtime.js +2 -0
  81. package/dist/runtime.js.map +1 -0
  82. package/package.json +51 -0
@@ -0,0 +1,332 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync } from "node:fs";
3
+ import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
4
+ import { dirname, join, relative, resolve, sep } from "node:path";
5
+ import { pipelineError } from "../core/index.js";
6
+ export const TASK_SYNC_LOCK_PATH = ".async-pipeline/tasks.lock.json";
7
+ const TASK_SYNC_GENERATOR_VERSION = 1;
8
+ export async function renderTaskSync(pipeline, options) {
9
+ const config = pipeline.sync.tasks;
10
+ const manifests = config.enabled ? await resolveTaskSyncManifests(config, options.cwd) : [];
11
+ const commands = config.enabled ? renderCommands(pipeline, config) : [];
12
+ const manifestEntries = manifests.map((manifest) => ({
13
+ ...manifest,
14
+ commands
15
+ }));
16
+ const lockInput = {
17
+ version: TASK_SYNC_GENERATOR_VERSION,
18
+ config: relativePath(options.cwd, options.configPath),
19
+ prefix: config.prefix,
20
+ runners: config.runners,
21
+ targets: config.targets,
22
+ manifests: manifestEntries.map((manifest) => ({
23
+ path: manifest.path,
24
+ runner: manifest.runner,
25
+ field: manifest.field,
26
+ commands: manifest.commands
27
+ })),
28
+ commands
29
+ };
30
+ const lock = {
31
+ version: TASK_SYNC_GENERATOR_VERSION,
32
+ generator: "@async/pipeline",
33
+ config: lockInput.config,
34
+ prefix: config.prefix,
35
+ runners: config.runners,
36
+ targets: config.targets,
37
+ manifests: lockInput.manifests,
38
+ commands,
39
+ hash: hashJson(lockInput),
40
+ generatedAt: new Date().toISOString()
41
+ };
42
+ return {
43
+ enabled: config.enabled,
44
+ lockPath: TASK_SYNC_LOCK_PATH,
45
+ lock,
46
+ manifests: manifestEntries
47
+ };
48
+ }
49
+ export async function writeTaskSync(result, cwd) {
50
+ if (!result.enabled) {
51
+ throw pipelineError("ASYNC_PIPELINE_SYNC_NOT_CONFIGURED", "Task sync is not configured.");
52
+ }
53
+ const existingLock = await readTaskSyncLock(cwd);
54
+ for (const manifest of result.manifests) {
55
+ await writeManifestCommands(cwd, manifest, existingLock);
56
+ }
57
+ const lockFile = resolve(cwd, result.lockPath);
58
+ await mkdir(dirname(lockFile), { recursive: true });
59
+ await writeFile(lockFile, `${JSON.stringify(result.lock, null, 2)}\n`, "utf8");
60
+ }
61
+ export async function checkTaskSync(result, cwd, options = {}) {
62
+ if (!result.enabled) {
63
+ return options.requireConfigured ? ["Task sync is not configured. Add sync.tasks to pipeline.ts."] : [];
64
+ }
65
+ const issues = [];
66
+ const existingLock = await readTaskSyncLock(cwd);
67
+ for (const manifest of result.manifests) {
68
+ const file = resolve(cwd, manifest.path);
69
+ if (!existsSync(file)) {
70
+ issues.push(`Missing task sync target ${manifest.path}. Run async-pipeline sync tasks generate.`);
71
+ continue;
72
+ }
73
+ const parsed = await readJsonManifest(file);
74
+ const current = objectRecord(parsed.value[manifest.field]);
75
+ for (const command of manifest.commands) {
76
+ if (current[command.name] !== command.value) {
77
+ issues.push(`Generated ${manifest.field.slice(0, -1)} ${command.name} in ${manifest.path} is stale. Run async-pipeline sync tasks generate.`);
78
+ }
79
+ }
80
+ }
81
+ if (!existingLock) {
82
+ issues.push(`Missing task sync lock ${result.lockPath}. Run async-pipeline sync tasks generate.`);
83
+ }
84
+ else if (existingLock.hash !== result.lock.hash
85
+ || existingLock.config !== result.lock.config
86
+ || existingLock.prefix !== result.lock.prefix) {
87
+ issues.push(`Task sync lock ${result.lockPath} is stale. Run async-pipeline sync tasks generate.`);
88
+ }
89
+ return issues;
90
+ }
91
+ export function describeTaskSync(result) {
92
+ if (!result.enabled)
93
+ return ["Task sync is not configured."];
94
+ const lines = [`Task sync lock: ${result.lockPath}`];
95
+ for (const manifest of result.manifests) {
96
+ lines.push(`${manifest.runner}\t${manifest.path}\t${manifest.commands.map((command) => command.name).join(", ")}`);
97
+ }
98
+ return lines;
99
+ }
100
+ function renderCommands(pipeline, config) {
101
+ const commands = [];
102
+ const jobIds = config.jobs === "all" ? Object.keys(pipeline.jobs).sort() : [...config.jobs].sort();
103
+ for (const jobId of jobIds) {
104
+ commands.push({
105
+ name: `${config.prefix}:${jobId}`,
106
+ value: `async-pipeline run ${jobId}`
107
+ });
108
+ }
109
+ const taskIds = config.tasks === undefined ? [] : config.tasks === "all" ? Object.keys(pipeline.tasks).sort() : [...config.tasks].sort();
110
+ for (const taskId of taskIds) {
111
+ commands.push({
112
+ name: `${config.prefix}:task:${taskId}`,
113
+ value: `async-pipeline run-task ${taskId}`
114
+ });
115
+ }
116
+ for (const [name, command] of Object.entries(config.scripts).sort(([left], [right]) => left.localeCompare(right))) {
117
+ commands.push({
118
+ name: `${config.prefix}:${name}`,
119
+ value: `async-pipeline ${command}`
120
+ });
121
+ }
122
+ return commands;
123
+ }
124
+ async function resolveTaskSyncManifests(config, cwd) {
125
+ const runners = selectedRunners(config.runners);
126
+ if (config.targets === "root") {
127
+ const rootManifests = [];
128
+ if (runners.has("package") && existsSync(join(cwd, "package.json"))) {
129
+ rootManifests.push({ path: "package.json", runner: "package", field: "scripts" });
130
+ }
131
+ if (runners.has("deno")) {
132
+ for (const name of ["deno.json", "deno.jsonc"]) {
133
+ if (existsSync(join(cwd, name))) {
134
+ rootManifests.push({ path: name, runner: "deno", field: "tasks" });
135
+ }
136
+ }
137
+ }
138
+ if (rootManifests.length === 0) {
139
+ throw pipelineError("ASYNC_PIPELINE_SYNC_TARGET_NOT_FOUND", "Task sync root target did not match package.json, deno.json, or deno.jsonc.");
140
+ }
141
+ return rootManifests;
142
+ }
143
+ const manifests = [];
144
+ for (const target of config.targets) {
145
+ if ("path" in target) {
146
+ const manifest = resolveManifestPath(cwd, target.path);
147
+ if (!runners.has(manifest.runner)) {
148
+ throw pipelineError("ASYNC_PIPELINE_SYNC_RUNNER_DISABLED", `Task sync target ${target.path} uses disabled runner "${manifest.runner}".`);
149
+ }
150
+ manifests.push(manifest);
151
+ continue;
152
+ }
153
+ const matches = await findPackagesByName(cwd, target.package);
154
+ if (matches.length === 0) {
155
+ throw pipelineError("ASYNC_PIPELINE_SYNC_TARGET_NOT_FOUND", `No package.json found with name "${target.package}".`);
156
+ }
157
+ if (matches.length > 1 && !target.allowMultiple) {
158
+ throw pipelineError("ASYNC_PIPELINE_SYNC_AMBIGUOUS_TARGET", `Package selector "${target.package}" matched multiple package.json files.`);
159
+ }
160
+ if (!runners.has("package")) {
161
+ throw pipelineError("ASYNC_PIPELINE_SYNC_RUNNER_DISABLED", `Package selector "${target.package}" requires the package runner.`);
162
+ }
163
+ for (const match of matches) {
164
+ manifests.push({ path: match, runner: "package", field: "scripts" });
165
+ }
166
+ }
167
+ return uniqueManifests(manifests);
168
+ }
169
+ function selectedRunners(runners) {
170
+ return new Set(runners === "all" ? ["package", "deno"] : runners);
171
+ }
172
+ function resolveManifestPath(cwd, inputPath) {
173
+ const absolute = resolve(cwd, inputPath);
174
+ const relativeManifest = relativePath(cwd, absolute);
175
+ if (!existsSync(absolute)) {
176
+ throw pipelineError("ASYNC_PIPELINE_SYNC_TARGET_NOT_FOUND", `Task sync target ${inputPath} does not exist.`);
177
+ }
178
+ if (relativeManifest.endsWith("package.json"))
179
+ return { path: relativeManifest, runner: "package", field: "scripts" };
180
+ if (relativeManifest.endsWith("deno.json") || relativeManifest.endsWith("deno.jsonc"))
181
+ return { path: relativeManifest, runner: "deno", field: "tasks" };
182
+ throw pipelineError("ASYNC_PIPELINE_SYNC_UNSUPPORTED_TARGET", `Task sync target ${inputPath} must be package.json, deno.json, or deno.jsonc.`);
183
+ }
184
+ async function findPackagesByName(cwd, packageName) {
185
+ const matches = [];
186
+ async function visit(dir) {
187
+ const entries = await readdir(dir, { withFileTypes: true });
188
+ for (const entry of entries) {
189
+ const absolute = join(dir, entry.name);
190
+ if (entry.isDirectory()) {
191
+ if (shouldSkipDirectory(entry.name))
192
+ continue;
193
+ await visit(absolute);
194
+ continue;
195
+ }
196
+ if (entry.isFile() && entry.name === "package.json") {
197
+ const packageJson = JSON.parse(await readFile(absolute, "utf8"));
198
+ if (packageJson.name === packageName)
199
+ matches.push(relativePath(cwd, absolute));
200
+ }
201
+ }
202
+ }
203
+ await visit(cwd);
204
+ return matches.sort();
205
+ }
206
+ function shouldSkipDirectory(name) {
207
+ return name === ".git"
208
+ || name === "node_modules"
209
+ || name === "dist"
210
+ || name === ".async"
211
+ || name === ".async-pipeline"
212
+ || name === ".tmp"
213
+ || name === "coverage";
214
+ }
215
+ async function writeManifestCommands(cwd, manifest, existingLock) {
216
+ const file = resolve(cwd, manifest.path);
217
+ const parsed = await readJsonManifest(file);
218
+ const current = objectRecord(parsed.value[manifest.field]);
219
+ const managed = managedCommandsForManifest(existingLock, manifest.path);
220
+ for (const command of manifest.commands) {
221
+ if (current[command.name] !== undefined && !managed.has(command.name)) {
222
+ throw pipelineError("ASYNC_PIPELINE_SYNC_CONFLICT", `${manifest.path} already has unmanaged ${manifest.field.slice(0, -1)} "${command.name}". Rename it or remove it before running async-pipeline sync tasks generate.`);
223
+ }
224
+ }
225
+ const nextCommands = { ...current };
226
+ for (const command of manifest.commands) {
227
+ nextCommands[command.name] = command.value;
228
+ }
229
+ parsed.value[manifest.field] = sortRecord(nextCommands);
230
+ await writeFile(file, `${JSON.stringify(parsed.value, null, parsed.indent)}\n`, "utf8");
231
+ }
232
+ function managedCommandsForManifest(lock, manifestPath) {
233
+ const names = new Set();
234
+ for (const manifest of lock?.manifests ?? []) {
235
+ if (manifest.path !== manifestPath)
236
+ continue;
237
+ for (const command of manifest.commands)
238
+ names.add(command.name);
239
+ }
240
+ return names;
241
+ }
242
+ async function readTaskSyncLock(cwd) {
243
+ const lockFile = resolve(cwd, TASK_SYNC_LOCK_PATH);
244
+ if (!existsSync(lockFile))
245
+ return null;
246
+ return JSON.parse(await readFile(lockFile, "utf8"));
247
+ }
248
+ async function readJsonManifest(file) {
249
+ const text = await readFile(file, "utf8");
250
+ const indent = detectIndent(text);
251
+ const source = file.endsWith(".jsonc") ? stripJsonComments(text) : text;
252
+ const value = JSON.parse(source);
253
+ return { value, indent };
254
+ }
255
+ function detectIndent(text) {
256
+ const line = text.split(/\r?\n/).find((entry) => /^ +"/.test(entry));
257
+ return line ? line.match(/^ +/)?.[0].length ?? 2 : 2;
258
+ }
259
+ function stripJsonComments(text) {
260
+ let output = "";
261
+ let inString = false;
262
+ let escaped = false;
263
+ for (let index = 0; index < text.length; index += 1) {
264
+ const char = text[index];
265
+ const next = text[index + 1];
266
+ if (inString) {
267
+ output += char;
268
+ if (escaped) {
269
+ escaped = false;
270
+ }
271
+ else if (char === "\\") {
272
+ escaped = true;
273
+ }
274
+ else if (char === "\"") {
275
+ inString = false;
276
+ }
277
+ continue;
278
+ }
279
+ if (char === "\"") {
280
+ inString = true;
281
+ output += char;
282
+ continue;
283
+ }
284
+ if (char === "/" && next === "/") {
285
+ while (index < text.length && text[index] !== "\n")
286
+ index += 1;
287
+ output += "\n";
288
+ continue;
289
+ }
290
+ if (char === "/" && next === "*") {
291
+ index += 2;
292
+ while (index < text.length && !(text[index] === "*" && text[index + 1] === "/"))
293
+ index += 1;
294
+ index += 1;
295
+ continue;
296
+ }
297
+ output += char;
298
+ }
299
+ return output;
300
+ }
301
+ function objectRecord(value) {
302
+ if (!value || typeof value !== "object" || Array.isArray(value))
303
+ return {};
304
+ return Object.fromEntries(Object.entries(value).filter((entry) => typeof entry[1] === "string"));
305
+ }
306
+ function sortRecord(input) {
307
+ return Object.fromEntries(Object.entries(input).sort(([left], [right]) => left.localeCompare(right)));
308
+ }
309
+ function uniqueManifests(manifests) {
310
+ const seen = new Set();
311
+ const unique = [];
312
+ for (const manifest of manifests) {
313
+ if (seen.has(manifest.path))
314
+ continue;
315
+ seen.add(manifest.path);
316
+ unique.push(manifest);
317
+ }
318
+ return unique.sort((left, right) => left.path.localeCompare(right.path));
319
+ }
320
+ function hashJson(value) {
321
+ return `sha256:${createHash("sha256").update(JSON.stringify(value)).digest("hex")}`;
322
+ }
323
+ function relativePath(cwd, path) {
324
+ const relativeFile = relative(cwd, resolve(path));
325
+ if (relativeFile === "")
326
+ return ".";
327
+ if (relativeFile === ".." || relativeFile.startsWith(`..${sep}`)) {
328
+ throw pipelineError("ASYNC_PIPELINE_SYNC_TARGET_OUTSIDE_ROOT", `Sync path "${path}" must be inside ${cwd}.`);
329
+ }
330
+ return relativeFile;
331
+ }
332
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
package/dist/lima.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./internal/lima/index.js";
2
+ //# sourceMappingURL=lima.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lima.d.ts","sourceRoot":"","sources":["../src/lima.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC"}
package/dist/lima.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./internal/lima/index.js";
2
+ //# sourceMappingURL=lima.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lima.js","sourceRoot":"","sources":["../src/lima.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./internal/node/index.js";
2
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}
package/dist/node.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./internal/node/index.js";
2
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./internal/core/runtime.js";
2
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./internal/core/runtime.js";
2
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@async/pipeline",
3
+ "version": "0.1.3",
4
+ "description": "Local-first TypeScript pipelines with one task graph for laptops and CI.",
5
+ "type": "module",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/async-framework/async-pipeline.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/async-framework/async-pipeline/issues"
12
+ },
13
+ "homepage": "https://github.com/async-framework/async-pipeline#readme",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "default": "./dist/index.js"
18
+ },
19
+ "./core": {
20
+ "types": "./dist/core.d.ts",
21
+ "default": "./dist/core.js"
22
+ },
23
+ "./node": {
24
+ "types": "./dist/node.d.ts",
25
+ "default": "./dist/node.js"
26
+ },
27
+ "./lima": {
28
+ "types": "./dist/lima.d.ts",
29
+ "default": "./dist/lima.js"
30
+ },
31
+ "./runtime": {
32
+ "types": "./dist/runtime.d.ts",
33
+ "default": "./dist/runtime.js"
34
+ }
35
+ },
36
+ "bin": {
37
+ "async-pipeline": "./dist/cli.js"
38
+ },
39
+ "scripts": {
40
+ "build": "pnpm --filter @async/pipeline-core build && pnpm --filter @async/pipeline-node build && pnpm --filter @async/pipeline-adapter-lima build && tsc -p tsconfig.build.json && node scripts/bundle-internals.js && chmod +x dist/cli.js",
41
+ "typecheck": "tsc --noEmit -p tsconfig.build.json",
42
+ "pack:check": "npm --cache ../../.async/npm-cache pack --dry-run"
43
+ },
44
+ "files": [
45
+ "dist"
46
+ ],
47
+ "sideEffects": false,
48
+ "engines": {
49
+ "node": ">=20"
50
+ }
51
+ }