@tarojs/rn-runner 3.5.6-alpha.2 → 3.5.7

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.
@@ -1,4 +1,4 @@
1
- import { getRNConfigEntry } from '../src/config/config-holder'
1
+ import { getRNConfigBabelPlugin, getRNConfigEntry, getRNConfigOutput, getRNConfigTransformer } from '../src/config/config-holder'
2
2
 
3
3
  const path = require('path')
4
4
 
@@ -9,8 +9,27 @@ describe('init', () => {
9
9
  NODE_ENV: 'development'
10
10
  }
11
11
 
12
+ it('getRNConfigOutput', () => {
13
+ expect(getRNConfigOutput('ios')).toEqual('iosbundle/main.bundle')
14
+ })
15
+
12
16
  it('getRNConfigEntry', () => {
13
17
  expect(getRNConfigEntry()).toEqual('app')
14
18
  })
15
19
 
20
+ it('getRNConfigTransformer', () => {
21
+ expect(getRNConfigTransformer()).toEqual([
22
+ 'metro/transformer'
23
+ ])
24
+ })
25
+
26
+ it('getRNConfigBabelPlugin', () => {
27
+ const babelPlugin = [
28
+ '/absulute/path/plugin/filename',
29
+ '@tarojs/plugin-mock',
30
+ ['@tarojs/plugin-mock'],
31
+ ['@tarojs/plugin-mock', {}]
32
+ ]
33
+ expect(getRNConfigBabelPlugin()).toEqual(babelPlugin)
34
+ })
16
35
  })
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const FileStore = require("metro-cache/src/stores/FileStore");
13
+ class ConditionalFileStore {
14
+ constructor(options, entryName) {
15
+ this.ignoreEntryFileCache = false;
16
+ this._fileStore = new FileStore(options);
17
+ this.entryName = entryName || 'app';
18
+ }
19
+ isEntryCache(cacheItem) {
20
+ if (!cacheItem)
21
+ return false;
22
+ const { dependencies } = cacheItem;
23
+ if (!dependencies || !dependencies.length) {
24
+ return false;
25
+ }
26
+ for (const d of dependencies) {
27
+ if (d.name.includes(`${this.entryName}.config`)) {
28
+ return true;
29
+ }
30
+ }
31
+ return false;
32
+ }
33
+ get(key) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ const result = yield this._fileStore.get(key);
36
+ if (result && this.ignoreEntryFileCache && this.isEntryCache(result)) {
37
+ return null;
38
+ }
39
+ return result;
40
+ });
41
+ }
42
+ set(key, value) {
43
+ var _a, _b, _c, _d, _e;
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ // fix: 样式文件不写缓存
46
+ if (((_e = (_d = (_c = (_b = (_a = value === null || value === void 0 ? void 0 : value.output) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.functionMap) === null || _d === void 0 ? void 0 : _d.names) === null || _e === void 0 ? void 0 : _e.indexOf('ignoreStyleFileCache')) > -1) {
47
+ return;
48
+ }
49
+ return yield this._fileStore.set(key, value);
50
+ });
51
+ }
52
+ clear() {
53
+ this._fileStore.clear();
54
+ }
55
+ }
56
+ exports.default = ConditionalFileStore;
57
+ //# sourceMappingURL=conditional-file-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-file-store.js","sourceRoot":"","sources":["../../src/config/conditional-file-store.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8DAA6D;AAE7D,MAAqB,oBAAoB;IAKvC,YAAa,OAAY,EAAE,SAAkB;QAJ7C,yBAAoB,GAAG,KAAK,CAAA;QAK1B,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAI,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,KAAK,CAAA;IACrC,CAAC;IAED,YAAY,CAAE,SAAS;QACrB,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAA;QAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;QAClC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACzC,OAAO,KAAK,CAAA;SACb;QAED,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;YAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,SAAS,CAAC,EAAE;gBAC/C,OAAO,IAAI,CAAA;aACZ;SACF;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEK,GAAG,CAAE,GAAW;;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC7C,IAAI,MAAM,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;gBACpE,OAAO,IAAI,CAAA;aACZ;YACD,OAAO,MAAM,CAAA;QACf,CAAC;KAAA;IAEK,GAAG,CAAE,GAAW,EAAE,KAAU;;;YAChC,gBAAgB;YAChB,IAAI,CAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAG,CAAC,CAAC,0CAAE,IAAI,0CAAE,WAAW,0CAAE,KAAK,0CAAE,OAAO,CAAC,sBAAsB,CAAC,IAAG,CAAC,CAAC,EAAE;gBACtF,OAAM;aACP;YACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;;KAC7C;IAED,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC;CACF;AA5CD,uCA4CC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRNConfigTransformer = exports.getRNConfigOutput = exports.getRNConfigEntry = exports.getRNConfigBabelPlugin = exports.getRNConfig = exports.getConfig = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const fs = require('fs');
6
+ let config;
7
+ let rnConfig;
8
+ const getConfig = () => {
9
+ if (config)
10
+ return config;
11
+ const fileName = `${process.cwd()}/config/index.js`;
12
+ if (fs.existsSync(fileName)) {
13
+ config = require(`${process.cwd()}/config/index`)(lodash_1.merge);
14
+ return config;
15
+ }
16
+ else {
17
+ console.warn('缺少项目基本配置');
18
+ config = {};
19
+ return config;
20
+ }
21
+ };
22
+ exports.getConfig = getConfig;
23
+ const getRNConfig = () => {
24
+ getConfig();
25
+ if (rnConfig)
26
+ return rnConfig;
27
+ if (config.rn) {
28
+ rnConfig = config.rn;
29
+ }
30
+ else {
31
+ rnConfig = {};
32
+ }
33
+ return rnConfig;
34
+ };
35
+ exports.getRNConfig = getRNConfig;
36
+ const getRNConfigEntry = () => {
37
+ getRNConfig();
38
+ return rnConfig.entry || 'app';
39
+ };
40
+ exports.getRNConfigEntry = getRNConfigEntry;
41
+ const getRNConfigOutput = (p) => {
42
+ getRNConfig();
43
+ if (rnConfig.output) {
44
+ if (p === 'ios') {
45
+ return rnConfig.output.ios;
46
+ }
47
+ else {
48
+ return rnConfig.output.android;
49
+ }
50
+ }
51
+ else {
52
+ return null;
53
+ }
54
+ };
55
+ exports.getRNConfigOutput = getRNConfigOutput;
56
+ const getRNConfigTransformer = () => {
57
+ getRNConfig();
58
+ if (rnConfig.transformer) {
59
+ return rnConfig.transformer;
60
+ }
61
+ else {
62
+ return null;
63
+ }
64
+ };
65
+ exports.getRNConfigTransformer = getRNConfigTransformer;
66
+ const getRNConfigBabelPlugin = () => {
67
+ getRNConfig();
68
+ if (rnConfig.babelPlugin) {
69
+ return rnConfig.babelPlugin;
70
+ }
71
+ else {
72
+ return null;
73
+ }
74
+ };
75
+ exports.getRNConfigBabelPlugin = getRNConfigBabelPlugin;
76
+ //# sourceMappingURL=config-holder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-holder.js","sourceRoot":"","sources":["../../src/config/config-holder.ts"],"names":[],"mappings":";;;AAAA,mCAA8B;AAI9B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAExB,IAAI,MAAc,CAAA;AAClB,IAAI,QAAkB,CAAA;AAEtB,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAA;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3B,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,cAAK,CAAC,CAAA;QACxD,OAAO,MAAM,CAAA;KACd;SAAM;QACL,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACxB,MAAM,GAAG,EAAE,CAAA;QACX,OAAO,MAAM,CAAA;KACd;AACH,CAAC,CAAA;AAiDQ,8BAAS;AA/ClB,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,SAAS,EAAE,CAAA;IACX,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,IAAI,MAAM,CAAC,EAAE,EAAE;QACb,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA;KACrB;SAAM;QACL,QAAQ,GAAG,EAAE,CAAA;KACd;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAsCmB,kCAAW;AApC/B,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,WAAW,EAAE,CAAA;IACb,OAAO,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAA;AAChC,CAAC,CAAA;AAiCwD,4CAAgB;AA/BzE,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,EAAE;IAC9B,WAAW,EAAE,CAAA;IACb,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,IAAI,CAAC,KAAK,KAAK,EAAE;YACf,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAA;SAC3B;aAAM;YACL,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAA;SAC/B;KACF;SAAM;QACL,OAAO,IAAI,CAAA;KACZ;AACH,CAAC,CAAA;AAoB0E,8CAAiB;AAlB5F,MAAM,sBAAsB,GAAG,GAAG,EAAE;IAClC,WAAW,EAAE,CAAA;IACb,IAAI,QAAQ,CAAC,WAAW,EAAE;QACxB,OAAO,QAAQ,CAAC,WAAW,CAAA;KAC5B;SAAM;QACL,OAAO,IAAI,CAAA;KACZ;AACH,CAAC,CAAA;AAW6F,wDAAsB;AATpH,MAAM,sBAAsB,GAAG,GAAG,EAAE;IAClC,WAAW,EAAE,CAAA;IACb,IAAI,QAAQ,CAAC,WAAW,EAAE;QACxB,OAAO,QAAQ,CAAC,WAAW,CAAA;KAC5B;SAAM;QACL,OAAO,IAAI,CAAA;KACZ;AACH,CAAC,CAAA;AAEgC,wDAAsB"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.defaultConfig = void 0;
13
+ const resolveReactNativePath_1 = require("@react-native-community/cli-config/build/resolveReactNativePath");
14
+ const cli_tools_1 = require("@react-native-community/cli-tools");
15
+ const rn_supporter_1 = require("@tarojs/rn-supporter");
16
+ const Metro = require("metro");
17
+ const os = require("os");
18
+ const path = require("path");
19
+ const conditional_file_store_1 = require("./conditional-file-store");
20
+ const reactNativePath = (0, resolveReactNativePath_1.default)((0, cli_tools_1.findProjectRoot)());
21
+ const defaultConfig = getDefaultConfig();
22
+ exports.defaultConfig = defaultConfig;
23
+ function getDefaultConfig() {
24
+ const supporter = new rn_supporter_1.Supporter({ fromRunner: true });
25
+ const taroMetroConfig = supporter.getMetroConfig();
26
+ const metroConfig = {
27
+ transformer: taroMetroConfig.transformer,
28
+ resolver: taroMetroConfig.resolver,
29
+ serializer: {
30
+ // We can include multiple copies of InitializeCore here because metro will
31
+ // only add ones that are already part of the bundle
32
+ getModulesRunBeforeMainModule: () => [
33
+ require.resolve(path.join(reactNativePath, 'Libraries/Core/InitializeCore'))
34
+ ],
35
+ getPolyfills: () => require(path.join(reactNativePath, 'rn-get-polyfills'))()
36
+ },
37
+ cacheStores: [new conditional_file_store_1.default({
38
+ root: path.join(os.tmpdir(), 'metro-cache')
39
+ })],
40
+ server: {
41
+ port: 8081
42
+ }
43
+ };
44
+ return metroConfig;
45
+ }
46
+ exports.default = (config) => __awaiter(void 0, void 0, void 0, function* () {
47
+ const metroConfig = getDefaultConfig();
48
+ const res = yield Metro.loadConfig({}, metroConfig);
49
+ if (!res.cacheStores || (res.cacheStores.length !== 1) || !(res.cacheStores[0] instanceof conditional_file_store_1.default)) {
50
+ throw new Error("cacheStores shouldn't be overridden in metro config.");
51
+ }
52
+ if (config.entry) {
53
+ res.cacheStores[0].entryName = config.entry;
54
+ }
55
+ return res;
56
+ });
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4GAAoG;AACpG,iEAAmE;AACnE,uDAAgD;AAChD,+BAA8B;AAC9B,yBAAwB;AACxB,6BAA4B;AAE5B,qEAA2D;AAE3D,MAAM,eAAe,GAAW,IAAA,gCAAsB,EAAC,IAAA,2BAAe,GAAE,CAAC,CAAA;AAyBzE,MAAM,aAAa,GAAgB,gBAAgB,EAAE,CAAA;AAyC5C,sCAAa;AAvCtB,SAAS,gBAAgB;IACvB,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,EAAE,CAAA;IAClD,MAAM,WAAW,GAAgB;QAC/B,WAAW,EAAE,eAAe,CAAC,WAAW;QACxC,QAAQ,EAAE,eAAe,CAAC,QAAQ;QAClC,UAAU,EAAE;YACV,2EAA2E;YAC3E,oDAAoD;YACpD,6BAA6B,EAAE,GAAG,EAAE,CAAC;gBACnC,OAAO,CAAC,OAAO,CACb,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,+BAA+B,CAAC,CAC5D;aACF;YACD,YAAY,EAAE,GAAG,EAAE,CACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,EAAE;SAC5D;QACD,WAAW,EAAE,CAAC,IAAI,gCAAoB,CAAM;gBAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC;aAC5C,CAAC,CAAC;QACH,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;SACX;KACF,CAAA;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,kBAAe,CAAO,MAAW,EAAE,EAAE;IACnC,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAA;IACtC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IACnD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,gCAAoB,CAAC,EAAE;QAC/G,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;KACxE;IACD,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAA;KAC5C;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA,CAAA"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs_1 = require("fs");
4
+ const http_1 = require("http");
5
+ const mime = require("mime-types");
6
+ const path_1 = require("path");
7
+ const qr = require("qrcode-terminal");
8
+ const url_1 = require("url");
9
+ const utils_1 = require("../utils");
10
+ const drawableFileTypes = new Set([
11
+ 'gif',
12
+ 'jpeg',
13
+ 'jpg',
14
+ 'png',
15
+ 'webp',
16
+ 'xml'
17
+ ]);
18
+ function getAndroidAssetSuffix(scale) {
19
+ switch (scale) {
20
+ case 0.75:
21
+ return 'ldpi';
22
+ case 1:
23
+ return 'mdpi';
24
+ case 1.5:
25
+ return 'hdpi';
26
+ case 2:
27
+ return 'xhdpi';
28
+ case 3:
29
+ return 'xxhdpi';
30
+ case 4:
31
+ return 'xxxhdpi';
32
+ default:
33
+ return '';
34
+ }
35
+ }
36
+ function getAndroidResourceFolderName(pathname) {
37
+ const ext = (0, path_1.extname)(pathname).replace(/^./, '').toLowerCase();
38
+ if (!drawableFileTypes.has(ext)) {
39
+ return 'raw';
40
+ }
41
+ const suffix = getAndroidAssetSuffix(1); // TODO: auto scale
42
+ const androidFolder = `drawable-${suffix}`;
43
+ return androidFolder;
44
+ }
45
+ function getAndroidResourceIdentifier(pathname) {
46
+ if (pathname[0] === '/') {
47
+ pathname = pathname.substr(1);
48
+ }
49
+ const ext = (0, path_1.extname)(pathname).toLowerCase();
50
+ const extReg = new RegExp(ext + '$');
51
+ return pathname
52
+ .replace(extReg, '')
53
+ .toLowerCase()
54
+ .replace(/\//g, '_')
55
+ .replace(/([^a-z0-9_])/g, '')
56
+ .replace(/^assets_/, '') + ext;
57
+ }
58
+ exports.default = (opt) => {
59
+ const port = process.env.PORT || 8079;
60
+ const host = `http://${(0, utils_1.getOpenHost)()}:${port}`;
61
+ (0, http_1.createServer)(function (request, response) {
62
+ const url = new url_1.URL(request.url || '', host);
63
+ console.log(`${request.method} ${request.url}`);
64
+ if (url.pathname === '/inspector/device') {
65
+ response.writeHead(404);
66
+ response.end('404', 'utf-8');
67
+ return;
68
+ }
69
+ let filePath;
70
+ const contentType = mime.lookup(url.pathname);
71
+ if (url.pathname === '/index.js') {
72
+ filePath = opt.out;
73
+ }
74
+ else if (opt.platform === 'ios') {
75
+ filePath = (0, path_1.join)(opt.assetsDest || '', url.pathname);
76
+ }
77
+ else if (opt.platform === 'android') {
78
+ filePath = (0, path_1.join)(opt.assetsDest || '', getAndroidResourceFolderName(url.pathname), getAndroidResourceIdentifier(url.pathname));
79
+ }
80
+ (0, fs_1.readFile)(filePath, function (error, content) {
81
+ if (error) {
82
+ if (error.code === 'ENOENT') {
83
+ response.writeHead(404);
84
+ response.end('404', 'utf-8');
85
+ }
86
+ else {
87
+ response.writeHead(500);
88
+ response.end('500', 'utf-8');
89
+ }
90
+ }
91
+ else {
92
+ response.writeHead(200, { 'Content-Type': contentType });
93
+ response.end(content, 'utf-8');
94
+ }
95
+ });
96
+ }).listen(port);
97
+ const url = `${host}/index.js`;
98
+ console.log(utils_1.PLAYGROUNDINFO);
99
+ console.log(`print qrcode of ${opt.platform} bundle '${url}':`);
100
+ qr.generate(url, { small: !utils_1.isWin });
101
+ };
102
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/config/preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TerminalReporter = void 0;
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) {
18
+ this._reporter = new MetroTerminalReporter(new metro_core_1.Terminal(process.stdout));
19
+ this._conditionalFileStore = conditionalFileStore;
20
+ this.metroServerInstance = metroServerInstance;
21
+ this._initialized = false;
22
+ this._entry = entry;
23
+ this._sourceRoot = sourceRoot;
24
+ }
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
+ {
45
+ this._reporter.update(args);
46
+ const realEntryPath = require.resolve(rn_supporter_1.emptyModulePath);
47
+ if (this._initialized) {
48
+ // 恢复入口页面的缓存
49
+ this._reporter.ignoreEntryFileCache = false;
50
+ return;
51
+ }
52
+ this._initialized = true;
53
+ if (!this.metroServerInstance) {
54
+ return;
55
+ }
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;
63
+ }
64
+ }
65
+ return null;
66
+ };
67
+ // 获取入口文件的graph
68
+ const entryGraphId = findEntryGraphId(incrementalBundler._revisionsByGraphId.keys());
69
+ const entryGraphVersion = yield incrementalBundler.getRevisionByGraphId(entryGraphId);
70
+ // 监听DeltaCalculator的change事件,把入口文件也加入到_modifiedFiles集合中
71
+ bundler.getDependencyGraph().then(dependencyGraph => {
72
+ dependencyGraph.getWatcher().on('change', ({ eventsQueue }) => {
73
+ const changedFiles = eventsQueue.map(item => item.filePath);
74
+ // 如果配置文件修改之后,把入口文件添加到修改列表中
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;
80
+ }
81
+ }
82
+ return false;
83
+ };
84
+ if (isConfigurationModified(changedFiles)) {
85
+ // 忽略入口文件的转译结果缓存
86
+ this._conditionalFileStore.ignoreEntryFileCache = true;
87
+ deltaCalculator._modifiedFiles.add(realEntryPath);
88
+ this._reporter.terminal.flush();
89
+ console.log('\nConfiguration(s) are changed.');
90
+ }
91
+ });
92
+ });
93
+ }
94
+ break;
95
+ default:
96
+ this._reporter.update(args);
97
+ break;
98
+ }
99
+ });
100
+ }
101
+ }
102
+ exports.TerminalReporter = TerminalReporter;
103
+ //# sourceMappingURL=terminal-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-reporter.js","sourceRoot":"","sources":["../../src/config/terminal-reporter.ts"],"names":[],"mappings":"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"}