shfs 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/execute-CsIHQwCC.mjs +5727 -0
- package/dist/execute-CsIHQwCC.mjs.map +1 -0
- package/dist/index.mjs +1 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -4
- package/dist/execute-Ul7LFccp.mjs +0 -2303
- package/dist/execute-Ul7LFccp.mjs.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { r as formatRecord, t as execute } from "./execute-
|
|
2
|
-
import { compile, parse } from "@shfs/compiler";
|
|
1
|
+
import { a as parse, i as compile, r as formatRecord, t as execute } from "./execute-CsIHQwCC.mjs";
|
|
3
2
|
|
|
4
3
|
//#region src/consumer/consumer.ts
|
|
5
4
|
/**
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/consumer/consumer.ts","../src/util/lazy.ts","../src/shell/shell.ts"],"sourcesContent":["import { formatRecord, type Record } from '../record';\nimport type { Stream } from '../stream';\n\n/**\n * A Consumer terminates a stream.\n * It pulls values and produces a final result or side-effect.\n */\nexport type Consumer<T, R = void> = (input: Stream<T>) => Promise<R>;\n\n/**\n * Collects the entire stream into memory.\n * Pure from an API perspective.\n */\nexport function collect<T>(): Consumer<T, T[]> {\n\treturn async (input) => {\n\t\tconst out: T[] = [];\n\t\tfor await (const item of input) {\n\t\t\tout.push(item);\n\t\t}\n\t\treturn out;\n\t};\n}\n\n/**\n * Streams records directly to stdout.\n * Side-effecting, non-buffering.\n */\nexport function stdout(): Consumer<Record> {\n\treturn async (input) => {\n\t\tfor await (const record of input) {\n\t\t\tprocess.stdout.write(`${formatRecord(record)}\\n`);\n\t\t}\n\t};\n}\n","export function lazy<T>(fn: () => T) {\n\tlet value: T | undefined;\n\tlet loaded = false;\n\n\treturn (): T => {\n\t\tif (loaded) {\n\t\t\treturn value as T;\n\t\t}\n\n\t\tloaded = true;\n\t\tvalue = fn();\n\t\treturn value as T;\n\t};\n}\n","import { compile, parse, type ScriptIR } from '@shfs/compiler';\n\nimport { collect } from '../consumer/consumer';\nimport { type ExecuteResult, execute } from '../execute/execute';\nimport type { FS } from '../fs/fs';\nimport { formatRecord, type Record } from '../record';\nimport { lazy } from '../util/lazy';\n\nconst ROOT_DIRECTORY = '/';\nconst MULTIPLE_SLASH_REGEX = /\\/+/g;\nconst TRAILING_SLASH_REGEX = /\\/+$/;\n\nexport interface ShellOptions {\n\tcwd?: string;\n}\n\nexport interface ShellCommand {\n\tcwd(path: string): ShellCommand;\n\tjson(): Promise<unknown[]>;\n\tlines(): Promise<string[]>;\n\traw(): Promise<Record[]>;\n\tstdout(): Promise<void>;\n\ttext(): Promise<string>;\n}\n\nfunction normalizeAbsolutePath(path: string): string {\n\tconst withLeadingSlash = path.startsWith(ROOT_DIRECTORY)\n\t\t? path\n\t\t: `${ROOT_DIRECTORY}${path}`;\n\tconst singleSlashes = withLeadingSlash.replace(MULTIPLE_SLASH_REGEX, '/');\n\tconst segments = singleSlashes.split(ROOT_DIRECTORY);\n\tconst normalizedSegments: string[] = [];\n\tfor (const segment of segments) {\n\t\tif (segment === '' || segment === '.') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (segment === '..') {\n\t\t\tnormalizedSegments.pop();\n\t\t\tcontinue;\n\t\t}\n\t\tnormalizedSegments.push(segment);\n\t}\n\treturn `${ROOT_DIRECTORY}${normalizedSegments.join(ROOT_DIRECTORY)}`;\n}\n\nfunction normalizeCwd(cwd: string): string {\n\tif (cwd === '') {\n\t\treturn ROOT_DIRECTORY;\n\t}\n\tconst normalized = normalizeAbsolutePath(cwd);\n\tconst trimmed = normalized.replace(TRAILING_SLASH_REGEX, '');\n\treturn trimmed === '' ? ROOT_DIRECTORY : trimmed;\n}\n\nasync function collectRecords(result: ExecuteResult): Promise<Record[]> {\n\tif (result.kind === 'sink') {\n\t\tawait result.value;\n\t\treturn [];\n\t}\n\treturn collect<Record>()(result.value);\n}\n\nexport class Shell {\n\tprivate readonly fs: FS;\n\tprivate currentCwd: string;\n\tprivate currentStatus = 0;\n\tprivate readonly globalVars = new Map<string, string>();\n\n\tconstructor(fs: FS, options: ShellOptions = {}) {\n\t\tthis.fs = fs;\n\t\tthis.currentCwd = normalizeCwd(options.cwd ?? ROOT_DIRECTORY);\n\t}\n\n\t$ = (strings: TemplateStringsArray, ...exprs: unknown[]) => {\n\t\treturn this._exec(strings, ...exprs);\n\t};\n\n\texec(strings: TemplateStringsArray, ...exprs: unknown[]) {\n\t\treturn this._exec(strings, ...exprs);\n\t}\n\n\tcwd(newCwd: string): void {\n\t\tthis.currentCwd = normalizeCwd(newCwd);\n\t}\n\n\tprivate _exec(strings: TemplateStringsArray, ...exprs: unknown[]) {\n\t\tconst source = String.raw(strings, ...exprs);\n\t\tconst fs = this.fs;\n\t\tlet cwdOverride: string | undefined;\n\t\tconst runWithContext = async (): Promise<Record[]> => {\n\t\t\tconst commandStartCwd = normalizeCwd(\n\t\t\t\tcwdOverride ?? this.currentCwd\n\t\t\t);\n\t\t\tconst context = {\n\t\t\t\tcwd: commandStartCwd,\n\t\t\t\tstatus: this.currentStatus,\n\t\t\t\tglobalVars: this.globalVars,\n\t\t\t\tlocalVars: new Map<string, string>(),\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn await collectRecords(execute(ir(), fs, context));\n\t\t\t} finally {\n\t\t\t\tthis.currentStatus = context.status ?? this.currentStatus;\n\t\t\t\tif (\n\t\t\t\t\tcwdOverride === undefined ||\n\t\t\t\t\tcontext.cwd !== commandStartCwd\n\t\t\t\t) {\n\t\t\t\t\tthis.currentCwd = context.cwd;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tconst runStdoutWithContext = async (): Promise<void> => {\n\t\t\tconst commandStartCwd = normalizeCwd(\n\t\t\t\tcwdOverride ?? this.currentCwd\n\t\t\t);\n\t\t\tconst context = {\n\t\t\t\tcwd: commandStartCwd,\n\t\t\t\tstatus: this.currentStatus,\n\t\t\t\tglobalVars: this.globalVars,\n\t\t\t\tlocalVars: new Map<string, string>(),\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst result = execute(ir(), fs, context);\n\t\t\t\tif (result.kind === 'sink') {\n\t\t\t\t\tawait result.value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor await (const r of result.value) {\n\t\t\t\t\tif (r.kind === 'line') {\n\t\t\t\t\t\tprocess.stdout.write(`${r.text}\\n`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.currentStatus = context.status ?? this.currentStatus;\n\t\t\t\tif (\n\t\t\t\t\tcwdOverride === undefined ||\n\t\t\t\t\tcontext.cwd !== commandStartCwd\n\t\t\t\t) {\n\t\t\t\t\tthis.currentCwd = context.cwd;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst ir = lazy<ScriptIR>(() => {\n\t\t\tconst ast = parse(source);\n\t\t\treturn compile(ast);\n\t\t});\n\n\t\tconst command: ShellCommand = {\n\t\t\tcwd(path: string): ShellCommand {\n\t\t\t\tcwdOverride = normalizeCwd(path);\n\t\t\t\treturn command;\n\t\t\t},\n\n\t\t\tasync json(): Promise<unknown[]> {\n\t\t\t\tconst records = await runWithContext();\n\t\t\t\treturn records\n\t\t\t\t\t.filter((r) => r.kind === 'json')\n\t\t\t\t\t.map((r) => r.value);\n\t\t\t},\n\n\t\t\tasync lines(): Promise<string[]> {\n\t\t\t\tconst records = await runWithContext();\n\t\t\t\treturn records\n\t\t\t\t\t.filter((r) => r.kind === 'line')\n\t\t\t\t\t.map((r) => r.text);\n\t\t\t},\n\n\t\t\tasync raw(): Promise<Record[]> {\n\t\t\t\treturn await runWithContext();\n\t\t\t},\n\n\t\t\tasync stdout(): Promise<void> {\n\t\t\t\tawait runStdoutWithContext();\n\t\t\t},\n\n\t\t\tasync text(): Promise<string> {\n\t\t\t\tconst records = await runWithContext();\n\t\t\t\treturn records.map((record) => formatRecord(record)).join('\\n');\n\t\t\t},\n\t\t};\n\n\t\treturn command;\n\t}\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/consumer/consumer.ts","../src/util/lazy.ts","../src/shell/shell.ts"],"sourcesContent":["import { formatRecord, type Record } from '../record';\nimport type { Stream } from '../stream';\n\n/**\n * A Consumer terminates a stream.\n * It pulls values and produces a final result or side-effect.\n */\nexport type Consumer<T, R = void> = (input: Stream<T>) => Promise<R>;\n\n/**\n * Collects the entire stream into memory.\n * Pure from an API perspective.\n */\nexport function collect<T>(): Consumer<T, T[]> {\n\treturn async (input) => {\n\t\tconst out: T[] = [];\n\t\tfor await (const item of input) {\n\t\t\tout.push(item);\n\t\t}\n\t\treturn out;\n\t};\n}\n\n/**\n * Streams records directly to stdout.\n * Side-effecting, non-buffering.\n */\nexport function stdout(): Consumer<Record> {\n\treturn async (input) => {\n\t\tfor await (const record of input) {\n\t\t\tprocess.stdout.write(`${formatRecord(record)}\\n`);\n\t\t}\n\t};\n}\n","export function lazy<T>(fn: () => T) {\n\tlet value: T | undefined;\n\tlet loaded = false;\n\n\treturn (): T => {\n\t\tif (loaded) {\n\t\t\treturn value as T;\n\t\t}\n\n\t\tloaded = true;\n\t\tvalue = fn();\n\t\treturn value as T;\n\t};\n}\n","import { compile, parse, type ScriptIR } from '@shfs/compiler';\n\nimport { collect } from '../consumer/consumer';\nimport { type ExecuteResult, execute } from '../execute/execute';\nimport type { FS } from '../fs/fs';\nimport { formatRecord, type Record } from '../record';\nimport { lazy } from '../util/lazy';\n\nconst ROOT_DIRECTORY = '/';\nconst MULTIPLE_SLASH_REGEX = /\\/+/g;\nconst TRAILING_SLASH_REGEX = /\\/+$/;\n\nexport interface ShellOptions {\n\tcwd?: string;\n}\n\nexport interface ShellCommand {\n\tcwd(path: string): ShellCommand;\n\tjson(): Promise<unknown[]>;\n\tlines(): Promise<string[]>;\n\traw(): Promise<Record[]>;\n\tstdout(): Promise<void>;\n\ttext(): Promise<string>;\n}\n\nfunction normalizeAbsolutePath(path: string): string {\n\tconst withLeadingSlash = path.startsWith(ROOT_DIRECTORY)\n\t\t? path\n\t\t: `${ROOT_DIRECTORY}${path}`;\n\tconst singleSlashes = withLeadingSlash.replace(MULTIPLE_SLASH_REGEX, '/');\n\tconst segments = singleSlashes.split(ROOT_DIRECTORY);\n\tconst normalizedSegments: string[] = [];\n\tfor (const segment of segments) {\n\t\tif (segment === '' || segment === '.') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (segment === '..') {\n\t\t\tnormalizedSegments.pop();\n\t\t\tcontinue;\n\t\t}\n\t\tnormalizedSegments.push(segment);\n\t}\n\treturn `${ROOT_DIRECTORY}${normalizedSegments.join(ROOT_DIRECTORY)}`;\n}\n\nfunction normalizeCwd(cwd: string): string {\n\tif (cwd === '') {\n\t\treturn ROOT_DIRECTORY;\n\t}\n\tconst normalized = normalizeAbsolutePath(cwd);\n\tconst trimmed = normalized.replace(TRAILING_SLASH_REGEX, '');\n\treturn trimmed === '' ? ROOT_DIRECTORY : trimmed;\n}\n\nasync function collectRecords(result: ExecuteResult): Promise<Record[]> {\n\tif (result.kind === 'sink') {\n\t\tawait result.value;\n\t\treturn [];\n\t}\n\treturn collect<Record>()(result.value);\n}\n\nexport class Shell {\n\tprivate readonly fs: FS;\n\tprivate currentCwd: string;\n\tprivate currentStatus = 0;\n\tprivate readonly globalVars = new Map<string, string>();\n\n\tconstructor(fs: FS, options: ShellOptions = {}) {\n\t\tthis.fs = fs;\n\t\tthis.currentCwd = normalizeCwd(options.cwd ?? ROOT_DIRECTORY);\n\t}\n\n\t$ = (strings: TemplateStringsArray, ...exprs: unknown[]) => {\n\t\treturn this._exec(strings, ...exprs);\n\t};\n\n\texec(strings: TemplateStringsArray, ...exprs: unknown[]) {\n\t\treturn this._exec(strings, ...exprs);\n\t}\n\n\tcwd(newCwd: string): void {\n\t\tthis.currentCwd = normalizeCwd(newCwd);\n\t}\n\n\tprivate _exec(strings: TemplateStringsArray, ...exprs: unknown[]) {\n\t\tconst source = String.raw(strings, ...exprs);\n\t\tconst fs = this.fs;\n\t\tlet cwdOverride: string | undefined;\n\t\tconst runWithContext = async (): Promise<Record[]> => {\n\t\t\tconst commandStartCwd = normalizeCwd(\n\t\t\t\tcwdOverride ?? this.currentCwd\n\t\t\t);\n\t\t\tconst context = {\n\t\t\t\tcwd: commandStartCwd,\n\t\t\t\tstatus: this.currentStatus,\n\t\t\t\tglobalVars: this.globalVars,\n\t\t\t\tlocalVars: new Map<string, string>(),\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn await collectRecords(execute(ir(), fs, context));\n\t\t\t} finally {\n\t\t\t\tthis.currentStatus = context.status ?? this.currentStatus;\n\t\t\t\tif (\n\t\t\t\t\tcwdOverride === undefined ||\n\t\t\t\t\tcontext.cwd !== commandStartCwd\n\t\t\t\t) {\n\t\t\t\t\tthis.currentCwd = context.cwd;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tconst runStdoutWithContext = async (): Promise<void> => {\n\t\t\tconst commandStartCwd = normalizeCwd(\n\t\t\t\tcwdOverride ?? this.currentCwd\n\t\t\t);\n\t\t\tconst context = {\n\t\t\t\tcwd: commandStartCwd,\n\t\t\t\tstatus: this.currentStatus,\n\t\t\t\tglobalVars: this.globalVars,\n\t\t\t\tlocalVars: new Map<string, string>(),\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst result = execute(ir(), fs, context);\n\t\t\t\tif (result.kind === 'sink') {\n\t\t\t\t\tawait result.value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor await (const r of result.value) {\n\t\t\t\t\tif (r.kind === 'line') {\n\t\t\t\t\t\tprocess.stdout.write(`${r.text}\\n`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.currentStatus = context.status ?? this.currentStatus;\n\t\t\t\tif (\n\t\t\t\t\tcwdOverride === undefined ||\n\t\t\t\t\tcontext.cwd !== commandStartCwd\n\t\t\t\t) {\n\t\t\t\t\tthis.currentCwd = context.cwd;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst ir = lazy<ScriptIR>(() => {\n\t\t\tconst ast = parse(source);\n\t\t\treturn compile(ast);\n\t\t});\n\n\t\tconst command: ShellCommand = {\n\t\t\tcwd(path: string): ShellCommand {\n\t\t\t\tcwdOverride = normalizeCwd(path);\n\t\t\t\treturn command;\n\t\t\t},\n\n\t\t\tasync json(): Promise<unknown[]> {\n\t\t\t\tconst records = await runWithContext();\n\t\t\t\treturn records\n\t\t\t\t\t.filter((r) => r.kind === 'json')\n\t\t\t\t\t.map((r) => r.value);\n\t\t\t},\n\n\t\t\tasync lines(): Promise<string[]> {\n\t\t\t\tconst records = await runWithContext();\n\t\t\t\treturn records\n\t\t\t\t\t.filter((r) => r.kind === 'line')\n\t\t\t\t\t.map((r) => r.text);\n\t\t\t},\n\n\t\t\tasync raw(): Promise<Record[]> {\n\t\t\t\treturn await runWithContext();\n\t\t\t},\n\n\t\t\tasync stdout(): Promise<void> {\n\t\t\t\tawait runStdoutWithContext();\n\t\t\t},\n\n\t\t\tasync text(): Promise<string> {\n\t\t\t\tconst records = await runWithContext();\n\t\t\t\treturn records.map((record) => formatRecord(record)).join('\\n');\n\t\t\t},\n\t\t};\n\n\t\treturn command;\n\t}\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "Lawson Oates (https://github.com/lawsonoates)",
|
|
3
3
|
"dependencies": {
|
|
4
|
-
"
|
|
5
|
-
"picomatch": "^4.0.3",
|
|
6
|
-
"remeda": "^2.33.1"
|
|
4
|
+
"picomatch": "^4.0.3"
|
|
7
5
|
},
|
|
8
6
|
"description": "A library of simulated fish commands",
|
|
9
7
|
"devDependencies": {
|
|
10
8
|
"@tsconfig/bun": "catalog:",
|
|
9
|
+
"@shfs/compiler": "workspace:*",
|
|
11
10
|
"@types/bun": "catalog:",
|
|
12
11
|
"@types/picomatch": "^4.0.2",
|
|
13
12
|
"@typescript/native-preview": "catalog:",
|
|
@@ -57,5 +56,5 @@
|
|
|
57
56
|
},
|
|
58
57
|
"type": "module",
|
|
59
58
|
"types": "./dist/index.d.mts",
|
|
60
|
-
"version": "0.2.
|
|
59
|
+
"version": "0.2.2"
|
|
61
60
|
}
|