@tarojs/rn-runner 3.4.2 → 3.4.3

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.
@@ -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 metro_core_1 = require("metro-core");
14
+ const MetroTerminalReporter = require("metro/src/lib/TerminalReporter");
15
+ const ModuleResolution = require("metro/src/node-haste/DependencyGraph/ModuleResolution");
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 = ModuleResolution.ModuleResolver.EMPTY_MODULE;
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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"}