@poe-platform/safe-js 0.1.2 → 0.1.4
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/README.md +1 -1
- package/dist/compat/fs-core.d.ts +1 -0
- package/dist/compat/fs-core.js +1 -0
- package/dist/compat/fs-node.d.ts +1 -0
- package/dist/compat/fs-node.js +1 -0
- package/dist/compat/fs.d.ts +1 -0
- package/dist/compat/fs.js +1 -0
- package/dist/safe-js/chunks/{chunk-DC5B3GYM.js → chunk-4HHBSGDR.js} +12 -12
- package/dist/safe-js/chunks/{chunk-DC5B3GYM.js.map → chunk-4HHBSGDR.js.map} +1 -1
- package/dist/safe-js/cli.js +1 -3
- package/dist/safe-js/cli.js.map +1 -1
- package/dist/safe-js/index.js +1 -3
- package/dist/safe-js/index.js.map +1 -1
- package/dist/safe-js/modules/fs-config.d.ts +1 -1
- package/dist/safe-js/modules/fs.d.ts +1 -1
- package/package.json +15 -34
- package/dist/safe-fs/bridge/filesystem.d.ts +0 -88
- package/dist/safe-fs/bridge/index.d.ts +0 -6
- package/dist/safe-fs/bridge/types.d.ts +0 -75
- package/dist/safe-fs/config.d.ts +0 -15
- package/dist/safe-fs/config.node.d.ts +0 -2
- package/dist/safe-fs/contracts/errors.d.ts +0 -50
- package/dist/safe-fs/contracts/filesystem.d.ts +0 -96
- package/dist/safe-fs/contracts/index.d.ts +0 -4
- package/dist/safe-fs/contracts/io.d.ts +0 -8
- package/dist/safe-fs/contracts/path.d.ts +0 -8
- package/dist/safe-fs/contracts/portable-path.d.ts +0 -13
- package/dist/safe-fs/contracts/virtual-path.d.ts +0 -7
- package/dist/safe-fs/core.d.ts +0 -12
- package/dist/safe-fs/fs/memory/index.d.ts +0 -58
- package/dist/safe-fs/fs/mount/comparison.d.ts +0 -19
- package/dist/safe-fs/fs/mount/index.d.ts +0 -44
- package/dist/safe-fs/fs/overlay/index.d.ts +0 -73
- package/dist/safe-fs/fs/readonly/index.d.ts +0 -31
- package/dist/safe-fs/fs/real/index.d.ts +0 -76
- package/dist/safe-fs/fs/s3/filesystem.d.ts +0 -93
- package/dist/safe-fs/fs/s3/http/index.d.ts +0 -2
- package/dist/safe-fs/fs/s3/http/transport.d.ts +0 -3
- package/dist/safe-fs/fs/s3/http/types.d.ts +0 -30
- package/dist/safe-fs/fs/s3/index.d.ts +0 -6
- package/dist/safe-fs/fs/s3/mock.d.ts +0 -48
- package/dist/safe-fs/fs/s3/transport.d.ts +0 -103
- package/dist/safe-fs/fs/webdav/index.d.ts +0 -2
- package/dist/safe-fs/fs/webdav/webdav.d.ts +0 -101
- package/dist/safe-fs/index.d.ts +0 -14
- package/dist/safe-fs/node/filesystem.d.ts +0 -11
- package/dist/safe-fs/node/index.d.ts +0 -2
- package/dist/safe-fs/node-host.d.ts +0 -1
- package/dist/safe-fs/platform/browser.d.ts +0 -12
- package/dist/safe-fs/platform/node.d.ts +0 -13
- package/dist/safe-js/browser/chunks/chunk-QGN6DKT5.js +0 -4335
- package/dist/safe-js/browser/chunks/chunk-QGN6DKT5.js.map +0 -7
- package/dist/safe-js/browser/safe-fs-core.js +0 -67
- package/dist/safe-js/browser/safe-fs-core.js.map +0 -7
- package/dist/safe-js/browser/safe-fs.js +0 -67
- package/dist/safe-js/browser/safe-fs.js.map +0 -7
- package/dist/safe-js/chunks/chunk-2QRYPKQQ.js +0 -4315
- package/dist/safe-js/chunks/chunk-2QRYPKQQ.js.map +0 -7
- package/dist/safe-js/chunks/chunk-7M2SJPSZ.js +0 -2613
- package/dist/safe-js/chunks/chunk-7M2SJPSZ.js.map +0 -7
- package/dist/safe-js/safe-fs-core.js +0 -130
- package/dist/safe-js/safe-fs-core.js.map +0 -7
- package/dist/safe-js/safe-fs-node.js +0 -94
- package/dist/safe-js/safe-fs-node.js.map +0 -7
- package/dist/safe-js/safe-fs.js +0 -94
- package/dist/safe-js/safe-fs.js.map +0 -7
package/dist/safe-js/cli.js
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
resolveFsConfig,
|
|
23
23
|
splitFrontmatter,
|
|
24
24
|
withBrokenPipeGuard
|
|
25
|
-
} from "./chunks/chunk-
|
|
25
|
+
} from "./chunks/chunk-4HHBSGDR.js";
|
|
26
26
|
import {
|
|
27
27
|
Budget,
|
|
28
28
|
SandboxError,
|
|
@@ -35,8 +35,6 @@ import {
|
|
|
35
35
|
restore,
|
|
36
36
|
run
|
|
37
37
|
} from "./chunks/chunk-Z3D76J4U.js";
|
|
38
|
-
import "./chunks/chunk-7M2SJPSZ.js";
|
|
39
|
-
import "./chunks/chunk-2QRYPKQQ.js";
|
|
40
38
|
import "./chunks/chunk-4YIDX44G.js";
|
|
41
39
|
|
|
42
40
|
// packages/safe-js/src/cli.ts
|
package/dist/safe-js/cli.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli.ts"],
|
|
4
4
|
"sourcesContent": ["#!/usr/bin/env node\nimport { mkdir, readFile, realpath, stat, writeFile } from \"node:fs/promises\";\nimport path, { dirname, extname } from \"node:path\";\nimport { formatWithOptions } from \"node:util\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { hasOwnErrorCode } from \"./error-codes.js\";\nimport { formatInterpreterError } from \"./error/format.js\";\nimport { replaceErrorStack } from \"./error/shape.js\";\nimport { Budget, SandboxError } from \"./interp/budget.js\";\nimport { countLineBreaks, extractBlock, maskSource } from \"./loader/extract-block.js\";\nimport { splitFrontmatter } from \"./loader/frontmatter.js\";\nimport { lint, type Diagnostic, type Fix } from \"./lint.js\";\nimport { createLintModulesFromRuntimeRegistry } from \"./lint/runtime-modules.js\";\nimport { makeAgentModule } from \"./modules/agent.js\";\nimport { makeEnvModule, parseEnvConfig, type EnvModuleOptions } from \"./modules/env.js\";\nimport { makeFailModule } from \"./modules/fail.js\";\nimport { makeFsModule, type FsModuleOptions } from \"./modules/fs.js\";\nimport { parseFsConfig, resolveFsConfig } from \"./modules/fs-config.js\";\nimport { makeMcpModule } from \"./modules/mcp.js\";\nimport { parseMcpConfig, type McpModuleOptions } from \"./modules/mcp-transport.js\";\nimport { makeHarnessModule } from \"./modules/harness.js\";\nimport { makeLogModule, type LogModuleEntry } from \"./modules/log.js\";\nimport { makeMetricModule } from \"./modules/metric.js\";\nimport {\n createBrokenPipeState,\n createSafeOutputStream,\n withBrokenPipeGuard,\n type BrokenPipeState,\n type OutputStream\n} from \"./output-stream.js\";\nimport type { ModuleExports, ModuleRegistry } from \"./modules/registry.js\";\nimport { parseModule } from \"./parse/parser.js\";\nimport { restore, type SafeJSSnapshot } from \"./restore.js\";\nimport { run, type RunResult } from \"./run.js\";\nimport { dump, dumpCurrent } from \"./snapshot/dump.js\";\nimport { migrateSnapshotFile, type SnapshotMigrationFileOptions } from \"./migration-file.js\";\n\ntype CliStream = OutputStream;\n\ntype CliProcess = Pick<NodeJS.Process, \"off\" | \"on\">;\n\ntype FileStats = {\n isFile(): boolean;\n};\n\nexport type ReadMarkdownFile = (filepath: string, encoding: \"utf8\") => Promise<string>;\nexport type WriteMarkdownFile = (\n filepath: string,\n source: string,\n options: { encoding: \"utf8\" }\n) => Promise<void>;\n\nexport type RunCliOptions = {\n cwd?: string;\n env?: EnvModuleOptions;\n mcp?: McpModuleOptions;\n modulesFor?: (\n frontmatter: Record<string, unknown>,\n meta: HarnessMeta,\n streams: { stderr: CliStream; stdout: CliStream }\n ) => ModuleRegistry;\n process?: CliProcess;\n readFile?: ReadMarkdownFile;\n stat?: (filepath: string) => Promise<FileStats>;\n stdout?: CliStream;\n stderr?: CliStream;\n writeFile?: WriteMarkdownFile;\n};\n\ntype HarnessMeta = {\n filepath: string;\n kind: unknown;\n version: unknown;\n};\n\ntype ParsedArgs = {\n filepath?: string;\n fix: boolean;\n fs: boolean;\n fsRoot?: string;\n fsConfig?: string;\n envConfig?: string;\n mcpConfig?: string;\n dataSize?: number;\n maxSteps?: number;\n restorePath?: string;\n snapshotPath?: string;\n};\n\ntype LoadedSource = {\n sourceOffset: number;\n fixRanges?: readonly Fix[\"range\"][];\n executableSource: string;\n frontmatter: Record<string, unknown>;\n isRawScript: boolean;\n rawSource: string;\n};\n\ntype CliRuntime = {\n registry: ModuleRegistry;\n};\n\nconst EXIT_RUNTIME = 1;\nconst EXIT_PARSE = 2;\nconst EXIT_BUDGET = 3;\nconst EXIT_SIGINT = 130;\n\nexport async function runCli(\n argv: readonly string[],\n options: RunCliOptions = {}\n): Promise<number> {\n const brokenPipe = createBrokenPipeState();\n const stdout = createSafeOutputStream(options.stdout ?? process.stdout, brokenPipe);\n const stderr = createSafeOutputStream(options.stderr ?? process.stderr, brokenPipe);\n\n return withBrokenPipeGuard(\n [options.stdout ?? process.stdout, options.stderr ?? process.stderr],\n brokenPipe,\n async () => {\n try {\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n stdout.write(`${createUsage()}\\n`);\n return 0;\n }\n\n if (argv[0] === \"migrate\") {\n const result = await migrateSnapshotFile({\n ...parseMigrationArgs(argv.slice(1)),\n cwd: options.cwd ?? readCurrentWorkingDirectory()\n });\n stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return 0;\n }\n const parsed = parseArgs(argv);\n if (parsed.filepath === undefined) {\n stderr.write(`${createUsage()}\\n`);\n return brokenPipe.closed ? 0 : EXIT_RUNTIME;\n }\n\n const cwd = options.cwd ?? readCurrentWorkingDirectory();\n const filepath = path.resolve(cwd, parsed.filepath);\n const configuredFs =\n parsed.fsConfig === undefined\n ? undefined\n : await resolveFsConfig(\n parseFsConfig(\n await (options.readFile ?? readFile)(path.resolve(cwd, parsed.fsConfig), \"utf8\")\n )\n );\n await assertHarnessFile({\n displayPath: parsed.filepath,\n filepath,\n statFile: options.stat ?? stat\n });\n\n return await runScriptFile(filepath, parsed, {\n cwd,\n configuredFs,\n env: options.env,\n mcp: options.mcp,\n modulesFor: options.modulesFor,\n process: options.process ?? process,\n readFile: options.readFile ?? readFile,\n brokenPipe,\n stderr,\n stdout,\n writeFile: options.writeFile ?? writeFile\n });\n } catch (error) {\n if (brokenPipe.closed) {\n return 0;\n }\n stderr.write(`${readErrorMessage(error)}\\n`);\n return brokenPipe.closed\n ? 0\n : error instanceof CliExitError\n ? error.exitCode\n : exitCodeForError(error);\n }\n }\n );\n}\n\nfunction readCurrentWorkingDirectory(): string {\n try {\n return process.cwd();\n } catch (error) {\n throw new Error(`Unable to resolve current working directory: ${readErrorMessage(error)}`);\n }\n}\n\nfunction parseMigrationArgs(argv: readonly string[]): SnapshotMigrationFileOptions {\n const result: SnapshotMigrationFileOptions = { snapshotPath: \"\", sourcePath: \"\" };\n const paths = new Map<string, \"sourcePath\" | \"targetSourcePath\" | \"planPath\" | \"outputPath\">([\n [\"--from\", \"sourcePath\"],\n [\"--to\", \"targetSourcePath\"],\n [\"--plan\", \"planPath\"],\n [\"--output\", \"outputPath\"]\n ]);\n const seen = new Set<string>();\n for (let index = 0; index < argv.length; index += 1) {\n const argument = argv[index]!;\n if (!argument.startsWith(\"-\")) {\n if (result.snapshotPath.length > 0)\n throw new TypeError(\"Migration accepts exactly one snapshot path.\");\n result.snapshotPath = argument;\n continue;\n }\n if (seen.has(argument)) throw new TypeError(`Duplicate migration option: ${argument}`);\n seen.add(argument);\n if (argument === \"--inspect\") {\n result.inspect = true;\n continue;\n }\n if (argument === \"--dry-run\") {\n result.dryRun = true;\n continue;\n }\n const key = paths.get(argument);\n if (key === undefined) throw new TypeError(`Unknown migration option: ${argument}`);\n const value = argv[++index];\n if (value === undefined || value.startsWith(\"--\"))\n throw new TypeError(`${argument} requires a path.`);\n result[key] = value;\n }\n return result;\n}\n\nfunction parseArgs(argv: readonly string[]): ParsedArgs {\n const parsed: ParsedArgs = {\n fix: false,\n fs: false\n };\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index];\n\n if (arg === \"--fix\") {\n parsed.fix = true;\n continue;\n }\n\n if (arg === \"--fs\") {\n parsed.fs = true;\n continue;\n }\n\n if (arg === \"--fs-root\") {\n parsed.fsRoot = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--fs-config\") {\n if (parsed.fsConfig !== undefined) {\n throw new CliExitError(\"--fs-config may be specified only once.\", EXIT_RUNTIME);\n }\n const value = readFlagValue(argv, index, arg);\n if (value.trim().length === 0 || value.startsWith(\"--\")) {\n throw new CliExitError(\"--fs-config needs a JSON file path.\", EXIT_RUNTIME);\n }\n parsed.fsConfig = value;\n index += 1;\n continue;\n }\n\n if (arg === \"--mcp-config\") {\n parsed.mcpConfig = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--env-config\") {\n parsed.envConfig = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--snapshot\") {\n parsed.snapshotPath = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--restore\") {\n parsed.restorePath = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--max-steps\") {\n parsed.maxSteps = readPositiveInteger(readFlagValue(argv, index, arg), arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--data-size\") {\n parsed.dataSize = readPositiveInteger(readFlagValue(argv, index, arg), arg);\n index += 1;\n continue;\n }\n\n if (arg.startsWith(\"-\")) {\n throw new CliExitError(`Unknown flag: ${arg}`, EXIT_RUNTIME);\n }\n\n if (parsed.filepath !== undefined) {\n throw new CliExitError(`Unexpected argument: ${arg}`, EXIT_RUNTIME);\n }\n\n parsed.filepath = arg;\n }\n\n if (parsed.fsConfig !== undefined && (parsed.fs || parsed.fsRoot !== undefined)) {\n throw new CliExitError(\"--fs-config cannot be combined with --fs or --fs-root.\", EXIT_RUNTIME);\n }\n\n if (!parsed.fs && parsed.fsRoot !== undefined) {\n throw new CliExitError(\n \"--fs-root requires --fs. Pass --fs to give the script a filesystem confined to that root, or drop --fs-root.\",\n EXIT_RUNTIME\n );\n }\n\n return parsed;\n}\n\nfunction readFlagValue(argv: readonly string[], index: number, flag: string): string {\n const value = argv[index + 1];\n if (value === undefined || value.length === 0) {\n throw new CliExitError(`Missing value for ${flag}`, EXIT_RUNTIME);\n }\n\n return value;\n}\n\nfunction readPositiveInteger(value: string, flag: string): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliExitError(`${flag} must be a positive integer`, EXIT_RUNTIME);\n }\n\n return parsed;\n}\n\nasync function assertHarnessFile(input: {\n displayPath: string;\n filepath: string;\n statFile: (filepath: string) => Promise<FileStats>;\n}): Promise<void> {\n let stats: FileStats;\n try {\n stats = await input.statFile(input.filepath);\n } catch (error) {\n if (hasErrorCode(error, \"ENOENT\")) {\n throw new CliExitError(`File not found: ${input.displayPath}`, EXIT_RUNTIME);\n }\n\n throw error;\n }\n\n if (!stats.isFile()) {\n throw new CliExitError(`Harness path must point to a file: ${input.displayPath}`, EXIT_RUNTIME);\n }\n}\n\nasync function runScriptFile(\n filepath: string,\n parsed: ParsedArgs,\n options: {\n cwd: string;\n configuredFs: FsModuleOptions | undefined;\n env: EnvModuleOptions | undefined;\n mcp: McpModuleOptions | undefined;\n modulesFor: RunCliOptions[\"modulesFor\"];\n brokenPipe: BrokenPipeState;\n process: CliProcess;\n readFile: ReadMarkdownFile;\n stderr: CliStream;\n stdout: CliStream;\n writeFile: WriteMarkdownFile;\n }\n): Promise<number> {\n const loaded = loadExecutableSource(filepath, await options.readFile(filepath, \"utf8\"));\n const meta = {\n filepath,\n kind: loaded.frontmatter.kind,\n version: loaded.frontmatter.version\n };\n const runtime = createRuntime(loaded.frontmatter, meta, {\n fs: parsed.fs\n ? { root: path.resolve(options.cwd, parsed.fsRoot ?? dirname(filepath)) }\n : undefined,\n modulesFor: options.modulesFor,\n stderr: options.stderr,\n stdout: options.stdout\n });\n if (options.configuredFs !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"fs\")) throw new TypeError(\"fs is already registered by modulesFor.\");\n registry.set(\"fs\", toModuleExports(makeFsModule(options.configuredFs)));\n runtime.registry = registry;\n }\n let env = options.env;\n if (parsed.envConfig !== undefined) {\n if (env !== undefined)\n throw new TypeError(\"Pass environment options or --env-config, not both.\");\n const configPath = path.resolve(options.cwd, parsed.envConfig);\n env = parseEnvConfig(await options.readFile(configPath, \"utf8\"));\n }\n if (env !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"env\"))\n throw new TypeError(\"Environment is already registered by modulesFor.\");\n registry.set(\"env\", makeEnvModule(env));\n runtime.registry = registry;\n }\n let mcp = options.mcp;\n if (parsed.mcpConfig !== undefined) {\n if (mcp !== undefined) throw new TypeError(\"Pass MCP options or --mcp-config, not both.\");\n const configPath = path.resolve(options.cwd, parsed.mcpConfig);\n mcp = parseMcpConfig(await options.readFile(configPath, \"utf8\"), dirname(configPath));\n }\n if (mcp !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"mcp\")) throw new TypeError(\"MCP is already registered by modulesFor.\");\n registry.set(\"mcp\", makeMcpModule(mcp));\n runtime.registry = registry;\n }\n const modules = excludeHarnessModule(runtime.registry, loaded.isRawScript);\n let executableSource = loaded.executableSource;\n const lintResult = parsed.fix\n ? lint(executableSource, {\n allowedExportNames: [\"schema\"],\n filename: filepath,\n fix: true,\n fixRanges: loaded.fixRanges,\n frontmatterFields: Object.keys(loaded.frontmatter),\n modules: createLintModulesFromRuntimeRegistry(modules)\n })\n : lint(executableSource, {\n allowedExportNames: [\"schema\"],\n filename: filepath,\n frontmatterFields: Object.keys(loaded.frontmatter),\n modules: createLintModulesFromRuntimeRegistry(modules)\n });\n const diagnostics = Array.isArray(lintResult) ? lintResult : lintResult.diagnostics;\n\n if (!Array.isArray(lintResult)) {\n executableSource = lintResult.fixed;\n if (lintResult.fixed !== loaded.executableSource) {\n await options.writeFile(\n filepath,\n replaceExecutableSource(loaded.rawSource, loaded, lintResult.fixes),\n {\n encoding: \"utf8\"\n }\n );\n }\n }\n\n const lintErrors = diagnostics.filter((diagnostic) => diagnostic.severity === \"error\");\n if (lintErrors.length > 0) {\n options.stderr.write(`Lint failed:\\n${formatDiagnostics(lintErrors)}\\n`);\n if (options.brokenPipe.closed) {\n return 0;\n }\n return lintErrors.some((diagnostic) => diagnostic.code === \"AS001\") ? EXIT_PARSE : EXIT_RUNTIME;\n }\n\n const lintWarnings = diagnostics.filter((diagnostic) => diagnostic.severity === \"warning\");\n if (lintWarnings.length > 0) {\n options.stderr.write(`Lint warnings:\\n${formatDiagnostics(lintWarnings)}\\n`);\n if (options.brokenPipe.closed) {\n return 0;\n }\n }\n\n const snapshot = await readRestoreSnapshot(parsed.restorePath, options);\n if (snapshot !== undefined) {\n restore(snapshot, { source: executableSource });\n }\n\n const abortController = new AbortController();\n let interrupted = false;\n let runPromise: Promise<RunResult> | undefined;\n let signalSnapshotWrite: Promise<void> | undefined;\n const onSigint = () => {\n interrupted = true;\n abortController.abort(createAbortError());\n options.stderr.write(\"Interrupted by SIGINT\\n\");\n\n if (parsed.snapshotPath !== undefined && runPromise !== undefined) {\n signalSnapshotWrite = writeCurrentSnapshot(runPromise, parsed.snapshotPath, options);\n }\n };\n\n options.process.on(\"SIGINT\", onSigint);\n try {\n runPromise = run(executableSource, {\n budget:\n parsed.maxSteps === undefined && parsed.dataSize === undefined\n ? undefined\n : new Budget({ dataSize: parsed.dataSize, maxSteps: parsed.maxSteps }),\n entryPointArgs: hasDefaultExport(executableSource, filepath) ? [] : undefined,\n filename: filepath,\n modules,\n signal: abortController.signal,\n sink: createConsoleSink(options.stdout, options.stderr),\n snapshot\n });\n const result = await runPromise;\n await signalSnapshotWrite;\n\n if (options.brokenPipe.closed) {\n return 0;\n }\n\n if (parsed.snapshotPath !== undefined) {\n await writeSnapshot(parsed.snapshotPath, await dump(result), options);\n }\n\n if (!result.ok) {\n options.stderr.write(\n `${formatInterpreterError(result.error, {\n filename: filepath,\n source: executableSource\n })}\\n`\n );\n if (options.brokenPipe.closed) {\n return 0;\n }\n return interrupted ? EXIT_SIGINT : exitCodeForError(result.error);\n }\n\n options.stdout.write(`${JSON.stringify({ ok: true, returnValue: result.returnValue })}\\n`);\n return options.brokenPipe.closed ? 0 : interrupted ? EXIT_SIGINT : 0;\n } catch (error) {\n await signalSnapshotWrite;\n if (parsed.snapshotPath !== undefined && runPromise !== undefined) {\n try {\n await writeSnapshot(\n parsed.snapshotPath,\n await dump(runPromise, { onFailure: \"checkpoint\" }),\n options\n );\n } catch (snapshotError) {\n options.stderr.write(\n `Failed to write recovery snapshot at ${parsed.snapshotPath}: ${readErrorMessage(snapshotError)}. Any existing snapshot may be stale.\\n`\n );\n }\n }\n if (options.brokenPipe.closed) {\n return 0;\n }\n options.stderr.write(\n `${formatInterpreterError(error, {\n filename: filepath,\n source: executableSource\n })}\\n`\n );\n return options.brokenPipe.closed ? 0 : interrupted ? EXIT_SIGINT : exitCodeForError(error);\n } finally {\n options.process.off(\"SIGINT\", onSigint);\n }\n}\n\nfunction loadExecutableSource(filepath: string, rawSource: string): LoadedSource {\n const source = stripByteOrderMark(rawSource);\n const byteOrderMarkLength = rawSource.length - source.length;\n\n if (isRawScriptExtension(extname(filepath))) {\n return {\n sourceOffset: byteOrderMarkLength,\n executableSource: source,\n frontmatter: {},\n isRawScript: true,\n rawSource\n };\n }\n\n const { frontmatter, body } = splitFrontmatter(source);\n const bodyStartOffset = rawSource.length - body.length;\n const executableBlock = extractBlock(body, countLineBreaks(rawSource, 0, bodyStartOffset) + 1);\n\n return {\n sourceOffset: 0,\n fixRanges: executableBlock.ranges.map(([start, end]) => [\n bodyStartOffset + start,\n bodyStartOffset + end\n ]),\n executableSource:\n maskSource(rawSource.slice(0, bodyStartOffset + executableBlock.startOffset)) +\n executableBlock.source,\n frontmatter,\n isRawScript: false,\n rawSource\n };\n}\n\nfunction isRawScriptExtension(extension: string): boolean {\n return extension === \".safejs\" || extension === \".ajs\";\n}\n\nfunction replaceExecutableSource(\n source: string,\n loaded: LoadedSource,\n fixes: readonly Fix[]\n): string {\n return fixes.reduce(\n (result, fix) =>\n `${result.slice(0, loaded.sourceOffset + fix.range[0])}${fix.replacement}${result.slice(loaded.sourceOffset + fix.range[1])}`,\n source\n );\n}\n\nfunction createRuntime(\n frontmatter: Record<string, unknown>,\n meta: HarnessMeta,\n options: {\n fs: FsModuleOptions | undefined;\n modulesFor: RunCliOptions[\"modulesFor\"];\n stderr: CliStream;\n stdout: CliStream;\n }\n): CliRuntime {\n if (options.modulesFor !== undefined) {\n return {\n registry: options.modulesFor(frontmatter, meta, {\n stderr: options.stderr,\n stdout: options.stdout\n })\n };\n }\n\n const state = {\n metricCalls: new Map<string, number>(),\n spawnCount: 0\n };\n const harness = makeHarnessModule(frontmatter, meta);\n const agent = makeAgentModule(async (input) => {\n state.spawnCount += 1;\n\n return {\n exitCode: 0,\n stdout: \"\",\n stderr: \"\",\n summary: `${input.agent} handled ${summarizePrompt(input.prompt)}`,\n durationMs: 25 * state.spawnCount\n };\n });\n const log = makeLogModule((entry) => {\n const normalized = normalizeLogEntry(entry);\n const stream = normalized.type === \"error\" ? options.stderr : options.stdout;\n stream.write(`${JSON.stringify(normalized)}\\n`);\n });\n const metric = makeMetricModule(async (scriptName) => `${readMetricScore(scriptName, state)}\\n`);\n\n return {\n registry: {\n agent: toModuleExports(agent),\n fail: toModuleExports(new Map([[\"default\", makeFailModule().default]])),\n // The one module here that is not a stub, so it is registered only when asked for.\n ...(options.fs === undefined ? {} : { fs: toModuleExports(makeFsModule(options.fs)) }),\n harness: toModuleExports(harness),\n log: toModuleExports(log),\n metric: toModuleExports(metric)\n }\n };\n}\n\nasync function readRestoreSnapshot(\n restorePath: string | undefined,\n options: {\n cwd: string;\n readFile: ReadMarkdownFile;\n }\n): Promise<SafeJSSnapshot | undefined> {\n if (restorePath === undefined) {\n return undefined;\n }\n\n const snapshotPath = path.resolve(options.cwd, restorePath);\n let rawSnapshot: string;\n try {\n rawSnapshot = await options.readFile(snapshotPath, \"utf8\");\n } catch (error) {\n if (hasErrorCode(error, \"ENOENT\")) {\n throw new CliExitError(`Snapshot not found: ${restorePath}`, EXIT_RUNTIME);\n }\n\n throw error;\n }\n\n try {\n return JSON.parse(rawSnapshot) as SafeJSSnapshot;\n } catch (error) {\n throw new Error(`Failed to parse snapshot at ${restorePath}: ${readErrorMessage(error)}`);\n }\n}\n\nasync function writeCurrentSnapshot(\n result: PromiseLike<RunResult>,\n snapshotPath: string,\n options: {\n cwd: string;\n stderr: CliStream;\n writeFile: WriteMarkdownFile;\n }\n): Promise<void> {\n try {\n await writeSnapshot(snapshotPath, await dumpCurrent(result), options);\n } catch (error) {\n options.stderr.write(\n `Failed to write snapshot at ${snapshotPath}: ${readErrorMessage(error)}\\n`\n );\n }\n}\n\nasync function writeSnapshot(\n snapshotPath: string,\n content: string,\n options: {\n cwd: string;\n writeFile: WriteMarkdownFile;\n }\n): Promise<void> {\n const resolvedPath = path.resolve(options.cwd, snapshotPath);\n await mkdir(dirname(resolvedPath), { recursive: true });\n await options.writeFile(resolvedPath, content, { encoding: \"utf8\" });\n}\n\nfunction createConsoleSink(\n stdout: CliStream,\n stderr: CliStream\n): {\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n} {\n return {\n error(...args) {\n stderr.write(`${formatConsoleArgs(args)}\\n`);\n },\n log(...args) {\n stdout.write(`${formatConsoleArgs(args)}\\n`);\n }\n };\n}\n\nfunction formatConsoleArgs(args: readonly unknown[]): string {\n return formatWithOptions({ colors: false, depth: 4 }, ...args);\n}\n\nfunction createUsage(): string {\n return [\n \"Usage: poe-safe-js [options] <script.md|script.safejs|script.ajs>\",\n \" poe-safe-js migrate <checkpoint.json> --from <original.ajs> --inspect\",\n \" poe-safe-js migrate <checkpoint.json> --from <original.ajs> --to <continuation.ajs>\",\n \" --plan <migration.json> --output <new-checkpoint.json> [--dry-run]\",\n \"\",\n \"Compatibility alias: poe-safejs\",\n \"\",\n \"Options:\",\n \" --fix apply lint fixes before running\",\n \" --fs register the fs module: a real filesystem, unlike the agent\",\n \" and metric stubs this runner bundles\",\n \" --fs-root <path> directory --fs confines the script to (default: the script's\",\n \" directory)\",\n \" --fs-config <path> configure shared filesystem access from JSON (Node only)\",\n \" --mcp-config <path> register named MCP servers from an explicit JSON config\",\n \" --env-config <path> grant environment reads from an explicit JSON config\",\n \" --snapshot <path> write success/failure state; best-effort snapshot on SIGINT\",\n \" --restore <path> restore from a snapshot before running\",\n \" --max-steps <n> cap interpreter step budget\",\n \" --data-size <n> cap retained sandbox data units\",\n \" -h, --help print this help\",\n \"\",\n \"Exit codes:\",\n \" 0 success\",\n \" 1 runtime, usage, file, or restore error\",\n \" 2 parse error\",\n \" 3 budget exceeded\",\n \" 130 interrupted by SIGINT\"\n ].join(\"\\n\");\n}\n\nfunction formatDiagnostics(diagnostics: readonly Diagnostic[]): string {\n return diagnostics\n .map(\n (diagnostic) =>\n `${diagnostic.filename}:${diagnostic.line}:${diagnostic.column} ${diagnostic.code} ${diagnostic.message}`\n )\n .join(\"\\n\");\n}\n\nfunction exitCodeForError(error: unknown): number {\n if (error instanceof SandboxError && error.code === \"budgetExceeded\") {\n return EXIT_BUDGET;\n }\n\n if (isParseError(error)) {\n return EXIT_PARSE;\n }\n\n return EXIT_RUNTIME;\n}\n\nfunction isParseError(error: unknown): boolean {\n return error instanceof Error && error.name === \"ParseError\";\n}\n\nfunction hasDefaultExport(source: string, filename: string): boolean {\n return parseModule(source, filename).body.some(\n (statement) => statement.type === \"ExportDefaultDeclaration\"\n );\n}\n\nfunction excludeHarnessModule(modules: ModuleRegistry, isRawScript: boolean): ModuleRegistry {\n if (!isRawScript) {\n return modules;\n }\n\n if (modules instanceof Map) {\n const rawModules = new Map(modules);\n rawModules.delete(\"harness\");\n return rawModules;\n }\n\n const rawModules = Object.create(null) as Record<string, ModuleExports>;\n\n for (const [moduleName, moduleExports] of Object.entries(modules)) {\n if (moduleName !== \"harness\") {\n rawModules[moduleName] = moduleExports;\n }\n }\n\n return rawModules;\n}\n\nfunction stripByteOrderMark(source: string): string {\n return source.startsWith(\"\\uFEFF\") ? source.slice(1) : source;\n}\n\nfunction normalizeLogEntry(entry: LogModuleEntry): LogModuleEntry {\n return {\n ...entry,\n ts: \"2026-04-29T00:00:00.000Z\"\n };\n}\n\nfunction summarizePrompt(prompt: string): string {\n const normalizedPrompt = prompt.trim().replaceAll(\"\\n\", \" \");\n return normalizedPrompt.length <= 48 ? normalizedPrompt : `${normalizedPrompt.slice(0, 45)}...`;\n}\n\nfunction readMetricScore(\n scriptName: string,\n state: {\n metricCalls: Map<string, number>;\n }\n): number {\n const callCount = (state.metricCalls.get(scriptName) ?? 0) + 1;\n state.metricCalls.set(scriptName, callCount);\n\n if (scriptName === \"tests\" && callCount === 1) {\n return 10;\n }\n\n if (scriptName === \"tests\" && callCount === 2) {\n return 9;\n }\n\n return 9 + callCount;\n}\n\nfunction toModuleExports(value: unknown): ModuleExports {\n return value as ModuleExports;\n}\n\nfunction createAbortError(): Error {\n if (typeof DOMException === \"function\") {\n const error = new DOMException(\"This operation was aborted\", \"AbortError\");\n replaceErrorStack(error);\n return error;\n }\n\n const error = new Error(\"This operation was aborted\");\n error.name = \"AbortError\";\n replaceErrorStack(error);\n return error;\n}\n\nfunction hasErrorCode(error: unknown, code: string): boolean {\n return hasOwnErrorCode(error, code);\n}\n\nfunction readErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n}\n\nclass CliExitError extends Error {\n readonly exitCode: number;\n\n constructor(message: string, exitCode: number) {\n super(message);\n this.name = \"CliExitError\";\n this.exitCode = exitCode;\n }\n}\n\nasync function isDirectExecution(entryPoint: string | undefined): Promise<boolean> {\n if (typeof entryPoint !== \"string\" || entryPoint.length === 0) {\n return false;\n }\n\n try {\n const [resolvedEntryPoint, resolvedModule] = await Promise.all([\n realpath(path.resolve(entryPoint)),\n realpath(fileURLToPath(import.meta.url))\n ]);\n return resolvedEntryPoint === resolvedModule;\n } catch {\n return false;\n }\n}\n\nif (await isDirectExecution(process.argv[1])) {\n process.exitCode = await runCli(process.argv.slice(2));\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["rawModules", "error"]
|
|
7
7
|
}
|
package/dist/safe-js/index.js
CHANGED
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
runWithSpawnUsageAccumulator,
|
|
27
27
|
splitFrontmatter,
|
|
28
28
|
supportsSpawnMode
|
|
29
|
-
} from "./chunks/chunk-
|
|
29
|
+
} from "./chunks/chunk-4HHBSGDR.js";
|
|
30
30
|
import {
|
|
31
31
|
Budget,
|
|
32
32
|
FileSnapshotBackend,
|
|
@@ -49,8 +49,6 @@ import {
|
|
|
49
49
|
restore,
|
|
50
50
|
run
|
|
51
51
|
} from "./chunks/chunk-Z3D76J4U.js";
|
|
52
|
-
import "./chunks/chunk-7M2SJPSZ.js";
|
|
53
|
-
import "./chunks/chunk-2QRYPKQQ.js";
|
|
54
52
|
import "./chunks/chunk-4YIDX44G.js";
|
|
55
53
|
|
|
56
54
|
// packages/safe-js/src/parse.ts
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/parse.ts", "../src/runner/run-harness.ts", "../src/loader/find-exported.ts", "../src/modules/time.ts", "../src/index.ts"],
|
|
4
4
|
"sourcesContent": ["import { parse as parseInternal, type ParseResult as ParsedNode } from \"./parse/parser.js\";\n\nexport { DisallowedSyntaxError } from \"./parse/parser.js\";\nexport const parse: (source: string, filename?: string) => ParsedNode = parseInternal;\nexport type {\n ArrayPattern,\n ArrayExpression,\n ArrowFunctionExpression,\n AssignmentExpression,\n AssignmentPattern,\n AssignmentProperty,\n AwaitExpression,\n BinaryExpression,\n BlockStatement,\n BooleanLiteral,\n BreakStatement,\n CallExpression,\n CatchClause,\n ConditionalExpression,\n ContinueStatement,\n DoWhileStatement,\n EmptyStatement,\n Expression,\n ExpressionStatement,\n ExportDefaultDeclaration,\n ExportNamedDeclaration,\n ImportDeclaration,\n ImportDefaultSpecifier,\n ImportNamespaceSpecifier,\n ImportSpecifier,\n ForInStatement,\n ForOfStatement,\n ForStatement,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n IfStatement,\n LogicalExpression,\n MemberExpression,\n MetaProperty,\n NewExpression,\n NullLiteral,\n NumericLiteral,\n ObjectExpression,\n ObjectPattern,\n ParseResult,\n PatternTarget,\n Property,\n RegexLiteral,\n RestElement,\n ReturnStatement,\n SequenceExpression,\n SourceSpan,\n SpreadElement,\n Statement,\n StringLiteral,\n SwitchCase,\n SwitchStatement,\n TaggedTemplateExpression,\n TemplateElement,\n TemplateLiteral,\n ThisExpression,\n ThrowStatement,\n TryStatement,\n UnaryExpression,\n UndefinedLiteral,\n UpdateExpression,\n UpdateTarget,\n VariableDeclaration,\n VariableDeclarationKind,\n VariableDeclarator,\n WhileStatement\n} from \"./parse/parser.js\";\n", "import { readFile, stat } from \"node:fs/promises\";\nimport { extname } from \"node:path\";\n\nimport { supportsSpawnMode } from \"@poe-code/agent-spawn/configs\";\nimport { SPAWN_MODES, type SpawnMode } from \"@poe-code/agent-spawn/types\";\nimport { hasOwnErrorCode } from \"../error-codes.js\";\nimport { countLineBreaks, extractBlock, maskSource } from \"../loader/extract-block.js\";\nimport { splitFrontmatter } from \"../loader/frontmatter.js\";\nimport { lint, type Diagnostic } from \"../lint.js\";\nimport { createLintModulesFromRuntimeRegistry } from \"../lint/runtime-modules.js\";\nimport type { ModuleExports, ModuleRegistry } from \"../modules/registry.js\";\nimport type { OtelSink } from \"../observability/otel.js\";\nimport { parseModule } from \"../parse/parser.js\";\nimport { run, type RunOptions, type RunResult } from \"../run.js\";\nimport type { SnapshotBackend } from \"../snapshot/backend.js\";\n\ntype HarnessMeta = {\n filepath: string;\n kind: unknown;\n version: unknown;\n};\n\nexport type RunHarnessOptions = {\n budget?: RunOptions[\"budget\"];\n modulesFor: (frontmatter: Record<string, unknown>, meta: HarnessMeta) => ModuleRegistry;\n otelSink?: OtelSink;\n signal?: AbortSignal;\n snapshotBackend?: SnapshotBackend;\n snapshotIntervalMs?: number;\n snapshotPath?: string;\n};\n\nexport type RunHarnessExecutionErrorResult = {\n aborted?: true;\n error: unknown;\n ok: false;\n};\n\nexport type RunHarnessResult = RunResult | RunHarnessExecutionErrorResult;\n\nfunction getOwnEntry(record: Record<string, unknown>, key: string): unknown {\n return Object.prototype.hasOwnProperty.call(record, key) ? record[key] : undefined;\n}\n\nfunction createHarnessMeta(filepath: string, frontmatter: Record<string, unknown>): HarnessMeta {\n return {\n filepath,\n kind: getOwnEntry(frontmatter, \"kind\"),\n version: getOwnEntry(frontmatter, \"version\")\n };\n}\n\nfunction assertFrontmatterAgentModes(frontmatter: Record<string, unknown>): void {\n const agents = getOwnEntry(frontmatter, \"agents\");\n if (typeof agents !== \"object\" || agents === null || Array.isArray(agents)) {\n return;\n }\n\n for (const [name, definition] of Object.entries(agents)) {\n if (typeof definition !== \"object\" || definition === null || Array.isArray(definition)) {\n continue;\n }\n\n const record = definition as Record<string, unknown>;\n const agent = getOwnEntry(record, \"agent\");\n const mode = getOwnEntry(record, \"mode\");\n if (typeof agent !== \"string\" || typeof mode !== \"string\") {\n continue;\n }\n\n // Malformed mode strings are reported by the agent module's own validation.\n if (!SPAWN_MODES.includes(mode as SpawnMode)) {\n continue;\n }\n\n if (!supportsSpawnMode(agent, mode as SpawnMode)) {\n throw new Error(`Harness agent \"${name}\": agent \"${agent}\" does not support mode \"${mode}\".`);\n }\n }\n}\n\nexport class LintError extends Error {\n readonly diagnostics: readonly Diagnostic[];\n\n constructor(diagnostics: readonly Diagnostic[]) {\n super(formatLintErrorMessage(diagnostics));\n this.name = \"LintError\";\n this.diagnostics = diagnostics;\n }\n}\n\nexport async function runHarness(\n filepath: string,\n options: RunHarnessOptions\n): Promise<RunHarnessResult> {\n const rawSource = await readHarnessFile(filepath);\n const { executableSource, frontmatter, isRawScript } = loadExecutableSource(filepath, rawSource);\n assertFrontmatterAgentModes(frontmatter);\n const meta = createHarnessMeta(filepath, frontmatter);\n const modules = excludeHarnessModule(options.modulesFor(frontmatter, meta), isRawScript);\n const diagnostics = lint(executableSource, {\n filename: filepath,\n modules: createLintModulesFromRuntimeRegistry(modules)\n });\n const lintErrors = diagnostics.filter((diagnostic) => diagnostic.severity === \"error\");\n\n if (lintErrors.length > 0) {\n throw new LintError(lintErrors);\n }\n\n return runHarnessSource(executableSource, {\n budget: options.budget,\n entryPointArgs: hasDefaultExport(executableSource, filepath) ? [] : undefined,\n filename: filepath,\n modules,\n otelSink: options.otelSink,\n signal: options.signal,\n snapshotBackend: options.snapshotBackend,\n snapshotIntervalMs: options.snapshotIntervalMs,\n snapshotPath: options.snapshotPath\n });\n}\n\nexport async function runHarnessPair(\n filepath: string,\n options: RunHarnessOptions\n): Promise<RunHarnessResult> {\n const pair = resolveHarnessPair(filepath);\n const [rawMarkdown, rawScript] = await Promise.all([\n readHarnessFile(pair.markdownPath),\n readHarnessFile(pair.scriptPath)\n ]);\n const { frontmatter, body } = splitFrontmatter(stripByteOrderMark(rawMarkdown));\n assertFrontmatterAgentModes(frontmatter);\n const executableSource = stripByteOrderMark(rawScript);\n const meta = createHarnessMeta(pair.markdownPath, frontmatter);\n const modules = options.modulesFor(frontmatter, meta);\n const diagnostics = lint(executableSource, {\n allowedExportNames: [\"schema\"],\n defaultExport: {\n parameters: [\"frontmatter\"],\n required: true\n },\n filename: pair.scriptPath,\n frontmatterFields: Object.keys(frontmatter),\n modules: createLintModulesFromRuntimeRegistry(modules)\n });\n const lintErrors = diagnostics.filter((diagnostic) => diagnostic.severity === \"error\");\n\n if (lintErrors.length > 0) {\n throw new LintError(lintErrors);\n }\n\n return runHarnessSource(executableSource, {\n budget: options.budget,\n entryPointArgs: [frontmatter],\n filename: pair.scriptPath,\n importMeta: {\n body,\n filepath: pair.markdownPath,\n kind: meta.kind,\n version: meta.version\n },\n modules,\n otelSink: options.otelSink,\n signal: options.signal,\n snapshotBackend: options.snapshotBackend,\n snapshotIntervalMs: options.snapshotIntervalMs,\n snapshotPath: options.snapshotPath\n });\n}\n\nasync function readHarnessFile(filepath: string): Promise<string> {\n try {\n const stats = await stat(filepath);\n if (!stats.isFile()) {\n throw new Error(`Harness path must point to a file: ${filepath}`);\n }\n\n return await readFile(filepath, \"utf8\");\n } catch (error) {\n if (hasOwnErrorCode(error, \"ENOENT\") || hasOwnErrorCode(error, \"ENOTDIR\")) {\n throw new Error(`Harness file not found: ${filepath}`);\n }\n\n throw error;\n }\n}\n\nfunction loadExecutableSource(\n filepath: string,\n source: string\n): {\n executableSource: string;\n frontmatter: Record<string, unknown>;\n isRawScript: boolean;\n} {\n if (isRawScriptPath(filepath)) {\n const executableSource = stripByteOrderMark(source);\n if (executableSource.length === 0) {\n throw new Error(`No code block found in empty harness file: ${filepath}`);\n }\n\n return {\n executableSource,\n frontmatter: {},\n isRawScript: true\n };\n }\n\n const { frontmatter, body } = splitFrontmatter(source);\n if (source.length === 0 || body.trim().length === 0) {\n throw new Error(`No code block found in empty harness file: ${filepath}`);\n }\n\n const bodyStartOffset = source.length - body.length;\n const { source: executableBlock, startOffset } = extractBlock(\n body,\n countLineBreaks(source, 0, bodyStartOffset) + 1\n );\n return {\n executableSource:\n maskSource(source.slice(0, bodyStartOffset + startOffset)) + stripHashbang(executableBlock),\n frontmatter,\n isRawScript: false\n };\n}\n\nfunction resolveHarnessPair(filepath: string): { markdownPath: string; scriptPath: string } {\n const extension = extname(filepath);\n const basename = extension.length === 0 ? filepath : filepath.slice(0, -extension.length);\n\n if (isRawScriptExtension(extension)) {\n return {\n markdownPath: `${basename}.md`,\n scriptPath: filepath\n };\n }\n\n return {\n markdownPath: filepath,\n scriptPath: `${basename}.ajs`\n };\n}\n\nfunction isRawScriptPath(filepath: string): boolean {\n return isRawScriptExtension(extname(filepath));\n}\n\nfunction isRawScriptExtension(extension: string): boolean {\n return extension === \".safejs\" || extension === \".ajs\";\n}\n\nasync function runHarnessSource(\n executableSource: string,\n options: Parameters<typeof run>[1]\n): Promise<RunHarnessResult> {\n try {\n return await run(executableSource, options);\n } catch (error) {\n if (isSetupError(error)) {\n throw error;\n }\n\n return {\n ...(isAbortError(error) ? { aborted: true as const } : {}),\n error,\n ok: false\n };\n }\n}\n\nfunction isSetupError(error: unknown): boolean {\n return error instanceof Error && error.name === \"ParseError\";\n}\n\nfunction isAbortError(error: unknown): boolean {\n if (error instanceof Error) {\n return error.name === \"AbortError\";\n }\n\n return (\n typeof error === \"object\" &&\n error !== null &&\n Object.prototype.hasOwnProperty.call(error, \"name\") &&\n (error as { name?: unknown }).name === \"AbortError\"\n );\n}\n\nfunction hasDefaultExport(source: string, filename: string): boolean {\n return parseModule(source, filename).body.some(\n (statement) => statement.type === \"ExportDefaultDeclaration\"\n );\n}\n\nfunction excludeHarnessModule(modules: ModuleRegistry, isRawScript: boolean): ModuleRegistry {\n if (!isRawScript) {\n return modules;\n }\n\n if (modules instanceof Map) {\n const rawModules = new Map(modules);\n rawModules.delete(\"harness\");\n return rawModules;\n }\n\n const rawModules: Record<string, ModuleExports> = {};\n\n for (const [moduleName, moduleExports] of Object.entries(modules)) {\n if (moduleName !== \"harness\") {\n rawModules[moduleName] = moduleExports;\n }\n }\n\n return rawModules;\n}\n\nfunction stripByteOrderMark(source: string): string {\n return source.startsWith(\"\\uFEFF\") ? source.slice(1) : source;\n}\n\nfunction stripHashbang(source: string): string {\n if (!source.startsWith(\"#!\")) {\n return source;\n }\n\n let end = 2;\n while (end < source.length && source[end] !== \"\\n\" && source[end] !== \"\\r\") end += 1;\n return `${\" \".repeat(end)}${source.slice(end)}`;\n}\n\nfunction formatLintErrorMessage(diagnostics: readonly Diagnostic[]): string {\n if (diagnostics.length === 0) {\n return \"Script lint failed.\";\n }\n\n return diagnostics\n .map(\n (diagnostic) =>\n `${diagnostic.filename}:${diagnostic.line}:${diagnostic.column} ${diagnostic.code} ${diagnostic.message}`\n )\n .join(\"\\n\");\n}\n", "import type { Expression, Module } from \"../parse/parser.js\";\n\nexport function findExportedConstInitializer(module: Module, name: string): Expression | undefined {\n for (const statement of module.body) {\n if (statement.type === \"ExportDefaultDeclaration\") {\n if (name === \"default\") {\n return statement.declaration;\n }\n\n continue;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = statement.declaration;\n if (declaration.kind !== \"const\") {\n throw new Error(`Exported '${name}' must be declared with const.`);\n }\n\n if (declaration.declarations.length !== 1) {\n throw new Error(\"Exported const declarations must contain exactly one declarator.\");\n }\n\n const declarator = declaration.declarations[0]!;\n if (declarator.id.type !== \"Identifier\") {\n throw new Error(\"Destructured exported const bindings are not supported.\");\n }\n\n if (declarator.id.name !== name) {\n continue;\n }\n\n if (declarator.init === undefined) {\n throw new Error(`Exported const '${name}' must have an initializer.`);\n }\n\n return declarator.init;\n }\n\n return undefined;\n}\n", "import { webcrypto as crypto } from \"node:crypto\";\n\nimport { createSeededRandom } from \"../interp/globals/math.js\";\n\nexport type TimeModuleOptions = {\n now?: () => number;\n random?: () => number;\n seed?: number;\n signal?: AbortSignal;\n};\n\nexport function makeTimeModule(options: TimeModuleOptions = {}): {\n random: () => number;\n now: () => number;\n sleep: (ms: number) => Promise<void>;\n uuid: () => string;\n} {\n const hasDeterministicRandom = options.random !== undefined || options.seed !== undefined;\n const random =\n options.random ??\n (options.seed === undefined ? () => Math.random() : createSeededRandom(options.seed).next);\n const now = options.now ?? (() => Date.now());\n const signal = options.signal;\n\n async function sleep(ms: number): Promise<void> {\n assertSleepDelay(ms);\n\n return await new Promise<void>((resolve, reject) => {\n if (signal?.aborted === true) {\n reject(createSleepAbortError());\n return;\n }\n\n const start = performance.now();\n let timeout = setTimeout(resolveSleep, ms);\n\n function cleanup(): void {\n clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", rejectSleep);\n }\n\n function resolveSleep(): void {\n const remainingMs = ms - (performance.now() - start);\n if (remainingMs > 0) {\n timeout = setTimeout(resolveSleep, remainingMs);\n return;\n }\n\n cleanup();\n resolve();\n }\n\n function rejectSleep(): void {\n cleanup();\n reject(createSleepAbortError());\n }\n\n signal?.addEventListener(\"abort\", rejectSleep, { once: true });\n });\n }\n\n return {\n random,\n now,\n sleep,\n uuid: hasDeterministicRandom ? () => createRandomUuid(random) : () => crypto.randomUUID()\n };\n}\n\nfunction createRandomUuid(random: () => number): string {\n const bytes = Array.from({ length: 16 }, () => Math.floor(readRandomUnit(random()) * 256));\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = bytes.map((byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\n return [\n hex.slice(0, 8),\n hex.slice(8, 12),\n hex.slice(12, 16),\n hex.slice(16, 20),\n hex.slice(20)\n ].join(\"-\");\n}\n\nfunction readRandomUnit(value: number): number {\n if (Number.isFinite(value) && value >= 0 && value < 1) {\n return value;\n }\n\n throw new RangeError(\"time.uuid() random source must return a number in [0, 1).\");\n}\n\nfunction assertSleepDelay(ms: number): void {\n if (Number.isFinite(ms) && ms >= 0) {\n return;\n }\n\n throw new RangeError(\"time.sleep(ms) requires a non-negative finite millisecond delay.\");\n}\n\nfunction createSleepAbortError(): Error {\n return new Error(\"time.sleep aborted.\");\n}\n", "import { parseModule as parseModuleInternal, type Module } from \"./parse/parser.js\";\nimport { restore as restoreInternal, type SafeJSSnapshot, type RestoreOptions } from \"./restore.js\";\nimport {\n deepCopyFromSandbox as copyFromSandboxInternal,\n type SandboxPromise,\n type SandboxValue\n} from \"./interp/values.js\";\n\nexport { parse } from \"./parse.js\";\nexport const parseModule: (source: string, filename?: string) => Module = parseModuleInternal;\nexport const restore: <TSnapshot extends SafeJSSnapshot>(\n snapshot: TSnapshot,\n options: RestoreOptions\n) => TSnapshot = restoreInternal;\ntype PublicCopyOptions = Omit<\n NonNullable<Parameters<typeof copyFromSandboxInternal>[1]>,\n \"compilation\"\n>;\nexport const deepCopyFromSandbox: {\n (value: SandboxPromise, options?: PublicCopyOptions): Promise<unknown>;\n (value: SandboxValue, options?: PublicCopyOptions): unknown;\n} = copyFromSandboxInternal;\nexport { lint, type Diagnostic, type Fix, type LintFixResult, type LintOptions } from \"./lint.js\";\nexport { run } from \"./run.js\";\nexport { createReplayableRandom, type ReplayableRandom } from \"./random.js\";\nexport type { RunClock, RunClockSnapshot, RunRandom } from \"./run.js\";\nexport { noopOtelSink } from \"./observability/otel.js\";\nexport type { OtelSink, OtelSpan } from \"./observability/otel.js\";\nexport { FileSnapshotBackend } from \"./snapshot/backend.js\";\nexport type { Snapshot, SnapshotBackend } from \"./snapshot/backend.js\";\nexport { declareHostOperation } from \"./interp/host-bridge.js\";\nexport { HostCallResumabilityError } from \"./interp/host-call.js\";\nexport type {\n HostCallLifecycle,\n HostCallOutcome,\n HostCallRecord,\n HostCallResumeContext,\n HostCallResumeProof,\n HostCallResumeProvider,\n HostCallResumeRequest\n} from \"./interp/host-call.js\";\nexport {\n HostOperationResumePolicyError,\n registerPendingHostCallPolicy\n} from \"./snapshot/policy.js\";\nexport type {\n PendingHostCallPolicyMode,\n PendingHostCallPolicyRegistration\n} from \"./snapshot/policy.js\";\nexport { dump, type DumpOptions } from \"./dump.js\";\nexport { inspectSnapshotMigration, migrateSnapshot } from \"./migrate.js\";\nexport { migrateSnapshotFile, type SnapshotMigrationFileOptions } from \"./migration-file.js\";\nexport type {\n SnapshotMigration,\n SnapshotMigrationOptions,\n SnapshotMigrationReconciliation,\n SnapshotMigrationResolution\n} from \"./migrate.js\";\nexport { SnapshotValidationError } from \"./snapshot/validation.js\";\nexport type { SnapshotValidationCode } from \"./snapshot/validation.js\";\nexport { Budget, SandboxError } from \"./interp/budget.js\";\nexport type { BudgetName, BudgetOptions } from \"./interp/budget.js\";\nexport { formatInterpreterError, type InterpreterDiagnostic } from \"./error/format.js\";\nexport { deepCopyToSandbox } from \"./interp/values.js\";\nexport { runHarness, runHarnessPair } from \"./runner/run-harness.js\";\nexport { extractBlock } from \"./loader/extract-block.js\";\nexport { findExportedConstInitializer } from \"./loader/find-exported.js\";\nexport { splitFrontmatter } from \"./loader/frontmatter.js\";\nexport type { ExportDefaultDeclaration, ExportNamedDeclaration, MetaProperty } from \"./parse.js\";\nexport {\n AgentSpawnError,\n createSpawnUsageAccumulator,\n makeAgentModule,\n runWithSpawnUsageAccumulator\n} from \"./modules/agent.js\";\nexport type {\n AgentModuleDefinition,\n AgentModuleOptions,\n AgentModuleParallelCall,\n AgentModuleRetryOptions,\n AgentModuleSpawnOptions,\n AgentSpawnEvent,\n SpawnAgent,\n SpawnAgentInput,\n SpawnAgentResult,\n SpawnUsageAccumulator,\n SpawnUsageTotal\n} from \"./modules/agent.js\";\nexport { EnvAccessError, makeEnvModule, parseEnvConfig } from \"./modules/env.js\";\nexport type { EnvModule, EnvModuleOptions } from \"./modules/env.js\";\nexport { makeFailModule } from \"./modules/fail.js\";\nexport { makeFsModule } from \"./modules/fs.js\";\nexport { parseFsConfig, resolveFsConfig } from \"./modules/fs-config.js\";\nexport type { FsConfig, ResolveFsConfigOptions } from \"./modules/fs-config.js\";\nexport type {\n FsImplementation,\n FsModule,\n FsModuleOptions,\n SandboxDirent,\n SandboxStats\n} from \"./modules/fs.js\";\nexport { makeHarnessModule } from \"./modules/harness.js\";\nexport { makeLogModule } from \"./modules/log.js\";\nexport { makeMetricModule } from \"./modules/metric.js\";\nexport { makeMcpModule } from \"./modules/mcp.js\";\nexport { parseMcpConfig } from \"./modules/mcp-transport.js\";\nexport type { McpModuleOptions, McpServerConfig } from \"./modules/mcp-transport.js\";\nexport type { ManagedMcpClient, ManagedMcpModule, McpNamedServerHandle } from \"./modules/mcp.js\";\nexport { makeTimeModule } from \"./modules/time.js\";\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAMA,SAA2D;;;ACHxE,SAAS,UAAU,YAAY;AAC/B,SAAS,eAAe;AAuCxB,SAAS,YAAY,QAAiC,KAAsB;AAC1E,SAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,IAAI,OAAO,GAAG,IAAI;AAC3E;AAEA,SAAS,kBAAkB,UAAkB,aAAmD;AAC9F,SAAO;AAAA,IACL;AAAA,IACA,MAAM,YAAY,aAAa,MAAM;AAAA,IACrC,SAAS,YAAY,aAAa,SAAS;AAAA,EAC7C;AACF;AAEA,SAAS,4BAA4B,aAA4C;AAC/E,QAAM,SAAS,YAAY,aAAa,QAAQ;AAChD,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAC1E;AAAA,EACF;AAEA,aAAW,CAAC,MAAM,UAAU,KAAK,OAAO,QAAQ,MAAM,GAAG;AACvD,QAAI,OAAO,eAAe,YAAY,eAAe,QAAQ,MAAM,QAAQ,UAAU,GAAG;AACtF;AAAA,IACF;AAEA,UAAM,SAAS;AACf,UAAM,QAAQ,YAAY,QAAQ,OAAO;AACzC,UAAM,OAAO,YAAY,QAAQ,MAAM;AACvC,QAAI,OAAO,UAAU,YAAY,OAAO,SAAS,UAAU;AACzD;AAAA,IACF;AAGA,QAAI,CAAC,YAAY,SAAS,IAAiB,GAAG;AAC5C;AAAA,IACF;AAEA,QAAI,CAAC,kBAAkB,OAAO,IAAiB,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,IAAI,aAAa,KAAK,4BAA4B,IAAI,IAAI;AAAA,IAC9F;AAAA,EACF;AACF;AAEO,IAAM,YAAN,cAAwB,MAAM;AAAA,EAC1B;AAAA,EAET,YAAY,aAAoC;AAC9C,UAAM,uBAAuB,WAAW,CAAC;AACzC,SAAK,OAAO;AACZ,SAAK,cAAc;AAAA,EACrB;AACF;AAEA,eAAsB,WACpB,UACA,SAC2B;AAC3B,QAAM,YAAY,MAAM,gBAAgB,QAAQ;AAChD,QAAM,EAAE,kBAAkB,aAAa,YAAY,IAAI,qBAAqB,UAAU,SAAS;AAC/F,8BAA4B,WAAW;AACvC,QAAM,OAAO,kBAAkB,UAAU,WAAW;AACpD,QAAM,UAAU,qBAAqB,QAAQ,WAAW,aAAa,IAAI,GAAG,WAAW;AACvF,QAAM,cAAc,KAAK,kBAAkB;AAAA,IACzC,UAAU;AAAA,IACV,SAAS,qCAAqC,OAAO;AAAA,EACvD,CAAC;AACD,QAAM,aAAa,YAAY,OAAO,CAAC,eAAe,WAAW,aAAa,OAAO;AAErF,MAAI,WAAW,SAAS,GAAG;AACzB,UAAM,IAAI,UAAU,UAAU;AAAA,EAChC;AAEA,SAAO,iBAAiB,kBAAkB;AAAA,IACxC,QAAQ,QAAQ;AAAA,IAChB,gBAAgB,iBAAiB,kBAAkB,QAAQ,IAAI,CAAC,IAAI;AAAA,IACpE,UAAU;AAAA,IACV;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,QAAQ;AAAA,IACzB,oBAAoB,QAAQ;AAAA,IAC5B,cAAc,QAAQ;AAAA,EACxB,CAAC;AACH;AAEA,eAAsB,eACpB,UACA,SAC2B;AAC3B,QAAM,OAAO,mBAAmB,QAAQ;AACxC,QAAM,CAAC,aAAa,SAAS,IAAI,MAAM,QAAQ,IAAI;AAAA,IACjD,gBAAgB,KAAK,YAAY;AAAA,IACjC,gBAAgB,KAAK,UAAU;AAAA,EACjC,CAAC;AACD,QAAM,EAAE,aAAa,KAAK,IAAI,iBAAiB,mBAAmB,WAAW,CAAC;AAC9E,8BAA4B,WAAW;AACvC,QAAM,mBAAmB,mBAAmB,SAAS;AACrD,QAAM,OAAO,kBAAkB,KAAK,cAAc,WAAW;AAC7D,QAAM,UAAU,QAAQ,WAAW,aAAa,IAAI;AACpD,QAAM,cAAc,KAAK,kBAAkB;AAAA,IACzC,oBAAoB,CAAC,QAAQ;AAAA,IAC7B,eAAe;AAAA,MACb,YAAY,CAAC,aAAa;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,IACA,UAAU,KAAK;AAAA,IACf,mBAAmB,OAAO,KAAK,WAAW;AAAA,IAC1C,SAAS,qCAAqC,OAAO;AAAA,EACvD,CAAC;AACD,QAAM,aAAa,YAAY,OAAO,CAAC,eAAe,WAAW,aAAa,OAAO;AAErF,MAAI,WAAW,SAAS,GAAG;AACzB,UAAM,IAAI,UAAU,UAAU;AAAA,EAChC;AAEA,SAAO,iBAAiB,kBAAkB;AAAA,IACxC,QAAQ,QAAQ;AAAA,IAChB,gBAAgB,CAAC,WAAW;AAAA,IAC5B,UAAU,KAAK;AAAA,IACf,YAAY;AAAA,MACV;AAAA,MACA,UAAU,KAAK;AAAA,MACf,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,IAChB;AAAA,IACA;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,QAAQ;AAAA,IACzB,oBAAoB,QAAQ;AAAA,IAC5B,cAAc,QAAQ;AAAA,EACxB,CAAC;AACH;AAEA,eAAe,gBAAgB,UAAmC;AAChE,MAAI;AACF,UAAM,QAAQ,MAAM,KAAK,QAAQ;AACjC,QAAI,CAAC,MAAM,OAAO,GAAG;AACnB,YAAM,IAAI,MAAM,sCAAsC,QAAQ,EAAE;AAAA,IAClE;AAEA,WAAO,MAAM,SAAS,UAAU,MAAM;AAAA,EACxC,SAAS,OAAO;AACd,QAAI,gBAAgB,OAAO,QAAQ,KAAK,gBAAgB,OAAO,SAAS,GAAG;AACzE,YAAM,IAAI,MAAM,2BAA2B,QAAQ,EAAE;AAAA,IACvD;AAEA,UAAM;AAAA,EACR;AACF;AAEA,SAAS,qBACP,UACA,QAKA;AACA,MAAI,gBAAgB,QAAQ,GAAG;AAC7B,UAAM,mBAAmB,mBAAmB,MAAM;AAClD,QAAI,iBAAiB,WAAW,GAAG;AACjC,YAAM,IAAI,MAAM,8CAA8C,QAAQ,EAAE;AAAA,IAC1E;AAEA,WAAO;AAAA,MACL;AAAA,MACA,aAAa,CAAC;AAAA,MACd,aAAa;AAAA,IACf;AAAA,EACF;AAEA,QAAM,EAAE,aAAa,KAAK,IAAI,iBAAiB,MAAM;AACrD,MAAI,OAAO,WAAW,KAAK,KAAK,KAAK,EAAE,WAAW,GAAG;AACnD,UAAM,IAAI,MAAM,8CAA8C,QAAQ,EAAE;AAAA,EAC1E;AAEA,QAAM,kBAAkB,OAAO,SAAS,KAAK;AAC7C,QAAM,EAAE,QAAQ,iBAAiB,YAAY,IAAI;AAAA,IAC/C;AAAA,IACA,gBAAgB,QAAQ,GAAG,eAAe,IAAI;AAAA,EAChD;AACA,SAAO;AAAA,IACL,kBACE,WAAW,OAAO,MAAM,GAAG,kBAAkB,WAAW,CAAC,IAAI,cAAc,eAAe;AAAA,IAC5F;AAAA,IACA,aAAa;AAAA,EACf;AACF;AAEA,SAAS,mBAAmB,UAAgE;AAC1F,QAAM,YAAY,QAAQ,QAAQ;AAClC,QAAM,WAAW,UAAU,WAAW,IAAI,WAAW,SAAS,MAAM,GAAG,CAAC,UAAU,MAAM;AAExF,MAAI,qBAAqB,SAAS,GAAG;AACnC,WAAO;AAAA,MACL,cAAc,GAAG,QAAQ;AAAA,MACzB,YAAY;AAAA,IACd;AAAA,EACF;AAEA,SAAO;AAAA,IACL,cAAc;AAAA,IACd,YAAY,GAAG,QAAQ;AAAA,EACzB;AACF;AAEA,SAAS,gBAAgB,UAA2B;AAClD,SAAO,qBAAqB,QAAQ,QAAQ,CAAC;AAC/C;AAEA,SAAS,qBAAqB,WAA4B;AACxD,SAAO,cAAc,aAAa,cAAc;AAClD;AAEA,eAAe,iBACb,kBACA,SAC2B;AAC3B,MAAI;AACF,WAAO,MAAM,IAAI,kBAAkB,OAAO;AAAA,EAC5C,SAAS,OAAO;AACd,QAAI,aAAa,KAAK,GAAG;AACvB,YAAM;AAAA,IACR;AAEA,WAAO;AAAA,MACL,GAAI,aAAa,KAAK,IAAI,EAAE,SAAS,KAAc,IAAI,CAAC;AAAA,MACxD;AAAA,MACA,IAAI;AAAA,IACN;AAAA,EACF;AACF;AAEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,iBAAiB,SAAS,MAAM,SAAS;AAClD;AAEA,SAAS,aAAa,OAAyB;AAC7C,MAAI,iBAAiB,OAAO;AAC1B,WAAO,MAAM,SAAS;AAAA,EACxB;AAEA,SACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,UAAU,eAAe,KAAK,OAAO,MAAM,KACjD,MAA6B,SAAS;AAE3C;AAEA,SAAS,iBAAiB,QAAgB,UAA2B;AACnE,SAAO,YAAY,QAAQ,QAAQ,EAAE,KAAK;AAAA,IACxC,CAAC,cAAc,UAAU,SAAS;AAAA,EACpC;AACF;AAEA,SAAS,qBAAqB,SAAyB,aAAsC;AAC3F,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,mBAAmB,KAAK;AAC1B,UAAMC,cAAa,IAAI,IAAI,OAAO;AAClC,IAAAA,YAAW,OAAO,SAAS;AAC3B,WAAOA;AAAA,EACT;AAEA,QAAM,aAA4C,CAAC;AAEnD,aAAW,CAAC,YAAY,aAAa,KAAK,OAAO,QAAQ,OAAO,GAAG;AACjE,QAAI,eAAe,WAAW;AAC5B,iBAAW,UAAU,IAAI;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,QAAwB;AAClD,SAAO,OAAO,WAAW,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI;AACzD;AAEA,SAAS,cAAc,QAAwB;AAC7C,MAAI,CAAC,OAAO,WAAW,IAAI,GAAG;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI,MAAM;AACV,SAAO,MAAM,OAAO,UAAU,OAAO,GAAG,MAAM,QAAQ,OAAO,GAAG,MAAM,KAAM,QAAO;AACnF,SAAO,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,OAAO,MAAM,GAAG,CAAC;AAC/C;AAEA,SAAS,uBAAuB,aAA4C;AAC1E,MAAI,YAAY,WAAW,GAAG;AAC5B,WAAO;AAAA,EACT;AAEA,SAAO,YACJ;AAAA,IACC,CAAC,eACC,GAAG,WAAW,QAAQ,IAAI,WAAW,IAAI,IAAI,WAAW,MAAM,IAAI,WAAW,IAAI,IAAI,WAAW,OAAO;AAAA,EAC3G,EACC,KAAK,IAAI;AACd;;;ACpVO,SAAS,6BAA6B,QAAgB,MAAsC;AACjG,aAAW,aAAa,OAAO,MAAM;AACnC,QAAI,UAAU,SAAS,4BAA4B;AACjD,UAAI,SAAS,WAAW;AACtB,eAAO,UAAU;AAAA,MACnB;AAEA;AAAA,IACF;AAEA,QAAI,UAAU,SAAS,0BAA0B;AAC/C;AAAA,IACF;AAEA,UAAM,cAAc,UAAU;AAC9B,QAAI,YAAY,SAAS,SAAS;AAChC,YAAM,IAAI,MAAM,aAAa,IAAI,gCAAgC;AAAA,IACnE;AAEA,QAAI,YAAY,aAAa,WAAW,GAAG;AACzC,YAAM,IAAI,MAAM,kEAAkE;AAAA,IACpF;AAEA,UAAM,aAAa,YAAY,aAAa,CAAC;AAC7C,QAAI,WAAW,GAAG,SAAS,cAAc;AACvC,YAAM,IAAI,MAAM,yDAAyD;AAAA,IAC3E;AAEA,QAAI,WAAW,GAAG,SAAS,MAAM;AAC/B;AAAA,IACF;AAEA,QAAI,WAAW,SAAS,QAAW;AACjC,YAAM,IAAI,MAAM,mBAAmB,IAAI,6BAA6B;AAAA,IACtE;AAEA,WAAO,WAAW;AAAA,EACpB;AAEA,SAAO;AACT;;;AC1CA,SAAS,aAAa,cAAc;AAW7B,SAAS,eAAe,UAA6B,CAAC,GAK3D;AACA,QAAM,yBAAyB,QAAQ,WAAW,UAAa,QAAQ,SAAS;AAChF,QAAM,SACJ,QAAQ,WACP,QAAQ,SAAS,SAAY,MAAM,KAAK,OAAO,IAAI,mBAAmB,QAAQ,IAAI,EAAE;AACvF,QAAM,MAAM,QAAQ,QAAQ,MAAM,KAAK,IAAI;AAC3C,QAAM,SAAS,QAAQ;AAEvB,iBAAe,MAAM,IAA2B;AAC9C,qBAAiB,EAAE;AAEnB,WAAO,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAClD,UAAI,QAAQ,YAAY,MAAM;AAC5B,eAAO,sBAAsB,CAAC;AAC9B;AAAA,MACF;AAEA,YAAM,QAAQ,YAAY,IAAI;AAC9B,UAAI,UAAU,WAAW,cAAc,EAAE;AAEzC,eAAS,UAAgB;AACvB,qBAAa,OAAO;AACpB,gBAAQ,oBAAoB,SAAS,WAAW;AAAA,MAClD;AAEA,eAAS,eAAqB;AAC5B,cAAM,cAAc,MAAM,YAAY,IAAI,IAAI;AAC9C,YAAI,cAAc,GAAG;AACnB,oBAAU,WAAW,cAAc,WAAW;AAC9C;AAAA,QACF;AAEA,gBAAQ;AACR,gBAAQ;AAAA,MACV;AAEA,eAAS,cAAoB;AAC3B,gBAAQ;AACR,eAAO,sBAAsB,CAAC;AAAA,MAChC;AAEA,cAAQ,iBAAiB,SAAS,aAAa,EAAE,MAAM,KAAK,CAAC;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,yBAAyB,MAAM,iBAAiB,MAAM,IAAI,MAAM,OAAO,WAAW;AAAA,EAC1F;AACF;AAEA,SAAS,iBAAiB,QAA8B;AACtD,QAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,MAAM,KAAK,MAAM,eAAe,OAAO,CAAC,IAAI,GAAG,CAAC;AACzF,QAAM,CAAC,IAAK,MAAM,CAAC,IAAI,KAAQ;AAC/B,QAAM,CAAC,IAAK,MAAM,CAAC,IAAI,KAAQ;AAC/B,QAAM,MAAM,MAAM,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAE3E,SAAO;AAAA,IACL,IAAI,MAAM,GAAG,CAAC;AAAA,IACd,IAAI,MAAM,GAAG,EAAE;AAAA,IACf,IAAI,MAAM,IAAI,EAAE;AAAA,IAChB,IAAI,MAAM,IAAI,EAAE;AAAA,IAChB,IAAI,MAAM,EAAE;AAAA,EACd,EAAE,KAAK,GAAG;AACZ;AAEA,SAAS,eAAe,OAAuB;AAC7C,MAAI,OAAO,SAAS,KAAK,KAAK,SAAS,KAAK,QAAQ,GAAG;AACrD,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,WAAW,2DAA2D;AAClF;AAEA,SAAS,iBAAiB,IAAkB;AAC1C,MAAI,OAAO,SAAS,EAAE,KAAK,MAAM,GAAG;AAClC;AAAA,EACF;AAEA,QAAM,IAAI,WAAW,kEAAkE;AACzF;AAEA,SAAS,wBAA+B;AACtC,SAAO,IAAI,MAAM,qBAAqB;AACxC;;;AC7FO,IAAMC,eAA6D;AACnE,IAAMC,WAGI;AAKV,IAAMC,uBAGT;",
|
|
6
6
|
"names": ["parse", "rawModules", "parseModule", "restore", "deepCopyFromSandbox"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type FileSystemAdapterRegistry, type FileSystemConfig } from "
|
|
1
|
+
import { type FileSystemAdapterRegistry, type FileSystemConfig } from "@poe-platform/safe-fs";
|
|
2
2
|
import type { FsModuleOptions } from "./fs.js";
|
|
3
3
|
export type FsConfig = {
|
|
4
4
|
readonly adapter: FileSystemConfig;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type PathLike } from "node:fs";
|
|
2
2
|
import * as nodeFsPromises from "node:fs/promises";
|
|
3
|
-
import { type FileSystem } from "
|
|
3
|
+
import { type FileSystem } from "@poe-platform/safe-fs";
|
|
4
4
|
type FsOperationName = "access" | "appendFile" | "chmod" | "copyFile" | "cp" | "link" | "lstat" | "mkdir" | "mkdtemp" | "readFile" | "readdir" | "readlink" | "realpath" | "rename" | "rm" | "rmdir" | "stat" | "symlink" | "truncate" | "utimes" | "writeFile";
|
|
5
5
|
type FsPassthroughName = Exclude<FsOperationName, "lstat" | "mkdtemp" | "readFile" | "readdir" | "readlink" | "realpath" | "stat">;
|
|
6
6
|
declare const REFUSED_OPTION_REASONS: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@poe-platform/safe-js",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Budgeted JavaScript interpreter with explicit host capabilities and resumable execution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,30 +11,6 @@
|
|
|
11
11
|
"dist"
|
|
12
12
|
],
|
|
13
13
|
"exports": {
|
|
14
|
-
"./fs": {
|
|
15
|
-
"types": {
|
|
16
|
-
"browser": "./dist/safe-fs/core.d.ts",
|
|
17
|
-
"default": "./dist/safe-fs/index.d.ts"
|
|
18
|
-
},
|
|
19
|
-
"browser": "./dist/safe-js/browser/safe-fs.js",
|
|
20
|
-
"import": "./dist/safe-js/safe-fs.js"
|
|
21
|
-
},
|
|
22
|
-
"./fs/core": {
|
|
23
|
-
"types": {
|
|
24
|
-
"browser": "./dist/safe-fs/core.d.ts",
|
|
25
|
-
"default": "./dist/safe-fs/core.d.ts"
|
|
26
|
-
},
|
|
27
|
-
"browser": "./dist/safe-js/browser/safe-fs-core.js",
|
|
28
|
-
"import": "./dist/safe-js/safe-fs-core.js"
|
|
29
|
-
},
|
|
30
|
-
"./fs/node": {
|
|
31
|
-
"types": {
|
|
32
|
-
"browser": "./dist/safe-fs/node-unavailable.d.ts",
|
|
33
|
-
"default": "./dist/safe-fs/node-host.d.ts"
|
|
34
|
-
},
|
|
35
|
-
"browser": null,
|
|
36
|
-
"import": "./dist/safe-js/safe-fs-node.js"
|
|
37
|
-
},
|
|
38
14
|
".": {
|
|
39
15
|
"types": {
|
|
40
16
|
"browser": "./dist/safe-fs/node-unavailable.d.ts",
|
|
@@ -58,6 +34,19 @@
|
|
|
58
34
|
},
|
|
59
35
|
"browser": null,
|
|
60
36
|
"import": "./dist/safe-js/cli.js"
|
|
37
|
+
},
|
|
38
|
+
"./fs": {
|
|
39
|
+
"types": "./dist/compat/fs.d.ts",
|
|
40
|
+
"import": "./dist/compat/fs.js"
|
|
41
|
+
},
|
|
42
|
+
"./fs/core": {
|
|
43
|
+
"types": "./dist/compat/fs-core.d.ts",
|
|
44
|
+
"import": "./dist/compat/fs-core.js"
|
|
45
|
+
},
|
|
46
|
+
"./fs/node": {
|
|
47
|
+
"types": "./dist/compat/fs-node.d.ts",
|
|
48
|
+
"browser": null,
|
|
49
|
+
"import": "./dist/compat/fs-node.js"
|
|
61
50
|
}
|
|
62
51
|
},
|
|
63
52
|
"repository": {
|
|
@@ -69,19 +58,11 @@
|
|
|
69
58
|
"access": "public"
|
|
70
59
|
},
|
|
71
60
|
"dependencies": {
|
|
61
|
+
"@poe-platform/safe-fs": "0.1.4",
|
|
72
62
|
"yaml": "^2.8.2",
|
|
73
63
|
"jose": "^6.1.3",
|
|
74
64
|
"@types/node": "^25.2.2"
|
|
75
65
|
},
|
|
76
|
-
"imports": {
|
|
77
|
-
"#safe-fs-platform": {
|
|
78
|
-
"types": {
|
|
79
|
-
"browser": "./dist/safe-fs/platform/browser.d.ts",
|
|
80
|
-
"default": "./dist/safe-fs/platform/node.d.ts"
|
|
81
|
-
},
|
|
82
|
-
"default": null
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
66
|
"bin": {
|
|
86
67
|
"poe-safejs": "./dist/safe-js/cli.js",
|
|
87
68
|
"poe-safe-js": "./dist/safe-js/cli.js"
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { FileSystem } from "../contracts/filesystem.js";
|
|
2
|
-
import type { BridgePrimitives, BufferEncodingOption, FsBridgeDirent, FsBridgeEncoding, FsBridgeStats, MakeDirectoryOptions, Mode, ObjectEncodingOptions, StatOptions } from "./types.js";
|
|
3
|
-
type Encoding = FsBridgeEncoding | "buffer";
|
|
4
|
-
type ReadOptions = ObjectEncodingOptions & {
|
|
5
|
-
flag?: string | number | undefined;
|
|
6
|
-
signal?: AbortSignal | undefined;
|
|
7
|
-
};
|
|
8
|
-
type DirectoryOptions = {
|
|
9
|
-
encoding?: Encoding | null | undefined;
|
|
10
|
-
recursive?: boolean | undefined;
|
|
11
|
-
withFileTypes?: boolean | undefined;
|
|
12
|
-
};
|
|
13
|
-
export declare class FileSystemBridge<Binary extends Uint8Array> {
|
|
14
|
-
#private;
|
|
15
|
-
constructor(fs: FileSystem, options: {
|
|
16
|
-
readonly cwd?: string;
|
|
17
|
-
readonly signal?: AbortSignal;
|
|
18
|
-
}, primitives: BridgePrimitives<Binary>);
|
|
19
|
-
readFile(path: unknown, options?: {
|
|
20
|
-
encoding?: null | undefined;
|
|
21
|
-
flag?: string | number | undefined;
|
|
22
|
-
signal?: AbortSignal | undefined;
|
|
23
|
-
} | null): Promise<Binary>;
|
|
24
|
-
readFile(path: unknown, options: FsBridgeEncoding | (ReadOptions & {
|
|
25
|
-
encoding: FsBridgeEncoding;
|
|
26
|
-
})): Promise<string>;
|
|
27
|
-
readFile(path: unknown, options?: ReadOptions | FsBridgeEncoding | null): Promise<string | Binary>;
|
|
28
|
-
writeFile(path: unknown, data: unknown, options?: unknown): Promise<void>;
|
|
29
|
-
appendFile(path: unknown, data: unknown, options?: unknown): Promise<void>;
|
|
30
|
-
stat(path: unknown, options?: StatOptions & {
|
|
31
|
-
bigint?: false | undefined;
|
|
32
|
-
}): Promise<FsBridgeStats>;
|
|
33
|
-
stat(path: unknown, options: StatOptions & {
|
|
34
|
-
bigint: true;
|
|
35
|
-
}): Promise<never>;
|
|
36
|
-
stat(path: unknown, options?: StatOptions): Promise<FsBridgeStats>;
|
|
37
|
-
lstat(path: unknown, options?: StatOptions & {
|
|
38
|
-
bigint?: false | undefined;
|
|
39
|
-
}): Promise<FsBridgeStats>;
|
|
40
|
-
lstat(path: unknown, options: StatOptions & {
|
|
41
|
-
bigint: true;
|
|
42
|
-
}): Promise<never>;
|
|
43
|
-
lstat(path: unknown, options?: StatOptions): Promise<FsBridgeStats>;
|
|
44
|
-
readdir(path: unknown, options?: FsBridgeEncoding | (ObjectEncodingOptions & {
|
|
45
|
-
withFileTypes?: false | undefined;
|
|
46
|
-
recursive?: boolean | undefined;
|
|
47
|
-
}) | null): Promise<string[]>;
|
|
48
|
-
readdir(path: unknown, options: "buffer" | (DirectoryOptions & {
|
|
49
|
-
encoding: "buffer";
|
|
50
|
-
withFileTypes?: false | undefined;
|
|
51
|
-
})): Promise<Binary[]>;
|
|
52
|
-
readdir(path: unknown, options: ObjectEncodingOptions & {
|
|
53
|
-
withFileTypes: true;
|
|
54
|
-
recursive?: boolean | undefined;
|
|
55
|
-
}): Promise<FsBridgeDirent[]>;
|
|
56
|
-
readdir(path: unknown, options: DirectoryOptions & {
|
|
57
|
-
encoding: "buffer";
|
|
58
|
-
withFileTypes: true;
|
|
59
|
-
}): Promise<FsBridgeDirent<Binary>[]>;
|
|
60
|
-
mkdir(path: unknown, options: MakeDirectoryOptions & {
|
|
61
|
-
recursive: true;
|
|
62
|
-
}): Promise<string | undefined>;
|
|
63
|
-
mkdir(path: unknown, options?: Mode | (MakeDirectoryOptions & {
|
|
64
|
-
recursive?: false | undefined;
|
|
65
|
-
}) | null): Promise<void>;
|
|
66
|
-
mkdir(path: unknown, options?: Mode | MakeDirectoryOptions | null): Promise<string | undefined>;
|
|
67
|
-
access(path: unknown, mode?: number): Promise<void>;
|
|
68
|
-
rm(path: unknown, value?: unknown): Promise<void>;
|
|
69
|
-
rmdir(path: unknown, value?: unknown): Promise<void>;
|
|
70
|
-
rename(source: unknown, destination: unknown): Promise<void>;
|
|
71
|
-
copyFile(source: unknown, destination: unknown, mode?: number): Promise<void>;
|
|
72
|
-
cp(source: unknown, destination: unknown, value?: unknown): Promise<void>;
|
|
73
|
-
readlink(path: unknown, options?: ObjectEncodingOptions | FsBridgeEncoding | null): Promise<string>;
|
|
74
|
-
readlink(path: unknown, options: BufferEncodingOption): Promise<Binary>;
|
|
75
|
-
readlink(path: unknown, options?: ObjectEncodingOptions | BufferEncodingOption | string | null): Promise<string | Binary>;
|
|
76
|
-
realpath(path: unknown, options?: ObjectEncodingOptions | FsBridgeEncoding | null): Promise<string>;
|
|
77
|
-
realpath(path: unknown, options: BufferEncodingOption): Promise<Binary>;
|
|
78
|
-
realpath(path: unknown, options?: ObjectEncodingOptions | BufferEncodingOption | string | null): Promise<string | Binary>;
|
|
79
|
-
mkdtemp(prefix: string, options?: ObjectEncodingOptions | FsBridgeEncoding | null): Promise<string>;
|
|
80
|
-
mkdtemp(prefix: string, options: BufferEncodingOption): Promise<Binary>;
|
|
81
|
-
mkdtemp(prefix: string, options?: ObjectEncodingOptions | BufferEncodingOption | string | null): Promise<string | Binary>;
|
|
82
|
-
symlink(target: unknown, path: unknown, type?: unknown): Promise<void>;
|
|
83
|
-
link(existing: unknown, path: unknown): Promise<void>;
|
|
84
|
-
chmod(path: unknown, value: unknown): Promise<void>;
|
|
85
|
-
utimes(path: unknown, atime: unknown, mtime: unknown): Promise<void>;
|
|
86
|
-
truncate(path: unknown, length?: number): Promise<void>;
|
|
87
|
-
}
|
|
88
|
-
export {};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { FileSystem } from "../contracts/filesystem.js";
|
|
2
|
-
import { FileSystemBridge } from "./filesystem.js";
|
|
3
|
-
import type { FsBridgeOptions } from "./types.js";
|
|
4
|
-
export type { FsBridgeCodec, FsBridgeDirent, FsBridgeEncoding, FsBridgeFileSystem, FsBridgeOptions, FsBridgeStats } from "./types.js";
|
|
5
|
-
export type FsBridge = FileSystemBridge<Uint8Array<ArrayBuffer>>;
|
|
6
|
-
export declare function createFsBridge(fs: FileSystem, options: FsBridgeOptions): FsBridge;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import type { FileSystem, FsOptions } from "../contracts/filesystem.js";
|
|
2
|
-
export interface FsBridgeCodec {
|
|
3
|
-
isEncoding(encoding: string): boolean;
|
|
4
|
-
encode(text: string, encoding: string): Uint8Array;
|
|
5
|
-
decode(bytes: Uint8Array, encoding: string): string;
|
|
6
|
-
}
|
|
7
|
-
export interface FsBridgeOptions {
|
|
8
|
-
readonly codec: FsBridgeCodec;
|
|
9
|
-
readonly cwd?: string;
|
|
10
|
-
readonly signal?: AbortSignal;
|
|
11
|
-
}
|
|
12
|
-
export interface FsBridgeFileSystem extends FileSystem {
|
|
13
|
-
rmdir?(path: string, options?: FsOptions): Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
export type FsBridgeEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "utf-16le" | "ucs2" | "ucs-2" | "base64" | "base64url" | "latin1" | "binary" | "hex";
|
|
16
|
-
export interface ObjectEncodingOptions {
|
|
17
|
-
encoding?: FsBridgeEncoding | null | undefined;
|
|
18
|
-
}
|
|
19
|
-
export type BufferEncodingOption = "buffer" | {
|
|
20
|
-
encoding: "buffer";
|
|
21
|
-
};
|
|
22
|
-
export type Mode = number | string;
|
|
23
|
-
export interface MakeDirectoryOptions {
|
|
24
|
-
recursive?: boolean | undefined;
|
|
25
|
-
mode?: Mode | undefined;
|
|
26
|
-
}
|
|
27
|
-
export interface StatOptions {
|
|
28
|
-
bigint?: boolean | undefined;
|
|
29
|
-
}
|
|
30
|
-
export interface FsBridgePredicates {
|
|
31
|
-
isFile(): boolean;
|
|
32
|
-
isDirectory(): boolean;
|
|
33
|
-
isSymbolicLink(): boolean;
|
|
34
|
-
isBlockDevice(): boolean;
|
|
35
|
-
isCharacterDevice(): boolean;
|
|
36
|
-
isFIFO(): boolean;
|
|
37
|
-
isSocket(): boolean;
|
|
38
|
-
}
|
|
39
|
-
export interface FsBridgeStats extends FsBridgePredicates {
|
|
40
|
-
dev: number;
|
|
41
|
-
ino: number;
|
|
42
|
-
mode: number;
|
|
43
|
-
nlink: number;
|
|
44
|
-
uid: number;
|
|
45
|
-
gid: number;
|
|
46
|
-
rdev: number;
|
|
47
|
-
size: number;
|
|
48
|
-
blksize: number;
|
|
49
|
-
blocks: number;
|
|
50
|
-
atimeMs: number;
|
|
51
|
-
mtimeMs: number;
|
|
52
|
-
ctimeMs: number;
|
|
53
|
-
birthtimeMs: number;
|
|
54
|
-
atime: Date;
|
|
55
|
-
mtime: Date;
|
|
56
|
-
ctime: Date;
|
|
57
|
-
birthtime: Date;
|
|
58
|
-
}
|
|
59
|
-
export interface FsBridgeDirent<Name extends string | Uint8Array = string> extends FsBridgePredicates {
|
|
60
|
-
name: Name;
|
|
61
|
-
parentPath: string;
|
|
62
|
-
path: string;
|
|
63
|
-
}
|
|
64
|
-
export interface BridgePrimitives<Binary extends Uint8Array> {
|
|
65
|
-
readonly codec: FsBridgeCodec;
|
|
66
|
-
copyBytes(bytes: Uint8Array): Binary;
|
|
67
|
-
pathValue?(value: unknown): unknown;
|
|
68
|
-
randomSuffix(): string;
|
|
69
|
-
readonly paths: {
|
|
70
|
-
isAbsolute(path: string): boolean;
|
|
71
|
-
dirname(path: string): string;
|
|
72
|
-
relative(from: string, to: string): string;
|
|
73
|
-
resolve(cwd: string, ...paths: string[]): string;
|
|
74
|
-
};
|
|
75
|
-
}
|
package/dist/safe-fs/config.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { FileSystem, FileSystemFactory } from "./contracts/filesystem.js";
|
|
2
|
-
export type FileSystemConfig = {
|
|
3
|
-
readonly type: string;
|
|
4
|
-
readonly options?: Readonly<Record<string, unknown>>;
|
|
5
|
-
};
|
|
6
|
-
export type FileSystemAdapterDescriptor = {
|
|
7
|
-
readonly validateOptions: (options: Readonly<Record<string, unknown>>) => void;
|
|
8
|
-
readonly create: FileSystemFactory;
|
|
9
|
-
};
|
|
10
|
-
export type FileSystemAdapterRegistry = ReadonlyMap<string, FileSystemAdapterDescriptor>;
|
|
11
|
-
export declare function readConfigRecord(value: unknown, label: string, keys?: readonly string[]): Readonly<Record<string, unknown>>;
|
|
12
|
-
export declare function validateFileSystemConfig(value: unknown): FileSystemConfig;
|
|
13
|
-
export declare function createFileSystem(config: FileSystemConfig, options: {
|
|
14
|
-
registry: FileSystemAdapterRegistry;
|
|
15
|
-
}): Promise<FileSystem>;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { PlatformErrno } from "#safe-fs-platform";
|
|
2
|
-
export type { PlatformErrno } from "#safe-fs-platform";
|
|
3
|
-
declare const descriptions: {
|
|
4
|
-
readonly EACCES: "permission denied";
|
|
5
|
-
readonly EAGAIN: "resource temporarily unavailable";
|
|
6
|
-
readonly EBADF: "bad file descriptor";
|
|
7
|
-
readonly EBUSY: "resource busy or locked";
|
|
8
|
-
readonly ECANCELED: "operation canceled";
|
|
9
|
-
readonly EEXIST: "file already exists";
|
|
10
|
-
readonly EFBIG: "file too large";
|
|
11
|
-
readonly EINTR: "interrupted system call";
|
|
12
|
-
readonly EINVAL: "invalid argument";
|
|
13
|
-
readonly EIO: "input/output error";
|
|
14
|
-
readonly EISDIR: "illegal operation on a directory";
|
|
15
|
-
readonly ELOOP: "too many symbolic links encountered";
|
|
16
|
-
readonly EMFILE: "too many open files";
|
|
17
|
-
readonly ENAMETOOLONG: "name too long";
|
|
18
|
-
readonly ENFILE: "file table overflow";
|
|
19
|
-
readonly ENOENT: "no such file or directory";
|
|
20
|
-
readonly ENOMEM: "not enough memory";
|
|
21
|
-
readonly ENOSPC: "no space left on device";
|
|
22
|
-
readonly ENOSYS: "function not implemented";
|
|
23
|
-
readonly ENOTDIR: "not a directory";
|
|
24
|
-
readonly ENOTEMPTY: "directory not empty";
|
|
25
|
-
readonly ENOTSUP: "operation not supported";
|
|
26
|
-
readonly EOPNOTSUPP: "operation not supported";
|
|
27
|
-
readonly EPERM: "operation not permitted";
|
|
28
|
-
readonly EPIPE: "broken pipe";
|
|
29
|
-
readonly EROFS: "read-only file system";
|
|
30
|
-
readonly ETIMEDOUT: "operation timed out";
|
|
31
|
-
readonly EXDEV: "cross-device link not permitted";
|
|
32
|
-
};
|
|
33
|
-
export type ErrnoCode = keyof typeof descriptions;
|
|
34
|
-
export interface FsErrorOptions extends ErrorOptions {
|
|
35
|
-
readonly syscall?: string;
|
|
36
|
-
readonly path?: string;
|
|
37
|
-
readonly dest?: string;
|
|
38
|
-
readonly message?: string;
|
|
39
|
-
}
|
|
40
|
-
export declare class FsError extends Error {
|
|
41
|
-
readonly code: ErrnoCode;
|
|
42
|
-
readonly errno: PlatformErrno;
|
|
43
|
-
readonly syscall?: string;
|
|
44
|
-
readonly path?: string;
|
|
45
|
-
readonly dest?: string;
|
|
46
|
-
constructor(code: ErrnoCode, options?: FsErrorOptions);
|
|
47
|
-
}
|
|
48
|
-
export declare function isErrnoCode(code: unknown): code is ErrnoCode;
|
|
49
|
-
export declare function isFsError(error: unknown, code?: ErrnoCode): error is FsError;
|
|
50
|
-
export declare function toFsError(error: unknown, options?: FsErrorOptions): FsError;
|