@napi-rs/cli 3.0.0-alpha.62 → 3.0.0-alpha.63
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/api/build.js +3 -3
- package/dist/api/build.js.map +1 -1
- package/dist/api/create-npm-dirs.js +1 -1
- package/dist/api/create-npm-dirs.js.map +1 -1
- package/dist/api/templates/cargo.toml.js +1 -0
- package/dist/api/templates/cargo.toml.js.map +1 -1
- package/dist/api/templates/ci-template.js +26 -13
- package/dist/api/templates/ci-template.js.map +1 -1
- package/dist/commands/new.js +12 -34
- package/dist/commands/new.js.map +1 -1
- package/dist/index.cjs +2347 -2657
- package/dist/utils/cargo.js +1 -1
- package/dist/utils/cargo.js.map +1 -1
- package/dist/utils/config.d.ts +1 -1
- package/dist/utils/typegen.js +25 -11
- package/dist/utils/typegen.js.map +1 -1
- package/package.json +4 -4
- package/src/api/build.ts +3 -3
- package/src/api/create-npm-dirs.ts +1 -1
- package/src/api/templates/cargo.toml.ts +1 -0
- package/src/api/templates/ci-template.ts +26 -13
- package/src/commands/new.ts +30 -52
- package/src/utils/__tests__/__snapshots__/config.spec.ts.snap +0 -0
- package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
- package/src/utils/__tests__/__snapshots__/typegen.spec.ts.md +0 -2
- package/src/utils/__tests__/__snapshots__/typegen.spec.ts.snap +0 -0
- package/src/utils/__tests__/__snapshots__/version.spec.ts.snap +0 -0
- package/src/utils/cargo.ts +1 -1
- package/src/utils/config.ts +1 -1
- package/src/utils/typegen.ts +48 -32
package/dist/utils/cargo.js
CHANGED
package/dist/utils/cargo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../src/utils/cargo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,GAAW;IAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;QAC1C,QAAQ,CAAC,iBAAiB,IAAI,EAAE,EAAE;YAChC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,EAAE;YACzD,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,GAAG,EAAE,EAAE;YAC5B,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAA;QACF,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,
|
|
1
|
+
{"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../src/utils/cargo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,GAAW;IAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;QAC1C,QAAQ,CAAC,iBAAiB,IAAI,EAAE,EAAE;YAChC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,EAAE;YACzD,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,GAAG,EAAE,EAAE;YAC5B,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAA;QACF,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -110,7 +110,7 @@ export interface CommonPackageJsonFields {
|
|
|
110
110
|
timeout?: string;
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
|
-
export type NapiConfig = Required<Pick<UserNapiConfig, 'binaryName' | 'packageName' | 'npmClient'>> & Pick<UserNapiConfig, 'wasm' | 'dtsHeader' | 'dtsHeaderFile'> & {
|
|
113
|
+
export type NapiConfig = Required<Pick<UserNapiConfig, 'binaryName' | 'packageName' | 'npmClient'>> & Pick<UserNapiConfig, 'wasm' | 'dtsHeader' | 'dtsHeaderFile' | 'constEnum'> & {
|
|
114
114
|
targets: Target[];
|
|
115
115
|
packageJson: CommonPackageJsonFields;
|
|
116
116
|
};
|
package/dist/utils/typegen.js
CHANGED
|
@@ -10,6 +10,7 @@ var TypeDefKind;
|
|
|
10
10
|
TypeDefKind["Enum"] = "enum";
|
|
11
11
|
TypeDefKind["StringEnum"] = "string_enum";
|
|
12
12
|
TypeDefKind["Interface"] = "interface";
|
|
13
|
+
TypeDefKind["Type"] = "type";
|
|
13
14
|
TypeDefKind["Fn"] = "fn";
|
|
14
15
|
TypeDefKind["Struct"] = "struct";
|
|
15
16
|
TypeDefKind["Impl"] = "impl";
|
|
@@ -20,6 +21,9 @@ function prettyPrint(line, constEnum, ident, ambient = false) {
|
|
|
20
21
|
case TypeDefKind.Interface:
|
|
21
22
|
s += `export interface ${line.name} {\n${line.def}\n}`;
|
|
22
23
|
break;
|
|
24
|
+
case TypeDefKind.Type:
|
|
25
|
+
s += `export type ${line.name} = \n${line.def}`;
|
|
26
|
+
break;
|
|
23
27
|
case TypeDefKind.Enum:
|
|
24
28
|
const enumName = constEnum ? 'const enum' : 'enum';
|
|
25
29
|
s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}`;
|
|
@@ -57,11 +61,11 @@ export async function processTypeDef(intermediateTypeFile, constEnum, header) {
|
|
|
57
61
|
const defs = await readIntermediateTypeFile(intermediateTypeFile);
|
|
58
62
|
const groupedDefs = preprocessTypeDef(defs);
|
|
59
63
|
header = header ?? '';
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
const dts = sortBy(Array.from(groupedDefs), ([namespace]) => namespace)
|
|
65
|
+
.map(([namespace, defs]) => {
|
|
62
66
|
if (namespace === TOP_LEVEL_NAMESPACE) {
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
return defs
|
|
68
|
+
.map((def) => {
|
|
65
69
|
switch (def.kind) {
|
|
66
70
|
case TypeDefKind.Const:
|
|
67
71
|
case TypeDefKind.Enum:
|
|
@@ -77,17 +81,22 @@ export async function processTypeDef(intermediateTypeFile, constEnum, header) {
|
|
|
77
81
|
default:
|
|
78
82
|
break;
|
|
79
83
|
}
|
|
80
|
-
|
|
84
|
+
return prettyPrint(def, constEnum, 0);
|
|
85
|
+
})
|
|
86
|
+
.join('\n\n');
|
|
81
87
|
}
|
|
82
88
|
else {
|
|
83
89
|
exports.push(namespace);
|
|
84
|
-
|
|
90
|
+
let declaration = '';
|
|
91
|
+
declaration += `export declare namespace ${namespace} {\n`;
|
|
85
92
|
for (const def of defs) {
|
|
86
|
-
|
|
93
|
+
declaration += prettyPrint(def, constEnum, 2, true) + '\n';
|
|
87
94
|
}
|
|
88
|
-
|
|
95
|
+
declaration += '}';
|
|
96
|
+
return declaration;
|
|
89
97
|
}
|
|
90
|
-
})
|
|
98
|
+
})
|
|
99
|
+
.join('\n\n') + '\n';
|
|
91
100
|
if (dts.indexOf('ExternalObject<') > -1) {
|
|
92
101
|
header += `
|
|
93
102
|
export declare class ExternalObject<T> {
|
|
@@ -175,13 +184,18 @@ export function correctStringIdent(src, ident) {
|
|
|
175
184
|
const isInMultilineComment = line.startsWith('*');
|
|
176
185
|
const isClosingBracket = line.endsWith('}');
|
|
177
186
|
const isOpeningBracket = line.endsWith('{');
|
|
187
|
+
const isTypeDeclaration = line.endsWith('=');
|
|
188
|
+
const isTypeVariant = line.startsWith('|');
|
|
178
189
|
let rightIndent = ident;
|
|
179
|
-
if (isOpeningBracket && !isInMultilineComment) {
|
|
190
|
+
if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) {
|
|
180
191
|
bracketDepth += 1;
|
|
181
192
|
rightIndent += (bracketDepth - 1) * 2;
|
|
182
193
|
}
|
|
183
194
|
else {
|
|
184
|
-
if (isClosingBracket &&
|
|
195
|
+
if (isClosingBracket &&
|
|
196
|
+
bracketDepth > 0 &&
|
|
197
|
+
!isInMultilineComment &&
|
|
198
|
+
!isTypeVariant) {
|
|
185
199
|
bracketDepth -= 1;
|
|
186
200
|
}
|
|
187
201
|
rightIndent += bracketDepth * 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/utils/typegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,mBAAmB,GAAG,sBAAsB,CAAA;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG;;CAEtC,CAAA;AAED,IAAK,
|
|
1
|
+
{"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/utils/typegen.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@napi-rs/cli",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.63",
|
|
4
4
|
"description": "Cli tools for napi-rs",
|
|
5
5
|
"author": "LongYinan <lynweklm@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/napi-rs/napi-rs",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"url": "https://github.com/napi-rs/napi-rs/issues"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
+
"@inquirer/prompts": "^6.0.0",
|
|
70
71
|
"@napi-rs/cross-toolchain": "^0.0.16",
|
|
71
72
|
"@napi-rs/wasm-tools": "^0.0.2",
|
|
72
73
|
"@octokit/rest": "^21.0.0",
|
|
@@ -74,7 +75,6 @@
|
|
|
74
75
|
"colorette": "^2.0.20",
|
|
75
76
|
"debug": "^4.3.4",
|
|
76
77
|
"emnapi": "^1.2.0",
|
|
77
|
-
"inquirer": "^10.0.0",
|
|
78
78
|
"js-yaml": "^4.1.0",
|
|
79
79
|
"lodash-es": "^4.17.21",
|
|
80
80
|
"semver": "^7.5.4",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"@types/semver": "^7.5.8",
|
|
94
94
|
"ava": "^6.1.1",
|
|
95
95
|
"env-paths": "^3.0.0",
|
|
96
|
-
"esbuild": "^0.
|
|
96
|
+
"esbuild": "^0.24.0",
|
|
97
97
|
"prettier": "^3.2.4",
|
|
98
98
|
"ts-node": "^10.9.2",
|
|
99
99
|
"tslib": "^2.6.2",
|
|
@@ -129,5 +129,5 @@
|
|
|
129
129
|
"**/__tests__/**/*.spec.ts"
|
|
130
130
|
]
|
|
131
131
|
},
|
|
132
|
-
"gitHead": "
|
|
132
|
+
"gitHead": "8f4f74a32c12a5c9dec7ad5df1ef0f02377ac942"
|
|
133
133
|
}
|
package/src/api/build.ts
CHANGED
|
@@ -840,9 +840,9 @@ class Builder {
|
|
|
840
840
|
|
|
841
841
|
const { dts, exports } = await processTypeDef(
|
|
842
842
|
this.envs.TYPE_DEF_TMP_PATH,
|
|
843
|
-
this.options.constEnum ?? true,
|
|
843
|
+
this.options.constEnum ?? this.config.constEnum ?? true,
|
|
844
844
|
!this.options.noDtsHeader
|
|
845
|
-
? this.options.dtsHeader ??
|
|
845
|
+
? (this.options.dtsHeader ??
|
|
846
846
|
(this.config.dtsHeaderFile
|
|
847
847
|
? await readFileAsync(
|
|
848
848
|
join(this.cwd, this.config.dtsHeaderFile),
|
|
@@ -855,7 +855,7 @@ class Builder {
|
|
|
855
855
|
})
|
|
856
856
|
: null) ??
|
|
857
857
|
this.config.dtsHeader ??
|
|
858
|
-
DEFAULT_TYPE_DEF_HEADER
|
|
858
|
+
DEFAULT_TYPE_DEF_HEADER)
|
|
859
859
|
: '',
|
|
860
860
|
)
|
|
861
861
|
|
|
@@ -136,7 +136,7 @@ export async function createNpmDirs(userOptions: CreateNpmDirsOptions) {
|
|
|
136
136
|
const targetPackageJson = join(targetDir, 'package.json')
|
|
137
137
|
await writeFileAsync(
|
|
138
138
|
targetPackageJson,
|
|
139
|
-
JSON.stringify(scopedPackageJson, null, 2),
|
|
139
|
+
JSON.stringify(scopedPackageJson, null, 2) + '\n',
|
|
140
140
|
)
|
|
141
141
|
const targetReadme = join(targetDir, 'README.md')
|
|
142
142
|
await writeFileAsync(targetReadme, readme(packageName, target))
|
|
@@ -122,7 +122,7 @@ jobs:
|
|
|
122
122
|
targets: \${{ matrix.settings.target }}
|
|
123
123
|
|
|
124
124
|
- name: Cache cargo
|
|
125
|
-
uses: actions/cache@
|
|
125
|
+
uses: actions/cache@v4
|
|
126
126
|
with:
|
|
127
127
|
path: |
|
|
128
128
|
~/.cargo/registry/index/
|
|
@@ -136,7 +136,15 @@ jobs:
|
|
|
136
136
|
- uses: goto-bus-stop/setup-zig@v2
|
|
137
137
|
if: \${{ contains(matrix.settings.target, 'musl') }}
|
|
138
138
|
with:
|
|
139
|
-
version: 0.
|
|
139
|
+
version: 0.13.0
|
|
140
|
+
|
|
141
|
+
- name: Install cargo-zigbuild
|
|
142
|
+
uses: taiki-e/install-action@v2
|
|
143
|
+
if: \${{ contains(matrix.settings.target, 'musl') }}
|
|
144
|
+
env:
|
|
145
|
+
GITHUB_TOKEN: \${{ github.token }}
|
|
146
|
+
with:
|
|
147
|
+
tool: cargo-zigbuild
|
|
140
148
|
|
|
141
149
|
- name: Setup toolchain
|
|
142
150
|
run: \${{ matrix.settings.setup }}
|
|
@@ -179,20 +187,19 @@ jobs:
|
|
|
179
187
|
if-no-files-found: error
|
|
180
188
|
|
|
181
189
|
build-freebsd:
|
|
182
|
-
runs-on:
|
|
190
|
+
runs-on: ubuntu-latest
|
|
183
191
|
name: Build FreeBSD
|
|
184
192
|
steps:
|
|
185
193
|
- uses: actions/checkout@v4
|
|
186
194
|
- name: Build
|
|
187
195
|
id: build
|
|
188
|
-
uses: cross-platform-actions/action@v0.
|
|
189
|
-
timeout-minutes: 30
|
|
196
|
+
uses: cross-platform-actions/action@v0.25.0
|
|
190
197
|
env:
|
|
191
198
|
DEBUG: 'napi:*'
|
|
192
199
|
RUSTUP_IO_THREADS: 1
|
|
193
200
|
with:
|
|
194
201
|
operating_system: freebsd
|
|
195
|
-
version: '
|
|
202
|
+
version: '14.1'
|
|
196
203
|
memory: 8G
|
|
197
204
|
cpu_count: 3
|
|
198
205
|
environment_variables: 'DEBUG RUSTUP_IO_THREADS'
|
|
@@ -238,8 +245,13 @@ jobs:
|
|
|
238
245
|
settings:
|
|
239
246
|
- host: macos-latest
|
|
240
247
|
target: 'x86_64-apple-darwin'
|
|
248
|
+
architecture: x64
|
|
249
|
+
- host: macos-latest
|
|
250
|
+
target: 'aarch64-apple-darwin'
|
|
251
|
+
architecture: arm64
|
|
241
252
|
- host: windows-latest
|
|
242
253
|
target: 'x86_64-pc-windows-msvc'
|
|
254
|
+
architecture: x64
|
|
243
255
|
node: ['18', '20']
|
|
244
256
|
runs-on: \${{ matrix.settings.host }}
|
|
245
257
|
|
|
@@ -251,6 +263,7 @@ jobs:
|
|
|
251
263
|
with:
|
|
252
264
|
node-version: \${{ matrix.node }}
|
|
253
265
|
cache: '${packageManager}'
|
|
266
|
+
architecture: \${{ matrix.settings.architecture }}
|
|
254
267
|
|
|
255
268
|
- name: 'Install dependencies'
|
|
256
269
|
run: ${packageManager} install
|
|
@@ -266,7 +279,7 @@ jobs:
|
|
|
266
279
|
shell: bash
|
|
267
280
|
|
|
268
281
|
- name: Test bindings
|
|
269
|
-
run: ${packageManager} test
|
|
282
|
+
run: ${packageManager} run test
|
|
270
283
|
|
|
271
284
|
test-linux-x64-gnu-binding:
|
|
272
285
|
name: Test bindings on Linux-x64-gnu - node@\${{ matrix.node }}
|
|
@@ -301,7 +314,7 @@ jobs:
|
|
|
301
314
|
shell: bash
|
|
302
315
|
|
|
303
316
|
- name: Test bindings
|
|
304
|
-
run: docker run --rm -v $(pwd):/build -w /build node:\${{ matrix.node }}-slim
|
|
317
|
+
run: docker run --rm -v $(pwd):/build -w /build node:\${{ matrix.node }}-slim ${packageManager} run test
|
|
305
318
|
|
|
306
319
|
test-linux-x64-musl-binding:
|
|
307
320
|
name: Test bindings on x86_64-unknown-linux-musl - node@\${{ matrix.node }}
|
|
@@ -320,7 +333,7 @@ jobs:
|
|
|
320
333
|
uses: actions/setup-node@v4
|
|
321
334
|
with:
|
|
322
335
|
node-version: \${{ matrix.node }}
|
|
323
|
-
cache: '
|
|
336
|
+
cache: '${packageManager}'
|
|
324
337
|
|
|
325
338
|
- name: 'Install dependencies'
|
|
326
339
|
run: |
|
|
@@ -338,7 +351,7 @@ jobs:
|
|
|
338
351
|
shell: bash
|
|
339
352
|
|
|
340
353
|
- name: Test bindings
|
|
341
|
-
run: docker run --rm -v $(pwd):/build -w /build node:\${{ matrix.node }}-alpine
|
|
354
|
+
run: docker run --rm -v $(pwd):/build -w /build node:\${{ matrix.node }}-alpine ${packageManager} run test
|
|
342
355
|
|
|
343
356
|
test-linux-aarch64-gnu-binding:
|
|
344
357
|
name: Test bindings on aarch64-unknown-linux-gnu - node@\${{ matrix.node }}
|
|
@@ -380,7 +393,7 @@ jobs:
|
|
|
380
393
|
with:
|
|
381
394
|
image: node:\${{ matrix.node }}-slim
|
|
382
395
|
options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
|
|
383
|
-
run:
|
|
396
|
+
run: ${packageManager} run test
|
|
384
397
|
|
|
385
398
|
test-linux-aarch64-musl-binding:
|
|
386
399
|
name: Test bindings on aarch64-unknown-linux-musl - node@\${{ matrix.node }}
|
|
@@ -423,7 +436,7 @@ jobs:
|
|
|
423
436
|
with:
|
|
424
437
|
image: node:\${{ matrix.node }}-alpine
|
|
425
438
|
options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
|
|
426
|
-
run:
|
|
439
|
+
run: ${packageManager} run test
|
|
427
440
|
|
|
428
441
|
test-linux-arm-gnueabihf-binding:
|
|
429
442
|
name: Test bindings on armv7-unknown-linux-gnueabihf - node@\${{ matrix.node }}
|
|
@@ -566,7 +579,7 @@ jobs:
|
|
|
566
579
|
path: artifacts
|
|
567
580
|
|
|
568
581
|
- name: Move artifacts
|
|
569
|
-
run:
|
|
582
|
+
run: ${packageManager} artifacts
|
|
570
583
|
|
|
571
584
|
- name: List packages
|
|
572
585
|
run: ls -R ./npm
|
package/src/commands/new.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
2
|
|
|
3
|
+
import { input, select, checkbox, confirm } from '@inquirer/prompts'
|
|
3
4
|
import { Option } from 'clipanion'
|
|
4
|
-
import inquirer from 'inquirer'
|
|
5
5
|
|
|
6
6
|
import { newProject } from '../api/new.js'
|
|
7
7
|
import { BaseNewCommand } from '../def/new.js'
|
|
@@ -58,43 +58,31 @@ export class NewCommand extends BaseNewCommand {
|
|
|
58
58
|
private async fetchName(defaultName: string): Promise<string> {
|
|
59
59
|
return (
|
|
60
60
|
this.$$name ??
|
|
61
|
-
|
|
62
|
-
.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
message: 'Package name (the name field in your package.json file)',
|
|
66
|
-
default: defaultName,
|
|
67
|
-
})
|
|
68
|
-
.then(({ name }) => name)
|
|
61
|
+
input({
|
|
62
|
+
message: 'Package name (the name field in your package.json file)',
|
|
63
|
+
default: defaultName,
|
|
64
|
+
})
|
|
69
65
|
)
|
|
70
66
|
}
|
|
71
67
|
|
|
72
68
|
private async fetchLicense(): Promise<string> {
|
|
73
|
-
return
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
message: 'License for open-sourced project',
|
|
78
|
-
default: this.license,
|
|
79
|
-
})
|
|
80
|
-
.then(({ license }) => license)
|
|
69
|
+
return input({
|
|
70
|
+
message: 'License for open-sourced project',
|
|
71
|
+
default: this.license,
|
|
72
|
+
})
|
|
81
73
|
}
|
|
82
74
|
|
|
83
75
|
private async fetchNapiVersion(): Promise<number> {
|
|
84
|
-
return
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
// choice index
|
|
95
|
-
default: this.minNodeApiVersion - 1,
|
|
96
|
-
})
|
|
97
|
-
.then(({ minNodeApiVersion }) => minNodeApiVersion)
|
|
76
|
+
return select({
|
|
77
|
+
message: 'Minimum node-api version (with node version requirement)',
|
|
78
|
+
loop: false,
|
|
79
|
+
choices: Array.from({ length: 8 }, (_, i) => ({
|
|
80
|
+
name: `napi${i + 1} (${napiEngineRequirement(i + 1)})`,
|
|
81
|
+
value: i + 1,
|
|
82
|
+
})),
|
|
83
|
+
// choice index
|
|
84
|
+
default: this.minNodeApiVersion - 1,
|
|
85
|
+
})
|
|
98
86
|
}
|
|
99
87
|
|
|
100
88
|
private async fetchTargets(): Promise<TargetTriple[]> {
|
|
@@ -102,9 +90,7 @@ export class NewCommand extends BaseNewCommand {
|
|
|
102
90
|
return AVAILABLE_TARGETS.concat()
|
|
103
91
|
}
|
|
104
92
|
|
|
105
|
-
const
|
|
106
|
-
name: 'targets',
|
|
107
|
-
type: 'checkbox',
|
|
93
|
+
const targets = await checkbox({
|
|
108
94
|
loop: false,
|
|
109
95
|
message: 'Choose target(s) your crate will be compiled to',
|
|
110
96
|
choices: AVAILABLE_TARGETS.map((target) => ({
|
|
@@ -119,9 +105,7 @@ export class NewCommand extends BaseNewCommand {
|
|
|
119
105
|
}
|
|
120
106
|
|
|
121
107
|
private async fetchTypeDef(): Promise<boolean> {
|
|
122
|
-
const
|
|
123
|
-
name: 'enableTypeDef',
|
|
124
|
-
type: 'confirm',
|
|
108
|
+
const enableTypeDef = await confirm({
|
|
125
109
|
message: 'Enable type definition auto-generation',
|
|
126
110
|
default: this.enableTypeDef,
|
|
127
111
|
})
|
|
@@ -130,9 +114,7 @@ export class NewCommand extends BaseNewCommand {
|
|
|
130
114
|
}
|
|
131
115
|
|
|
132
116
|
private async fetchGithubActions(): Promise<boolean> {
|
|
133
|
-
const
|
|
134
|
-
name: 'enableGithubActions',
|
|
135
|
-
type: 'confirm',
|
|
117
|
+
const enableGithubActions = await confirm({
|
|
136
118
|
message: 'Enable Github Actions CI',
|
|
137
119
|
default: this.enableGithubActions,
|
|
138
120
|
})
|
|
@@ -142,16 +124,12 @@ export class NewCommand extends BaseNewCommand {
|
|
|
142
124
|
}
|
|
143
125
|
|
|
144
126
|
async function inquirerProjectPath(): Promise<string> {
|
|
145
|
-
return
|
|
146
|
-
.
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
return inquirerProjectPath()
|
|
154
|
-
}
|
|
155
|
-
return path
|
|
156
|
-
})
|
|
127
|
+
return input({
|
|
128
|
+
message: 'Target path to create the project, relative to cwd.',
|
|
129
|
+
}).then((path) => {
|
|
130
|
+
if (!path) {
|
|
131
|
+
return inquirerProjectPath()
|
|
132
|
+
}
|
|
133
|
+
return path
|
|
134
|
+
})
|
|
157
135
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -614,7 +614,6 @@ Generated by [AVA](https://avajs.dev).
|
|
|
614
614
|
export function xxh128(input: Buffer): bigint␊
|
|
615
615
|
export function xxh3_64(input: Buffer): bigint␊
|
|
616
616
|
}␊
|
|
617
|
-
␊
|
|
618
617
|
`
|
|
619
618
|
|
|
620
619
|
## should process type def with noConstEnum correctly
|
|
@@ -1169,5 +1168,4 @@ Generated by [AVA](https://avajs.dev).
|
|
|
1169
1168
|
export function xxh128(input: Buffer): bigint␊
|
|
1170
1169
|
export function xxh3_64(input: Buffer): bigint␊
|
|
1171
1170
|
}␊
|
|
1172
|
-
␊
|
|
1173
1171
|
`
|
|
Binary file
|
|
Binary file
|
package/src/utils/cargo.ts
CHANGED
package/src/utils/config.ts
CHANGED
|
@@ -139,7 +139,7 @@ export interface CommonPackageJsonFields {
|
|
|
139
139
|
export type NapiConfig = Required<
|
|
140
140
|
Pick<UserNapiConfig, 'binaryName' | 'packageName' | 'npmClient'>
|
|
141
141
|
> &
|
|
142
|
-
Pick<UserNapiConfig, 'wasm' | 'dtsHeader' | 'dtsHeaderFile'> & {
|
|
142
|
+
Pick<UserNapiConfig, 'wasm' | 'dtsHeader' | 'dtsHeaderFile' | 'constEnum'> & {
|
|
143
143
|
targets: Target[]
|
|
144
144
|
packageJson: CommonPackageJsonFields
|
|
145
145
|
}
|
package/src/utils/typegen.ts
CHANGED
|
@@ -12,6 +12,7 @@ enum TypeDefKind {
|
|
|
12
12
|
Enum = 'enum',
|
|
13
13
|
StringEnum = 'string_enum',
|
|
14
14
|
Interface = 'interface',
|
|
15
|
+
Type = 'type',
|
|
15
16
|
Fn = 'fn',
|
|
16
17
|
Struct = 'struct',
|
|
17
18
|
Impl = 'impl',
|
|
@@ -38,6 +39,10 @@ function prettyPrint(
|
|
|
38
39
|
s += `export interface ${line.name} {\n${line.def}\n}`
|
|
39
40
|
break
|
|
40
41
|
|
|
42
|
+
case TypeDefKind.Type:
|
|
43
|
+
s += `export type ${line.name} = \n${line.def}`
|
|
44
|
+
break
|
|
45
|
+
|
|
41
46
|
case TypeDefKind.Enum:
|
|
42
47
|
const enumName = constEnum ? 'const enum' : 'enum'
|
|
43
48
|
s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}`
|
|
@@ -87,39 +92,43 @@ export async function processTypeDef(
|
|
|
87
92
|
const groupedDefs = preprocessTypeDef(defs)
|
|
88
93
|
|
|
89
94
|
header = header ?? ''
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
95
|
+
|
|
96
|
+
const dts =
|
|
97
|
+
sortBy(Array.from(groupedDefs), ([namespace]) => namespace)
|
|
98
|
+
.map(([namespace, defs]) => {
|
|
99
|
+
if (namespace === TOP_LEVEL_NAMESPACE) {
|
|
100
|
+
return defs
|
|
101
|
+
.map((def) => {
|
|
102
|
+
switch (def.kind) {
|
|
103
|
+
case TypeDefKind.Const:
|
|
104
|
+
case TypeDefKind.Enum:
|
|
105
|
+
case TypeDefKind.StringEnum:
|
|
106
|
+
case TypeDefKind.Fn:
|
|
107
|
+
case TypeDefKind.Struct: {
|
|
108
|
+
exports.push(def.name)
|
|
109
|
+
if (def.original_name && def.original_name !== def.name) {
|
|
110
|
+
exports.push(def.original_name)
|
|
111
|
+
}
|
|
112
|
+
break
|
|
113
|
+
}
|
|
114
|
+
default:
|
|
115
|
+
break
|
|
106
116
|
}
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
117
|
+
return prettyPrint(def, constEnum, 0)
|
|
118
|
+
})
|
|
119
|
+
.join('\n\n')
|
|
120
|
+
} else {
|
|
121
|
+
exports.push(namespace)
|
|
122
|
+
let declaration = ''
|
|
123
|
+
declaration += `export declare namespace ${namespace} {\n`
|
|
124
|
+
for (const def of defs) {
|
|
125
|
+
declaration += prettyPrint(def, constEnum, 2, true) + '\n'
|
|
111
126
|
}
|
|
127
|
+
declaration += '}'
|
|
128
|
+
return declaration
|
|
112
129
|
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
dts += `export declare namespace ${namespace} {\n`
|
|
116
|
-
for (const def of defs) {
|
|
117
|
-
dts += prettyPrint(def, constEnum, 2, true) + '\n'
|
|
118
|
-
}
|
|
119
|
-
dts += '}\n\n'
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
)
|
|
130
|
+
})
|
|
131
|
+
.join('\n\n') + '\n'
|
|
123
132
|
|
|
124
133
|
if (dts.indexOf('ExternalObject<') > -1) {
|
|
125
134
|
header += `
|
|
@@ -215,13 +224,20 @@ export function correctStringIdent(src: string, ident: number): string {
|
|
|
215
224
|
const isInMultilineComment = line.startsWith('*')
|
|
216
225
|
const isClosingBracket = line.endsWith('}')
|
|
217
226
|
const isOpeningBracket = line.endsWith('{')
|
|
227
|
+
const isTypeDeclaration = line.endsWith('=')
|
|
228
|
+
const isTypeVariant = line.startsWith('|')
|
|
218
229
|
|
|
219
230
|
let rightIndent = ident
|
|
220
|
-
if (isOpeningBracket && !isInMultilineComment) {
|
|
231
|
+
if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) {
|
|
221
232
|
bracketDepth += 1
|
|
222
233
|
rightIndent += (bracketDepth - 1) * 2
|
|
223
234
|
} else {
|
|
224
|
-
if (
|
|
235
|
+
if (
|
|
236
|
+
isClosingBracket &&
|
|
237
|
+
bracketDepth > 0 &&
|
|
238
|
+
!isInMultilineComment &&
|
|
239
|
+
!isTypeVariant
|
|
240
|
+
) {
|
|
225
241
|
bracketDepth -= 1
|
|
226
242
|
}
|
|
227
243
|
rightIndent += bracketDepth * 2
|