@cocos/ccbuild 1.1.14 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/CHANGELOG.md +153 -165
  2. package/lib/src/index.d.ts +4 -0
  3. package/lib/src/index.d.ts.map +1 -0
  4. package/lib/src/index.js +59 -0
  5. package/lib/src/index.js.map +1 -0
  6. package/{lib/build-engine → modules/build-engine/lib}/engine-js/index.d.ts +2 -3
  7. package/modules/build-engine/lib/engine-js/index.d.ts.map +1 -0
  8. package/modules/build-engine/lib/engine-js/index.js +398 -0
  9. package/modules/build-engine/lib/engine-js/index.js.map +1 -0
  10. package/modules/build-engine/lib/engine-js/rollup-plugins/external-wasm-loader.d.ts +53 -0
  11. package/modules/build-engine/lib/engine-js/rollup-plugins/external-wasm-loader.d.ts.map +1 -0
  12. package/modules/build-engine/lib/engine-js/rollup-plugins/external-wasm-loader.js +202 -0
  13. package/modules/build-engine/lib/engine-js/rollup-plugins/external-wasm-loader.js.map +1 -0
  14. package/modules/build-engine/lib/engine-js/rollup-plugins/remove-deprecated-features.d.ts +3 -0
  15. package/modules/build-engine/lib/engine-js/rollup-plugins/remove-deprecated-features.d.ts.map +1 -0
  16. package/modules/build-engine/lib/engine-js/rollup-plugins/remove-deprecated-features.js +42 -0
  17. package/modules/build-engine/lib/engine-js/rollup-plugins/remove-deprecated-features.js.map +1 -0
  18. package/modules/build-engine/lib/engine-js/rollup-plugins/ts-paths.d.ts +7 -0
  19. package/modules/build-engine/lib/engine-js/rollup-plugins/ts-paths.d.ts.map +1 -0
  20. package/modules/build-engine/lib/engine-js/rollup-plugins/ts-paths.js +51 -0
  21. package/modules/build-engine/lib/engine-js/rollup-plugins/ts-paths.js.map +1 -0
  22. package/modules/build-engine/lib/engine-ts/engine-builder.d.ts +57 -0
  23. package/modules/build-engine/lib/engine-ts/engine-builder.d.ts.map +1 -0
  24. package/modules/build-engine/lib/engine-ts/engine-builder.js +650 -0
  25. package/modules/build-engine/lib/engine-ts/engine-builder.js.map +1 -0
  26. package/modules/build-engine/lib/engine-ts/field-decorator-helper.d.ts +11 -0
  27. package/modules/build-engine/lib/engine-ts/field-decorator-helper.d.ts.map +1 -0
  28. package/modules/build-engine/lib/engine-ts/field-decorator-helper.js +65 -0
  29. package/modules/build-engine/lib/engine-ts/field-decorator-helper.js.map +1 -0
  30. package/{lib/build-engine → modules/build-engine/lib}/engine-ts/index.d.ts +2 -3
  31. package/modules/build-engine/lib/engine-ts/index.d.ts.map +1 -0
  32. package/modules/build-engine/lib/engine-ts/index.js +59 -0
  33. package/modules/build-engine/lib/engine-ts/index.js.map +1 -0
  34. package/{lib/build-engine → modules/build-engine/lib}/engine-ts/plugins/external-wasm-loader.d.ts +7 -7
  35. package/modules/build-engine/lib/engine-ts/plugins/external-wasm-loader.d.ts.map +1 -0
  36. package/modules/build-engine/lib/engine-ts/plugins/external-wasm-loader.js +74 -0
  37. package/modules/build-engine/lib/engine-ts/plugins/external-wasm-loader.js.map +1 -0
  38. package/modules/build-engine/lib/engine-ts/plugins/interface.d.ts +20 -0
  39. package/modules/build-engine/lib/engine-ts/plugins/interface.d.ts.map +1 -0
  40. package/modules/build-engine/lib/engine-ts/plugins/interface.js +5 -0
  41. package/modules/build-engine/lib/engine-ts/plugins/interface.js.map +1 -0
  42. package/modules/build-engine/lib/index.d.ts +145 -0
  43. package/modules/build-engine/lib/index.d.ts.map +1 -0
  44. package/modules/build-engine/lib/index.js +180 -0
  45. package/modules/build-engine/lib/index.js.map +1 -0
  46. package/modules/bundler/lib/index.d.ts +2 -0
  47. package/modules/bundler/lib/index.d.ts.map +1 -0
  48. package/modules/bundler/lib/index.js +39 -0
  49. package/{lib → modules/bundler/lib}/index.js.map +1 -1
  50. package/modules/bundler/lib/rollup/index.d.ts +3 -0
  51. package/modules/bundler/lib/rollup/index.d.ts.map +1 -0
  52. package/modules/bundler/lib/rollup/index.js +41 -0
  53. package/modules/bundler/lib/rollup/index.js.map +1 -0
  54. package/modules/bundler/lib/rollup/plugins.d.ts +8 -0
  55. package/modules/bundler/lib/rollup/plugins.d.ts.map +1 -0
  56. package/modules/bundler/lib/rollup/plugins.js +56 -0
  57. package/modules/bundler/lib/rollup/plugins.js.map +1 -0
  58. package/modules/modularize/lib/cli.d.ts +1 -0
  59. package/modules/modularize/lib/cli.d.ts.map +1 -0
  60. package/modules/modularize/lib/cli.js +47 -0
  61. package/modules/modularize/lib/cli.js.map +1 -0
  62. package/modules/modularize/lib/deploy.d.ts +1 -0
  63. package/modules/modularize/lib/deploy.d.ts.map +1 -0
  64. package/modules/modularize/lib/deploy.js +92 -0
  65. package/modules/modularize/lib/deploy.js.map +1 -0
  66. package/modules/modularize/lib/index.d.ts +20 -0
  67. package/modules/modularize/lib/index.d.ts.map +1 -0
  68. package/modules/modularize/lib/index.js +82 -0
  69. package/modules/modularize/lib/index.js.map +1 -0
  70. package/modules/stats-query/lib/config-interface.d.ts +129 -0
  71. package/modules/stats-query/lib/config-interface.d.ts.map +1 -0
  72. package/modules/stats-query/lib/config-interface.js +6 -0
  73. package/modules/stats-query/lib/config-interface.js.map +1 -0
  74. package/modules/stats-query/lib/index.d.ts +183 -0
  75. package/modules/stats-query/lib/index.d.ts.map +1 -0
  76. package/modules/stats-query/lib/index.js +579 -0
  77. package/modules/stats-query/lib/index.js.map +1 -0
  78. package/modules/transformer/lib/babel/index.d.ts +6 -0
  79. package/modules/transformer/lib/babel/index.d.ts.map +1 -0
  80. package/modules/transformer/lib/babel/index.js +47 -0
  81. package/modules/transformer/lib/babel/index.js.map +1 -0
  82. package/modules/transformer/lib/babel/plugins.d.ts +5 -0
  83. package/modules/transformer/lib/babel/plugins.d.ts.map +1 -0
  84. package/modules/transformer/lib/babel/plugins.js +22 -0
  85. package/modules/transformer/lib/babel/plugins.js.map +1 -0
  86. package/modules/transformer/lib/babel/presets.d.ts +3 -0
  87. package/modules/transformer/lib/babel/presets.d.ts.map +1 -0
  88. package/modules/transformer/lib/babel/presets.js +41 -0
  89. package/modules/transformer/lib/babel/presets.js.map +1 -0
  90. package/modules/transformer/lib/index.d.ts +2 -0
  91. package/modules/transformer/lib/index.d.ts.map +1 -0
  92. package/modules/transformer/lib/index.js +39 -0
  93. package/modules/transformer/lib/index.js.map +1 -0
  94. package/modules/utils/lib/index.d.ts +3 -0
  95. package/modules/utils/lib/index.d.ts.map +1 -0
  96. package/modules/utils/lib/index.js +38 -0
  97. package/modules/utils/lib/index.js.map +1 -0
  98. package/modules/utils/lib/path.d.ts +7 -0
  99. package/modules/utils/lib/path.d.ts.map +1 -0
  100. package/modules/utils/lib/path.js +105 -0
  101. package/modules/utils/lib/path.js.map +1 -0
  102. package/package.json +65 -75
  103. package/static/lib.dom.d.ts +953 -18846
  104. package/lib/api-builder.d.ts +0 -1
  105. package/lib/api-builder.d.ts.map +0 -1
  106. package/lib/api-builder.js +0 -2
  107. package/lib/api-builder.js.map +0 -1
  108. package/lib/build-engine/engine-js/index.d.ts.map +0 -1
  109. package/lib/build-engine/engine-js/index.js +0 -404
  110. package/lib/build-engine/engine-js/index.js.map +0 -1
  111. package/lib/build-engine/engine-js/rollup-plugins/external-wasm-loader.d.ts +0 -58
  112. package/lib/build-engine/engine-js/rollup-plugins/external-wasm-loader.d.ts.map +0 -1
  113. package/lib/build-engine/engine-js/rollup-plugins/external-wasm-loader.js +0 -299
  114. package/lib/build-engine/engine-js/rollup-plugins/external-wasm-loader.js.map +0 -1
  115. package/lib/build-engine/engine-js/rollup-plugins/remove-deprecated-features.d.ts +0 -3
  116. package/lib/build-engine/engine-js/rollup-plugins/remove-deprecated-features.d.ts.map +0 -1
  117. package/lib/build-engine/engine-js/rollup-plugins/remove-deprecated-features.js +0 -38
  118. package/lib/build-engine/engine-js/rollup-plugins/remove-deprecated-features.js.map +0 -1
  119. package/lib/build-engine/engine-js/rollup-plugins/ts-paths.d.ts +0 -5
  120. package/lib/build-engine/engine-js/rollup-plugins/ts-paths.d.ts.map +0 -1
  121. package/lib/build-engine/engine-js/rollup-plugins/ts-paths.js +0 -43
  122. package/lib/build-engine/engine-js/rollup-plugins/ts-paths.js.map +0 -1
  123. package/lib/build-engine/engine-ts/engine-builder.d.ts +0 -58
  124. package/lib/build-engine/engine-ts/engine-builder.d.ts.map +0 -1
  125. package/lib/build-engine/engine-ts/engine-builder.js +0 -632
  126. package/lib/build-engine/engine-ts/engine-builder.js.map +0 -1
  127. package/lib/build-engine/engine-ts/field-decorator-helper.d.ts +0 -10
  128. package/lib/build-engine/engine-ts/field-decorator-helper.d.ts.map +0 -1
  129. package/lib/build-engine/engine-ts/field-decorator-helper.js +0 -55
  130. package/lib/build-engine/engine-ts/field-decorator-helper.js.map +0 -1
  131. package/lib/build-engine/engine-ts/index.d.ts.map +0 -1
  132. package/lib/build-engine/engine-ts/index.js +0 -37
  133. package/lib/build-engine/engine-ts/index.js.map +0 -1
  134. package/lib/build-engine/engine-ts/plugins/external-wasm-loader.d.ts.map +0 -1
  135. package/lib/build-engine/engine-ts/plugins/external-wasm-loader.js +0 -66
  136. package/lib/build-engine/engine-ts/plugins/external-wasm-loader.js.map +0 -1
  137. package/lib/build-engine/engine-ts/plugins/interface.d.ts +0 -21
  138. package/lib/build-engine/engine-ts/plugins/interface.d.ts.map +0 -1
  139. package/lib/build-engine/engine-ts/plugins/interface.js +0 -2
  140. package/lib/build-engine/engine-ts/plugins/interface.js.map +0 -1
  141. package/lib/build-engine/index.d.ts +0 -146
  142. package/lib/build-engine/index.d.ts.map +0 -1
  143. package/lib/build-engine/index.js +0 -155
  144. package/lib/build-engine/index.js.map +0 -1
  145. package/lib/index.d.ts +0 -5
  146. package/lib/index.d.ts.map +0 -1
  147. package/lib/index.js +0 -34
  148. package/lib/module-resolver.d.ts +0 -8
  149. package/lib/module-resolver.d.ts.map +0 -1
  150. package/lib/module-resolver.js +0 -29
  151. package/lib/module-resolver.js.map +0 -1
  152. package/lib/stats-query/config-interface.d.ts +0 -130
  153. package/lib/stats-query/config-interface.d.ts.map +0 -1
  154. package/lib/stats-query/config-interface.js +0 -4
  155. package/lib/stats-query/config-interface.js.map +0 -1
  156. package/lib/stats-query/index.d.ts +0 -184
  157. package/lib/stats-query/index.d.ts.map +0 -1
  158. package/lib/stats-query/index.js +0 -532
  159. package/lib/stats-query/index.js.map +0 -1
  160. package/lib/stats-query/path-utils.d.ts +0 -3
  161. package/lib/stats-query/path-utils.d.ts.map +0 -1
  162. package/lib/stats-query/path-utils.js +0 -36
  163. package/lib/stats-query/path-utils.js.map +0 -1
  164. package/lib/transformer/babel.d.ts +0 -6
  165. package/lib/transformer/babel.d.ts.map +0 -1
  166. package/lib/transformer/babel.js +0 -35
  167. package/lib/transformer/babel.js.map +0 -1
  168. package/lib/transformer/index.d.ts +0 -3
  169. package/lib/transformer/index.d.ts.map +0 -1
  170. package/lib/transformer/index.js +0 -29
  171. package/lib/transformer/index.js.map +0 -1
  172. package/lib/utils.d.ts +0 -5
  173. package/lib/utils.d.ts.map +0 -1
  174. package/lib/utils.js +0 -24
  175. package/lib/utils.js.map +0 -1
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+
3
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P ? value : new P(function (resolve) {
6
+ resolve(value);
7
+ });
8
+ }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) {
11
+ try {
12
+ step(generator.next(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function rejected(value) {
18
+ try {
19
+ step(generator["throw"](value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ }
24
+ function step(result) {
25
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
26
+ }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __importDefault = this && this.__importDefault || function (mod) {
31
+ return mod && mod.__esModule ? mod : {
32
+ "default": mod
33
+ };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", {
36
+ value: true
37
+ });
38
+ exports.buildJsEngine = void 0;
39
+ const fs_extra_1 = __importDefault(require("fs-extra"));
40
+ const path_1 = __importDefault(require("path"));
41
+ const transformer_1 = require("../../../transformer/lib/index.js");
42
+ const bundler_1 = require("../../../bundler/lib/index.js");
43
+ const fs_1 = __importDefault(require("fs"));
44
+ const ts_paths_1 = __importDefault(require("./rollup-plugins/ts-paths"));
45
+ const remove_deprecated_features_1 = __importDefault(require("./rollup-plugins/remove-deprecated-features"));
46
+ const external_wasm_loader_1 = require("./rollup-plugins/external-wasm-loader");
47
+ const stats_query_1 = require("../../../stats-query/lib/index.js");
48
+ const utils_1 = require("../../../utils/lib/index.js");
49
+ var babelPluginTransformForOf = transformer_1.babel.plugins.transformForOf;
50
+ var babelPresetEnv = transformer_1.babel.presets.presetEnv;
51
+ var babelPluginDynamicImportVars = transformer_1.babel.plugins.cocosDynamicImportVars;
52
+ var babelPresetCC = transformer_1.babel.presets.presetCC.babelPresetCC;
53
+ var helpers = transformer_1.babel.presets.presetCC.helpers;
54
+ // import rollup
55
+ var rollup = bundler_1.rollup.core;
56
+ var rpBabel = bundler_1.rollup.plugins.babel.babel;
57
+ var json = bundler_1.rollup.plugins.json;
58
+ var resolve = bundler_1.rollup.plugins.nodeResolve;
59
+ var commonjs = bundler_1.rollup.plugins.commonjs;
60
+ var rpTerser = bundler_1.rollup.plugins.terser.terser;
61
+ var rpVirtual = bundler_1.rollup.plugins.virtual;
62
+ // import rpProgress = Bundler.plugins.progress;
63
+ // import * as decoratorRecorder from './babel-plugins/decorator-parser';
64
+ const realPath = function () {
65
+ const realpath = typeof fs_1.default.realpath.native === 'function' ? fs_1.default.realpath.native : fs_1.default.realpath;
66
+ return file => new Promise((resolve, reject) => {
67
+ realpath(file, (err, path) => {
68
+ if (err && err.code !== 'ENOENT') {
69
+ reject(err);
70
+ } else {
71
+ resolve(err ? file : path);
72
+ }
73
+ });
74
+ });
75
+ }();
76
+ function makePathEqualityKey(path) {
77
+ return process.platform === 'win32' ? path.toLocaleLowerCase() : path;
78
+ }
79
+ function buildJsEngine(options) {
80
+ var _a, _b, _c, _d, _e;
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ const doUglify = !!options.compress;
83
+ const engineRoot = path_1.default.resolve(options.engine);
84
+ const rollupFormat = (_a = options.moduleFormat) !== null && _a !== void 0 ? _a : 'iife';
85
+ const statsQuery = yield stats_query_1.StatsQuery.create(engineRoot);
86
+ if (options.features) {
87
+ for (const feature of options.features) {
88
+ if (!statsQuery.hasFeature(feature)) {
89
+ console.warn(`'${feature}' is not a valid feature.`);
90
+ }
91
+ }
92
+ }
93
+ let features;
94
+ let split = (_b = options.split) !== null && _b !== void 0 ? _b : false;
95
+ if (options.features && options.features.length !== 0) {
96
+ features = options.features;
97
+ } else {
98
+ features = statsQuery.getFeatures();
99
+ if (split !== true) {
100
+ split = true;
101
+ console.warn(`You did not specify features which implies 'split: true'. ` + `Explicitly set 'split: true' to suppress this warning.`);
102
+ }
103
+ }
104
+ let {
105
+ ammoJsWasm
106
+ } = options;
107
+ ammoJsWasm !== null && ammoJsWasm !== void 0 ? ammoJsWasm : ammoJsWasm = true; // default is true
108
+ const forceBanningBulletWasm = !ammoJsWasm;
109
+ const flags = (_c = options.flags) !== null && _c !== void 0 ? _c : {};
110
+ flags.FORCE_BANNING_BULLET_WASM = forceBanningBulletWasm;
111
+ const intrinsicFlags = statsQuery.getIntrinsicFlagsOfFeatures(features);
112
+ let buildTimeConstants = statsQuery.constantManager.genBuildTimeConstants({
113
+ mode: options.mode,
114
+ platform: options.platform,
115
+ flags
116
+ });
117
+ buildTimeConstants = Object.assign(Object.assign({}, intrinsicFlags), buildTimeConstants);
118
+ // if (typeof options.forceJitValue !== undefined) {
119
+ // buildTimeConstants['SUPPORT_JIT'] = options.forceJitValue as boolean;
120
+ // }
121
+ const moduleOverrides = Object.entries(statsQuery.evaluateModuleOverrides({
122
+ mode: options.mode,
123
+ platform: options.platform,
124
+ buildTimeConstants
125
+ })).reduce((result, [k, v]) => {
126
+ result[makePathEqualityKey(k)] = v;
127
+ return result;
128
+ }, {});
129
+ const featureUnits = statsQuery.getUnitsOfFeatures(features);
130
+ const rpVirtualOptions = {};
131
+ const vmInternalConstants = statsQuery.constantManager.exportStaticConstants({
132
+ platform: options.platform,
133
+ mode: options.mode,
134
+ flags
135
+ });
136
+ console.debug(`Module source "internal-constants":\n${vmInternalConstants}`);
137
+ rpVirtualOptions['internal:constants'] = vmInternalConstants;
138
+ rpVirtualOptions[helpers.CC_HELPER_MODULE] = helpers.generateHelperModuleSource();
139
+ // for some modules that we need to instantiate before cc module
140
+ // const forceStandaloneModules = ['wait-for-ammo-instantiation'];
141
+ const forceStandaloneModules = [];
142
+ let rollupEntries;
143
+ if (split) {
144
+ rollupEntries = featureUnits.reduce((result, featureUnit) => {
145
+ result[featureUnit] = statsQuery.getFeatureUnitFile(featureUnit);
146
+ return result;
147
+ }, {});
148
+ } else {
149
+ rollupEntries = {
150
+ cc: 'cc'
151
+ };
152
+ const selectedFeatureUnits = [];
153
+ for (const featureUnit of featureUnits) {
154
+ if (forceStandaloneModules.includes(featureUnit)) {
155
+ rollupEntries[featureUnit] = statsQuery.getFeatureUnitFile(featureUnit);
156
+ } else {
157
+ selectedFeatureUnits.push(featureUnit);
158
+ }
159
+ }
160
+ rpVirtualOptions.cc = statsQuery.evaluateIndexModuleSource(selectedFeatureUnits, featureUnit => (0, utils_1.filePathToModuleRequest)(statsQuery.getFeatureUnitFile(featureUnit)));
161
+ rollupEntries.cc = 'cc';
162
+ console.debug(`Module source "cc":\n${rpVirtualOptions.cc}`);
163
+ }
164
+ const presetEnvOptions = {
165
+ loose: (_d = options.loose) !== null && _d !== void 0 ? _d : true,
166
+ // We need explicitly specified targets.
167
+ // Ignore it to avoid the engine's parent dirs contain unexpected config.
168
+ ignoreBrowserslistConfig: true
169
+ };
170
+ if (options.targets !== undefined) {
171
+ presetEnvOptions.targets = options.targets;
172
+ }
173
+ const babelPlugins = [];
174
+ if (options.targets === undefined) {
175
+ babelPlugins.push([babelPluginTransformForOf, {
176
+ loose: true
177
+ }]);
178
+ }
179
+ babelPlugins.push([babelPluginDynamicImportVars, {
180
+ resolve: {
181
+ forwardExt: 'resolved'
182
+ }
183
+ }]);
184
+ const {
185
+ fieldDecorators,
186
+ editorDecorators
187
+ } = statsQuery.getOptimizeDecorators();
188
+ const babelOptions = {
189
+ babelHelpers: 'bundled',
190
+ extensions: ['.js', '.ts'],
191
+ exclude: [/node_modules[/\\]@cocos[/\\]ammo/, /node_modules[/\\]@cocos[/\\]cannon/, /node_modules[/\\]@cocos[/\\]physx/, /\.asm\.js/],
192
+ comments: false,
193
+ overrides: [{
194
+ // Eliminates the babel compact warning:
195
+ // 'The code generator has deoptimised the styling of ...'
196
+ // that came from node_modules/@cocos
197
+ test: /node_modules[/\\]@cocos[/\\]/,
198
+ compact: true
199
+ }],
200
+ plugins: babelPlugins,
201
+ presets: [[babelPresetEnv, presetEnvOptions], [babelPresetCC, {
202
+ allowDeclareFields: true,
203
+ ccDecoratorHelpers: 'external',
204
+ fieldDecorators,
205
+ editorDecorators
206
+ }]]
207
+ };
208
+ // if (options.generateDecoratorsForJSB) {
209
+ // if (!process.env.ENGINE_PATH) {
210
+ // throw new Error('ENGINE_PATH environment variable not set');
211
+ // }
212
+ // babelOptions.presets?.push([() => ({ plugins: [[decoratorRecorder]] })]);
213
+ // }
214
+ const rollupPlugins = [];
215
+ if (options.noDeprecatedFeatures) {
216
+ rollupPlugins.push((0, remove_deprecated_features_1.default)(typeof options.noDeprecatedFeatures === 'string' ? options.noDeprecatedFeatures : undefined));
217
+ }
218
+ rollupPlugins.push((0, external_wasm_loader_1.externalWasmLoader)({
219
+ externalRoot: path_1.default.join(engineRoot, 'native/external'),
220
+ wasmSupportMode: buildTimeConstants.WASM_SUPPORT_MODE,
221
+ forceBanningBulletWasm,
222
+ cullAsmJsModule: buildTimeConstants.CULL_ASM_JS_MODULE,
223
+ format: 'relative-from-chunk',
224
+ wasmFallback: buildTimeConstants.WASM_FALLBACK
225
+ }), {
226
+ name: '@cocos/ccbuild|module-overrides',
227
+ resolveId(source, importer) {
228
+ if (moduleOverrides[source]) {
229
+ return source;
230
+ } else {
231
+ return null;
232
+ }
233
+ },
234
+ load(id) {
235
+ const key = makePathEqualityKey(id);
236
+ if (!(key in moduleOverrides)) {
237
+ return null;
238
+ }
239
+ const replacement = moduleOverrides[key];
240
+ console.debug(`Redirect module ${id} to ${replacement}`);
241
+ return `export * from '${(0, utils_1.filePathToModuleRequest)(replacement)}';`;
242
+ }
243
+ }, rpVirtual(rpVirtualOptions), (0, ts_paths_1.default)({
244
+ configFileName: path_1.default.resolve(options.engine, 'tsconfig.json')
245
+ }), resolve({
246
+ extensions: ['.js', '.ts', '.json'],
247
+ jail: yield realPath(engineRoot),
248
+ rootDir: engineRoot
249
+ }), json({
250
+ preferConst: true
251
+ }), commonjs({
252
+ include: [/node_modules[/\\]/, /asm\.js/],
253
+ sourceMap: false
254
+ }), rpBabel(Object.assign({
255
+ skipPreflightCheck: true
256
+ }, babelOptions)));
257
+ // if (options.progress) {
258
+ // rollupPlugins.unshift(rpProgress());
259
+ // }
260
+ if (doUglify) {
261
+ // TODO: tree-shaking not clear!
262
+ rollupPlugins.push(rpTerser({
263
+ // see https://github.com/terser/terser#compress-options
264
+ compress: {
265
+ reduce_funcs: false,
266
+ keep_fargs: false,
267
+ unsafe_Function: true,
268
+ unsafe_math: true,
269
+ unsafe_methods: true,
270
+ passes: 2 // first: remove deadcodes and const objects, second: drop variables
271
+ },
272
+
273
+ mangle: doUglify,
274
+ keep_fnames: !doUglify,
275
+ output: {
276
+ beautify: !doUglify
277
+ },
278
+ // https://github.com/rollup/rollup/issues/3315
279
+ // We only do this for CommonJS.
280
+ // Especially, we cannot do this for IIFE.
281
+ toplevel: rollupFormat === 'cjs'
282
+ }));
283
+ }
284
+ // const visualizeOptions = typeof options.visualize === 'object'
285
+ // ? options.visualize
286
+ // : (options.visualize ? {} : undefined);
287
+ // if (visualizeOptions) {
288
+ // let rpVisualizer;
289
+ // try {
290
+ // // @ts-expect-error: No typing
291
+ // rpVisualizer = await import('rollup-plugin-visualizer');
292
+ // } catch {
293
+ // console.warn('Visualizing needs \'rollup-plugin-visualizer\' to be installed. It\'s installed as dev-dependency.');
294
+ // }
295
+ // if (rpVisualizer) {
296
+ // const visualizeFile = visualizeOptions.file ?? ps.join(options.out, 'visualize.html');
297
+ // rollupPlugins.push(rpVisualizer({
298
+ // filename: visualizeFile,
299
+ // title: 'Cocos Creator build visualizer',
300
+ // template: 'treemap',
301
+ // }));
302
+ // }
303
+ // }
304
+ let hasCriticalWarns = false;
305
+ const rollupWarningHandler = (warning, defaultHandler) => {
306
+ var _a;
307
+ if (typeof warning !== 'string') {
308
+ if (warning.code === 'CIRCULAR_DEPENDENCY') {
309
+ hasCriticalWarns = true;
310
+ } else if (warning.code === 'THIS_IS_UNDEFINED') {
311
+ // TODO: It's really inappropriate to do this...
312
+ // Let's fix these files instead of suppressing rollup.
313
+ if ((_a = warning.id) === null || _a === void 0 ? void 0 : _a.match(/(?:spine-core\.js$)|(?:dragonBones\.js$)/)) {
314
+ console.debug(`Rollup warning 'THIS_IS_UNDEFINED' is omitted for ${warning.id}`);
315
+ return;
316
+ }
317
+ }
318
+ }
319
+ defaultHandler(warning);
320
+ };
321
+ const rollupOptions = {
322
+ input: rollupEntries,
323
+ plugins: rollupPlugins,
324
+ cache: false,
325
+ onwarn: rollupWarningHandler
326
+ };
327
+ const perf = true;
328
+ if (perf) {
329
+ rollupOptions.perf = true;
330
+ }
331
+ const rollupBuild = yield rollup.rollup(rollupOptions);
332
+ const timing = (_e = rollupBuild.getTimings) === null || _e === void 0 ? void 0 : _e.call(rollupBuild);
333
+ if (timing) {
334
+ console.debug(`==== Performance ====`);
335
+ console.debug(JSON.stringify(timing));
336
+ console.debug(`==== ====`);
337
+ }
338
+ const {
339
+ incremental: incrementalFile
340
+ } = options;
341
+ if (incrementalFile) {
342
+ const watchFiles = {};
343
+ const files = rollupBuild.watchFiles;
344
+ yield Promise.all(files.map(watchFile => __awaiter(this, void 0, void 0, function* () {
345
+ try {
346
+ const stat = yield fs_extra_1.default.stat(watchFile);
347
+ watchFiles[watchFile] = stat.mtimeMs;
348
+ } catch (_f) {
349
+ // the `watchFiles` may contain non-fs modules.
350
+ }
351
+ })));
352
+ yield fs_extra_1.default.ensureDir(path_1.default.dirname(incrementalFile));
353
+ yield fs_extra_1.default.writeFile(incrementalFile, JSON.stringify(watchFiles, undefined, 2));
354
+ }
355
+ const result = {
356
+ chunkAliases: {},
357
+ exports: {},
358
+ chunkDepGraph: {},
359
+ assetDepGraph: {},
360
+ hasCriticalWarns: false
361
+ };
362
+ const rollupOutputOptions = {
363
+ format: rollupFormat,
364
+ sourcemap: options.sourceMap,
365
+ sourcemapFile: options.sourceMapFile,
366
+ name: rollupFormat === 'iife' ? 'ccm' : undefined,
367
+ dir: options.out
368
+ // minifyInternalExports: false,
369
+ // preserveEntrySignatures: "allow-extension",
370
+ };
371
+
372
+ const rollupOutput = yield rollupBuild.write(rollupOutputOptions);
373
+ const validEntryChunks = {};
374
+ for (const output of rollupOutput.output) {
375
+ if (output.type === 'chunk') {
376
+ if (output.isEntry) {
377
+ const chunkName = output.name;
378
+ if (chunkName in rollupEntries || chunkName === 'cc') {
379
+ validEntryChunks[chunkName] = output.fileName;
380
+ }
381
+ }
382
+ }
383
+ }
384
+ Object.assign(result.exports, validEntryChunks);
385
+ result.dependencyGraph = {};
386
+ for (const output of rollupOutput.output) {
387
+ if (output.type === 'chunk') {
388
+ const depList = output.imports.concat(output.dynamicImports);
389
+ result.dependencyGraph[output.fileName] = depList;
390
+ result.chunkDepGraph[output.fileName] = depList;
391
+ result.assetDepGraph[output.fileName] = output.referencedFiles.slice();
392
+ }
393
+ }
394
+ result.hasCriticalWarns = hasCriticalWarns;
395
+ return result;
396
+ });
397
+ }
398
+ exports.buildJsEngine = buildJsEngine;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine-js/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { rollup as Bundler } from "../../../../bundler/lib/index.d.ts";
2
+ import rollup = Bundler.core;
3
+ /**
4
+ * This plugin enable to load script or wasm with url based on 'external://' origin.
5
+ */
6
+ export declare function externalWasmLoader(options: externalWasmLoader.Options): rollup.Plugin;
7
+ export declare namespace externalWasmLoader {
8
+ interface Options {
9
+ /**
10
+ * The root path of external repository
11
+ */
12
+ externalRoot: string;
13
+ /**
14
+ * The wasm support mode:
15
+ * 0. not support
16
+ * 1. support
17
+ * 2. maybe support
18
+ */
19
+ wasmSupportMode: number;
20
+ /**
21
+ * Whether need a fallback of wasm.
22
+ * If true, we need to build a wasm fallback module for the compatibility of wasm files compiled by different version of emscripten.
23
+ */
24
+ wasmFallback: boolean;
25
+ /**
26
+ * Whether force banning to emit bullet wasm.
27
+ */
28
+ forceBanningBulletWasm: boolean;
29
+ /**
30
+ * Whether cull asm js module.
31
+ */
32
+ cullAsmJsModule: boolean;
33
+ format?: Format;
34
+ }
35
+ /**
36
+ * How to generate the reference to external assets:
37
+ * - `'relative-from-out'`
38
+ * Generate the path relative from `out` directory, does not contain the leading './'.
39
+ *
40
+ * - `'relative-from-chunk'`
41
+ * Generate the path relative from the referencing output chunk.
42
+ *
43
+ * - `'dynamic'`(default)
44
+ * Use runtime `URL` API to resolve the absolute URL.
45
+ * This requires `URL` and `import.meta.url` to be valid.
46
+ */
47
+ type Format = 'relative-from-out' | 'relative-from-chunk' | 'runtime-resolved';
48
+ }
49
+ /**
50
+ * Convert the file path to asset ref URL.
51
+ * @param file File path in absolute.
52
+ */
53
+ export declare function pathToAssetRefURL(file: string): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-wasm-loader.d.ts","sourceRoot":"","sources":["../../../src/engine-js/rollup-plugins/external-wasm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAKrD,OAAO,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;AA2H7B;;GAEG;AACH,wBAAgB,kBAAkB,CAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAmDtF;AAED,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC;IACxC,UAAiB,OAAO;QACpB;;WAEG;QACH,YAAY,EAAE,MAAM,CAAC;QACrB;;;;;WAKG;QACH,eAAe,EAAE,MAAM,CAAC;QACxB;;;WAGG;QACH,YAAY,EAAE,OAAO,CAAC;QACtB;;WAEG;QACH,sBAAsB,EAAE,OAAO,CAAC;QAChC;;WAEG;QACH,eAAe,EAAE,OAAO,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB;IAED;;;;;;;;;;;OAWG;IACH,KAAY,MAAM,GACZ,mBAAmB,GACnB,qBAAqB,GACrB,kBAAkB,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAE,IAAI,EAAE,MAAM,UAE9C"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+
3
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P ? value : new P(function (resolve) {
6
+ resolve(value);
7
+ });
8
+ }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) {
11
+ try {
12
+ step(generator.next(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function rejected(value) {
18
+ try {
19
+ step(generator["throw"](value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ }
24
+ function step(result) {
25
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
26
+ }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __importDefault = this && this.__importDefault || function (mod) {
31
+ return mod && mod.__esModule ? mod : {
32
+ "default": mod
33
+ };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", {
36
+ value: true
37
+ });
38
+ exports.pathToAssetRefURL = exports.externalWasmLoader = void 0;
39
+ const url_1 = require("url");
40
+ const fs_extra_1 = __importDefault(require("fs-extra"));
41
+ const path_1 = __importDefault(require("path"));
42
+ const externalOrigin = 'external:';
43
+ function normalizePath(path) {
44
+ return path.replace(/\\/g, '/');
45
+ }
46
+ const suffixReplaceConfig = {
47
+ '.mem': '.mem.bin',
48
+ '.wasm.fallback': '.wasm.fallback.bin'
49
+ };
50
+ /**
51
+ * emit asset and return the export statement
52
+ */
53
+ function emitAsset(context, filePath) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ let basename = path_1.default.basename(filePath);
56
+ for (let suffixToReplace in suffixReplaceConfig) {
57
+ const replacement = suffixReplaceConfig[suffixToReplace];
58
+ if (basename.endsWith(suffixToReplace)) {
59
+ // some platforms doesn't support files with special suffix like '.mem', we replace it to '.bin'
60
+ basename = basename.slice(0, -suffixToReplace.length) + replacement;
61
+ }
62
+ }
63
+ const referenceId = context.emitFile({
64
+ type: 'asset',
65
+ name: basename,
66
+ // fileName: path,
67
+ source: yield fs_extra_1.default.readFile(filePath)
68
+ });
69
+ return `export default import.meta.ROLLUP_FILE_URL_${referenceId};`;
70
+ });
71
+ }
72
+ function shouldCullBulletWasmModule(options, id) {
73
+ return options.forceBanningBulletWasm && id.includes('bullet');
74
+ }
75
+ function shouldCullAsmJsModule(options, id) {
76
+ return options.wasmSupportMode !== 0 && options.cullAsmJsModule;
77
+ }
78
+ const loadConfig = {
79
+ '.wasm': {
80
+ shouldCullModule(options, id) {
81
+ return options.wasmSupportMode === 0 || shouldCullBulletWasmModule(options, id);
82
+ },
83
+ shouldEmitAsset(options, id) {
84
+ return !this.shouldCullModule(options, id);
85
+ },
86
+ cullingContent: `export default '';`
87
+ },
88
+ '.js.mem': {
89
+ shouldCullModule(options, id) {
90
+ return options.wasmSupportMode === 1 && !shouldCullBulletWasmModule(options, id) || shouldCullAsmJsModule(options, id);
91
+ },
92
+ shouldEmitAsset(options, id) {
93
+ return !this.shouldCullModule(options, id);
94
+ },
95
+ cullingContent: `export default '';`
96
+ },
97
+ '.wasm.js': {
98
+ shouldCullModule(options, id) {
99
+ return options.wasmSupportMode === 0 || shouldCullBulletWasmModule(options, id);
100
+ },
101
+ shouldEmitAsset(options, id) {
102
+ return false;
103
+ },
104
+ cullingContent: `export default function () {}`
105
+ },
106
+ '.asm.js': {
107
+ shouldCullModule(options, id) {
108
+ return options.wasmSupportMode === 1 && !shouldCullBulletWasmModule(options, id) || shouldCullAsmJsModule(options, id);
109
+ },
110
+ shouldEmitAsset(options, id) {
111
+ return false;
112
+ },
113
+ cullingContent: `export default function () {}`
114
+ },
115
+ '.wasm.fallback': {
116
+ shouldCullModule(options, id) {
117
+ return loadConfig['.wasm'].shouldCullModule(options, id) || !options.wasmFallback;
118
+ },
119
+ shouldEmitAsset(options, id) {
120
+ return !this.shouldCullModule(options, id);
121
+ },
122
+ cullingContent: `export default '';`
123
+ },
124
+ '.wasm.fallback.js': {
125
+ shouldCullModule(options, id) {
126
+ return loadConfig['.wasm.js'].shouldCullModule(options, id) || !options.wasmFallback;
127
+ },
128
+ shouldEmitAsset(options, id) {
129
+ return false;
130
+ },
131
+ cullingContent: `export default function () {}`
132
+ }
133
+ };
134
+ /**
135
+ * This plugin enable to load script or wasm with url based on 'external://' origin.
136
+ */
137
+ function externalWasmLoader(options) {
138
+ return {
139
+ name: '@cocos/ccbuild|external-loader',
140
+ resolveId(source, importer) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ if (source.startsWith(externalOrigin)) {
143
+ return source;
144
+ }
145
+ return null;
146
+ });
147
+ },
148
+ load(id) {
149
+ return __awaiter(this, void 0, void 0, function* () {
150
+ if (id.startsWith(externalOrigin)) {
151
+ let filePath = normalizePath(path_1.default.join(options.externalRoot, id.substring(externalOrigin.length)));
152
+ for (const suffix in loadConfig) {
153
+ if (filePath.endsWith(suffix)) {
154
+ const config = loadConfig[suffix];
155
+ if (config.shouldCullModule(options, id)) {
156
+ return config.cullingContent;
157
+ } else if (config.shouldEmitAsset(options, id)) {
158
+ return emitAsset(this, filePath);
159
+ } else {
160
+ return yield fs_extra_1.default.readFile(filePath, 'utf8');
161
+ }
162
+ }
163
+ }
164
+ // some external module that doesn't obey the suffix specification, we return its content by default.
165
+ return yield fs_extra_1.default.readFile(filePath, 'utf8');
166
+ }
167
+ return null;
168
+ });
169
+ },
170
+ // Generates the `import.meta.ROLLUP_FILE_URL_referenceId`.
171
+ resolveFileUrl({
172
+ // > The path and file name of the emitted asset, relative to `output.dir` without a leading `./`.
173
+ fileName,
174
+ // > The path and file name of the emitted file,
175
+ // > relative to the chunk the file is referenced from.
176
+ // > This will path will contain no leading `./` but may contain a leading `../`.
177
+ relativePath
178
+ }) {
179
+ switch (options.format) {
180
+ case 'relative-from-chunk':
181
+ return `'${relativePath}'`;
182
+ case 'relative-from-out':
183
+ return `'${fileName}'`;
184
+ case 'runtime-resolved':
185
+ default:
186
+ return undefined;
187
+ // return `new URL('${fileName}', import.meta.url).href`;
188
+ }
189
+ }
190
+ };
191
+ }
192
+
193
+ exports.externalWasmLoader = externalWasmLoader;
194
+ /**
195
+ * Convert the file path to asset ref URL.
196
+ * @param file File path in absolute.
197
+ */
198
+ function pathToAssetRefURL(file) {
199
+ return `${assetPrefix}${(0, url_1.pathToFileURL)(file).pathname}`;
200
+ }
201
+ exports.pathToAssetRefURL = pathToAssetRefURL;
202
+ const assetPrefix = 'asset:';