@napi-rs/cli 3.0.0-alpha.90 → 3.0.0-alpha.92

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 (133) hide show
  1. package/dist/api/create-npm-dirs.d.ts +5 -0
  2. package/dist/api/templates/index.d.ts +0 -7
  3. package/dist/cli.js +3892 -15
  4. package/dist/index.cjs +9212 -8791
  5. package/dist/index.js +3643 -32
  6. package/package.json +10 -8
  7. package/src/api/build.ts +15 -15
  8. package/src/api/create-npm-dirs.ts +4 -2
  9. package/src/api/templates/index.ts +0 -7
  10. package/src/api/templates/load-wasi-template.ts +23 -0
  11. package/src/utils/config.ts +9 -0
  12. package/dist/api/__tests__/new.spec.js +0 -283
  13. package/dist/api/__tests__/new.spec.js.map +0 -1
  14. package/dist/api/artifacts.js +0 -74
  15. package/dist/api/artifacts.js.map +0 -1
  16. package/dist/api/build.js +0 -707
  17. package/dist/api/build.js.map +0 -1
  18. package/dist/api/create-npm-dirs.js +0 -101
  19. package/dist/api/create-npm-dirs.js.map +0 -1
  20. package/dist/api/new.js +0 -360
  21. package/dist/api/new.js.map +0 -1
  22. package/dist/api/pre-publish.js +0 -160
  23. package/dist/api/pre-publish.js.map +0 -1
  24. package/dist/api/rename.js +0 -91
  25. package/dist/api/rename.js.map +0 -1
  26. package/dist/api/templates/.gitignore.d.ts +0 -1
  27. package/dist/api/templates/.gitignore.js +0 -200
  28. package/dist/api/templates/.gitignore.js.map +0 -1
  29. package/dist/api/templates/.npmignore.d.ts +0 -1
  30. package/dist/api/templates/.npmignore.js +0 -15
  31. package/dist/api/templates/.npmignore.js.map +0 -1
  32. package/dist/api/templates/build.rs.d.ts +0 -1
  33. package/dist/api/templates/build.rs.js +0 -5
  34. package/dist/api/templates/build.rs.js.map +0 -1
  35. package/dist/api/templates/cargo.toml.d.ts +0 -6
  36. package/dist/api/templates/cargo.toml.js +0 -27
  37. package/dist/api/templates/cargo.toml.js.map +0 -1
  38. package/dist/api/templates/ci-template.d.ts +0 -3
  39. package/dist/api/templates/ci-template.js +0 -593
  40. package/dist/api/templates/ci-template.js.map +0 -1
  41. package/dist/api/templates/ci.yml.d.ts +0 -3
  42. package/dist/api/templates/ci.yml.js +0 -115
  43. package/dist/api/templates/ci.yml.js.map +0 -1
  44. package/dist/api/templates/index.js +0 -9
  45. package/dist/api/templates/index.js.map +0 -1
  46. package/dist/api/templates/js-binding.js +0 -213
  47. package/dist/api/templates/js-binding.js.map +0 -1
  48. package/dist/api/templates/lib.rs.d.ts +0 -1
  49. package/dist/api/templates/lib.rs.js +0 -8
  50. package/dist/api/templates/lib.rs.js.map +0 -1
  51. package/dist/api/templates/load-wasi-template.js +0 -168
  52. package/dist/api/templates/load-wasi-template.js.map +0 -1
  53. package/dist/api/templates/package.json.d.ts +0 -15
  54. package/dist/api/templates/package.json.js +0 -54
  55. package/dist/api/templates/package.json.js.map +0 -1
  56. package/dist/api/templates/wasi-worker-template.js +0 -122
  57. package/dist/api/templates/wasi-worker-template.js.map +0 -1
  58. package/dist/api/universalize.js +0 -39
  59. package/dist/api/universalize.js.map +0 -1
  60. package/dist/api/version.js +0 -17
  61. package/dist/api/version.js.map +0 -1
  62. package/dist/cli.js.map +0 -1
  63. package/dist/commands/artifacts.js +0 -20
  64. package/dist/commands/artifacts.js.map +0 -1
  65. package/dist/commands/build.js +0 -35
  66. package/dist/commands/build.js.map +0 -1
  67. package/dist/commands/create-npm-dirs.js +0 -8
  68. package/dist/commands/create-npm-dirs.js.map +0 -1
  69. package/dist/commands/help.js +0 -13
  70. package/dist/commands/help.js.map +0 -1
  71. package/dist/commands/new.js +0 -110
  72. package/dist/commands/new.js.map +0 -1
  73. package/dist/commands/pre-publish.js +0 -9
  74. package/dist/commands/pre-publish.js.map +0 -1
  75. package/dist/commands/rename.js +0 -8
  76. package/dist/commands/rename.js.map +0 -1
  77. package/dist/commands/universalize.js +0 -8
  78. package/dist/commands/universalize.js.map +0 -1
  79. package/dist/commands/version.js +0 -8
  80. package/dist/commands/version.js.map +0 -1
  81. package/dist/def/artifacts.js +0 -47
  82. package/dist/def/artifacts.js.map +0 -1
  83. package/dist/def/build.js +0 -140
  84. package/dist/def/build.js.map +0 -1
  85. package/dist/def/create-npm-dirs.js +0 -43
  86. package/dist/def/create-npm-dirs.js.map +0 -1
  87. package/dist/def/new.js +0 -77
  88. package/dist/def/new.js.map +0 -1
  89. package/dist/def/pre-publish.js +0 -61
  90. package/dist/def/pre-publish.js.map +0 -1
  91. package/dist/def/rename.js +0 -63
  92. package/dist/def/rename.js.map +0 -1
  93. package/dist/def/universalize.js +0 -38
  94. package/dist/def/universalize.js.map +0 -1
  95. package/dist/def/version.js +0 -38
  96. package/dist/def/version.js.map +0 -1
  97. package/dist/index.js.map +0 -1
  98. package/dist/utils/__tests__/config.spec.js +0 -63
  99. package/dist/utils/__tests__/config.spec.js.map +0 -1
  100. package/dist/utils/__tests__/target.spec.js +0 -11
  101. package/dist/utils/__tests__/target.spec.js.map +0 -1
  102. package/dist/utils/__tests__/typegen.spec.js +0 -42
  103. package/dist/utils/__tests__/typegen.spec.js.map +0 -1
  104. package/dist/utils/__tests__/version.spec.js +0 -6
  105. package/dist/utils/__tests__/version.spec.js.map +0 -1
  106. package/dist/utils/cargo.js +0 -34
  107. package/dist/utils/cargo.js.map +0 -1
  108. package/dist/utils/config.js +0 -75
  109. package/dist/utils/config.js.map +0 -1
  110. package/dist/utils/index.js +0 -10
  111. package/dist/utils/index.js.map +0 -1
  112. package/dist/utils/log.js +0 -15
  113. package/dist/utils/log.js.map +0 -1
  114. package/dist/utils/metadata.js +0 -40
  115. package/dist/utils/metadata.js.map +0 -1
  116. package/dist/utils/misc.js +0 -43
  117. package/dist/utils/misc.js.map +0 -1
  118. package/dist/utils/read-config.js +0 -8
  119. package/dist/utils/read-config.js.map +0 -1
  120. package/dist/utils/target.js +0 -135
  121. package/dist/utils/target.js.map +0 -1
  122. package/dist/utils/typegen.js +0 -210
  123. package/dist/utils/typegen.js.map +0 -1
  124. package/dist/utils/version.js +0 -62
  125. package/dist/utils/version.js.map +0 -1
  126. package/src/api/templates/.gitignore.ts +0 -199
  127. package/src/api/templates/.npmignore.ts +0 -14
  128. package/src/api/templates/build.rs.ts +0 -4
  129. package/src/api/templates/cargo.toml.ts +0 -36
  130. package/src/api/templates/ci-template.ts +0 -602
  131. package/src/api/templates/ci.yml.ts +0 -140
  132. package/src/api/templates/lib.rs.ts +0 -7
  133. package/src/api/templates/package.json.ts +0 -90
@@ -1,6 +0,0 @@
1
- import test from 'ava';
2
- import { napiEngineRequirement, NapiVersion } from '../version.js';
3
- test('should generate correct napi engine requirement', (t) => {
4
- t.snapshot(Object.values(NapiVersion).filter((v) => typeof v === 'number').map(napiEngineRequirement));
5
- });
6
- //# sourceMappingURL=version.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.spec.js","sourceRoot":"","sources":["../../../src/utils/__tests__/version.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAA;AAEtB,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAElE,IAAI,CAAC,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5D,CAAC,CAAC,QAAQ,CAEN,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAE/B,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAC7B,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,34 +0,0 @@
1
- import { execSync } from 'node:child_process';
2
- import { debug } from './log.js';
3
- export function tryInstallCargoBinary(name, bin) {
4
- if (detectCargoBinary(bin)) {
5
- debug('Cargo binary already installed: %s', name);
6
- return;
7
- }
8
- try {
9
- debug('Installing cargo binary: %s', name);
10
- execSync(`cargo install ${name}`, {
11
- stdio: 'inherit',
12
- });
13
- }
14
- catch (e) {
15
- throw new Error(`Failed to install cargo binary: ${name}`, {
16
- cause: e,
17
- });
18
- }
19
- }
20
- function detectCargoBinary(bin) {
21
- debug('Detecting cargo binary: %s', bin);
22
- try {
23
- execSync(`cargo help ${bin}`, {
24
- stdio: 'ignore',
25
- });
26
- debug('Cargo binary detected: %s', bin);
27
- return true;
28
- }
29
- catch {
30
- debug('Cargo binary not detected: %s', bin);
31
- return false;
32
- }
33
- }
34
- //# sourceMappingURL=cargo.js.map
@@ -1 +0,0 @@
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"}
@@ -1,75 +0,0 @@
1
- import { underline, yellow } from 'colorette';
2
- import { merge, omit } from 'lodash-es';
3
- import { fileExists, readFileAsync } from './misc.js';
4
- import { DEFAULT_TARGETS, parseTriple } from './target.js';
5
- export const SupportedPackageManagers = ['yarn', 'pnpm'];
6
- export const SupportedTestFrameworks = ['ava'];
7
- export async function readNapiConfig(path, configPath) {
8
- if (configPath && !(await fileExists(configPath))) {
9
- throw new Error(`NAPI-RS config not found at ${configPath}`);
10
- }
11
- if (!(await fileExists(path))) {
12
- throw new Error(`package.json not found at ${path}`);
13
- }
14
- // May support multiple config sources later on.
15
- const content = await readFileAsync(path, 'utf8');
16
- let pkgJson;
17
- try {
18
- pkgJson = JSON.parse(content);
19
- }
20
- catch (e) {
21
- throw new Error(`Failed to parse package.json at ${path}`, {
22
- cause: e,
23
- });
24
- }
25
- let separatedConfig;
26
- if (configPath) {
27
- const configContent = await readFileAsync(configPath, 'utf8');
28
- try {
29
- separatedConfig = JSON.parse(configContent);
30
- }
31
- catch (e) {
32
- throw new Error(`Failed to parse NAPI-RS config at ${configPath}`, {
33
- cause: e,
34
- });
35
- }
36
- }
37
- const userNapiConfig = pkgJson.napi ?? {};
38
- if (pkgJson.napi && separatedConfig) {
39
- const pkgJsonPath = underline(path);
40
- const configPathUnderline = underline(configPath);
41
- console.warn(yellow(`Both napi field in ${pkgJsonPath} and [NAPI-RS config](${configPathUnderline}) file are found, the NAPI-RS config file will be used.`));
42
- Object.assign(userNapiConfig, separatedConfig);
43
- }
44
- const napiConfig = merge({
45
- binaryName: 'index',
46
- packageName: pkgJson.name,
47
- targets: [],
48
- packageJson: pkgJson,
49
- npmClient: 'npm',
50
- }, omit(userNapiConfig, 'targets'));
51
- let targets = userNapiConfig.targets ?? [];
52
- // compatible with old config
53
- if (userNapiConfig?.name) {
54
- console.warn(yellow(`[DEPRECATED] napi.name is deprecated, use napi.binaryName instead.`));
55
- napiConfig.binaryName = userNapiConfig.name;
56
- }
57
- if (!targets.length) {
58
- let deprecatedWarned = false;
59
- const warning = yellow(`[DEPRECATED] napi.triples is deprecated, use napi.targets instead.`);
60
- if (userNapiConfig.triples?.defaults) {
61
- deprecatedWarned = true;
62
- console.warn(warning);
63
- targets = targets.concat(DEFAULT_TARGETS);
64
- }
65
- if (userNapiConfig.triples?.additional?.length) {
66
- targets = targets.concat(userNapiConfig.triples.additional);
67
- if (!deprecatedWarned) {
68
- console.warn(warning);
69
- }
70
- }
71
- }
72
- napiConfig.targets = targets.map(parseTriple);
73
- return napiConfig;
74
- }
75
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export * from './log.js';
2
- export * from './misc.js';
3
- export * from './target.js';
4
- export * from './version.js';
5
- export * from './metadata.js';
6
- export * from './config.js';
7
- export * from './cargo.js';
8
- export * from './typegen.js';
9
- export * from './read-config.js';
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
package/dist/utils/log.js DELETED
@@ -1,15 +0,0 @@
1
- import * as colors from 'colorette';
2
- import rawDebug from 'debug';
3
- // debug('%i', 'This is an info')
4
- rawDebug.formatters.i = (v) => {
5
- return colors.green(v);
6
- };
7
- export const debugFactory = (namespace) => {
8
- const debug = rawDebug(`napi:${namespace}`);
9
- debug.info = (...args) => console.error(colors.black(colors.bgGreen(' INFO ')), ...args);
10
- debug.warn = (...args) => console.error(colors.black(colors.bgYellow(' WARNING ')), ...args);
11
- debug.error = (...args) => console.error(colors.white(colors.bgRed(' ERROR ')), ...args.map((arg) => arg instanceof Error ? (arg.stack ?? arg.message) : arg));
12
- return debug;
13
- };
14
- export const debug = debugFactory('utils');
15
- //# sourceMappingURL=log.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/utils/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AACnC,OAAO,QAAQ,MAAM,OAAO,CAAA;AAE5B,iCAAiC;AACjC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;IAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,SAAS,EAAE,CAAC,CAAA;IAE3C,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IAChE,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACpE,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC/B,OAAO,CAAC,KAAK,CACX,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EACrC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAClB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CACxD,CACF,CAAA;IAEH,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA"}
@@ -1,40 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import fs from 'node:fs';
3
- export async function parseMetadata(manifestPath) {
4
- if (!fs.existsSync(manifestPath)) {
5
- throw new Error(`No crate found in manifest: ${manifestPath}`);
6
- }
7
- const childProcess = spawn('cargo', ['metadata', '--manifest-path', manifestPath, '--format-version', '1'], { stdio: 'pipe' });
8
- let stdout = '';
9
- let stderr = '';
10
- let status = 0;
11
- let error = null;
12
- childProcess.stdout.on('data', (data) => {
13
- stdout += data;
14
- });
15
- childProcess.stderr.on('data', (data) => {
16
- stderr += data;
17
- });
18
- await new Promise((resolve) => {
19
- childProcess.on('close', (code) => {
20
- status = code ?? 0;
21
- resolve();
22
- });
23
- });
24
- if (error) {
25
- throw new Error('cargo metadata failed to run', { cause: error });
26
- }
27
- if (status !== 0) {
28
- const simpleMessage = `cargo metadata exited with code ${status}`;
29
- throw new Error(`${simpleMessage} and error message:\n\n${stderr}`, {
30
- cause: new Error(simpleMessage),
31
- });
32
- }
33
- try {
34
- return JSON.parse(stdout);
35
- }
36
- catch (e) {
37
- throw new Error('Failed to parse cargo metadata JSON', { cause: e });
38
- }
39
- }
40
- //# sourceMappingURL=metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/utils/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,SAAS,CAAA;AAiDxB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAAoB;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CACxB,OAAO,EACP,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,CAAC,EACtE,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAA;IAED,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,KAAK,GAAG,IAAI,CAAA;IAEhB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACtC,MAAM,IAAI,IAAI,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACtC,MAAM,IAAI,IAAI,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,GAAG,IAAI,IAAI,CAAC,CAAA;YAClB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,aAAa,GAAG,mCAAmC,MAAM,EAAE,CAAA;QACjE,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,0BAA0B,MAAM,EAAE,EAAE;YAClE,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;SAChC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAA2B,CAAA;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IACtE,CAAC;AACH,CAAC"}
@@ -1,43 +0,0 @@
1
- import { readFile, writeFile, copyFile, mkdir, unlink, stat, readdir, } from 'node:fs';
2
- import { promisify } from 'node:util';
3
- import pkgJson from '../../package.json' with { type: 'json' };
4
- import { debug } from './log.js';
5
- export const readFileAsync = promisify(readFile);
6
- export const writeFileAsync = promisify(writeFile);
7
- export const unlinkAsync = promisify(unlink);
8
- export const copyFileAsync = promisify(copyFile);
9
- export const mkdirAsync = promisify(mkdir);
10
- export const statAsync = promisify(stat);
11
- export const readdirAsync = promisify(readdir);
12
- export async function fileExists(path) {
13
- const exists = await statAsync(path)
14
- .then(() => true)
15
- .catch(() => false);
16
- return exists;
17
- }
18
- export async function dirExistsAsync(path) {
19
- try {
20
- const stats = await statAsync(path);
21
- return stats.isDirectory();
22
- }
23
- catch {
24
- return false;
25
- }
26
- }
27
- export function pick(o, ...keys) {
28
- return keys.reduce((acc, key) => {
29
- acc[key] = o[key];
30
- return acc;
31
- }, {});
32
- }
33
- export async function updatePackageJson(path, partial) {
34
- const exists = await fileExists(path);
35
- if (!exists) {
36
- debug(`File not exists ${path}`);
37
- return;
38
- }
39
- const old = JSON.parse(await readFileAsync(path, 'utf8'));
40
- await writeFileAsync(path, JSON.stringify({ ...old, ...partial }, null, 2));
41
- }
42
- export const CLI_VERSION = pkgJson.version;
43
- //# sourceMappingURL=misc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,KAAK,EACL,MAAM,EACN,IAAI,EACJ,OAAO,GACR,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,OAAO,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC;SACjC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACrB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAuB,CAAI,EAAE,GAAG,IAAS;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,OAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IACzD,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAA"}
@@ -1,8 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { readNapiConfig } from './config.js';
3
- export async function readConfig(options) {
4
- const resolvePath = (...paths) => resolve(options.cwd, ...paths);
5
- const config = await readNapiConfig(resolvePath(options.configPath ?? options.packageJsonPath ?? 'package.json'), options.configPath ? resolvePath(options.configPath) : undefined);
6
- return config;
7
- }
8
- //# sourceMappingURL=read-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-config.js","sourceRoot":"","sources":["../../src/utils/read-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAQ5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA2B;IAC1D,MAAM,WAAW,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,WAAW,CACT,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,eAAe,IAAI,cAAc,CAChE,EACD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CACjE,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,135 +0,0 @@
1
- import { execSync } from 'node:child_process';
2
- export const UNIVERSAL_TARGETS = {
3
- 'universal-apple-darwin': ['aarch64-apple-darwin', 'x86_64-apple-darwin'],
4
- };
5
- export const AVAILABLE_TARGETS = [
6
- 'aarch64-apple-darwin',
7
- 'aarch64-linux-android',
8
- 'aarch64-unknown-linux-gnu',
9
- 'aarch64-unknown-linux-musl',
10
- 'aarch64-pc-windows-msvc',
11
- 'x86_64-apple-darwin',
12
- 'x86_64-pc-windows-msvc',
13
- 'x86_64-unknown-linux-gnu',
14
- 'x86_64-unknown-linux-musl',
15
- 'x86_64-unknown-freebsd',
16
- 'i686-pc-windows-msvc',
17
- 'armv7-unknown-linux-gnueabihf',
18
- 'armv7-unknown-linux-musleabihf',
19
- 'armv7-linux-androideabi',
20
- 'universal-apple-darwin',
21
- 'riscv64gc-unknown-linux-gnu',
22
- 'powerpc64le-unknown-linux-gnu',
23
- 's390x-unknown-linux-gnu',
24
- 'wasm32-wasi-preview1-threads',
25
- ];
26
- export const DEFAULT_TARGETS = [
27
- 'x86_64-apple-darwin',
28
- 'aarch64-apple-darwin',
29
- 'x86_64-pc-windows-msvc',
30
- 'x86_64-unknown-linux-gnu',
31
- ];
32
- export const TARGET_LINKER = {
33
- 'aarch64-unknown-linux-musl': 'aarch64-linux-musl-gcc',
34
- 'riscv64gc-unknown-linux-gnu': 'riscv64-linux-gnu-gcc',
35
- 'powerpc64le-unknown-linux-gnu': 'powerpc64le-linux-gnu-gcc',
36
- 's390x-unknown-linux-gnu': 's390x-linux-gnu-gcc',
37
- };
38
- const CpuToNodeArch = {
39
- x86_64: 'x64',
40
- aarch64: 'arm64',
41
- i686: 'ia32',
42
- armv7: 'arm',
43
- riscv64gc: 'riscv64',
44
- powerpc64le: 'ppc64',
45
- };
46
- export const NodeArchToCpu = {
47
- x64: 'x86_64',
48
- arm64: 'aarch64',
49
- ia32: 'i686',
50
- arm: 'armv7',
51
- riscv64: 'riscv64gc',
52
- ppc64: 'powerpc64le',
53
- };
54
- const SysToNodePlatform = {
55
- linux: 'linux',
56
- freebsd: 'freebsd',
57
- darwin: 'darwin',
58
- windows: 'win32',
59
- };
60
- export const UniArchsByPlatform = {
61
- darwin: ['x64', 'arm64'],
62
- };
63
- /**
64
- * A triple is a specific format for specifying a target architecture.
65
- * Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on.
66
- * The general format of the triple is `<arch><sub>-<vendor>-<sys>-<abi>` where:
67
- * - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc.
68
- * - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc.
69
- * - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc.
70
- * - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS.
71
- * - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc.
72
- */
73
- export function parseTriple(rawTriple) {
74
- if (rawTriple === 'wasm32-wasi' ||
75
- rawTriple === 'wasm32-wasi-preview1-threads' ||
76
- rawTriple.startsWith('wasm32-wasip')) {
77
- return {
78
- triple: rawTriple,
79
- platformArchABI: 'wasm32-wasi',
80
- platform: 'wasi',
81
- arch: 'wasm32',
82
- abi: 'wasi',
83
- };
84
- }
85
- const triple = rawTriple.endsWith('eabi')
86
- ? `${rawTriple.slice(0, -4)}-eabi`
87
- : rawTriple;
88
- const triples = triple.split('-');
89
- let cpu;
90
- let sys;
91
- let abi = null;
92
- if (triples.length === 2) {
93
- // aarch64-fuchsia
94
- // ^ cpu ^ sys
95
- ;
96
- [cpu, sys] = triples;
97
- }
98
- else {
99
- // aarch64-unknown-linux-musl
100
- // ^ cpu ^ sys ^ abi
101
- // aarch64-apple-darwin
102
- // ^ cpu ^ sys (abi is None)
103
- ;
104
- [cpu, , sys, abi = null] = triples;
105
- }
106
- const platform = SysToNodePlatform[sys] ?? sys;
107
- const arch = CpuToNodeArch[cpu] ?? cpu;
108
- return {
109
- triple: rawTriple,
110
- platformArchABI: abi ? `${platform}-${arch}-${abi}` : `${platform}-${arch}`,
111
- platform,
112
- arch,
113
- abi,
114
- };
115
- }
116
- export function getSystemDefaultTarget() {
117
- const host = execSync(`rustc -vV`, {
118
- env: process.env,
119
- })
120
- .toString('utf8')
121
- .split('\n')
122
- .find((line) => line.startsWith('host: '));
123
- const triple = host?.slice('host: '.length);
124
- if (!triple) {
125
- throw new TypeError(`Can not parse target triple from host`);
126
- }
127
- return parseTriple(triple);
128
- }
129
- export function getTargetLinker(target) {
130
- return TARGET_LINKER[target];
131
- }
132
- export function targetToEnvVar(target) {
133
- return target.replace(/-/g, '_').toUpperCase();
134
- }
135
- //# sourceMappingURL=target.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/utils/target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAI7C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,wBAAwB,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;CACjE,CAAA;AAEV,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,sBAAsB;IACtB,uBAAuB;IACvB,2BAA2B;IAC3B,4BAA4B;IAC5B,yBAAyB;IACzB,qBAAqB;IACrB,wBAAwB;IACxB,0BAA0B;IAC1B,2BAA2B;IAC3B,wBAAwB;IACxB,sBAAsB;IACtB,+BAA+B;IAC/B,gCAAgC;IAChC,yBAAyB;IACzB,wBAAwB;IACxB,6BAA6B;IAC7B,+BAA+B;IAC/B,yBAAyB;IACzB,8BAA8B;CACtB,CAAA;AAIV,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,qBAAqB;IACrB,sBAAsB;IACtB,wBAAwB;IACxB,0BAA0B;CAClB,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,4BAA4B,EAAE,wBAAwB;IACtD,6BAA6B,EAAE,uBAAuB;IACtD,+BAA+B,EAAE,2BAA2B;IAC5D,yBAAyB,EAAE,qBAAqB;CACjD,CAAA;AAmBD,MAAM,aAAa,GAA+B;IAChD,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,OAAO;CACrB,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,aAAa;CACrB,CAAA;AAED,MAAM,iBAAiB,GAA6B;IAClD,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,OAAO;CACjB,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA4C;IACzE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAA;AAUD;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,IACE,SAAS,KAAK,aAAa;QAC3B,SAAS,KAAK,8BAA8B;QAC5C,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EACpC,CAAC;QACD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,aAAa;YAC9B,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,MAAM;SACZ,CAAA;IACH,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;QAClC,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,GAAW,CAAA;IACf,IAAI,GAAW,CAAA;IACf,IAAI,GAAG,GAAkB,IAAI,CAAA;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,kBAAkB;QAClB,gBAAgB;QAChB,CAAC;QAAA,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAA;IACvB,CAAC;SAAM,CAAC;QACN,6BAA6B;QAC7B,8BAA8B;QAC9B,uBAAuB;QACvB,qCAAqC;QACrC,CAAC;QAAA,CAAC,GAAG,EAAE,AAAD,EAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAA;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAK,GAAgB,CAAA;IAC5D,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAK,GAAkB,CAAA;IACtD,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE;QAC3E,QAAQ;QACR,IAAI;QACJ,GAAG;KACJ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE;QACjC,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC;SACC,QAAQ,CAAC,MAAM,CAAC;SAChB,KAAK,CAAC,IAAI,CAAC;SACX,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;AAChD,CAAC"}
@@ -1,210 +0,0 @@
1
- import { sortBy } from 'lodash-es';
2
- import { readFileAsync } from './misc.js';
3
- const TOP_LEVEL_NAMESPACE = '__TOP_LEVEL_MODULE__';
4
- export const DEFAULT_TYPE_DEF_HEADER = `/* auto-generated by NAPI-RS */
5
- /* eslint-disable */
6
- `;
7
- var TypeDefKind;
8
- (function (TypeDefKind) {
9
- TypeDefKind["Const"] = "const";
10
- TypeDefKind["Enum"] = "enum";
11
- TypeDefKind["StringEnum"] = "string_enum";
12
- TypeDefKind["Interface"] = "interface";
13
- TypeDefKind["Type"] = "type";
14
- TypeDefKind["Fn"] = "fn";
15
- TypeDefKind["Struct"] = "struct";
16
- TypeDefKind["Impl"] = "impl";
17
- })(TypeDefKind || (TypeDefKind = {}));
18
- function prettyPrint(line, constEnum, ident, ambient = false) {
19
- let s = line.js_doc ?? '';
20
- switch (line.kind) {
21
- case TypeDefKind.Interface:
22
- s += `export interface ${line.name} {\n${line.def}\n}`;
23
- break;
24
- case TypeDefKind.Type:
25
- s += `export type ${line.name} = \n${line.def}`;
26
- break;
27
- case TypeDefKind.Enum:
28
- const enumName = constEnum ? 'const enum' : 'enum';
29
- s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}`;
30
- break;
31
- case TypeDefKind.StringEnum:
32
- if (constEnum) {
33
- s += `${exportDeclare(ambient)} const enum ${line.name} {\n${line.def}\n}`;
34
- }
35
- else {
36
- s += `export type ${line.name} = ${line.def.replaceAll(/.*=/g, '').replaceAll(',', '|')};`;
37
- }
38
- break;
39
- case TypeDefKind.Struct:
40
- s += `${exportDeclare(ambient)} class ${line.name} {\n${line.def}\n}`;
41
- if (line.original_name && line.original_name !== line.name) {
42
- s += `\nexport type ${line.original_name} = ${line.name}`;
43
- }
44
- break;
45
- case TypeDefKind.Fn:
46
- s += `${exportDeclare(ambient)} ${line.def}`;
47
- break;
48
- default:
49
- s += line.def;
50
- }
51
- return correctStringIdent(s, ident);
52
- }
53
- function exportDeclare(ambient) {
54
- if (ambient) {
55
- return 'export';
56
- }
57
- return 'export declare';
58
- }
59
- export async function processTypeDef(intermediateTypeFile, constEnum) {
60
- const exports = [];
61
- const defs = await readIntermediateTypeFile(intermediateTypeFile);
62
- const groupedDefs = preprocessTypeDef(defs);
63
- const dts = sortBy(Array.from(groupedDefs), ([namespace]) => namespace)
64
- .map(([namespace, defs]) => {
65
- if (namespace === TOP_LEVEL_NAMESPACE) {
66
- return defs
67
- .map((def) => {
68
- switch (def.kind) {
69
- case TypeDefKind.Const:
70
- case TypeDefKind.Enum:
71
- case TypeDefKind.StringEnum:
72
- case TypeDefKind.Fn:
73
- case TypeDefKind.Struct: {
74
- exports.push(def.name);
75
- if (def.original_name && def.original_name !== def.name) {
76
- exports.push(def.original_name);
77
- }
78
- break;
79
- }
80
- default:
81
- break;
82
- }
83
- return prettyPrint(def, constEnum, 0);
84
- })
85
- .join('\n\n');
86
- }
87
- else {
88
- exports.push(namespace);
89
- let declaration = '';
90
- declaration += `export declare namespace ${namespace} {\n`;
91
- for (const def of defs) {
92
- declaration += prettyPrint(def, constEnum, 2, true) + '\n';
93
- }
94
- declaration += '}';
95
- return declaration;
96
- }
97
- })
98
- .join('\n\n') + '\n';
99
- return {
100
- dts,
101
- exports,
102
- };
103
- }
104
- async function readIntermediateTypeFile(file) {
105
- const content = await readFileAsync(file, 'utf8');
106
- const defs = content
107
- .split('\n')
108
- .filter(Boolean)
109
- .map((line) => {
110
- line = line.trim();
111
- const parsed = JSON.parse(line);
112
- // Convert escaped newlines back to actual newlines in js_doc fields
113
- if (parsed.js_doc) {
114
- parsed.js_doc = parsed.js_doc.replace(/\\n/g, '\n');
115
- }
116
- // Convert escaped newlines to actual newlines in def fields for struct/class/interface/type types
117
- // where \n represents method/field separators that should be actual newlines
118
- if (parsed.def) {
119
- parsed.def = parsed.def.replace(/\\n/g, '\n');
120
- }
121
- return parsed;
122
- });
123
- // move all `struct` def to the very top
124
- // and order the rest alphabetically.
125
- return defs.sort((a, b) => {
126
- if (a.kind === TypeDefKind.Struct) {
127
- if (b.kind === TypeDefKind.Struct) {
128
- return a.name.localeCompare(b.name);
129
- }
130
- return -1;
131
- }
132
- else if (b.kind === TypeDefKind.Struct) {
133
- return 1;
134
- }
135
- else {
136
- return a.name.localeCompare(b.name);
137
- }
138
- });
139
- }
140
- function preprocessTypeDef(defs) {
141
- const namespaceGrouped = new Map();
142
- const classDefs = new Map();
143
- for (const def of defs) {
144
- const namespace = def.js_mod ?? TOP_LEVEL_NAMESPACE;
145
- if (!namespaceGrouped.has(namespace)) {
146
- namespaceGrouped.set(namespace, []);
147
- }
148
- const group = namespaceGrouped.get(namespace);
149
- if (def.kind === TypeDefKind.Struct) {
150
- group.push(def);
151
- classDefs.set(def.name, def);
152
- }
153
- else if (def.kind === TypeDefKind.Impl) {
154
- // merge `impl` into class definition
155
- const classDef = classDefs.get(def.name);
156
- if (classDef) {
157
- if (classDef.def) {
158
- classDef.def += '\n';
159
- }
160
- classDef.def += def.def;
161
- // Convert any remaining \n sequences in the merged def to actual newlines
162
- if (classDef.def) {
163
- classDef.def = classDef.def.replace(/\\n/g, '\n');
164
- }
165
- }
166
- }
167
- else {
168
- group.push(def);
169
- }
170
- }
171
- return namespaceGrouped;
172
- }
173
- export function correctStringIdent(src, ident) {
174
- let bracketDepth = 0;
175
- const result = src
176
- .split('\n')
177
- .map((line) => {
178
- line = line.trim();
179
- if (line === '') {
180
- return '';
181
- }
182
- const isInMultilineComment = line.startsWith('*');
183
- const isClosingBracket = line.endsWith('}');
184
- const isOpeningBracket = line.endsWith('{');
185
- const isTypeDeclaration = line.endsWith('=');
186
- const isTypeVariant = line.startsWith('|');
187
- let rightIndent = ident;
188
- if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) {
189
- bracketDepth += 1;
190
- rightIndent += (bracketDepth - 1) * 2;
191
- }
192
- else {
193
- if (isClosingBracket &&
194
- bracketDepth > 0 &&
195
- !isInMultilineComment &&
196
- !isTypeVariant) {
197
- bracketDepth -= 1;
198
- }
199
- rightIndent += bracketDepth * 2;
200
- }
201
- if (isInMultilineComment) {
202
- rightIndent += 1;
203
- }
204
- const s = `${' '.repeat(rightIndent)}${line}`;
205
- return s;
206
- })
207
- .join('\n');
208
- return result;
209
- }
210
- //# sourceMappingURL=typegen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/utils/typegen.ts"],"names":[],"mappings":"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"}