@napi-rs/cli 3.0.0-alpha.3 → 3.0.0-alpha.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.
Files changed (61) hide show
  1. package/cli.mjs +0 -0
  2. package/dist/api/build.js +8 -2
  3. package/dist/api/templates/ci-template.js +9 -8
  4. package/dist/api/templates/js-binding.js +242 -109
  5. package/dist/cli.js +0 -0
  6. package/dist/commands/artifacts.js +2 -1
  7. package/dist/commands/help.js +2 -1
  8. package/dist/def/artifacts.js +2 -1
  9. package/dist/def/build.d.ts +12 -0
  10. package/dist/def/build.js +10 -1
  11. package/dist/def/create-npm-dirs.js +2 -1
  12. package/dist/def/new.js +2 -1
  13. package/dist/def/pre-publish.js +2 -1
  14. package/dist/def/rename.js +2 -1
  15. package/dist/def/universalize.js +2 -1
  16. package/dist/def/version.js +2 -1
  17. package/dist/index.cjs +274 -116
  18. package/dist/utils/ci.js +9 -0
  19. package/dist/utils/target.d.ts +2 -2
  20. package/dist/utils/target.js +4 -0
  21. package/package.json +5 -5
  22. package/src/api/build.ts +11 -7
  23. package/src/api/templates/ci-template.ts +9 -8
  24. package/src/api/templates/js-binding.ts +231 -104
  25. package/src/def/build.ts +19 -0
  26. package/src/utils/__tests__/__snapshots__/target.spec.ts.md +7 -0
  27. package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
  28. package/src/utils/ci.ts +9 -0
  29. package/src/utils/target.ts +5 -0
  30. package/dist/def/commands/artifacts.d.ts +0 -15
  31. package/dist/def/commands/artifacts.js +0 -29
  32. package/dist/def/commands/build.d.ts +0 -53
  33. package/dist/def/commands/build.js +0 -105
  34. package/dist/def/commands/create-npm-dirs.d.ts +0 -15
  35. package/dist/def/commands/create-npm-dirs.js +0 -29
  36. package/dist/def/commands/new.d.ts +0 -27
  37. package/dist/def/commands/new.js +0 -53
  38. package/dist/def/commands/pre-publish.d.ts +0 -23
  39. package/dist/def/commands/pre-publish.js +0 -45
  40. package/dist/def/commands/rename.d.ts +0 -25
  41. package/dist/def/commands/rename.js +0 -49
  42. package/dist/def/commands/universalize.d.ts +0 -13
  43. package/dist/def/commands/universalize.js +0 -25
  44. package/dist/def/commands/version.d.ts +0 -13
  45. package/dist/def/commands/version.js +0 -25
  46. package/dist/def/options/artifacts.d.ts +0 -35
  47. package/dist/def/options/artifacts.js +0 -11
  48. package/dist/def/options/build.d.ts +0 -97
  49. package/dist/def/options/build.js +0 -3
  50. package/dist/def/options/create-npm-dirs.d.ts +0 -35
  51. package/dist/def/options/create-npm-dirs.js +0 -11
  52. package/dist/def/options/new.d.ts +0 -79
  53. package/dist/def/options/new.js +0 -15
  54. package/dist/def/options/pre-publish.d.ts +0 -65
  55. package/dist/def/options/pre-publish.js +0 -13
  56. package/dist/def/options/rename.d.ts +0 -75
  57. package/dist/def/options/rename.js +0 -11
  58. package/dist/def/options/universalize.d.ts +0 -28
  59. package/dist/def/options/universalize.js +0 -10
  60. package/dist/def/options/version.d.ts +0 -28
  61. package/dist/def/options/version.js +0 -10
@@ -1,7 +1,7 @@
1
1
  // This file is generated by codegen/index.ts
2
2
  // Do not edit this file manually
3
3
  import { Command, Option } from 'clipanion';
4
- export class BaseUniversalizeCommand extends Command {
4
+ class BaseUniversalizeCommand extends Command {
5
5
  static paths = [['universalize']];
6
6
  static usage = Command.Usage({
7
7
  description: 'Combile built binaries into one universal binary',
@@ -23,6 +23,7 @@ export class BaseUniversalizeCommand extends Command {
23
23
  };
24
24
  }
25
25
  }
26
+ export { BaseUniversalizeCommand };
26
27
  export function applyDefaultUniversalizeOptions(options) {
27
28
  return {
28
29
  cwd: process.cwd(),
@@ -1,7 +1,7 @@
1
1
  // This file is generated by codegen/index.ts
2
2
  // Do not edit this file manually
3
3
  import { Command, Option } from 'clipanion';
4
- export class BaseVersionCommand extends Command {
4
+ class BaseVersionCommand extends Command {
5
5
  static paths = [['version']];
6
6
  static usage = Command.Usage({
7
7
  description: 'Update version in created npm packages',
@@ -23,6 +23,7 @@ export class BaseVersionCommand extends Command {
23
23
  };
24
24
  }
25
25
  }
26
+ export { BaseVersionCommand };
26
27
  export function applyDefaultVersionOptions(options) {
27
28
  return {
28
29
  cwd: process.cwd(),
package/dist/index.cjs CHANGED
@@ -4247,7 +4247,7 @@ var require_dist_node2 = __commonJS({
4247
4247
  parse: parse3
4248
4248
  });
4249
4249
  }
4250
- var VERSION = "7.0.3";
4250
+ var VERSION = "7.0.5";
4251
4251
  var userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`;
4252
4252
  var DEFAULTS = {
4253
4253
  method: "GET",
@@ -9749,9 +9749,9 @@ var require_encoding = __commonJS({
9749
9749
  }
9750
9750
  });
9751
9751
 
9752
- // ../node_modules/node-fetch/lib/index.js
9752
+ // ../node_modules/@octokit/request/node_modules/node-fetch/lib/index.js
9753
9753
  var require_lib4 = __commonJS({
9754
- "../node_modules/node-fetch/lib/index.js"(exports2, module2) {
9754
+ "../node_modules/@octokit/request/node_modules/node-fetch/lib/index.js"(exports2, module2) {
9755
9755
  "use strict";
9756
9756
  Object.defineProperty(exports2, "__esModule", { value: true });
9757
9757
  function _interopDefault(ex) {
@@ -10810,7 +10810,9 @@ var require_lib4 = __commonJS({
10810
10810
  if (signal && signal.aborted) {
10811
10811
  return;
10812
10812
  }
10813
- destroyStream(response.body, err);
10813
+ if (response && response.body) {
10814
+ destroyStream(response.body, err);
10815
+ }
10814
10816
  });
10815
10817
  if (parseInt(process.version.substring(1)) < 14) {
10816
10818
  req.on("socket", function(s) {
@@ -11157,7 +11159,7 @@ var require_dist_node5 = __commonJS({
11157
11159
  var isPlainObject2 = require_is_plain_object();
11158
11160
  var nodeFetch = _interopDefault(require_lib4());
11159
11161
  var requestError = require_dist_node4();
11160
- var VERSION = "6.2.2";
11162
+ var VERSION = "6.2.3";
11161
11163
  function getBufferResponse(response) {
11162
11164
  return response.arrayBuffer();
11163
11165
  }
@@ -11309,7 +11311,7 @@ var require_dist_node6 = __commonJS({
11309
11311
  Object.defineProperty(exports2, "__esModule", { value: true });
11310
11312
  var request = require_dist_node5();
11311
11313
  var universalUserAgent = require_dist_node();
11312
- var VERSION = "5.0.4";
11314
+ var VERSION = "5.0.5";
11313
11315
  function _buildMessageForResponseErrors(data) {
11314
11316
  return `Request failed due to following response errors:
11315
11317
  ` + data.errors.map((e) => ` - ${e.message}`).join("\n");
@@ -11456,7 +11458,7 @@ var require_dist_node8 = __commonJS({
11456
11458
  var request = require_dist_node5();
11457
11459
  var graphql = require_dist_node6();
11458
11460
  var authToken = require_dist_node7();
11459
- var VERSION = "4.1.0";
11461
+ var VERSION = "4.2.0";
11460
11462
  var Octokit2 = class {
11461
11463
  constructor(options = {}) {
11462
11464
  const hook = new beforeAfterHook.Collection();
@@ -13042,7 +13044,8 @@ var AVAILABLE_TARGETS = [
13042
13044
  "i686-pc-windows-msvc",
13043
13045
  "armv7-unknown-linux-gnueabihf",
13044
13046
  "armv7-linux-androideabi",
13045
- "universal-apple-darwin"
13047
+ "universal-apple-darwin",
13048
+ "riscv64gc-unknown-linux-gnu"
13046
13049
  ];
13047
13050
  var DEFAULT_TARGETS = [
13048
13051
  "x86_64-apple-darwin",
@@ -13050,19 +13053,22 @@ var DEFAULT_TARGETS = [
13050
13053
  "x86_64-unknown-linux-gnu"
13051
13054
  ];
13052
13055
  var TARGET_LINKER = {
13053
- "aarch64-unknown-linux-musl": "aarch64-linux-musl-gcc"
13056
+ "aarch64-unknown-linux-musl": "aarch64-linux-musl-gcc",
13057
+ "riscv64gc-unknown-linux-gnu": "riscv64-linux-gnu-gcc"
13054
13058
  };
13055
13059
  var CpuToNodeArch = {
13056
13060
  x86_64: "x64",
13057
13061
  aarch64: "arm64",
13058
13062
  i686: "ia32",
13059
- armv7: "arm"
13063
+ armv7: "arm",
13064
+ riscv64gc: "riscv64"
13060
13065
  };
13061
13066
  var NodeArchToCpu = {
13062
13067
  x64: "x86_64",
13063
13068
  arm64: "aarch64",
13064
13069
  ia32: "i686",
13065
- arm: "armv7"
13070
+ arm: "armv7",
13071
+ riscv64: "riscv64gc"
13066
13072
  };
13067
13073
  var SysToNodePlatform = {
13068
13074
  linux: "linux",
@@ -18833,6 +18839,14 @@ jobs:
18833
18839
  - host: windows-latest
18834
18840
  target: 'aarch64-pc-windows-msvc'
18835
18841
  build: yarn build --platform --target aarch64-pc-windows-msvc
18842
+ - host: ubuntu-latest
18843
+ target: 'riscv64gc-unknown-linux-gnu'
18844
+ setup: |
18845
+ sudo apt-get update
18846
+ sudo apt-get install gcc-riscv64-linux-gnu -y
18847
+ build: |
18848
+ yarn build --platform --target riscv64gc-unknown-linux-gnu
18849
+ riscv64-linux-gnu-strip *.node
18836
18850
 
18837
18851
  name: stable - \${{ matrix.settings.target }} - node@18
18838
18852
  runs-on: \${{ matrix.settings.host }}
@@ -18845,7 +18859,6 @@ jobs:
18845
18859
  if: \${{ !matrix.settings.docker }}
18846
18860
  with:
18847
18861
  node-version: 18
18848
- check-latest: true
18849
18862
  cache: yarn
18850
18863
 
18851
18864
  - name: Install
@@ -18889,7 +18902,6 @@ jobs:
18889
18902
  if: matrix.settings.target == 'i686-pc-windows-msvc'
18890
18903
  with:
18891
18904
  node-version: 18
18892
- check-latest: true
18893
18905
  cache: yarn
18894
18906
  architecture: x86
18895
18907
 
@@ -18986,7 +18998,6 @@ jobs:
18986
18998
  uses: actions/setup-node@v3
18987
18999
  with:
18988
19000
  node-version: \${{ matrix.node }}
18989
- check-latest: true
18990
19001
  cache: 'yarn'
18991
19002
 
18992
19003
  - name: 'Install dependencies'
@@ -19022,7 +19033,6 @@ jobs:
19022
19033
  uses: actions/setup-node@v3
19023
19034
  with:
19024
19035
  node-version: \${{ matrix.node }}
19025
- check-latest: true
19026
19036
  cache: 'yarn'
19027
19037
 
19028
19038
  - name: 'Install dependencies'
@@ -19058,7 +19068,6 @@ jobs:
19058
19068
  uses: actions/setup-node@v3
19059
19069
  with:
19060
19070
  node-version: \${{ matrix.node }}
19061
- check-latest: true
19062
19071
  cache: 'yarn'
19063
19072
 
19064
19073
  - name: 'Install dependencies'
@@ -19107,7 +19116,7 @@ jobs:
19107
19116
  yarn config set supportedArchitectures.cpu "arm64"
19108
19117
  yarn config set supportedArchitectures.libc "glibc"
19109
19118
  yarn install
19110
-
19119
+
19111
19120
  - name: Set up QEMU
19112
19121
  uses: docker/setup-qemu-action@v2
19113
19122
  with:
@@ -19222,7 +19231,6 @@ jobs:
19222
19231
  uses: actions/setup-node@v3
19223
19232
  with:
19224
19233
  node-version: 18
19225
- check-latest: true
19226
19234
  cache: yarn
19227
19235
 
19228
19236
  - name: 'Install dependencies'
@@ -19268,7 +19276,6 @@ jobs:
19268
19276
  uses: actions/setup-node@v3
19269
19277
  with:
19270
19278
  node-version: 18
19271
- check-latest: true
19272
19279
  cache: 'yarn'
19273
19280
 
19274
19281
  - name: 'Install dependencies'
@@ -19429,116 +19436,261 @@ var createPackageJson = ({ name, binaryName, targets, license, engineRequirement
19429
19436
  };
19430
19437
 
19431
19438
  // dist/api/templates/js-binding.js
19432
- function loadNapiModule(binaryName, packageName) {
19433
- const { existsSync: existsSync2, readFileSync } = require("fs");
19434
- const { join: join7 } = require("path");
19435
- const { platform: platform2, arch } = process;
19436
- const candidates = [];
19437
- function isMusl() {
19438
- if (!process.report || typeof process.report.getReport !== "function") {
19439
- try {
19440
- const lddPath = require("child_process").execSync("which ldd").toString().trim();
19441
- return readFileSync(lddPath, "utf8").includes("musl");
19442
- } catch (e) {
19443
- return true;
19444
- }
19445
- } else {
19446
- const { glibcVersionRuntime } = process.report.getReport().header;
19447
- return !glibcVersionRuntime;
19439
+ function createJsBinding(localName, pkgName) {
19440
+ return `// prettier-ignore
19441
+ /* tslint:disable */
19442
+ /* eslint-disable */
19443
+
19444
+ /* auto-generated by NAPI-RS */
19445
+
19446
+ const { existsSync, readFileSync } = require('fs')
19447
+ const { join } = require('path')
19448
+
19449
+ const { platform, arch } = process
19450
+
19451
+ let nativeBinding = null
19452
+ let localFileExisted = false
19453
+ let loadError = null
19454
+
19455
+ function isMusl() {
19456
+ // For Node 10
19457
+ if (!process.report || typeof process.report.getReport !== 'function') {
19458
+ try {
19459
+ const lddPath = require('child_process').execSync('which ldd').toString().trim()
19460
+ return readFileSync(lddPath, 'utf8').includes('musl')
19461
+ } catch (e) {
19462
+ return true
19448
19463
  }
19464
+ } else {
19465
+ const { glibcVersionRuntime } = process.report.getReport().header
19466
+ return !glibcVersionRuntime
19449
19467
  }
19450
- switch (platform2) {
19451
- case "android":
19452
- switch (arch) {
19453
- case "arm64":
19454
- candidates.push("android-arm64");
19455
- break;
19456
- case "arm":
19457
- candidates.push("android-arm-eabi");
19458
- break;
19459
- }
19460
- break;
19461
- case "win32":
19462
- switch (arch) {
19463
- case "x64":
19464
- candidates.push("win32-x64-msvc");
19465
- break;
19466
- case "ia32":
19467
- candidates.push("win32-ia32-msvc");
19468
- break;
19469
- case "arm64":
19470
- candidates.push("win32-arm64-msvc");
19471
- break;
19472
- }
19473
- break;
19474
- case "darwin":
19475
- candidates.push("darwin-universal");
19476
- switch (arch) {
19477
- case "x64":
19478
- candidates.push("darwin-x64");
19479
- break;
19480
- case "arm64":
19481
- candidates.push("darwin-arm64");
19482
- break;
19483
- }
19484
- break;
19485
- case "freebsd":
19486
- if (arch === "x64") {
19487
- candidates.push("freebsd-x64");
19488
- }
19489
- break;
19490
- case "linux":
19491
- switch (arch) {
19492
- case "x64":
19493
- if (isMusl()) {
19494
- candidates.push("linux-x64-musl");
19468
+ }
19469
+
19470
+ switch (platform) {
19471
+ case 'android':
19472
+ switch (arch) {
19473
+ case 'arm64':
19474
+ localFileExisted = existsSync(join(__dirname, '${localName}.android-arm64.node'))
19475
+ try {
19476
+ if (localFileExisted) {
19477
+ nativeBinding = require('./${localName}.android-arm64.node')
19495
19478
  } else {
19496
- candidates.push("linux-x64-gnu");
19479
+ nativeBinding = require('${pkgName}-android-arm64')
19497
19480
  }
19498
- break;
19499
- case "arm64":
19500
- if (isMusl()) {
19501
- candidates.push("linux-arm64-musl");
19481
+ } catch (e) {
19482
+ loadError = e
19483
+ }
19484
+ break
19485
+ case 'arm':
19486
+ localFileExisted = existsSync(join(__dirname, '${localName}.android-arm-eabi.node'))
19487
+ try {
19488
+ if (localFileExisted) {
19489
+ nativeBinding = require('./${localName}.android-arm-eabi.node')
19502
19490
  } else {
19503
- candidates.push("linux-arm64-gnu");
19491
+ nativeBinding = require('${pkgName}-android-arm-eabi')
19504
19492
  }
19505
- break;
19506
- case "arm":
19507
- candidates.push("linux-arm-gnueabihf");
19508
- break;
19493
+ } catch (e) {
19494
+ loadError = e
19495
+ }
19496
+ break
19497
+ default:
19498
+ throw new Error(\`Unsupported architecture on Android \${arch}\`)
19499
+ }
19500
+ break
19501
+ case 'win32':
19502
+ switch (arch) {
19503
+ case 'x64':
19504
+ localFileExisted = existsSync(
19505
+ join(__dirname, '${localName}.win32-x64-msvc.node')
19506
+ )
19507
+ try {
19508
+ if (localFileExisted) {
19509
+ nativeBinding = require('./${localName}.win32-x64-msvc.node')
19510
+ } else {
19511
+ nativeBinding = require('${pkgName}-win32-x64-msvc')
19512
+ }
19513
+ } catch (e) {
19514
+ loadError = e
19515
+ }
19516
+ break
19517
+ case 'ia32':
19518
+ localFileExisted = existsSync(
19519
+ join(__dirname, '${localName}.win32-ia32-msvc.node')
19520
+ )
19521
+ try {
19522
+ if (localFileExisted) {
19523
+ nativeBinding = require('./${localName}.win32-ia32-msvc.node')
19524
+ } else {
19525
+ nativeBinding = require('${pkgName}-win32-ia32-msvc')
19526
+ }
19527
+ } catch (e) {
19528
+ loadError = e
19529
+ }
19530
+ break
19531
+ case 'arm64':
19532
+ localFileExisted = existsSync(
19533
+ join(__dirname, '${localName}.win32-arm64-msvc.node')
19534
+ )
19535
+ try {
19536
+ if (localFileExisted) {
19537
+ nativeBinding = require('./${localName}.win32-arm64-msvc.node')
19538
+ } else {
19539
+ nativeBinding = require('${pkgName}-win32-arm64-msvc')
19540
+ }
19541
+ } catch (e) {
19542
+ loadError = e
19543
+ }
19544
+ break
19545
+ default:
19546
+ throw new Error(\`Unsupported architecture on Windows: \${arch}\`)
19547
+ }
19548
+ break
19549
+ case 'darwin':
19550
+ localFileExisted = existsSync(join(__dirname, '${localName}.darwin-universal.node'))
19551
+ try {
19552
+ if (localFileExisted) {
19553
+ nativeBinding = require('./${localName}.darwin-universal.node')
19554
+ } else {
19555
+ nativeBinding = require('${pkgName}-darwin-universal')
19509
19556
  }
19510
- break;
19511
- }
19512
- let nativeBinding;
19513
- let loadError;
19514
- for (const suffix of candidates) {
19515
- const localPath = join7(__dirname, `${binaryName}.${suffix}.node`);
19516
- const pkgPath = `${packageName}-${suffix}`;
19557
+ break
19558
+ } catch {}
19559
+ switch (arch) {
19560
+ case 'x64':
19561
+ localFileExisted = existsSync(join(__dirname, '${localName}.darwin-x64.node'))
19562
+ try {
19563
+ if (localFileExisted) {
19564
+ nativeBinding = require('./${localName}.darwin-x64.node')
19565
+ } else {
19566
+ nativeBinding = require('${pkgName}-darwin-x64')
19567
+ }
19568
+ } catch (e) {
19569
+ loadError = e
19570
+ }
19571
+ break
19572
+ case 'arm64':
19573
+ localFileExisted = existsSync(
19574
+ join(__dirname, '${localName}.darwin-arm64.node')
19575
+ )
19576
+ try {
19577
+ if (localFileExisted) {
19578
+ nativeBinding = require('./${localName}.darwin-arm64.node')
19579
+ } else {
19580
+ nativeBinding = require('${pkgName}-darwin-arm64')
19581
+ }
19582
+ } catch (e) {
19583
+ loadError = e
19584
+ }
19585
+ break
19586
+ default:
19587
+ throw new Error(\`Unsupported architecture on macOS: \${arch}\`)
19588
+ }
19589
+ break
19590
+ case 'freebsd':
19591
+ if (arch !== 'x64') {
19592
+ throw new Error(\`Unsupported architecture on FreeBSD: \${arch}\`)
19593
+ }
19594
+ localFileExisted = existsSync(join(__dirname, '${localName}.freebsd-x64.node'))
19517
19595
  try {
19518
- if (existsSync2(localPath)) {
19519
- nativeBinding = require(localPath);
19596
+ if (localFileExisted) {
19597
+ nativeBinding = require('./${localName}.freebsd-x64.node')
19520
19598
  } else {
19521
- nativeBinding = require(pkgPath);
19599
+ nativeBinding = require('${pkgName}-freebsd-x64')
19522
19600
  }
19523
19601
  } catch (e) {
19524
- loadError = e;
19525
- continue;
19526
- }
19527
- loadError = null;
19528
- break;
19529
- }
19530
- if (!nativeBinding) {
19531
- if (loadError) {
19532
- throw loadError;
19602
+ loadError = e
19603
+ }
19604
+ break
19605
+ case 'linux':
19606
+ switch (arch) {
19607
+ case 'x64':
19608
+ if (isMusl()) {
19609
+ localFileExisted = existsSync(
19610
+ join(__dirname, '${localName}.linux-x64-musl.node')
19611
+ )
19612
+ try {
19613
+ if (localFileExisted) {
19614
+ nativeBinding = require('./${localName}.linux-x64-musl.node')
19615
+ } else {
19616
+ nativeBinding = require('${pkgName}-linux-x64-musl')
19617
+ }
19618
+ } catch (e) {
19619
+ loadError = e
19620
+ }
19621
+ } else {
19622
+ localFileExisted = existsSync(
19623
+ join(__dirname, '${localName}.linux-x64-gnu.node')
19624
+ )
19625
+ try {
19626
+ if (localFileExisted) {
19627
+ nativeBinding = require('./${localName}.linux-x64-gnu.node')
19628
+ } else {
19629
+ nativeBinding = require('${pkgName}-linux-x64-gnu')
19630
+ }
19631
+ } catch (e) {
19632
+ loadError = e
19633
+ }
19634
+ }
19635
+ break
19636
+ case 'arm64':
19637
+ if (isMusl()) {
19638
+ localFileExisted = existsSync(
19639
+ join(__dirname, '${localName}.linux-arm64-musl.node')
19640
+ )
19641
+ try {
19642
+ if (localFileExisted) {
19643
+ nativeBinding = require('./${localName}.linux-arm64-musl.node')
19644
+ } else {
19645
+ nativeBinding = require('${pkgName}-linux-arm64-musl')
19646
+ }
19647
+ } catch (e) {
19648
+ loadError = e
19649
+ }
19650
+ } else {
19651
+ localFileExisted = existsSync(
19652
+ join(__dirname, '${localName}.linux-arm64-gnu.node')
19653
+ )
19654
+ try {
19655
+ if (localFileExisted) {
19656
+ nativeBinding = require('./${localName}.linux-arm64-gnu.node')
19657
+ } else {
19658
+ nativeBinding = require('${pkgName}-linux-arm64-gnu')
19659
+ }
19660
+ } catch (e) {
19661
+ loadError = e
19662
+ }
19663
+ }
19664
+ break
19665
+ case 'arm':
19666
+ localFileExisted = existsSync(
19667
+ join(__dirname, '${localName}.linux-arm-gnueabihf.node')
19668
+ )
19669
+ try {
19670
+ if (localFileExisted) {
19671
+ nativeBinding = require('./${localName}.linux-arm-gnueabihf.node')
19672
+ } else {
19673
+ nativeBinding = require('${pkgName}-linux-arm-gnueabihf')
19674
+ }
19675
+ } catch (e) {
19676
+ loadError = e
19677
+ }
19678
+ break
19679
+ default:
19680
+ throw new Error(\`Unsupported architecture on Linux: \${arch}\`)
19533
19681
  }
19534
- throw new Error(`Unsupported OS: ${platform2}, architecture: ${arch}`);
19682
+ break
19683
+ default:
19684
+ throw new Error(\`Unsupported OS: \${platform}, architecture: \${arch}\`)
19685
+ }
19686
+
19687
+ if (!nativeBinding) {
19688
+ if (loadError) {
19689
+ throw loadError
19535
19690
  }
19536
- return nativeBinding;
19691
+ throw new Error(\`Failed to load native binding\`)
19537
19692
  }
19538
- function createJsBinding(localName, pkgName) {
19539
- return `${loadNapiModule.toString()}
19540
19693
 
19541
- module.exports = loadNapiModule('${localName}', '${pkgName}')
19542
19694
  `;
19543
19695
  }
19544
19696
 
@@ -19609,7 +19761,8 @@ var Builder = class {
19609
19761
  debug3(" %i", `cargo ${this.args.join(" ")}`);
19610
19762
  const controller = new AbortController();
19611
19763
  const buildTask = new Promise((resolve8, reject) => {
19612
- const buildProcess = (0, import_child_process4.spawn)("cargo", this.args, {
19764
+ const command = process.env.CARGO ?? (this.options.useCross ? "cross" : "cargo");
19765
+ const buildProcess = (0, import_child_process4.spawn)(command, this.args, {
19613
19766
  env: {
19614
19767
  ...process.env,
19615
19768
  ...this.envs
@@ -19774,6 +19927,9 @@ var Builder = class {
19774
19927
  if (this.options.targetDir) {
19775
19928
  this.args.push("--target-dir", this.options.targetDir);
19776
19929
  }
19930
+ if (this.options.profile) {
19931
+ this.args.push("--profile", this.options.profile);
19932
+ }
19777
19933
  if (this.options.cargoOptions?.length) {
19778
19934
  this.args.push(...this.options.cargoOptions);
19779
19935
  }
@@ -19808,7 +19964,9 @@ var Builder = class {
19808
19964
  if (!srcName || !destName) {
19809
19965
  return;
19810
19966
  }
19811
- const src = (0, import_path2.join)(this.targetDir, this.target.triple, this.options.release ? "release" : "debug", srcName);
19967
+ const profile = this.options.profile ?? (this.options.release ? "release" : "debug");
19968
+ const src = (0, import_path2.join)(this.targetDir, this.target.triple, profile, srcName);
19969
+ debug3(`Copy artifact from: [${src}]`);
19812
19970
  const dest = (0, import_path2.join)(this.outputDir, destName);
19813
19971
  try {
19814
19972
  if (await fileExists(dest)) {
package/dist/utils/ci.js CHANGED
@@ -83,4 +83,13 @@ export const CIConfig = {
83
83
  ],
84
84
  test: false,
85
85
  },
86
+ 'riscv64gc-unknown-linux-gnu': {
87
+ host: 'ubuntu-latest',
88
+ build_setup: [
89
+ 'sudo apt-get update',
90
+ 'sudo apt-get install g++-riscv64-linux-gnu gcc-riscv64-linux-gnu -y',
91
+ ],
92
+ // No official nodejs docker image for riscv64
93
+ test: false,
94
+ },
86
95
  };
@@ -1,9 +1,9 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- export declare const AVAILABLE_TARGETS: readonly ["aarch64-apple-darwin", "aarch64-linux-android", "aarch64-unknown-linux-gnu", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc", "x86_64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl", "x86_64-unknown-freebsd", "i686-pc-windows-msvc", "armv7-unknown-linux-gnueabihf", "armv7-linux-androideabi", "universal-apple-darwin"];
2
+ export declare const AVAILABLE_TARGETS: readonly ["aarch64-apple-darwin", "aarch64-linux-android", "aarch64-unknown-linux-gnu", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc", "x86_64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl", "x86_64-unknown-freebsd", "i686-pc-windows-msvc", "armv7-unknown-linux-gnueabihf", "armv7-linux-androideabi", "universal-apple-darwin", "riscv64gc-unknown-linux-gnu"];
3
3
  export type TargetTriple = (typeof AVAILABLE_TARGETS)[number];
4
4
  export declare const DEFAULT_TARGETS: readonly ["x86_64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu"];
5
5
  export declare const TARGET_LINKER: Record<string, string>;
6
- type NodeJSArch = 'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 's390' | 's390x' | 'x32' | 'x64' | 'universal';
6
+ type NodeJSArch = 'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 'riscv64' | 's390' | 's390x' | 'x32' | 'x64' | 'universal';
7
7
  export declare const NodeArchToCpu: Record<string, string>;
8
8
  export declare const UniArchsByPlatform: Partial<Record<NodeJS.Platform, NodeJSArch[]>>;
9
9
  export interface Target {
@@ -14,6 +14,7 @@ export const AVAILABLE_TARGETS = [
14
14
  'armv7-unknown-linux-gnueabihf',
15
15
  'armv7-linux-androideabi',
16
16
  'universal-apple-darwin',
17
+ 'riscv64gc-unknown-linux-gnu',
17
18
  ];
18
19
  export const DEFAULT_TARGETS = [
19
20
  'x86_64-apple-darwin',
@@ -22,18 +23,21 @@ export const DEFAULT_TARGETS = [
22
23
  ];
23
24
  export const TARGET_LINKER = {
24
25
  'aarch64-unknown-linux-musl': 'aarch64-linux-musl-gcc',
26
+ 'riscv64gc-unknown-linux-gnu': 'riscv64-linux-gnu-gcc',
25
27
  };
26
28
  const CpuToNodeArch = {
27
29
  x86_64: 'x64',
28
30
  aarch64: 'arm64',
29
31
  i686: 'ia32',
30
32
  armv7: 'arm',
33
+ riscv64gc: 'riscv64',
31
34
  };
32
35
  export const NodeArchToCpu = {
33
36
  x64: 'x86_64',
34
37
  arm64: 'aarch64',
35
38
  ia32: 'i686',
36
39
  arm: 'armv7',
40
+ riscv64: 'riscv64gc',
37
41
  };
38
42
  const SysToNodePlatform = {
39
43
  linux: 'linux',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@napi-rs/cli",
3
- "version": "3.0.0-alpha.3",
3
+ "version": "3.0.0-alpha.4",
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",
@@ -79,12 +79,12 @@
79
79
  "devDependencies": {
80
80
  "@types/inquirer": "^9.0.3",
81
81
  "@types/js-yaml": "^4.0.5",
82
- "@types/lodash-es": "^4.17.6",
82
+ "@types/lodash-es": "^4.17.7",
83
83
  "ava": "^5.2.0",
84
- "esbuild": "^0.17.14",
84
+ "esbuild": "^0.17.16",
85
85
  "prettier": "^2.8.7",
86
86
  "ts-node": "^10.9.1",
87
- "typescript": "^4.9.4"
87
+ "typescript": "^5.0.4"
88
88
  },
89
89
  "funding": {
90
90
  "type": "github",
@@ -96,5 +96,5 @@
96
96
  "build:cjs": "node ./esbuild.mjs",
97
97
  "test": "ava"
98
98
  },
99
- "gitHead": "b5c3c0575559f9c99d7747f3163476afe7e89a6c"
99
+ "gitHead": "0302e564faad54dcfe6c91c9a7f26749a6a0d8e8"
100
100
  }