@napi-rs/cli 3.0.0-alpha.9 → 3.0.0-alpha.91

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 (185) hide show
  1. package/cli.mjs +1 -1
  2. package/dist/api/__tests__/new.spec.d.ts +1 -0
  3. package/dist/api/build.d.ts +1 -1
  4. package/dist/api/templates/ci-template.d.ts +3 -1
  5. package/dist/api/templates/ci.yml.d.ts +3 -1
  6. package/dist/api/templates/js-binding.d.ts +1 -0
  7. package/dist/api/templates/load-wasi-template.d.ts +2 -0
  8. package/dist/api/templates/package.json.d.ts +9 -2
  9. package/dist/api/templates/wasi-worker-template.d.ts +2 -0
  10. package/dist/cli.js +3867 -15
  11. package/dist/def/artifacts.d.ts +21 -1
  12. package/dist/def/build.d.ts +149 -4
  13. package/dist/def/create-npm-dirs.d.ts +10 -0
  14. package/dist/def/new.d.ts +25 -7
  15. package/dist/def/pre-publish.d.ts +12 -2
  16. package/dist/def/rename.d.ts +16 -6
  17. package/dist/def/universalize.d.ts +10 -0
  18. package/dist/def/version.d.ts +10 -0
  19. package/dist/index.cjs +9946 -15669
  20. package/dist/index.js +3618 -32
  21. package/dist/utils/__tests__/config.spec.d.ts +1 -0
  22. package/dist/utils/config.d.ts +48 -4
  23. package/dist/utils/index.d.ts +1 -1
  24. package/dist/utils/metadata.d.ts +13 -1
  25. package/dist/utils/misc.d.ts +3 -3
  26. package/dist/utils/read-config.d.ts +7 -0
  27. package/dist/utils/target.d.ts +7 -5
  28. package/dist/utils/typegen.d.ts +1 -1
  29. package/dist/utils/version.d.ts +2 -1
  30. package/package.json +38 -34
  31. package/src/api/__tests__/new.spec.ts +429 -0
  32. package/src/api/artifacts.ts +81 -9
  33. package/src/api/build.ts +498 -149
  34. package/src/api/create-npm-dirs.ts +57 -9
  35. package/src/api/new.ts +389 -122
  36. package/src/api/pre-publish.ts +13 -7
  37. package/src/api/rename.ts +103 -17
  38. package/src/api/templates/cargo.toml.ts +1 -0
  39. package/src/api/templates/ci-template.ts +150 -125
  40. package/src/api/templates/ci.yml.ts +27 -6
  41. package/src/api/templates/js-binding.ts +148 -220
  42. package/src/api/templates/load-wasi-template.ts +182 -0
  43. package/src/api/templates/package.json.ts +47 -5
  44. package/src/api/templates/wasi-worker-template.ts +122 -0
  45. package/src/api/universalize.ts +13 -8
  46. package/src/api/version.ts +5 -2
  47. package/src/commands/artifacts.ts +2 -2
  48. package/src/commands/build.ts +1 -1
  49. package/src/commands/new.ts +46 -45
  50. package/src/def/artifacts.ts +22 -3
  51. package/src/def/build.ts +55 -8
  52. package/src/def/create-npm-dirs.ts +9 -0
  53. package/src/def/new.ts +28 -3
  54. package/src/def/pre-publish.ts +12 -3
  55. package/src/def/rename.ts +11 -2
  56. package/src/def/universalize.ts +9 -0
  57. package/src/def/version.ts +9 -0
  58. package/src/utils/__tests__/__fixtures__/napi_type_def +130 -130
  59. package/src/utils/__tests__/__snapshots__/config.spec.ts.md +97 -0
  60. package/src/utils/__tests__/__snapshots__/config.spec.ts.snap +0 -0
  61. package/src/utils/__tests__/__snapshots__/target.spec.ts.md +28 -0
  62. package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
  63. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.md +316 -332
  64. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.snap +0 -0
  65. package/src/utils/__tests__/__snapshots__/version.spec.ts.md +8 -7
  66. package/src/utils/__tests__/__snapshots__/version.spec.ts.snap +0 -0
  67. package/src/utils/__tests__/config.spec.ts +81 -0
  68. package/src/utils/cargo.ts +2 -2
  69. package/src/utils/config.ts +110 -9
  70. package/src/utils/index.ts +1 -1
  71. package/src/utils/log.ts +1 -1
  72. package/src/utils/metadata.ts +52 -14
  73. package/src/utils/misc.ts +21 -12
  74. package/src/utils/read-config.ts +20 -0
  75. package/src/utils/target.ts +22 -4
  76. package/src/utils/typegen.ts +87 -52
  77. package/src/utils/version.ts +10 -8
  78. package/dist/api/artifacts.js +0 -53
  79. package/dist/api/artifacts.js.map +0 -1
  80. package/dist/api/build.js +0 -498
  81. package/dist/api/build.js.map +0 -1
  82. package/dist/api/create-npm-dirs.js +0 -64
  83. package/dist/api/create-npm-dirs.js.map +0 -1
  84. package/dist/api/load-wasi-template.d.ts +0 -1
  85. package/dist/api/load-wasi-template.js +0 -64
  86. package/dist/api/load-wasi-template.js.map +0 -1
  87. package/dist/api/new.js +0 -155
  88. package/dist/api/new.js.map +0 -1
  89. package/dist/api/pre-publish.js +0 -158
  90. package/dist/api/pre-publish.js.map +0 -1
  91. package/dist/api/rename.js +0 -29
  92. package/dist/api/rename.js.map +0 -1
  93. package/dist/api/templates/.gitignore.js +0 -200
  94. package/dist/api/templates/.gitignore.js.map +0 -1
  95. package/dist/api/templates/.npmignore.js +0 -15
  96. package/dist/api/templates/.npmignore.js.map +0 -1
  97. package/dist/api/templates/build.rs.js +0 -5
  98. package/dist/api/templates/build.rs.js.map +0 -1
  99. package/dist/api/templates/cargo.toml.js +0 -26
  100. package/dist/api/templates/cargo.toml.js.map +0 -1
  101. package/dist/api/templates/ci-template.js +0 -578
  102. package/dist/api/templates/ci-template.js.map +0 -1
  103. package/dist/api/templates/ci.yml.js +0 -99
  104. package/dist/api/templates/ci.yml.js.map +0 -1
  105. package/dist/api/templates/index.js +0 -9
  106. package/dist/api/templates/index.js.map +0 -1
  107. package/dist/api/templates/js-binding.js +0 -293
  108. package/dist/api/templates/js-binding.js.map +0 -1
  109. package/dist/api/templates/lib.rs.js +0 -8
  110. package/dist/api/templates/lib.rs.js.map +0 -1
  111. package/dist/api/templates/package.json.js +0 -32
  112. package/dist/api/templates/package.json.js.map +0 -1
  113. package/dist/api/universalize.js +0 -39
  114. package/dist/api/universalize.js.map +0 -1
  115. package/dist/api/version.js +0 -17
  116. package/dist/api/version.js.map +0 -1
  117. package/dist/api/wasi-worker-template.d.ts +0 -1
  118. package/dist/api/wasi-worker-template.js +0 -53
  119. package/dist/api/wasi-worker-template.js.map +0 -1
  120. package/dist/cli.js.map +0 -1
  121. package/dist/commands/artifacts.js +0 -20
  122. package/dist/commands/artifacts.js.map +0 -1
  123. package/dist/commands/build.js +0 -35
  124. package/dist/commands/build.js.map +0 -1
  125. package/dist/commands/create-npm-dirs.js +0 -8
  126. package/dist/commands/create-npm-dirs.js.map +0 -1
  127. package/dist/commands/help.js +0 -13
  128. package/dist/commands/help.js.map +0 -1
  129. package/dist/commands/new.js +0 -110
  130. package/dist/commands/new.js.map +0 -1
  131. package/dist/commands/pre-publish.js +0 -9
  132. package/dist/commands/pre-publish.js.map +0 -1
  133. package/dist/commands/rename.js +0 -8
  134. package/dist/commands/rename.js.map +0 -1
  135. package/dist/commands/universalize.js +0 -8
  136. package/dist/commands/universalize.js.map +0 -1
  137. package/dist/commands/version.js +0 -8
  138. package/dist/commands/version.js.map +0 -1
  139. package/dist/def/artifacts.js +0 -39
  140. package/dist/def/artifacts.js.map +0 -1
  141. package/dist/def/build.js +0 -118
  142. package/dist/def/build.js.map +0 -1
  143. package/dist/def/create-npm-dirs.js +0 -39
  144. package/dist/def/create-npm-dirs.js.map +0 -1
  145. package/dist/def/new.js +0 -67
  146. package/dist/def/new.js.map +0 -1
  147. package/dist/def/pre-publish.js +0 -57
  148. package/dist/def/pre-publish.js.map +0 -1
  149. package/dist/def/rename.js +0 -59
  150. package/dist/def/rename.js.map +0 -1
  151. package/dist/def/universalize.js +0 -34
  152. package/dist/def/universalize.js.map +0 -1
  153. package/dist/def/version.js +0 -34
  154. package/dist/def/version.js.map +0 -1
  155. package/dist/index.js.map +0 -1
  156. package/dist/utils/__tests__/target.spec.js +0 -11
  157. package/dist/utils/__tests__/target.spec.js.map +0 -1
  158. package/dist/utils/__tests__/typegen.spec.js +0 -42
  159. package/dist/utils/__tests__/typegen.spec.js.map +0 -1
  160. package/dist/utils/__tests__/version.spec.js +0 -6
  161. package/dist/utils/__tests__/version.spec.js.map +0 -1
  162. package/dist/utils/cargo.js +0 -34
  163. package/dist/utils/cargo.js.map +0 -1
  164. package/dist/utils/ci.d.ts +0 -11
  165. package/dist/utils/ci.js +0 -96
  166. package/dist/utils/ci.js.map +0 -1
  167. package/dist/utils/config.js +0 -43
  168. package/dist/utils/config.js.map +0 -1
  169. package/dist/utils/index.js +0 -10
  170. package/dist/utils/index.js.map +0 -1
  171. package/dist/utils/log.js +0 -15
  172. package/dist/utils/log.js.map +0 -1
  173. package/dist/utils/metadata.js +0 -20
  174. package/dist/utils/metadata.js.map +0 -1
  175. package/dist/utils/misc.js +0 -41
  176. package/dist/utils/misc.js.map +0 -1
  177. package/dist/utils/target.js +0 -121
  178. package/dist/utils/target.js.map +0 -1
  179. package/dist/utils/typegen.js +0 -179
  180. package/dist/utils/typegen.js.map +0 -1
  181. package/dist/utils/version.js +0 -60
  182. package/dist/utils/version.js.map +0 -1
  183. package/src/api/load-wasi-template.ts +0 -66
  184. package/src/api/wasi-worker-template.ts +0 -52
  185. package/src/utils/ci.ts +0 -111
@@ -1,179 +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["Interface"] = "interface";
12
- TypeDefKind["Fn"] = "fn";
13
- TypeDefKind["Struct"] = "struct";
14
- TypeDefKind["Impl"] = "impl";
15
- })(TypeDefKind || (TypeDefKind = {}));
16
- function prettyPrint(line, constEnum, ident) {
17
- let s = line.js_doc ?? '';
18
- switch (line.kind) {
19
- case TypeDefKind.Interface:
20
- s += `export interface ${line.name} {\n${line.def}\n}`;
21
- break;
22
- case TypeDefKind.Enum:
23
- const enumName = constEnum ? 'const enum' : 'enum';
24
- s += `export ${enumName} ${line.name} {\n${line.def}\n}`;
25
- break;
26
- case TypeDefKind.Struct:
27
- s += `export class ${line.name} {\n${line.def}\n}`;
28
- if (line.original_name && line.original_name !== line.name) {
29
- s += `\nexport type ${line.original_name} = ${line.name}`;
30
- }
31
- break;
32
- default:
33
- s += line.def;
34
- }
35
- return correctStringIdent(s, ident);
36
- }
37
- export async function processTypeDef(intermediateTypeFile, constEnum, header) {
38
- const exports = [];
39
- const defs = await readIntermediateTypeFile(intermediateTypeFile);
40
- const groupedDefs = preprocessTypeDef(defs);
41
- header = header ? header + '\n' : '';
42
- let dts = '';
43
- sortBy(Array.from(groupedDefs), ([namespace]) => namespace).forEach(([namespace, defs]) => {
44
- if (namespace === TOP_LEVEL_NAMESPACE) {
45
- for (const def of defs) {
46
- dts += prettyPrint(def, constEnum, 0) + '\n\n';
47
- switch (def.kind) {
48
- case TypeDefKind.Const:
49
- case TypeDefKind.Enum:
50
- case TypeDefKind.Fn:
51
- case TypeDefKind.Struct: {
52
- exports.push(def.name);
53
- if (def.original_name && def.original_name !== def.name) {
54
- exports.push(def.original_name);
55
- }
56
- break;
57
- }
58
- default:
59
- break;
60
- }
61
- }
62
- }
63
- else {
64
- exports.push(namespace);
65
- dts += `export namespace ${namespace} {\n`;
66
- for (const def of defs) {
67
- dts += prettyPrint(def, constEnum, 2) + '\n';
68
- }
69
- dts += '}\n\n';
70
- }
71
- });
72
- if (dts.indexOf('ExternalObject<') > -1) {
73
- header += `
74
- export class ExternalObject<T> {
75
- readonly '': {
76
- readonly '': unique symbol
77
- [K: symbol]: T
78
- }
79
- }
80
- `;
81
- }
82
- return {
83
- dts: header + dts,
84
- exports,
85
- };
86
- }
87
- async function readIntermediateTypeFile(file) {
88
- const content = await readFileAsync(file, 'utf8');
89
- const defs = content
90
- .split('\n')
91
- .filter(Boolean)
92
- .map((line) => {
93
- line = line.trim();
94
- if (!line.startsWith('{')) {
95
- // crateName:{ "def": "", ... }
96
- const start = line.indexOf(':') + 1;
97
- line = line.slice(start);
98
- }
99
- return JSON.parse(line);
100
- });
101
- // move all `struct` def to the very top
102
- // and order the rest alphabetically.
103
- return defs.sort((a, b) => {
104
- if (a.kind === TypeDefKind.Struct) {
105
- if (b.kind === TypeDefKind.Struct) {
106
- return a.name.localeCompare(b.name);
107
- }
108
- return -1;
109
- }
110
- else if (b.kind === TypeDefKind.Struct) {
111
- return 1;
112
- }
113
- else {
114
- return a.name.localeCompare(b.name);
115
- }
116
- });
117
- }
118
- function preprocessTypeDef(defs) {
119
- const namespaceGrouped = new Map();
120
- const classDefs = new Map();
121
- for (const def of defs) {
122
- const namespace = def.js_mod ?? TOP_LEVEL_NAMESPACE;
123
- if (!namespaceGrouped.has(namespace)) {
124
- namespaceGrouped.set(namespace, []);
125
- }
126
- const group = namespaceGrouped.get(namespace);
127
- if (def.kind === TypeDefKind.Struct) {
128
- group.push(def);
129
- classDefs.set(def.name, def);
130
- }
131
- else if (def.kind === TypeDefKind.Impl) {
132
- // merge `impl` into class definition
133
- const classDef = classDefs.get(def.name);
134
- if (classDef) {
135
- if (classDef.def) {
136
- classDef.def += '\n';
137
- }
138
- classDef.def += def.def;
139
- }
140
- }
141
- else {
142
- group.push(def);
143
- }
144
- }
145
- return namespaceGrouped;
146
- }
147
- export function correctStringIdent(src, ident) {
148
- let bracketDepth = 0;
149
- const result = src
150
- .split('\n')
151
- .map((line) => {
152
- line = line.trim();
153
- if (line === '') {
154
- return '';
155
- }
156
- const isInMultilineComment = line.startsWith('*');
157
- const isClosingBracket = line.endsWith('}');
158
- const isOpeningBracket = line.endsWith('{');
159
- let rightIndent = ident;
160
- if (isOpeningBracket && !isInMultilineComment) {
161
- bracketDepth += 1;
162
- rightIndent += (bracketDepth - 1) * 2;
163
- }
164
- else {
165
- if (isClosingBracket && bracketDepth > 0 && !isInMultilineComment) {
166
- bracketDepth -= 1;
167
- }
168
- rightIndent += bracketDepth * 2;
169
- }
170
- if (isInMultilineComment) {
171
- rightIndent += 1;
172
- }
173
- const s = `${' '.repeat(rightIndent)}${line}`;
174
- return s;
175
- })
176
- .join('\n');
177
- return result;
178
- }
179
- //# 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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"}
@@ -1,60 +0,0 @@
1
- export var NapiVersion;
2
- (function (NapiVersion) {
3
- NapiVersion[NapiVersion["Napi1"] = 1] = "Napi1";
4
- NapiVersion[NapiVersion["Napi2"] = 2] = "Napi2";
5
- NapiVersion[NapiVersion["Napi3"] = 3] = "Napi3";
6
- NapiVersion[NapiVersion["Napi4"] = 4] = "Napi4";
7
- NapiVersion[NapiVersion["Napi5"] = 5] = "Napi5";
8
- NapiVersion[NapiVersion["Napi6"] = 6] = "Napi6";
9
- NapiVersion[NapiVersion["Napi7"] = 7] = "Napi7";
10
- NapiVersion[NapiVersion["Napi8"] = 8] = "Napi8";
11
- })(NapiVersion || (NapiVersion = {}));
12
- /// because node support new napi version in some minor version updates, so we might meet such situation:
13
- /// `node v10.20.0` supports `napi5` and `napi6`, but `node v12.0.0` only support `napi4`,
14
- /// by which, we can not tell directly napi version supportness from node version directly.
15
- const NAPI_VERSION_MATRIX = new Map([
16
- [NapiVersion.Napi1, '8.6.0'],
17
- [NapiVersion.Napi2, '8.10.0 | 9.3.0'],
18
- [NapiVersion.Napi3, '6.14.2 | 8.11.2 | 9.11.0'],
19
- [NapiVersion.Napi4, '10.16.0 | 11.8.0'],
20
- [NapiVersion.Napi5, '10.17.0 | 12.11.0'],
21
- [NapiVersion.Napi6, '10.20.0 | 12.17.0 | 14.0.0'],
22
- [NapiVersion.Napi7, '10.23.0 | 12.19.0 | 14.12.0'],
23
- [NapiVersion.Napi8, '12.22.0 | 14.17.0 | 15.12.0'],
24
- ]);
25
- function parseNodeVersion(v) {
26
- const matches = v.match(/v?([0-9]+)\.([0-9]+)\.([0-9]+)/i);
27
- if (!matches) {
28
- throw new Error('Unknown node version number: ' + v);
29
- }
30
- const [, major, minor, patch] = matches;
31
- return {
32
- major: parseInt(major),
33
- minor: parseInt(minor),
34
- patch: parseInt(patch),
35
- };
36
- }
37
- function requiredNodeVersions(napiVersion) {
38
- const requirement = NAPI_VERSION_MATRIX.get(napiVersion);
39
- if (!requirement) {
40
- return [parseNodeVersion('10.0.0')];
41
- }
42
- return requirement.split('|').map(parseNodeVersion);
43
- }
44
- function toEngineRequirement(versions) {
45
- const requirements = [];
46
- versions.forEach((v, i) => {
47
- let req = '';
48
- if (i !== 0) {
49
- const lastVersion = versions[i - 1];
50
- req += `< ${lastVersion.major + 1}`;
51
- }
52
- req += `${i === 0 ? '' : ' || '}>= ${v.major}.${v.minor}.${v.patch}`;
53
- requirements.push(req);
54
- });
55
- return requirements.join(' ');
56
- }
57
- export function napiEngineRequirement(napiVersion) {
58
- return toEngineRequirement(requiredNodeVersions(napiVersion));
59
- }
60
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WASX;AATD,WAAY,WAAW;IACrB,+CAAS,CAAA;IACT,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;AACP,CAAC,EATW,WAAW,KAAX,WAAW,QAStB;AAED,yGAAyG;AACzG,0FAA0F;AAC1F,2FAA2F;AAC3F,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAsB;IACvD,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IAC5B,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACrC,CAAC,WAAW,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC/C,CAAC,WAAW,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACvC,CAAC,WAAW,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACxC,CAAC,WAAW,CAAC,KAAK,EAAE,4BAA4B,CAAC;IACjD,CAAC,WAAW,CAAC,KAAK,EAAE,6BAA6B,CAAC;IAClD,CAAC,WAAW,CAAC,KAAK,EAAE,6BAA6B,CAAC;CACnD,CAAC,CAAA;AAQF,SAAS,gBAAgB,CAAC,CAAS;IACjC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAE1D,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAA;KACrD;IAED,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAA;IAEvC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;QACtB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;QACtB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;KACvB,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAwB;IACpD,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAExD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;KACpC;IAED,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAuB;IAClD,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACnC,GAAG,IAAI,KAAK,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAA;SACpC;QAED,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;QACpE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAwB;IAC5D,OAAO,mBAAmB,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAA;AAC/D,CAAC"}
@@ -1,66 +0,0 @@
1
- export const createWasiBinding = (
2
- wasmFileName: string,
3
- wasiRegisterFunctions: string[],
4
- ) => `/* eslint-disable */
5
- /* prettier-ignore */
6
-
7
- /* auto-generated by NAPI-RS */
8
-
9
- import * as __nodeFsPromises from 'node:fs/promises'
10
- import * as __nodePath from 'node:path'
11
- import { WASI as __nodeWASI } from 'node:wasi'
12
- import { Worker } from 'node:worker_threads'
13
- import * as __nodeURL from 'node:url'
14
-
15
- import { instantiateNapiModule as __emnapiInstantiateNapiModule } from '@emnapi/core'
16
- import { getDefaultContext as __emnapiGetDefaultContext } from '@emnapi/runtime'
17
-
18
- const __wasi = new __nodeWASI({
19
- version: 'preview1',
20
- env: process.env,
21
- preopens: {
22
- '/': __nodePath.join(__nodeURL.fileURLToPath(import.meta.url), '..'),
23
- }
24
- })
25
-
26
- const __dirname = __nodePath.join(__nodeURL.fileURLToPath(import.meta.url), '..')
27
-
28
- const __emnapiContext = __emnapiGetDefaultContext()
29
-
30
- const __sharedMemory = new WebAssembly.Memory({
31
- initial: 1024,
32
- maximum: 10240,
33
- shared: true,
34
- })
35
-
36
- const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = await __emnapiInstantiateNapiModule(__nodeFsPromises.readFile(__nodePath.join(__dirname, '${wasmFileName}.wasm')), {
37
- context: __emnapiContext,
38
- asyncWorkPoolSize: 4,
39
- wasi: __wasi,
40
- onCreateWorker() {
41
- return new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {
42
- env: process.env,
43
- execArgv: ['--experimental-wasi-unstable-preview1'],
44
- })
45
- },
46
- overwriteImports(importObject) {
47
- importObject.env = {
48
- ...importObject.env,
49
- ...importObject.napi,
50
- ...importObject.emnapi,
51
- memory: __sharedMemory,
52
- }
53
- },
54
- beforeInit({ instance }) {
55
- __napi_rs_initialize_modules(instance)
56
- }
57
- })
58
-
59
- function __napi_rs_initialize_modules(__napiInstance) {
60
- ${wasiRegisterFunctions
61
- .map((name) => ` __napiInstance.exports['${name}']()`)
62
- .join('\n')}
63
- }
64
-
65
- const binding = __napiModule.exports
66
- `
@@ -1,52 +0,0 @@
1
- export const WASI_WORKER_TEMPLATE = `import fs from "node:fs";
2
- import { createRequire } from "node:module";
3
- import { parentPort, Worker } from "node:worker_threads";
4
-
5
- import { instantiateNapiModuleSync, MessageHandler } from "@emnapi/core";
6
- import { WASI } from "@tybys/wasm-util";
7
-
8
- const require = createRequire(import.meta.url);
9
-
10
- if (parentPort) {
11
- parentPort.on("message", (data) => {
12
- globalThis.onmessage({ data });
13
- });
14
- }
15
-
16
- Object.assign(globalThis, {
17
- self: globalThis,
18
- require,
19
- Worker,
20
- importScripts: function (f) {
21
- ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f);
22
- },
23
- postMessage: function (msg) {
24
- if (parentPort) {
25
- parentPort.postMessage(msg);
26
- }
27
- },
28
- });
29
-
30
- const handler = new MessageHandler({
31
- onLoad({ wasmModule, wasmMemory }) {
32
- const wasi = new WASI({ fs });
33
-
34
- return instantiateNapiModuleSync(wasmModule, {
35
- childThread: true,
36
- wasi,
37
- overwriteImports(importObject) {
38
- importObject.env = {
39
- ...importObject.env,
40
- ...importObject.napi,
41
- ...importObject.emnapi,
42
- memory: wasmMemory
43
- };
44
- },
45
- });
46
- },
47
- });
48
-
49
- globalThis.onmessage = function (e) {
50
- handler.handle(e);
51
- };
52
- `
package/src/utils/ci.ts DELETED
@@ -1,111 +0,0 @@
1
- import { TargetTriple } from './target.js'
2
-
3
- export const CIConfig: Partial<
4
- Record<
5
- TargetTriple,
6
- {
7
- host: string
8
- build_image?: string
9
- build_setup?: string[]
10
- test?: boolean
11
- test_image?: string
12
- test_setup?: string[]
13
- yarn_cpu?: string
14
- yarn_libc?: string
15
- }
16
- >
17
- > = {
18
- 'x86_64-apple-darwin': {
19
- host: 'macos-latest',
20
- },
21
- 'x86_64-pc-windows-msvc': {
22
- host: 'windows-latest',
23
- },
24
- 'i686-pc-windows-msvc': {
25
- host: 'windows-latest',
26
- test: false,
27
- },
28
- 'x86_64-unknown-linux-gnu': {
29
- host: 'ubuntu-latest',
30
- build_image: 'ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian',
31
- },
32
- 'x86_64-unknown-linux-musl': {
33
- host: 'ubuntu-latest',
34
- build_image: 'ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine',
35
- test_image: 'node:${{ matrix.node }}-alpine',
36
- yarn_libc: 'musl',
37
- },
38
- 'aarch64-apple-darwin': {
39
- host: 'macos-latest',
40
- build_setup: [
41
- 'sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*',
42
- 'export CC=$(xcrun -f clang)',
43
- 'export CXX=$(xcrun -f clang++)',
44
- 'export SDK_ROOT=$(xcrun --sdk macosx --show-sdk-path)',
45
- 'export CFLAGS="-isysroot $SDK_ROOT -isystem $SDK_ROOT"',
46
- ],
47
- test: false,
48
- },
49
- 'aarch64-unknown-linux-gnu': {
50
- host: 'ubuntu-latest',
51
- build_image: 'ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64',
52
- build_setup: [
53
- 'sudo apt-get update',
54
- 'sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu -y',
55
- 'export CARGO_BUILD_TARGET=x86_64-unknown-linux-gnu',
56
- ],
57
- test_image: 'ghcr.io/napi-rs/napi-rs/nodejs:aarch64-${{ matrix.node }}',
58
- yarn_cpu: 'arm64',
59
- },
60
- 'aarch64-unknown-linux-musl': {
61
- host: 'ubuntu-latest',
62
- build_image: 'ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine',
63
- build_setup: ['rustup target add aarch64-unknown-linux-musl'],
64
- test_image: 'multiarch/alpine:aarch64-latest-stable',
65
- test_setup: ['apk add nodejs npm yarn'],
66
- yarn_cpu: 'arm64',
67
- yarn_libc: 'musl',
68
- },
69
- 'aarch64-pc-windows-msvc': {
70
- host: 'windows-latest',
71
- test: false,
72
- },
73
- 'armv7-unknown-linux-gnueabihf': {
74
- host: 'ubuntu-latest',
75
- build_setup: [
76
- 'sudo apt-get update',
77
- 'sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y',
78
- ],
79
- yarn_cpu: 'arm',
80
- test_image: 'ghcr.io/napi-rs/napi-rs/nodejs:armhf-${{ matrix.node }}',
81
- },
82
- 'aarch64-linux-android': {
83
- host: 'ubuntu-latest',
84
- build_setup: [
85
- 'export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"',
86
- 'export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"',
87
- 'export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++"',
88
- 'export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"',
89
- ],
90
- test: false,
91
- },
92
- 'armv7-linux-androideabi': {
93
- host: 'ubuntu-latest',
94
- build_setup: [
95
- 'export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"',
96
- 'export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"',
97
- 'export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++"',
98
- 'export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"',
99
- ],
100
- test: false,
101
- },
102
- 'riscv64gc-unknown-linux-gnu': {
103
- host: 'ubuntu-latest',
104
- build_setup: [
105
- 'sudo apt-get update',
106
- 'sudo apt-get install g++-riscv64-linux-gnu gcc-riscv64-linux-gnu -y',
107
- ],
108
- // No official nodejs docker image for riscv64
109
- test: false,
110
- },
111
- }