@tarojs/rn-runner 3.5.0-canary.1 → 3.5.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 (54) hide show
  1. package/.eslintrc.js +2 -1
  2. package/__tests__/__snapshots__/components.spec.ts.snap +523 -0
  3. package/__tests__/build.spec.ts +4 -3
  4. package/__tests__/components.spec.ts +103 -0
  5. package/__tests__/config.spec.ts +2 -1
  6. package/__tests__/global.d.ts +11 -0
  7. package/__tests__/mock/build_testdata.ts +58 -0
  8. package/__tests__/mock/{build_testdata.js → components_testdata.ts} +3 -8
  9. package/__tests__/mock/config/index.js +1 -0
  10. package/__tests__/mock/src/app.config.ts +13 -0
  11. package/__tests__/mock/src/app.scss +0 -0
  12. package/__tests__/mock/src/app.tsx +15 -0
  13. package/__tests__/mock/src/components/cell/index.scss +25 -0
  14. package/__tests__/mock/src/components/cell/index.tsx +38 -0
  15. package/__tests__/mock/src/components/navbar/icon_back.webp +0 -0
  16. package/__tests__/mock/src/components/navbar/index.scss +29 -0
  17. package/__tests__/mock/src/components/navbar/index.tsx +36 -0
  18. package/__tests__/mock/src/components/navbar/resolver.rn.ts +1 -0
  19. package/__tests__/mock/src/components/navbar/resolver.ts +1 -0
  20. package/__tests__/mock/src/components/svg/index.tsx +6 -0
  21. package/__tests__/mock/src/components/svg/rollup-logo.svg +3 -0
  22. package/__tests__/mock/src/utils/dynamicImport/index.ts +3 -0
  23. package/__tests__/mock/src/utils/namedExport/index.js +2 -0
  24. package/__tests__/mock/src/utils/requireLodash/index.ts +5 -0
  25. package/__tests__/mock/src/utils/requireReactNative/index.js +2 -0
  26. package/__tests__/tsconfig.json +8 -0
  27. package/dist/config/build-component.js +162 -0
  28. package/dist/config/build-component.js.map +1 -0
  29. package/dist/config/conditional-file-store.js +28 -91
  30. package/dist/config/conditional-file-store.js.map +1 -1
  31. package/dist/config/config-holder.js +13 -13
  32. package/dist/config/config-holder.js.map +1 -1
  33. package/dist/config/index.js +26 -63
  34. package/dist/config/index.js.map +1 -1
  35. package/dist/config/preview.js +28 -28
  36. package/dist/config/preview.js.map +1 -1
  37. package/dist/config/terminal-reporter.js +57 -125
  38. package/dist/config/terminal-reporter.js.map +1 -1
  39. package/dist/index.js +169 -224
  40. package/dist/index.js.map +1 -1
  41. package/dist/utils.js +7 -7
  42. package/dist/utils.js.map +1 -1
  43. package/index.js +1 -0
  44. package/jest.config.js +3 -30
  45. package/package.json +39 -25
  46. package/src/config/build-component.ts +171 -0
  47. package/src/config/config-holder.ts +2 -1
  48. package/src/config/index.ts +15 -14
  49. package/src/config/preview.ts +7 -6
  50. package/src/config/terminal-reporter.ts +3 -3
  51. package/src/index.ts +36 -25
  52. package/src/types/index.ts +33 -33
  53. package/src/utils.ts +1 -1
  54. package/tsconfig.json +9 -27
@@ -8,51 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __values = (this && this.__values) || function(o) {
39
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
40
- if (m) return m.call(o);
41
- if (o && typeof o.length === "number") return {
42
- next: function () {
43
- if (o && i >= o.length) o = void 0;
44
- return { value: o && o[i++], done: !o };
45
- }
46
- };
47
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
- };
49
11
  Object.defineProperty(exports, "__esModule", { value: true });
50
12
  exports.TerminalReporter = void 0;
51
- var metro_core_1 = require("metro-core");
52
- var MetroTerminalReporter = require("metro/src/lib/TerminalReporter");
53
- var ModuleResolution = require("metro/src/node-haste/DependencyGraph/ModuleResolution");
54
- var TerminalReporter = /** @class */ (function () {
55
- function TerminalReporter(entry, sourceRoot, conditionalFileStore, metroServerInstance) {
13
+ const rn_supporter_1 = require("@tarojs/rn-supporter");
14
+ const MetroTerminalReporter = require("metro/src/lib/TerminalReporter");
15
+ const metro_core_1 = require("metro-core");
16
+ class TerminalReporter {
17
+ constructor(entry, sourceRoot, conditionalFileStore, metroServerInstance) {
56
18
  this._reporter = new MetroTerminalReporter(new metro_core_1.Terminal(process.stdout));
57
19
  this._conditionalFileStore = conditionalFileStore;
58
20
  this.metroServerInstance = metroServerInstance;
@@ -60,112 +22,82 @@ var TerminalReporter = /** @class */ (function () {
60
22
  this._entry = entry;
61
23
  this._sourceRoot = sourceRoot;
62
24
  }
63
- TerminalReporter.prototype.update = function (args) {
64
- return __awaiter(this, void 0, void 0, function () {
65
- var _a, realEntryPath_1, incrementalBundler, deltaBundler_1, bundler, findEntryGraphId, entryGraphId, entryGraphVersion_1;
66
- var _this = this;
67
- return __generator(this, function (_b) {
68
- switch (_b.label) {
69
- case 0:
70
- _a = args.type;
71
- switch (_a) {
72
- case 'initialize_started': return [3 /*break*/, 1];
73
- case 'bundle_build_started': return [3 /*break*/, 2];
74
- case 'bundle_build_done': return [3 /*break*/, 3];
75
- }
76
- return [3 /*break*/, 5];
77
- case 1:
78
- this._reporter.terminal.log("\n ##### ## ##### #### ##### ###### ## #### ##### # # ## ##### # # # ######\n # # # # # # # # # # # # # # # ## # # # # # # # #\n # # # # # # # # # ##### # # # # # # # # # # # # # #####\n # ###### ##### # # ##### # ###### # # # # # ###### # # # # #\n # # # # # # # # # # # # # # # # ## # # # # # # #\n # # # # # #### # # ###### # # #### # # # # # # # ## ######\n");
79
- return [3 /*break*/, 6];
80
- case 2:
81
- args.bundleDetails.entryFile = './index';
25
+ update(args) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ // 当依赖图加载之后,检测app和页面配置文件的变化
28
+ switch (args.type) {
29
+ case 'initialize_started':
30
+ this._reporter.terminal.log(`
31
+ ##### ## ##### #### ##### ###### ## #### ##### # # ## ##### # # # ######
32
+ # # # # # # # # # # # # # # # ## # # # # # # # #
33
+ # # # # # # # # # ##### # # # # # # # # # # # # # #####
34
+ # ###### ##### # # ##### # ###### # # # # # ###### # # # # #
35
+ # # # # # # # # # # # # # # # # ## # # # # # # #
36
+ # # # # # #### # # ###### # # #### # # # # # # # ## ######
37
+ `);
38
+ break;
39
+ case 'bundle_build_started':
40
+ args.bundleDetails.entryFile = './index';
41
+ this._reporter.update(args);
42
+ break;
43
+ case 'bundle_build_done':
44
+ {
82
45
  this._reporter.update(args);
83
- return [3 /*break*/, 6];
84
- case 3:
85
- this._reporter.update(args);
86
- realEntryPath_1 = ModuleResolution.ModuleResolver.EMPTY_MODULE;
46
+ const realEntryPath = require.resolve(rn_supporter_1.emptyModulePath);
87
47
  if (this._initialized) {
88
48
  // 恢复入口页面的缓存
89
49
  this._reporter.ignoreEntryFileCache = false;
90
- return [2 /*return*/];
50
+ return;
91
51
  }
92
52
  this._initialized = true;
93
53
  if (!this.metroServerInstance) {
94
- return [2 /*return*/];
54
+ return;
95
55
  }
96
- incrementalBundler = this.metroServerInstance.getBundler();
97
- deltaBundler_1 = incrementalBundler.getDeltaBundler();
98
- bundler = incrementalBundler.getBundler();
99
- findEntryGraphId = function (keys) {
100
- var e_1, _a;
101
- try {
102
- for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
103
- var k = keys_1_1.value;
104
- if (JSON.parse(k).entryFile === realEntryPath_1) {
105
- return k;
106
- }
56
+ const incrementalBundler = this.metroServerInstance.getBundler();
57
+ const deltaBundler = incrementalBundler.getDeltaBundler();
58
+ const bundler = incrementalBundler.getBundler();
59
+ const findEntryGraphId = keys => {
60
+ for (const k of keys) {
61
+ if (JSON.parse(k).entryFile === realEntryPath) {
62
+ return k;
107
63
  }
108
64
  }
109
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
110
- finally {
111
- try {
112
- if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
113
- }
114
- finally { if (e_1) throw e_1.error; }
115
- }
116
65
  return null;
117
66
  };
118
- entryGraphId = findEntryGraphId(incrementalBundler._revisionsByGraphId.keys());
119
- return [4 /*yield*/, incrementalBundler.getRevisionByGraphId(entryGraphId)
120
- // 监听DeltaCalculator的change事件,把入口文件也加入到_modifiedFiles集合中
121
- ];
122
- case 4:
123
- entryGraphVersion_1 = _b.sent();
67
+ // 获取入口文件的graph
68
+ const entryGraphId = findEntryGraphId(incrementalBundler._revisionsByGraphId.keys());
69
+ const entryGraphVersion = yield incrementalBundler.getRevisionByGraphId(entryGraphId);
124
70
  // 监听DeltaCalculator的change事件,把入口文件也加入到_modifiedFiles集合中
125
- bundler.getDependencyGraph().then(function (dependencyGraph) {
126
- dependencyGraph.getWatcher().on('change', function (_a) {
127
- var eventsQueue = _a.eventsQueue;
128
- var changedFiles = eventsQueue.map(function (item) { return item.filePath; });
71
+ bundler.getDependencyGraph().then(dependencyGraph => {
72
+ dependencyGraph.getWatcher().on('change', ({ eventsQueue }) => {
73
+ const changedFiles = eventsQueue.map(item => item.filePath);
129
74
  // 如果配置文件修改之后,把入口文件添加到修改列表中
130
- var deltaCalculator = deltaBundler_1._deltaCalculators.get(entryGraphVersion_1.graph);
131
- var isConfigurationModified = function (keys) {
132
- var e_2, _a;
133
- try {
134
- for (var keys_2 = __values(keys), keys_2_1 = keys_2.next(); !keys_2_1.done; keys_2_1 = keys_2.next()) {
135
- var k = keys_2_1.value;
136
- if (k.includes('.config') && k.includes(_this._sourceRoot)) {
137
- return true;
138
- }
139
- }
140
- }
141
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
142
- finally {
143
- try {
144
- if (keys_2_1 && !keys_2_1.done && (_a = keys_2.return)) _a.call(keys_2);
75
+ const deltaCalculator = deltaBundler._deltaCalculators.get(entryGraphVersion.graph);
76
+ const isConfigurationModified = keys => {
77
+ for (const k of keys) {
78
+ if (k.includes('.config') && k.includes(this._sourceRoot)) {
79
+ return true;
145
80
  }
146
- finally { if (e_2) throw e_2.error; }
147
81
  }
148
82
  return false;
149
83
  };
150
84
  if (isConfigurationModified(changedFiles)) {
151
85
  // 忽略入口文件的转译结果缓存
152
- _this._conditionalFileStore.ignoreEntryFileCache = true;
153
- deltaCalculator._modifiedFiles.add(realEntryPath_1);
154
- _this._reporter.terminal.flush();
86
+ this._conditionalFileStore.ignoreEntryFileCache = true;
87
+ deltaCalculator._modifiedFiles.add(realEntryPath);
88
+ this._reporter.terminal.flush();
155
89
  console.log('\nConfiguration(s) are changed.');
156
90
  }
157
91
  });
158
92
  });
159
- return [3 /*break*/, 6];
160
- case 5:
161
- this._reporter.update(args);
162
- return [3 /*break*/, 6];
163
- case 6: return [2 /*return*/];
164
- }
165
- });
93
+ }
94
+ break;
95
+ default:
96
+ this._reporter.update(args);
97
+ break;
98
+ }
166
99
  });
167
- };
168
- return TerminalReporter;
169
- }());
100
+ }
101
+ }
170
102
  exports.TerminalReporter = TerminalReporter;
171
103
  //# sourceMappingURL=terminal-reporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-reporter.js","sourceRoot":"","sources":["../../src/config/terminal-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-reporter.js","sourceRoot":"","sources":["../../src/config/terminal-reporter.ts"],"names":[],"mappings":"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"}