fix(workflow): resolve type errors across all packages and remove tsbuildinfo from tracking
- Add bun-types and @types/xxhashjs to root devDependencies - Add types: ['bun-types'] to root and package tsconfigs - Fix AST Node type narrowing in bundle-validator.ts with AcornNode type and narrowNode helper - Fix generic ThreadContext variance in create-role-moderator.ts - Add explicit parameter types in worker.ts - Fix ChildProcess type in worker-spawn.ts to match spawn() stdio config - Remove all tsconfig.tsbuildinfo from git tracking - Add tsconfig.tsbuildinfo to .gitignore
This commit is contained in:
@@ -2,3 +2,4 @@ node_modules/
|
|||||||
dist/
|
dist/
|
||||||
bun.lock
|
bun.lock
|
||||||
*.tgz
|
*.tgz
|
||||||
|
tsconfig.tsbuildinfo
|
||||||
|
|||||||
+3
-1
@@ -12,6 +12,8 @@
|
|||||||
"test": "bun run --filter '*' test"
|
"test": "bun run --filter '*' test"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^2.4.14"
|
"@biomejs/biome": "^2.4.14",
|
||||||
|
"@types/xxhashjs": "^0.2.4",
|
||||||
|
"bun-types": "^1.3.13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { type ChildProcessWithoutNullStreams, spawn } from "node:child_process";
|
import { type ChildProcess, spawn } from "node:child_process";
|
||||||
import { mkdir, readdir, unlink, writeFile } from "node:fs/promises";
|
import { mkdir, readdir, unlink, writeFile } from "node:fs/promises";
|
||||||
import { createConnection } from "node:net";
|
import { createConnection } from "node:net";
|
||||||
import { join } from "node:path";
|
import { join } from "node:path";
|
||||||
@@ -23,7 +23,7 @@ function isProcessAlive(pid: number): boolean {
|
|||||||
|
|
||||||
async function waitForReadyLine(
|
async function waitForReadyLine(
|
||||||
childStdout: NodeJS.ReadableStream,
|
childStdout: NodeJS.ReadableStream,
|
||||||
child: ChildProcessWithoutNullStreams,
|
child: ChildProcess,
|
||||||
): Promise<Result<number, string>> {
|
): Promise<Result<number, string>> {
|
||||||
return await new Promise((resolve) => {
|
return await new Promise((resolve) => {
|
||||||
let buf = "";
|
let buf = "";
|
||||||
|
|||||||
@@ -14,7 +14,8 @@
|
|||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"composite": true,
|
"composite": true,
|
||||||
"outDir": "dist",
|
"outDir": "dist",
|
||||||
"rootDir": "src"
|
"rootDir": "src",
|
||||||
|
"types": ["bun-types"]
|
||||||
},
|
},
|
||||||
"references": [{ "path": "../workflow" }],
|
"references": [{ "path": "../workflow" }],
|
||||||
"include": ["src/**/*.ts"]
|
"include": ["src/**/*.ts"]
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -12,5 +12,8 @@
|
|||||||
"@uncaged/workflow": "workspace:*",
|
"@uncaged/workflow": "workspace:*",
|
||||||
"@uncaged/workflow-util-role": "workspace:*",
|
"@uncaged/workflow-util-role": "workspace:*",
|
||||||
"zod": "^4.0.0"
|
"zod": "^4.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^25.6.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"rootDir": "src",
|
"rootDir": "src",
|
||||||
"outDir": "dist",
|
"outDir": "dist",
|
||||||
"composite": true
|
"composite": true,
|
||||||
|
"types": ["bun-types"]
|
||||||
},
|
},
|
||||||
"include": ["src/**/*.ts"],
|
"include": ["src/**/*.ts"],
|
||||||
"references": [{ "path": "../workflow" }, { "path": "../workflow-util-role" }]
|
"references": [{ "path": "../workflow" }, { "path": "../workflow-util-role" }]
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -10,6 +10,17 @@ import type {
|
|||||||
Program,
|
Program,
|
||||||
VariableDeclaration,
|
VariableDeclaration,
|
||||||
} from "acorn";
|
} from "acorn";
|
||||||
|
|
||||||
|
/** Acorn Node with index-access for property traversal. */
|
||||||
|
type AcornNode = Node & { [key: string]: unknown };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Narrow an Acorn Node to a specific AST subtype after a `.type` guard.
|
||||||
|
* Avoids double-cast (`as unknown as T`) by going through AcornNode.
|
||||||
|
*/
|
||||||
|
function narrowNode<T extends Node>(node: Node): T {
|
||||||
|
return node as unknown as T;
|
||||||
|
}
|
||||||
import * as acorn from "acorn";
|
import * as acorn from "acorn";
|
||||||
|
|
||||||
import { err, ok, type Result } from "./result.js";
|
import { err, ok, type Result } from "./result.js";
|
||||||
@@ -55,7 +66,7 @@ function pushNestedAstNodes(value: unknown, out: Node[]): void {
|
|||||||
function collectChildNodes(node: Node): Node[] {
|
function collectChildNodes(node: Node): Node[] {
|
||||||
const children: Node[] = [];
|
const children: Node[] = [];
|
||||||
for (const key of Object.keys(node)) {
|
for (const key of Object.keys(node)) {
|
||||||
const val = (node as Record<string, unknown>)[key];
|
const val = (node as AcornNode)[key];
|
||||||
pushNestedAstNodes(val, children);
|
pushNestedAstNodes(val, children);
|
||||||
}
|
}
|
||||||
return children;
|
return children;
|
||||||
@@ -273,10 +284,10 @@ function descriptorExportExists(program: Program): boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function stringLiteralModuleSpecifier(src: Node): string | null {
|
function stringLiteralModuleSpecifier(src: Node): string | null {
|
||||||
if (src.type !== "Literal" || typeof src.value !== "string") {
|
if (src.type !== "Literal" || typeof (src as AcornNode).value !== "string") {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return src.value;
|
return (src as AcornNode).value as string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateImportDeclaration(node: ImportDeclaration): string | null {
|
function validateImportDeclaration(node: ImportDeclaration): string | null {
|
||||||
@@ -337,16 +348,16 @@ function bundleConstraintViolationForNode(node: Node): string | null {
|
|||||||
return "dynamic import() is not allowed in workflow bundles";
|
return "dynamic import() is not allowed in workflow bundles";
|
||||||
}
|
}
|
||||||
if (node.type === "ImportDeclaration") {
|
if (node.type === "ImportDeclaration") {
|
||||||
return validateImportDeclaration(node);
|
return validateImportDeclaration(narrowNode<ImportDeclaration>(node));
|
||||||
}
|
}
|
||||||
if (node.type === "ExportNamedDeclaration") {
|
if (node.type === "ExportNamedDeclaration") {
|
||||||
return validateExportNamedDeclaration(node);
|
return validateExportNamedDeclaration(narrowNode<ExportNamedDeclaration>(node));
|
||||||
}
|
}
|
||||||
if (node.type === "ExportAllDeclaration") {
|
if (node.type === "ExportAllDeclaration") {
|
||||||
return validateExportAllDeclaration(node);
|
return validateExportAllDeclaration(narrowNode<ExportAllDeclaration>(node));
|
||||||
}
|
}
|
||||||
if (node.type === "CallExpression") {
|
if (node.type === "CallExpression") {
|
||||||
return validateRequireCall(node);
|
return validateRequireCall(narrowNode<CallExpression>(node));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ export function createRoleModerator<M extends RoleMeta>(
|
|||||||
return { returnCode: 1, summary: `unknown role: ${next}` };
|
return { returnCode: 1, summary: `unknown role: ${next}` };
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await roleFn(ctx);
|
const result = await roleFn(ctx as unknown as ThreadContext);
|
||||||
const ts = Date.now();
|
const ts = Date.now();
|
||||||
const step = {
|
const step = {
|
||||||
role: next,
|
role: next,
|
||||||
|
|||||||
@@ -423,7 +423,7 @@ async function main(): Promise<void> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const server = createServer((socket) => {
|
const server = createServer((socket: Socket) => {
|
||||||
void (async () => {
|
void (async () => {
|
||||||
const line = await readLineFromSocket(socket);
|
const line = await readLineFromSocket(socket);
|
||||||
if (line === null) {
|
if (line === null) {
|
||||||
@@ -439,7 +439,7 @@ async function main(): Promise<void> {
|
|||||||
})();
|
})();
|
||||||
});
|
});
|
||||||
|
|
||||||
server.on("error", (errObj) => {
|
server.on("error", (errObj: Error) => {
|
||||||
bootLog("W8YK4NPX", `worker server error: ${errObj.message}`);
|
bootLog("W8YK4NPX", `worker server error: ${errObj.message}`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,7 +14,8 @@
|
|||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"composite": true,
|
"composite": true,
|
||||||
"outDir": "dist",
|
"outDir": "dist",
|
||||||
"rootDir": "src"
|
"rootDir": "src",
|
||||||
|
"types": ["bun-types"]
|
||||||
},
|
},
|
||||||
"include": ["src/**/*.ts", "xxhashjs.d.ts"]
|
"include": ["src/**/*.ts", "xxhashjs.d.ts"]
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
+2
-1
@@ -13,7 +13,8 @@
|
|||||||
"declarationMap": true,
|
"declarationMap": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"composite": true,
|
"composite": true,
|
||||||
"outDir": "dist"
|
"outDir": "dist",
|
||||||
|
"types": ["bun-types"]
|
||||||
},
|
},
|
||||||
"references": [
|
"references": [
|
||||||
{ "path": "packages/workflow" },
|
{ "path": "packages/workflow" },
|
||||||
|
|||||||
Reference in New Issue
Block a user