@bytecodealliance/jco 1.28.1 → 1.30.0
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 +48 -0
- package/dist/api.js.map +1 -1
- package/dist/bundle.js.map +1 -1
- package/dist/cmd/new/declarations.d.ts +5 -0
- package/dist/cmd/new/declarations.d.ts.map +1 -0
- package/dist/cmd/new/declarations.js +221 -0
- package/dist/cmd/new/declarations.js.map +1 -0
- package/dist/cmd/new/model.d.ts +23 -0
- package/dist/cmd/new/model.d.ts.map +1 -0
- package/dist/cmd/new/model.js +2 -0
- package/dist/cmd/new/model.js.map +1 -0
- package/dist/cmd/new/package-manager.d.ts +14 -0
- package/dist/cmd/new/package-manager.d.ts.map +1 -0
- package/dist/cmd/new/package-manager.js +33 -0
- package/dist/cmd/new/package-manager.js.map +1 -0
- package/dist/cmd/new/render.d.ts +9 -0
- package/dist/cmd/new/render.d.ts.map +1 -0
- package/dist/cmd/new/render.js +254 -0
- package/dist/cmd/new/render.js.map +1 -0
- package/dist/cmd/new.d.ts +14 -0
- package/dist/cmd/new.d.ts.map +1 -0
- package/dist/cmd/new.js +260 -0
- package/dist/cmd/new.js.map +1 -0
- package/dist/cmd/opt.js.map +1 -1
- package/dist/cmd/run.d.ts +23 -2
- package/dist/cmd/run.d.ts.map +1 -1
- package/dist/cmd/run.js +51 -1
- package/dist/cmd/run.js.map +1 -1
- package/dist/cmd/transpile.d.ts +2 -0
- package/dist/cmd/transpile.d.ts.map +1 -1
- package/dist/cmd/transpile.js +3 -0
- package/dist/cmd/transpile.js.map +1 -1
- package/dist/cmd/types.d.ts +1 -0
- package/dist/cmd/types.d.ts.map +1 -1
- package/dist/cmd/types.js +1 -0
- package/dist/cmd/types.js.map +1 -1
- package/dist/cmd/wasm-tools.js.map +1 -1
- package/dist/common.js.map +1 -1
- package/dist/jco.js +46 -1
- package/dist/jco.js.map +1 -1
- package/dist/ora-shim.d.ts.map +1 -1
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -57,6 +57,7 @@ Options:
|
|
|
57
57
|
-h, --help display help for command
|
|
58
58
|
|
|
59
59
|
Commands:
|
|
60
|
+
scaffold [options] <project-directory> Create a JavaScript or TypeScript WebAssembly component or host-plugin project
|
|
60
61
|
componentize [options] <source> Create a component from a JavaScript or TypeScript module
|
|
61
62
|
transpile [options] <component-path> Transpile a WebAssembly Component to JS + core Wasm for JavaScript execution
|
|
62
63
|
types [options] <wit-path> Generate types for the given WIT
|
|
@@ -70,12 +71,43 @@ Commands:
|
|
|
70
71
|
metadata-add [options] [module] add producer metadata for a Wasm binary [wasm-tools metadata add]
|
|
71
72
|
parse [options] <input> parses the Wasm text format into a binary file [wasm-tools parse]
|
|
72
73
|
new [options] <core-module> create a WebAssembly component adapted from a component core Wasm [wasm-tools component new]
|
|
74
|
+
tool Low-level WebAssembly conversion utilities
|
|
73
75
|
embed [options] [core-module] embed the component typing section into a core Wasm module [wasm-tools component embed]
|
|
74
76
|
help [command] display help for command
|
|
75
77
|
```
|
|
76
78
|
|
|
77
79
|
For help with individual command options, use `jco <cmd> --help`.
|
|
78
80
|
|
|
81
|
+
### Scaffold a new component project
|
|
82
|
+
|
|
83
|
+
`jco scaffold` creates a regular Node.js project whose source skeleton matches an existing WIT world. By default,
|
|
84
|
+
Typescript, `pnpm`, and both NodeJS and Web targets are used:
|
|
85
|
+
|
|
86
|
+
```console
|
|
87
|
+
jco scaffold my-component --wit path/to/wit
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`--wit` accepts a self-contained `.wit` file or WIT package directory and copies it into the project. If dealing with a
|
|
91
|
+
WIT file that contains multiple worlds, supply the `--world` option as well.
|
|
92
|
+
|
|
93
|
+
Immediately, you should be able to install and build the component:
|
|
94
|
+
|
|
95
|
+
```console
|
|
96
|
+
cd my-component
|
|
97
|
+
pnpm install
|
|
98
|
+
pnpm check
|
|
99
|
+
pnpm test
|
|
100
|
+
pnpm build
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
You can configure scaffolding in various ways:
|
|
104
|
+
|
|
105
|
+
- `--host` to generate a plugin that provides the selected world's imports for use with `instantiate` (the default
|
|
106
|
+
generates a guest that implements its exports)
|
|
107
|
+
- `--language javascript` to generate a Javscript scaffold (the default is Typescript)
|
|
108
|
+
- `--package-manager npm`/`--package-manager yarn` to use a separate package manager (`pnpm` is the default)
|
|
109
|
+
- `--target nodejs`/`--target web` (can be repeated) to explicitly enable targets (by default both targets are supported)
|
|
110
|
+
|
|
79
111
|
### Transpile
|
|
80
112
|
|
|
81
113
|
See the [Transpiling Docs](https://bytecodealliance.github.io/jco/transpiling.html) for more background and info.
|
|
@@ -92,6 +124,22 @@ For Wasm components that implement the WASI Command world, a `jco run` utility i
|
|
|
92
124
|
jco run cowasy.component.wasm hello
|
|
93
125
|
```
|
|
94
126
|
|
|
127
|
+
By default, `jco run` retains its historical behavior and gives the component access to the host
|
|
128
|
+
filesystem, environment, and network. Pass `--sandbox` to deny those capabilities, then grant
|
|
129
|
+
only those the component needs:
|
|
130
|
+
|
|
131
|
+
```console
|
|
132
|
+
jco run command.wasm --sandbox \
|
|
133
|
+
--sandbox-env-set HOME=/guest \
|
|
134
|
+
--sandbox-fs-preopen ./data::/data \
|
|
135
|
+
--sandbox-net-inherit
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
`--sandbox-env-set NAME` inherits one variable from the host, while `--sandbox-env-inherit` inherits
|
|
139
|
+
them all. `--sandbox-fs-preopen HOST[::GUEST]` exposes a directory (using the host path as the guest
|
|
140
|
+
path when it is omitted). The environment and preopen options may be repeated; values are applied
|
|
141
|
+
in command-line order.
|
|
142
|
+
|
|
95
143
|
Using the preview2-shim WASI implementation, full access to the underlying system primitives is provided, including filesystem and environment variable permissions.
|
|
96
144
|
|
|
97
145
|
For HTTP Proxy components, `jco serve` provides a JS server implementation:
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,cAAc,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EACH,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,GACf,MAAM,4CAA4C,CAAC;AAEpD,MAAM,UAAU,0BAA0B;IACtC,OAAO,IAAI,GAAG,CAAC,4CAA4C,EAAE,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,cAAc,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EACH,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,GACf,MAAM,4CAA4C,CAAC;AAEpD,MAAM,UAAU,0BAA0B;IACtC,OAAO,IAAI,GAAG,CAAC,4CAA4C,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC;AACD,MAAM,UAAU,0BAA0B;IACtC,OAAO,IAAI,GAAG,CAAC,4CAA4C,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAW7C,0EAA0E;AAC1E,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAC/C,MAAM,4BAA4B,GAAG,wBAAwB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACtD,IAAI,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,OAAO,wBAAwB,CAAC;IACpC,CAAC;IACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACrD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvD,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,oEAAoE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,SAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type ts from "typescript-compiler-api";
|
|
2
|
+
import type { ComponentImplementationModel } from "./model.js";
|
|
3
|
+
export declare function declarationModel(typescript: typeof ts, files: Record<string, Uint8Array>, hostMode?: boolean): ComponentImplementationModel;
|
|
4
|
+
export declare function validateComponentSource(typescript: typeof ts, files: Record<string, Uint8Array>, source: string, language: "typescript" | "javascript"): void;
|
|
5
|
+
//# sourceMappingURL=declarations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../../src/cmd/new/declarations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAE9C,OAAO,KAAK,EAAE,4BAA4B,EAAgD,MAAM,YAAY,CAAC;AAE7G,wBAAgB,gBAAgB,CAC5B,UAAU,EAAE,OAAO,EAAE,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,QAAQ,UAAQ,GACjB,4BAA4B,CA+E9B;AAqDD,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,OAAO,EAAE,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,GAAG,YAAY,GACtC,IAAI,CA8DN"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
export function declarationModel(typescript, files, hostMode = false) {
|
|
2
|
+
const decoder = new TextDecoder();
|
|
3
|
+
const virtualFiles = Object.fromEntries(Object.entries(files).map(([name, bytes]) => [`/${name.replaceAll("\\", "/")}`, decoder.decode(bytes)]));
|
|
4
|
+
const options = {
|
|
5
|
+
module: typescript.ModuleKind.ESNext,
|
|
6
|
+
moduleResolution: typescript.ModuleResolutionKind.Bundler,
|
|
7
|
+
noLib: true,
|
|
8
|
+
skipLibCheck: true,
|
|
9
|
+
};
|
|
10
|
+
const baseHost = typescript.createCompilerHost(options);
|
|
11
|
+
const host = {
|
|
12
|
+
...baseHost,
|
|
13
|
+
fileExists: (name) => virtualFiles[name] !== undefined,
|
|
14
|
+
readFile: (name) => virtualFiles[name],
|
|
15
|
+
getCurrentDirectory: () => "/",
|
|
16
|
+
getDefaultLibFileName: () => "/lib.d.ts",
|
|
17
|
+
getSourceFile: (name, languageVersion) => {
|
|
18
|
+
const source = virtualFiles[name];
|
|
19
|
+
return source === undefined
|
|
20
|
+
? undefined
|
|
21
|
+
: typescript.createSourceFile(name, source, languageVersion, true, typescript.ScriptKind.TS);
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const program = typescript.createProgram(Object.keys(virtualFiles), options, host);
|
|
25
|
+
const checker = program.getTypeChecker();
|
|
26
|
+
if (hostMode) {
|
|
27
|
+
return hostDeclarationModel(typescript, program, checker);
|
|
28
|
+
}
|
|
29
|
+
const modules = new Map();
|
|
30
|
+
const rootModules = [];
|
|
31
|
+
// Build graph for typechecking
|
|
32
|
+
for (const sourceFile of program.getSourceFiles()) {
|
|
33
|
+
for (const statement of sourceFile.statements) {
|
|
34
|
+
if (typescript.isModuleDeclaration(statement) && typescript.isStringLiteral(statement.name)) {
|
|
35
|
+
const symbol = checker.getSymbolAtLocation(statement.name);
|
|
36
|
+
if (symbol) {
|
|
37
|
+
modules.set(statement.name.text, symbol);
|
|
38
|
+
if (!sourceFile.fileName.includes("/interfaces/")) {
|
|
39
|
+
rootModules.push(statement.name.text);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (rootModules.length !== 1) {
|
|
46
|
+
throw new Error(`Expected one generated world declaration, found ${rootModules.length}`);
|
|
47
|
+
}
|
|
48
|
+
const world = rootModules[0];
|
|
49
|
+
const worldSymbol = modules.get(world);
|
|
50
|
+
const functions = [];
|
|
51
|
+
const interfaces = [];
|
|
52
|
+
// Gather interfaces and functions
|
|
53
|
+
for (const exported of checker.getExportsOfModule(worldSymbol)) {
|
|
54
|
+
const declaration = exported.declarations?.[0];
|
|
55
|
+
if (declaration &&
|
|
56
|
+
typescript.isNamespaceExport(declaration) &&
|
|
57
|
+
typescript.isExportDeclaration(declaration.parent) &&
|
|
58
|
+
declaration.parent.isTypeOnly) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const target = exported.flags & typescript.SymbolFlags.Alias ? checker.getAliasedSymbol(exported) : exported;
|
|
62
|
+
if (target.flags & typescript.SymbolFlags.Function) {
|
|
63
|
+
functions.push(functionFromSymbol(typescript, checker, target));
|
|
64
|
+
}
|
|
65
|
+
else if (target.flags & typescript.SymbolFlags.ValueModule) {
|
|
66
|
+
interfaces.push(interfaceFromSymbol(typescript, checker, exported.name, target));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return { world, functions, interfaces };
|
|
70
|
+
}
|
|
71
|
+
function hostDeclarationModel(typescript, program, checker) {
|
|
72
|
+
const root = program.getSourceFiles().find((source) => !source.fileName.includes("/interfaces/"));
|
|
73
|
+
if (!root) {
|
|
74
|
+
throw new Error("Expected one generated host world declaration");
|
|
75
|
+
}
|
|
76
|
+
const world = root.getFullText().match(/\/\/ world ([^\s]+)/)?.[1];
|
|
77
|
+
if (!world) {
|
|
78
|
+
throw new Error("Could not determine the generated host world");
|
|
79
|
+
}
|
|
80
|
+
const interfaces = [];
|
|
81
|
+
for (const statement of root.statements) {
|
|
82
|
+
if (!typescript.isExportDeclaration(statement) ||
|
|
83
|
+
!statement.isTypeOnly ||
|
|
84
|
+
!statement.exportClause ||
|
|
85
|
+
!typescript.isNamespaceExport(statement.exportClause)) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const exported = checker.getSymbolAtLocation(statement.exportClause.name);
|
|
89
|
+
if (!exported) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const moduleSpecifier = typescript.isStringLiteral(statement.moduleSpecifier)
|
|
93
|
+
? statement.moduleSpecifier.text
|
|
94
|
+
: undefined;
|
|
95
|
+
const interfaceFile = moduleSpecifier
|
|
96
|
+
? program.getSourceFile(`/${moduleSpecifier.replace(/^\.\//, "").replace(/\.js$/, ".d.ts")}`)
|
|
97
|
+
: undefined;
|
|
98
|
+
const importName = interfaceFile?.getFullText().match(/@module Interface ([^\s*]+)/)?.[1];
|
|
99
|
+
const target = interfaceFile && checker.getSymbolAtLocation(interfaceFile);
|
|
100
|
+
if (!importName || !target) {
|
|
101
|
+
throw new Error(`Could not determine the WIT import for ${exported.name}`);
|
|
102
|
+
}
|
|
103
|
+
interfaces.push({ ...interfaceFromSymbol(typescript, checker, exported.name, target), importName });
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
world,
|
|
107
|
+
typeModule: `../types/generated/${root.fileName
|
|
108
|
+
.split("/")
|
|
109
|
+
.pop()
|
|
110
|
+
.replace(/\.d\.ts$/, ".js")}`,
|
|
111
|
+
functions: [],
|
|
112
|
+
interfaces,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function validateComponentSource(typescript, files, source, language) {
|
|
116
|
+
const decoder = new TextDecoder();
|
|
117
|
+
const sourceName = language === "typescript" ? "/src/component.ts" : "/src/component.js";
|
|
118
|
+
const virtualFiles = {
|
|
119
|
+
[sourceName]: source,
|
|
120
|
+
...Object.fromEntries(Object.entries(files).map(([name, bytes]) => [
|
|
121
|
+
`/types/generated/${name.replaceAll("\\", "/")}`,
|
|
122
|
+
decoder.decode(bytes),
|
|
123
|
+
])),
|
|
124
|
+
};
|
|
125
|
+
const options = {
|
|
126
|
+
allowJs: language === "javascript",
|
|
127
|
+
checkJs: language === "javascript",
|
|
128
|
+
module: typescript.ModuleKind.ESNext,
|
|
129
|
+
moduleResolution: typescript.ModuleResolutionKind.Bundler,
|
|
130
|
+
noEmit: true,
|
|
131
|
+
skipLibCheck: true,
|
|
132
|
+
strict: true,
|
|
133
|
+
noImplicitAny: language === "typescript",
|
|
134
|
+
target: typescript.ScriptTarget.ES2022,
|
|
135
|
+
};
|
|
136
|
+
const baseHost = typescript.createCompilerHost(options);
|
|
137
|
+
const host = {
|
|
138
|
+
...baseHost,
|
|
139
|
+
fileExists: (name) => virtualFiles[name] !== undefined || baseHost.fileExists(name),
|
|
140
|
+
directoryExists: (name) => Object.keys(virtualFiles).some((file) => file.startsWith(`${name}/`)) ||
|
|
141
|
+
(baseHost.directoryExists?.(name) ?? false),
|
|
142
|
+
readFile: (name) => virtualFiles[name] ?? baseHost.readFile(name),
|
|
143
|
+
getCurrentDirectory: () => "/",
|
|
144
|
+
getSourceFile: (name, languageVersion) => {
|
|
145
|
+
const contents = virtualFiles[name];
|
|
146
|
+
return contents === undefined
|
|
147
|
+
? baseHost.getSourceFile(name, languageVersion)
|
|
148
|
+
: typescript.createSourceFile(name, contents, languageVersion, true, name.endsWith(".js") ? typescript.ScriptKind.JS : typescript.ScriptKind.TS);
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
const program = typescript.createProgram(Object.keys(virtualFiles), options, host);
|
|
152
|
+
// Perform type checking
|
|
153
|
+
const diagnostics = typescript
|
|
154
|
+
.getPreEmitDiagnostics(program)
|
|
155
|
+
.filter((diagnostic) => diagnostic.file === undefined || diagnostic.file.fileName === sourceName);
|
|
156
|
+
if (diagnostics.length > 0) {
|
|
157
|
+
const message = typescript.formatDiagnostics(diagnostics, {
|
|
158
|
+
getCanonicalFileName: (name) => name,
|
|
159
|
+
getCurrentDirectory: () => "/",
|
|
160
|
+
getNewLine: () => "\n",
|
|
161
|
+
});
|
|
162
|
+
throw new Error(`Generated component failed type checking:\n${message}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function interfaceFromSymbol(typescript, checker, name, symbol) {
|
|
166
|
+
const functions = [];
|
|
167
|
+
const resources = [];
|
|
168
|
+
for (const exported of checker.getExportsOfModule(symbol)) {
|
|
169
|
+
if (exported.flags & typescript.SymbolFlags.Function) {
|
|
170
|
+
functions.push(functionFromSymbol(typescript, checker, exported));
|
|
171
|
+
}
|
|
172
|
+
else if (exported.flags & typescript.SymbolFlags.Class) {
|
|
173
|
+
resources.push(resourceFromSymbol(typescript, exported));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return { name, functions, resources };
|
|
177
|
+
}
|
|
178
|
+
function functionFromSymbol(typescript, checker, symbol) {
|
|
179
|
+
const declaration = symbol.valueDeclaration ?? symbol.declarations?.[0];
|
|
180
|
+
if (!declaration) {
|
|
181
|
+
throw new Error(`Missing declaration for ${symbol.name}`);
|
|
182
|
+
}
|
|
183
|
+
const signature = checker.getSignatureFromDeclaration(declaration);
|
|
184
|
+
return {
|
|
185
|
+
name: symbol.name,
|
|
186
|
+
parameters: signature?.parameters.map((parameter, index) => safeParameterName(typescript, parameter.name, index)) ?? [],
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function resourceFromSymbol(typescript, symbol) {
|
|
190
|
+
const declaration = symbol.declarations?.find(typescript.isClassDeclaration);
|
|
191
|
+
if (!declaration) {
|
|
192
|
+
throw new Error(`Missing class declaration for ${symbol.name}`);
|
|
193
|
+
}
|
|
194
|
+
let constructorParameters;
|
|
195
|
+
const methods = [];
|
|
196
|
+
const staticMethods = [];
|
|
197
|
+
for (const member of declaration.members) {
|
|
198
|
+
if (typescript.isConstructorDeclaration(member)) {
|
|
199
|
+
if (!member.modifiers?.some((modifier) => modifier.kind === typescript.SyntaxKind.PrivateKeyword)) {
|
|
200
|
+
constructorParameters = member.parameters.map((parameter, index) => safeParameterName(typescript, parameter.name.getText(), index));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else if (typescript.isMethodDeclaration(member) && typescript.isIdentifier(member.name)) {
|
|
204
|
+
const method = {
|
|
205
|
+
name: member.name.text,
|
|
206
|
+
parameters: member.parameters.map((parameter, index) => safeParameterName(typescript, parameter.name.getText(), index)),
|
|
207
|
+
};
|
|
208
|
+
if (member.modifiers?.some((modifier) => modifier.kind === typescript.SyntaxKind.StaticKeyword)) {
|
|
209
|
+
staticMethods.push(method);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
methods.push(method);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return { name: symbol.name, constructorParameters, methods, staticMethods };
|
|
217
|
+
}
|
|
218
|
+
function safeParameterName(_typescript, name, index) {
|
|
219
|
+
return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : `arg${index}`;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=declarations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/cmd/new/declarations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface FunctionModel {
|
|
2
|
+
name: string;
|
|
3
|
+
parameters: string[];
|
|
4
|
+
}
|
|
5
|
+
export interface ResourceModel {
|
|
6
|
+
name: string;
|
|
7
|
+
constructorParameters?: string[];
|
|
8
|
+
methods: FunctionModel[];
|
|
9
|
+
staticMethods: FunctionModel[];
|
|
10
|
+
}
|
|
11
|
+
export interface InterfaceModel {
|
|
12
|
+
name: string;
|
|
13
|
+
importName?: string;
|
|
14
|
+
functions: FunctionModel[];
|
|
15
|
+
resources: ResourceModel[];
|
|
16
|
+
}
|
|
17
|
+
export interface ComponentImplementationModel {
|
|
18
|
+
world: string;
|
|
19
|
+
typeModule?: string;
|
|
20
|
+
functions: FunctionModel[];
|
|
21
|
+
interfaces: InterfaceModel[];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/cmd/new/model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/cmd/new/model.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { NewPackageManager } from "../new.js";
|
|
2
|
+
export interface PackageManagerAdapter {
|
|
3
|
+
name: NewPackageManager;
|
|
4
|
+
executable: string;
|
|
5
|
+
packageManager: string;
|
|
6
|
+
lockfile: string;
|
|
7
|
+
install: string;
|
|
8
|
+
run(script: string): string;
|
|
9
|
+
}
|
|
10
|
+
export declare const DEFAULT_PNPM_VERSION = "11.0.0";
|
|
11
|
+
export declare const DEFAULT_NPM_VERSION = "12.0.2";
|
|
12
|
+
export declare const DEFAULT_YARN_VERSION = "4.18.0";
|
|
13
|
+
export declare function packageManagerAdapter(name: NewPackageManager): PackageManagerAdapter;
|
|
14
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../src/cmd/new/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,oBAAoB,WAAW,CAAC;AA6B7C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,CAEpF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const DEFAULT_PNPM_VERSION = "11.0.0";
|
|
2
|
+
export const DEFAULT_NPM_VERSION = "12.0.2";
|
|
3
|
+
export const DEFAULT_YARN_VERSION = "4.18.0";
|
|
4
|
+
const PACKAGE_MANAGERS = {
|
|
5
|
+
pnpm: {
|
|
6
|
+
name: "pnpm",
|
|
7
|
+
executable: "pnpm",
|
|
8
|
+
packageManager: `pnpm@${DEFAULT_PNPM_VERSION}`,
|
|
9
|
+
lockfile: "pnpm-lock.yaml",
|
|
10
|
+
install: "pnpm install",
|
|
11
|
+
run: (script) => `pnpm run ${script}`,
|
|
12
|
+
},
|
|
13
|
+
npm: {
|
|
14
|
+
name: "npm",
|
|
15
|
+
executable: "npm",
|
|
16
|
+
packageManager: `npm@${DEFAULT_NPM_VERSION}`,
|
|
17
|
+
lockfile: "package-lock.json",
|
|
18
|
+
install: "npm install",
|
|
19
|
+
run: (script) => `npm run ${script}`,
|
|
20
|
+
},
|
|
21
|
+
yarn: {
|
|
22
|
+
name: "yarn",
|
|
23
|
+
executable: "yarn",
|
|
24
|
+
packageManager: `yarn@${DEFAULT_YARN_VERSION}`,
|
|
25
|
+
lockfile: "yarn.lock",
|
|
26
|
+
install: "yarn install",
|
|
27
|
+
run: (script) => `yarn run ${script}`,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
export function packageManagerAdapter(name) {
|
|
31
|
+
return PACKAGE_MANAGERS[name];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/cmd/new/package-manager.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,MAAM,gBAAgB,GAAqD;IACvE,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,QAAQ,oBAAoB,EAAE;QAC9C,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,MAAM,EAAE;KACxC;IACD,GAAG,EAAE;QACD,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,OAAO,mBAAmB,EAAE;QAC5C,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,aAAa;QACtB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,MAAM,EAAE;KACvC;IACD,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,QAAQ,oBAAoB,EAAE;QAC9C,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,MAAM,EAAE;KACxC;CACJ,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,IAAuB;IACzD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type ts from "typescript-compiler-api";
|
|
2
|
+
import type { ComponentImplementationModel } from "./model.js";
|
|
3
|
+
/** Render the javascript code for a component */
|
|
4
|
+
export declare function renderComponent(typescript: typeof ts, model: ComponentImplementationModel, language: "typescript" | "javascript"): string;
|
|
5
|
+
/** Render an imports plugin suitable for passing to a component's instantiate function. */
|
|
6
|
+
export declare function renderHostPlugin(typescript: typeof ts, model: ComponentImplementationModel, language: "typescript" | "javascript"): string;
|
|
7
|
+
export declare function renderComponentTest(typescript: typeof ts, model: ComponentImplementationModel, language: "typescript" | "javascript"): string;
|
|
8
|
+
export declare function renderHostPluginTest(typescript: typeof ts, model: ComponentImplementationModel, language: "typescript" | "javascript"): string;
|
|
9
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/cmd/new/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAE9C,OAAO,KAAK,EAAE,4BAA4B,EAAgC,MAAM,YAAY,CAAC;AA6C7F,iDAAiD;AACjD,wBAAgB,eAAe,CAC3B,UAAU,EAAE,OAAO,EAAE,EACrB,KAAK,EAAE,4BAA4B,EACnC,QAAQ,EAAE,YAAY,GAAG,YAAY,GACtC,MAAM,CAwER;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAC5B,UAAU,EAAE,OAAO,EAAE,EACrB,KAAK,EAAE,4BAA4B,EACnC,QAAQ,EAAE,YAAY,GAAG,YAAY,GACtC,MAAM,CAsER;AAED,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE,OAAO,EAAE,EACrB,KAAK,EAAE,4BAA4B,EACnC,QAAQ,EAAE,YAAY,GAAG,YAAY,GACtC,MAAM,CAqFR;AAED,wBAAgB,oBAAoB,CAChC,UAAU,EAAE,OAAO,EAAE,EACrB,KAAK,EAAE,4BAA4B,EACnC,QAAQ,EAAE,YAAY,GAAG,YAAY,GACtC,MAAM,CAaR"}
|