@bytecodealliance/jco
Advanced tools
Comparing version 0.13.0 to 0.13.1
export namespace WasiCliStderr { | ||
export function getStderr(): OutputStream; | ||
} | ||
import type { OutputStream } from '../interfaces/wasi-io-streams'; | ||
import type { OutputStream } from '../interfaces/wasi-io-streams.js'; | ||
export { OutputStream }; |
export namespace WasiCliStdin { | ||
export function getStdin(): InputStream; | ||
} | ||
import type { InputStream } from '../interfaces/wasi-io-streams'; | ||
import type { InputStream } from '../interfaces/wasi-io-streams.js'; | ||
export { InputStream }; |
export namespace WasiCliStdout { | ||
export function getStdout(): OutputStream; | ||
} | ||
import type { OutputStream } from '../interfaces/wasi-io-streams'; | ||
import type { OutputStream } from '../interfaces/wasi-io-streams.js'; | ||
export { OutputStream }; |
export namespace WasiCliTerminalInput { | ||
export function dropTerminalInput(this_: TerminalInput): void; | ||
export { TerminalInput }; | ||
} | ||
export type TerminalInput = number; | ||
export class TerminalInput { | ||
} |
export namespace WasiCliTerminalOutput { | ||
export function dropTerminalOutput(this_: TerminalOutput): void; | ||
export { TerminalOutput }; | ||
} | ||
export type TerminalOutput = number; | ||
export class TerminalOutput { | ||
} |
export namespace WasiCliTerminalStderr { | ||
export function getTerminalStderr(): TerminalOutput | undefined; | ||
} | ||
import type { TerminalOutput } from '../interfaces/wasi-cli-terminal-output'; | ||
import type { TerminalOutput } from '../interfaces/wasi-cli-terminal-output.js'; | ||
export { TerminalOutput }; |
export namespace WasiCliTerminalStdin { | ||
export function getTerminalStdin(): TerminalInput | undefined; | ||
} | ||
import type { TerminalInput } from '../interfaces/wasi-cli-terminal-input'; | ||
import type { TerminalInput } from '../interfaces/wasi-cli-terminal-input.js'; | ||
export { TerminalInput }; |
export namespace WasiCliTerminalStdout { | ||
export function getTerminalStdout(): TerminalOutput | undefined; | ||
} | ||
import type { TerminalOutput } from '../interfaces/wasi-cli-terminal-output'; | ||
import type { TerminalOutput } from '../interfaces/wasi-cli-terminal-output.js'; | ||
export { TerminalOutput }; |
export namespace WasiFilesystemPreopens { | ||
export function getDirectories(): [Descriptor, string][]; | ||
} | ||
import type { Descriptor } from '../interfaces/wasi-filesystem-types'; | ||
import type { Descriptor } from '../interfaces/wasi-filesystem-types.js'; | ||
export { Descriptor }; |
export namespace WasiFilesystemTypes { | ||
export function readViaStream(this_: Descriptor, offset: Filesize): InputStream; | ||
export function writeViaStream(this_: Descriptor, offset: Filesize): OutputStream; | ||
export function appendViaStream(this_: Descriptor): OutputStream; | ||
export function getType(this_: Descriptor): DescriptorType; | ||
export function stat(this_: Descriptor): DescriptorStat; | ||
export function openAt(this_: Descriptor, pathFlags: PathFlags, path: string, openFlags: OpenFlags, flags: DescriptorFlags, modes: Modes): Descriptor; | ||
export function dropDescriptor(this_: Descriptor): void; | ||
export function dropDirectoryEntryStream(this_: DirectoryEntryStream): void; | ||
export function metadataHash(this_: Descriptor): MetadataHashValue; | ||
export { Descriptor }; | ||
export function filesystemErrorCode(err: Error): ErrorCode | undefined; | ||
export { DirectoryEntryStream }; | ||
} | ||
export type Descriptor = number; | ||
export type Filesize = bigint; | ||
import type { InputStream } from '../interfaces/wasi-io-streams'; | ||
import type { InputStream } from '../interfaces/wasi-io-streams.js'; | ||
export { InputStream }; | ||
@@ -94,3 +87,3 @@ /** | ||
export type ErrorCode = 'access' | 'would-block' | 'already' | 'bad-descriptor' | 'busy' | 'deadlock' | 'quota' | 'exist' | 'file-too-large' | 'illegal-byte-sequence' | 'in-progress' | 'interrupted' | 'invalid' | 'io' | 'is-directory' | 'loop' | 'too-many-links' | 'message-size' | 'name-too-long' | 'no-device' | 'no-entry' | 'no-lock' | 'insufficient-memory' | 'insufficient-space' | 'not-directory' | 'not-empty' | 'not-recoverable' | 'unsupported' | 'no-tty' | 'no-such-device' | 'overflow' | 'not-permitted' | 'pipe' | 'read-only' | 'invalid-seek' | 'text-file-busy' | 'cross-device'; | ||
import type { OutputStream } from '../interfaces/wasi-io-streams'; | ||
import type { OutputStream } from '../interfaces/wasi-io-streams.js'; | ||
export { OutputStream }; | ||
@@ -118,3 +111,3 @@ /** | ||
export type LinkCount = bigint; | ||
import type { Datetime } from '../interfaces/wasi-clocks-wall-clock'; | ||
import type { Datetime } from '../interfaces/wasi-clocks-wall-clock.js'; | ||
export { Datetime }; | ||
@@ -125,5 +118,5 @@ export interface DescriptorStat { | ||
size: Filesize, | ||
dataAccessTimestamp: Datetime, | ||
dataModificationTimestamp: Datetime, | ||
statusChangeTimestamp: Datetime, | ||
dataAccessTimestamp?: Datetime, | ||
dataModificationTimestamp?: Datetime, | ||
statusChangeTimestamp?: Datetime, | ||
} | ||
@@ -152,3 +145,2 @@ export interface PathFlags { | ||
} | ||
export type DirectoryEntryStream = number; | ||
export interface MetadataHashValue { | ||
@@ -158,1 +150,16 @@ lower: bigint, | ||
} | ||
import type { Error } from '../interfaces/wasi-io-streams.js'; | ||
export { Error }; | ||
export class Descriptor { | ||
readViaStream(offset: Filesize): InputStream; | ||
writeViaStream(offset: Filesize): OutputStream; | ||
appendViaStream(): OutputStream; | ||
getType(): DescriptorType; | ||
stat(): DescriptorStat; | ||
openAt(pathFlags: PathFlags, path: string, openFlags: OpenFlags, flags: DescriptorFlags, modes: Modes): Descriptor; | ||
metadataHash(): MetadataHashValue; | ||
} | ||
export class DirectoryEntryStream { | ||
} |
export namespace WasiIoStreams { | ||
export function read(this_: InputStream, len: bigint): [Uint8Array, StreamStatus]; | ||
export function blockingRead(this_: InputStream, len: bigint): [Uint8Array, StreamStatus]; | ||
export function dropInputStream(this_: InputStream): void; | ||
export function checkWrite(this_: OutputStream): bigint; | ||
export function write(this_: OutputStream, contents: Uint8Array): void; | ||
export function blockingWriteAndFlush(this_: OutputStream, contents: Uint8Array): void; | ||
export function blockingFlush(this_: OutputStream): void; | ||
export function dropOutputStream(this_: OutputStream): void; | ||
export { InputStream }; | ||
export { OutputStream }; | ||
export { Error }; | ||
} | ||
export type InputStream = number; | ||
/** | ||
* # Variants | ||
* | ||
* ## `"open"` | ||
* | ||
* ## `"ended"` | ||
*/ | ||
export type StreamStatus = 'open' | 'ended'; | ||
export type OutputStream = number; | ||
/** | ||
* # Variants | ||
* | ||
* ## `"last-operation-failed"` | ||
* | ||
* ## `"closed"` | ||
*/ | ||
export type WriteError = 'last-operation-failed' | 'closed'; | ||
export type StreamError = StreamErrorLastOperationFailed | StreamErrorClosed; | ||
export interface StreamErrorLastOperationFailed { | ||
tag: 'last-operation-failed', | ||
val: Error, | ||
} | ||
export interface StreamErrorClosed { | ||
tag: 'closed', | ||
} | ||
export class InputStream { | ||
read(len: bigint): Uint8Array; | ||
blockingRead(len: bigint): Uint8Array; | ||
} | ||
export class OutputStream { | ||
checkWrite(): bigint; | ||
write(contents: Uint8Array): void; | ||
blockingWriteAndFlush(contents: Uint8Array): void; | ||
blockingFlush(): void; | ||
} | ||
export class Error { | ||
} |
export namespace WasiSocketsTcp { | ||
export { TcpSocket }; | ||
} | ||
export class TcpSocket { | ||
} |
@@ -48,18 +48,18 @@ export type Files = [string, Uint8Array][]; | ||
} | ||
import { WasiCliEnvironment020rc20231105 } from './interfaces/wasi-cli-environment-0.2.0-rc-2023-11-05'; | ||
import { WasiCliExit020rc20231105 } from './interfaces/wasi-cli-exit-0.2.0-rc-2023-11-05'; | ||
import { WasiCliStderr020rc20231105 } from './interfaces/wasi-cli-stderr-0.2.0-rc-2023-11-05'; | ||
import { WasiCliStdin020rc20231105 } from './interfaces/wasi-cli-stdin-0.2.0-rc-2023-11-05'; | ||
import { WasiCliStdout020rc20231105 } from './interfaces/wasi-cli-stdout-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalInput020rc20231105 } from './interfaces/wasi-cli-terminal-input-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalOutput020rc20231105 } from './interfaces/wasi-cli-terminal-output-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalStderr020rc20231105 } from './interfaces/wasi-cli-terminal-stderr-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalStdin020rc20231105 } from './interfaces/wasi-cli-terminal-stdin-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalStdout020rc20231105 } from './interfaces/wasi-cli-terminal-stdout-0.2.0-rc-2023-11-05'; | ||
import { WasiClocksWallClock020rc20231105 } from './interfaces/wasi-clocks-wall-clock-0.2.0-rc-2023-11-05'; | ||
import { WasiFilesystemPreopens020rc20231105 } from './interfaces/wasi-filesystem-preopens-0.2.0-rc-2023-11-05'; | ||
import { WasiFilesystemTypes020rc20231105 } from './interfaces/wasi-filesystem-types-0.2.0-rc-2023-11-05'; | ||
import { WasiIoStreams020rc20231105 } from './interfaces/wasi-io-streams-0.2.0-rc-2023-11-05'; | ||
import { WasiRandomRandom020rc20231105 } from './interfaces/wasi-random-random-0.2.0-rc-2023-11-05'; | ||
import { WasiSocketsTcp020rc20231105 } from './interfaces/wasi-sockets-tcp-0.2.0-rc-2023-11-05'; | ||
import { WasiCliEnvironment } from './interfaces/wasi-cli-environment'; | ||
import { WasiCliExit } from './interfaces/wasi-cli-exit'; | ||
import { WasiCliStderr } from './interfaces/wasi-cli-stderr'; | ||
import { WasiCliStdin } from './interfaces/wasi-cli-stdin'; | ||
import { WasiCliStdout } from './interfaces/wasi-cli-stdout'; | ||
import { WasiCliTerminalInput } from './interfaces/wasi-cli-terminal-input'; | ||
import { WasiCliTerminalOutput } from './interfaces/wasi-cli-terminal-output'; | ||
import { WasiCliTerminalStderr } from './interfaces/wasi-cli-terminal-stderr'; | ||
import { WasiCliTerminalStdin } from './interfaces/wasi-cli-terminal-stdin'; | ||
import { WasiCliTerminalStdout } from './interfaces/wasi-cli-terminal-stdout'; | ||
import { WasiClocksWallClock } from './interfaces/wasi-clocks-wall-clock'; | ||
import { WasiFilesystemPreopens } from './interfaces/wasi-filesystem-preopens'; | ||
import { WasiFilesystemTypes } from './interfaces/wasi-filesystem-types'; | ||
import { WasiIoStreams } from './interfaces/wasi-io-streams'; | ||
import { WasiRandomRandom } from './interfaces/wasi-random-random'; | ||
import { WasiSocketsTcp } from './interfaces/wasi-sockets-tcp'; | ||
export function generate(component: Uint8Array, options: GenerateOptions): Transpiled; | ||
@@ -66,0 +66,0 @@ export function generateTypes(name: string, options: TypeGenerationOptions): Files; |
@@ -1,17 +0,17 @@ | ||
import { WasiCliEnvironment020rc20231105 } from './interfaces/wasi-cli-environment-0.2.0-rc-2023-11-05'; | ||
import { WasiCliExit020rc20231105 } from './interfaces/wasi-cli-exit-0.2.0-rc-2023-11-05'; | ||
import { WasiCliStderr020rc20231105 } from './interfaces/wasi-cli-stderr-0.2.0-rc-2023-11-05'; | ||
import { WasiCliStdin020rc20231105 } from './interfaces/wasi-cli-stdin-0.2.0-rc-2023-11-05'; | ||
import { WasiCliStdout020rc20231105 } from './interfaces/wasi-cli-stdout-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalInput020rc20231105 } from './interfaces/wasi-cli-terminal-input-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalOutput020rc20231105 } from './interfaces/wasi-cli-terminal-output-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalStderr020rc20231105 } from './interfaces/wasi-cli-terminal-stderr-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalStdin020rc20231105 } from './interfaces/wasi-cli-terminal-stdin-0.2.0-rc-2023-11-05'; | ||
import { WasiCliTerminalStdout020rc20231105 } from './interfaces/wasi-cli-terminal-stdout-0.2.0-rc-2023-11-05'; | ||
import { WasiClocksWallClock020rc20231105 } from './interfaces/wasi-clocks-wall-clock-0.2.0-rc-2023-11-05'; | ||
import { WasiFilesystemPreopens020rc20231105 } from './interfaces/wasi-filesystem-preopens-0.2.0-rc-2023-11-05'; | ||
import { WasiFilesystemTypes020rc20231105 } from './interfaces/wasi-filesystem-types-0.2.0-rc-2023-11-05'; | ||
import { WasiIoStreams020rc20231105 } from './interfaces/wasi-io-streams-0.2.0-rc-2023-11-05'; | ||
import { WasiRandomRandom020rc20231105 } from './interfaces/wasi-random-random-0.2.0-rc-2023-11-05'; | ||
import { WasiSocketsTcp020rc20231105 } from './interfaces/wasi-sockets-tcp-0.2.0-rc-2023-11-05'; | ||
import { WasiCliEnvironment } from './interfaces/wasi-cli-environment'; | ||
import { WasiCliExit } from './interfaces/wasi-cli-exit'; | ||
import { WasiCliStderr } from './interfaces/wasi-cli-stderr'; | ||
import { WasiCliStdin } from './interfaces/wasi-cli-stdin'; | ||
import { WasiCliStdout } from './interfaces/wasi-cli-stdout'; | ||
import { WasiCliTerminalInput } from './interfaces/wasi-cli-terminal-input'; | ||
import { WasiCliTerminalOutput } from './interfaces/wasi-cli-terminal-output'; | ||
import { WasiCliTerminalStderr } from './interfaces/wasi-cli-terminal-stderr'; | ||
import { WasiCliTerminalStdin } from './interfaces/wasi-cli-terminal-stdin'; | ||
import { WasiCliTerminalStdout } from './interfaces/wasi-cli-terminal-stdout'; | ||
import { WasiClocksWallClock } from './interfaces/wasi-clocks-wall-clock'; | ||
import { WasiFilesystemPreopens } from './interfaces/wasi-filesystem-preopens'; | ||
import { WasiFilesystemTypes } from './interfaces/wasi-filesystem-types'; | ||
import { WasiIoStreams } from './interfaces/wasi-io-streams'; | ||
import { WasiRandomRandom } from './interfaces/wasi-random-random'; | ||
import { WasiSocketsTcp } from './interfaces/wasi-sockets-tcp'; | ||
import { LocalWasmToolsTools } from './interfaces/local-wasm-tools-tools'; | ||
@@ -18,0 +18,0 @@ export const tools: typeof LocalWasmToolsTools; |
{ | ||
"name": "@bytecodealliance/jco", | ||
"version": "0.13.0", | ||
"version": "0.13.1", | ||
"description": "JavaScript tooling for working with WebAssembly Components", | ||
@@ -21,3 +21,3 @@ "author": "Guy Bedford", | ||
"dependencies": { | ||
"@bytecodealliance/preview2-shim": "0.0.19", | ||
"@bytecodealliance/preview2-shim": "0.0.20", | ||
"binaryen": "^111.0.0", | ||
@@ -31,3 +31,3 @@ "chalk-template": "^0.4.0", | ||
"devDependencies": { | ||
"@bytecodealliance/componentize-js": "^0.3.0", | ||
"@bytecodealliance/componentize-js": "^0.4.0", | ||
"@types/node": "^18.11.17", | ||
@@ -57,3 +57,3 @@ "@typescript-eslint/eslint-plugin": "^5.41.0", | ||
"build": "cargo xtask build workspace", | ||
"build:types:preview2-shim": "cargo xtask build shims", | ||
"build:types:preview2-shim": "cargo xtask generate wasi-types", | ||
"lint": "eslint -c eslintrc.cjs lib/**/*.js packages/*/lib/**/*.js", | ||
@@ -60,0 +60,0 @@ "test": "mocha -u tdd test/test.js --timeout 120000" |
import { getTmpDir } from '../common.js'; | ||
import { transpile } from './transpile.js'; | ||
import { rm, stat, mkdir, writeFile, symlink, chmod } from 'node:fs/promises'; | ||
import { rm, stat, mkdir, writeFile, symlink } from 'node:fs/promises'; | ||
import { basename, resolve, extname } from 'node:path'; | ||
import { spawn } from 'node:child_process'; | ||
import { argv0, exit } from 'node:process'; | ||
import { fork } from 'node:child_process'; | ||
import process from 'node:process'; | ||
import { fileURLToPath } from 'node:url'; | ||
@@ -11,5 +11,7 @@ import c from 'chalk-template'; | ||
export async function run (componentPath, args) { | ||
// Ensure that `args` is an array | ||
args = [...args]; | ||
const name = basename(componentPath.slice(0, -extname(componentPath).length || Infinity)); | ||
const outDir = await getTmpDir(); | ||
let cp; | ||
try { | ||
@@ -26,7 +28,5 @@ try { | ||
catch (e) { | ||
console.error(c`{red ERR}: Unable to transpile command for execution`); | ||
throw e; | ||
throw new Error('Unable to transpile command for execution', { cause: e }); | ||
} | ||
await mkdir(resolve(outDir, 'node_modules', '@bytecodealliance'), { recursive: true }); | ||
await writeFile(resolve(outDir, 'package.json'), JSON.stringify({ type: 'module' })); | ||
@@ -43,10 +43,11 @@ | ||
let len = preview2ShimPath.length; | ||
preview2ShimPath = resolve(preview2ShimPath, '../../../node_modules/@bytecodealliance/preview2-shim'); | ||
preview2ShimPath = resolve(preview2ShimPath, '..', '..', '..', 'node_modules', '@bytecodealliance', 'preview2-shim'); | ||
if (preview2ShimPath.length === len) { | ||
console.error(c`{red ERR}: Unable to locate the {bold @bytecodealliance/preview2-shim} package, make sure it is installed.`); | ||
return; | ||
throw c`Unable to locate the {bold @bytecodealliance/preview2-shim} package, make sure it is installed.`; | ||
} | ||
} | ||
await symlink(preview2ShimPath, resolve(outDir, 'node_modules/@bytecodealliance/preview2-shim'), 'dir'); | ||
const modulesDir = resolve(outDir, 'node_modules', '@bytecodealliance'); | ||
await mkdir(modulesDir, { recursive: true }); | ||
await symlink(preview2ShimPath, resolve(modulesDir, 'preview2-shim'), 'dir'); | ||
@@ -77,22 +78,15 @@ const runPath = resolve(outDir, '_run.js'); | ||
`); | ||
await chmod(runPath, 0o777); | ||
cp = spawn(argv0, [runPath, ...args], { stdio: 'inherit' }); | ||
process.exitCode = await new Promise((resolve, reject) => { | ||
const cp = fork(runPath, args, { stdio: 'inherit' }); | ||
cp.on('error', reject); | ||
cp.on('exit', resolve); | ||
}); | ||
} | ||
finally { | ||
if (!cp) { | ||
try { | ||
await rm(outDir, { recursive: true }); | ||
} catch {} | ||
} | ||
try { | ||
await rm(outDir, { recursive: true }); | ||
} catch {} | ||
} | ||
const exitCode = await new Promise((resolve, reject) => { | ||
cp.on('error', reject); | ||
cp.on('exit', resolve); | ||
}); | ||
try { | ||
await rm(outDir, { recursive: true }); | ||
} catch {} | ||
exit(exitCode); | ||
} |
@@ -14,3 +14,3 @@ #!/usr/bin/env node | ||
.usage('<command> [options]') | ||
.version('0.13.0'); | ||
.version('0.13.1'); | ||
@@ -17,0 +17,0 @@ function myParseInt(value) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
27492807
43
7056
+ Added@bytecodealliance/preview2-shim@0.0.20(transitive)
- Removed@bytecodealliance/preview2-shim@0.0.19(transitive)