@taro-minify-pack/plugin-async-pack 0.0.5-alpha.3 → 0.0.5-alpha.5

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.
@@ -13,9 +13,16 @@ exports.InjectStyleComponentName = 'inject-style';
13
13
  const injectStyleComponentCode = `
14
14
  const { SingletonPromise } = require('~/singleton-promise.js')
15
15
  Component({
16
+ properties: {
17
+ route: String,
18
+ },
16
19
  lifetimes: {
17
- attached: () => SingletonPromise.loaded("DYNAMIC_PACKAGE_NAME"),
18
- detached: () => SingletonPromise.unloaded("DYNAMIC_PACKAGE_NAME")
20
+ attached: function () {
21
+ return SingletonPromise.loaded({dynamicPackageName:"DYNAMIC_PACKAGE_NAME",pageRoute:this.data.route})
22
+ },
23
+ detached: function () {
24
+ return SingletonPromise.unloaded({dynamicPackageName:"DYNAMIC_PACKAGE_NAME",pageRoute:this.data.route})
25
+ }
19
26
  }
20
27
  })
21
28
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"inject-style-component.js","sourceRoot":"","sources":["../src/inject-style-component.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAEvB,+DAAsC;AACtC,iEAAwC;AACxC,mCAAwF;AAE3E,QAAA,WAAW,GAAG,sBAAsB,CAAA;AAEpC,QAAA,wBAAwB,GAAG,cAAc,CAAA;AAEtD,MAAM,wBAAwB,GAAG;;;;;;;;CAQhC,CAAA;AAID,MAAa,0BAA0B;IASrC,YAAa,GAAQ;QANJ,gBAAW,GAAW,UAAU,CAAA;QAEhC,gBAAW,GAAU,gDAAgD,CAAA;QAErE,cAAS,GAAW,wBAAwB,CAAA;QAG3D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAE,QAAkB;QACvB,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAW,EAAE,CAAC,WAAwB,EAAE,EAAE;YACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAA,CAAC,YAAY;YAEvF,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,mBAAW,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClE,MAAM,kBAAkB,GAAG,IAAA,kCAA0B,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,IAAG,CAAA;oBAE7E,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,mBAAS,EAAC,kBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;oBACzH,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;wBACxE,IAAI,CAAC,IAAA,0CAAkC,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,KAAI,SAAS,CAAC;4BAAE,OAAO,MAAM,CAAA;wBACzF,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;wBACjE,MAAM,IAAI,GAAG,cAAc,YAAY,IAAI,CAAA;wBAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;oBAC7B,CAAC,EAAE,EAAE,CAAC,CAAA;oBAEN,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC9C,MAAM,aAAa,GAAG,GAAG,kBAAkB,IAAI,gCAAwB,EAAE,CAAA;oBACzE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAA;oBACxE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC/E,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAvCD,gEAuCC"}
1
+ {"version":3,"file":"inject-style-component.js","sourceRoot":"","sources":["../src/inject-style-component.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAEvB,+DAAsC;AACtC,iEAAwC;AACxC,mCAAwF;AAE3E,QAAA,WAAW,GAAG,sBAAsB,CAAA;AAEpC,QAAA,wBAAwB,GAAG,cAAc,CAAA;AAEtD,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;CAehC,CAAA;AAID,MAAa,0BAA0B;IASrC,YAAa,GAAQ;QANJ,gBAAW,GAAW,UAAU,CAAA;QAEhC,gBAAW,GAAU,gDAAgD,CAAA;QAErE,cAAS,GAAW,wBAAwB,CAAA;QAG3D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAE,QAAkB;QACvB,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAW,EAAE,CAAC,WAAwB,EAAE,EAAE;YACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAA,CAAC,YAAY;YAEvF,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,mBAAW,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClE,MAAM,kBAAkB,GAAG,IAAA,kCAA0B,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,IAAG,CAAA;oBAE7E,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,mBAAS,EAAC,kBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;oBACzH,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;wBACxE,IAAI,CAAC,IAAA,0CAAkC,kCAAM,IAAI,CAAC,GAAG,KAAE,KAAK,KAAI,SAAS,CAAC;4BAAE,OAAO,MAAM,CAAA;wBACzF,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;wBACjE,MAAM,IAAI,GAAG,cAAc,YAAY,IAAI,CAAA;wBAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;oBAC7B,CAAC,EAAE,EAAE,CAAC,CAAA;oBAEN,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC9C,MAAM,aAAa,GAAG,GAAG,kBAAkB,IAAI,gCAAwB,EAAE,CAAA;oBACzE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAA;oBACxE,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBAC7E,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC/E,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAvCD,gEAuCC"}
@@ -1,12 +1,16 @@
1
+ interface Opt {
2
+ dynamicPackageName: string;
3
+ pageRoute: string;
4
+ }
1
5
  export declare class SingletonPromise {
2
6
  private static instance?;
3
- private loadTimes;
4
7
  private promise?;
5
8
  private resolve?;
6
9
  constructor();
7
- static getInstance(key: string): SingletonPromise;
8
10
  private resetPromise;
9
- static wait(key: string): Promise<void> | undefined;
10
- static loaded(key: string): void;
11
- static unloaded(key: string): void;
11
+ static getInstance(opt: Pick<Opt, 'dynamicPackageName'>): Map<string, SingletonPromise>;
12
+ static wait(opt: Pick<Opt, 'dynamicPackageName'>): Promise<(void | undefined)[]>;
13
+ static loaded(opt: Opt): void;
14
+ static unloaded(opt: Opt): void;
12
15
  }
16
+ export {};
@@ -3,34 +3,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SingletonPromise = void 0;
4
4
  class SingletonPromise {
5
5
  constructor() {
6
- this.loadTimes = 0;
7
6
  this.resetPromise();
8
7
  }
9
- static getInstance(key) {
10
- if (!SingletonPromise.instance)
11
- SingletonPromise.instance = {};
12
- if (!SingletonPromise.instance[key])
13
- SingletonPromise.instance[key] = new SingletonPromise();
14
- return SingletonPromise.instance[key];
15
- }
16
8
  resetPromise() {
17
9
  this.promise = new Promise((resolve) => {
18
10
  this.resolve = resolve;
19
11
  });
20
12
  }
21
- static wait(key) {
22
- return this.getInstance(key).promise;
13
+ static getInstance(opt) {
14
+ const { dynamicPackageName } = opt;
15
+ if (!SingletonPromise.instance)
16
+ SingletonPromise.instance = new Map();
17
+ if (!SingletonPromise.instance.has(dynamicPackageName))
18
+ SingletonPromise.instance.set(dynamicPackageName, new Map());
19
+ return SingletonPromise.instance.get(dynamicPackageName);
20
+ }
21
+ static wait(opt) {
22
+ const instance = this.getInstance(opt);
23
+ const currentPages = getCurrentPages();
24
+ return Promise.all(currentPages.map(page => {
25
+ var _a;
26
+ if (!instance.has(page.route))
27
+ instance.set(page.route, new SingletonPromise());
28
+ return (_a = instance.get(page.route)) === null || _a === void 0 ? void 0 : _a.promise;
29
+ }));
23
30
  }
24
- static loaded(key) {
31
+ static loaded(opt) {
25
32
  var _a, _b;
26
- (_b = (_a = this.getInstance(key)).resolve) === null || _b === void 0 ? void 0 : _b.call(_a);
27
- this.getInstance(key).loadTimes += 1;
33
+ const { pageRoute } = opt;
34
+ const instance = this.getInstance(opt);
35
+ if (!instance.has(pageRoute))
36
+ instance.set(pageRoute, new SingletonPromise());
37
+ (_b = (_a = instance.get(pageRoute)) === null || _a === void 0 ? void 0 : _a.resolve) === null || _b === void 0 ? void 0 : _b.call(_a);
28
38
  }
29
- static unloaded(key) {
30
- this.getInstance(key).loadTimes -= 1;
31
- if (this.getInstance(key).loadTimes > 0)
32
- return;
33
- this.getInstance(key).resetPromise();
39
+ static unloaded(opt) {
40
+ const { pageRoute } = opt;
41
+ const instance = this.getInstance(opt);
42
+ instance.delete(pageRoute);
34
43
  }
35
44
  }
36
45
  exports.SingletonPromise = SingletonPromise;
@@ -1 +1 @@
1
- {"version":3,"file":"singleton-promise.js","sourceRoot":"","sources":["../src/singleton-promise.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAU3B;QANQ,cAAS,GAAG,CAAC,CAAA;QAOnB,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,WAAW,CAAE,GAAU;QAC5B,IAAI,CAAC,gBAAgB,CAAC,QAAQ;YAAE,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC9D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAC5F,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAE,GAAU;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,MAAM,CAAE,GAAU;;QACvB,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAC,OAAO,kDAAI,CAAA;QACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAE,GAAU;QACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAA;QACpC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC;YAAE,OAAM;QAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAA;IACtC,CAAC;CACF;AAxCD,4CAwCC"}
1
+ {"version":3,"file":"singleton-promise.js","sourceRoot":"","sources":["../src/singleton-promise.ts"],"names":[],"mappings":";;;AAKA,MAAa,gBAAgB;IAQ3B;QACE,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAE,GAAoC;QACtD,MAAM,EAAE,kBAAkB,EAAE,GAAG,GAAG,CAAA;QAClC,IAAI,CAAC,gBAAgB,CAAC,QAAQ;YAAE,gBAAgB,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;QACrE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC;YAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACpH,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAE,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,IAAI,CAAE,GAAoC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;QACtC,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;YACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAA;YAC/E,OAAO,MAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,0CAAE,OAAO,CAAA;QAC1C,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAE,GAAQ;;QACrB,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAA;QAC7E,MAAA,MAAA,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,0CAAE,OAAO,kDAAI,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAE,GAAQ;QACvB,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACtC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;CACF;AA9CD,4CA8CC"}
@@ -6,7 +6,7 @@ const appConfigAssetKey = 'app.json';
6
6
  const transformPagesWXml = (opts) => {
7
7
  const { assets, asyncComponents } = opts;
8
8
  const curAppConfig = JSON.parse(assets[appConfigAssetKey].source());
9
- const pagesPath = (() => {
9
+ const pageWXmlPaths = (() => {
10
10
  var _a;
11
11
  const { pages = [], subpackages, subPackages, tabBar } = curAppConfig;
12
12
  const tabBarPagePaths = ((_a = tabBar === null || tabBar === void 0 ? void 0 : tabBar.list) === null || _a === void 0 ? void 0 : _a.map((item) => item.pagePath)) || [];
@@ -17,11 +17,12 @@ const transformPagesWXml = (opts) => {
17
17
  }, []);
18
18
  return [...pages, ...tabBarPagePaths, ...subPackagePagePaths].map((item) => `${item}.wxml`);
19
19
  })();
20
- const asyncComponentCode = Object.keys(asyncComponents).map((item) => `<${item}/>`);
21
20
  Object.keys(assets).forEach((assetPath) => {
22
- if (!pagesPath.includes(assetPath))
21
+ if (!pageWXmlPaths.includes(assetPath))
23
22
  return;
24
23
  const source = assets[assetPath].source();
24
+ const pageRoute = assetPath.replace(/\.wxml$/, '');
25
+ const asyncComponentCode = Object.keys(asyncComponents).map((item) => `<${item} route="${pageRoute}"/>`);
25
26
  const tempCode = [source, ...asyncComponentCode].join('\n');
26
27
  assets[assetPath] = new webpack_sources_1.RawSource(tempCode);
27
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"transform-pages-wxml.js","sourceRoot":"","sources":["../src/transform-pages-wxml.ts"],"names":[],"mappings":";;;AACA,qDAA2C;AAO3C,MAAM,iBAAiB,GAAG,UAAU,CAAA;AAE7B,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,EAAE;IAC/C,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAA;IAExC,MAAM,YAAY,GAAc,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAY,CAAC,CAAA;IAExF,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;;QACtB,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,CAAA;QACrE,MAAM,eAAe,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAI,EAAE,CAAA;QACxE,MAAM,cAAc,GAAG,WAAW,IAAI,WAAW,IAAI,EAAE,CAAA;QACvD,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;YAC1C,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;QAC1F,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,eAAe,EAAE,GAAG,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAA;IAC7F,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IAEnF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAM;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAY,CAAA;QACnD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,2BAAS,CAAC,QAAQ,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAxBY,QAAA,kBAAkB,sBAwB9B"}
1
+ {"version":3,"file":"transform-pages-wxml.js","sourceRoot":"","sources":["../src/transform-pages-wxml.ts"],"names":[],"mappings":";;;AACA,qDAA2C;AAO3C,MAAM,iBAAiB,GAAG,UAAU,CAAA;AAE7B,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,EAAE;IAC/C,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAA;IAExC,MAAM,YAAY,GAAc,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAY,CAAC,CAAA;IAExF,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;;QAC1B,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,CAAA;QACrE,MAAM,eAAe,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAI,EAAE,CAAA;QACxE,MAAM,cAAc,GAAG,WAAW,IAAI,WAAW,IAAI,EAAE,CAAA;QACvD,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;YAC1C,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;QAC1F,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,eAAe,EAAE,GAAG,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAA;IAC7F,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAM;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAY,CAAA;QACnD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,WAAW,SAAS,KAAK,CAAC,CAAA;QACxG,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,2BAAS,CAAC,QAAQ,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAxBY,QAAA,kBAAkB,sBAwB9B"}
@@ -174,7 +174,7 @@ loadStylesheet = function (chunkId) {
174
174
  const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
175
175
  const [,dynamicPackageName] = fullHref.match(dynamicPackageNameRegex) || [];
176
176
  const { SingletonPromise } = require('~/singleton-promise.js');
177
- return SingletonPromise.wait(dynamicPackageName)
177
+ return SingletonPromise.wait({ dynamicPackageName })
178
178
  }
179
179
  `;
180
180
  const replaceLoadStylesheetFn = (nodePath, opts) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taro-minify-pack/plugin-async-pack",
3
- "version": "0.0.5-alpha.3",
3
+ "version": "0.0.5-alpha.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,6 +33,7 @@
33
33
  "@types/babel__traverse": "^7.20.6",
34
34
  "@types/node": "^18.19.130",
35
35
  "@types/webpack-sources": "^3.2.3",
36
+ "@types/wechat-miniprogram": "^3.4.9",
36
37
  "@typescript-eslint/eslint-plugin": "^8.26.1",
37
38
  "@typescript-eslint/parser": "^8.26.1",
38
39
  "eslint": "^8.19.0",
@@ -12,9 +12,16 @@ export const InjectStyleComponentName = 'inject-style'
12
12
  const injectStyleComponentCode = `
13
13
  const { SingletonPromise } = require('~/singleton-promise.js')
14
14
  Component({
15
+ properties: {
16
+ route: String,
17
+ },
15
18
  lifetimes: {
16
- attached: () => SingletonPromise.loaded("DYNAMIC_PACKAGE_NAME"),
17
- detached: () => SingletonPromise.unloaded("DYNAMIC_PACKAGE_NAME")
19
+ attached: function () {
20
+ return SingletonPromise.loaded({dynamicPackageName:"DYNAMIC_PACKAGE_NAME",pageRoute:this.data.route})
21
+ },
22
+ detached: function () {
23
+ return SingletonPromise.unloaded({dynamicPackageName:"DYNAMIC_PACKAGE_NAME",pageRoute:this.data.route})
24
+ }
18
25
  }
19
26
  })
20
27
  `
@@ -1,8 +1,11 @@
1
+ interface Opt {
2
+ dynamicPackageName: string
3
+ pageRoute: string
4
+ }
5
+
1
6
  export class SingletonPromise {
2
7
  // 静态属性存放单例
3
- private static instance?: Record<string, SingletonPromise>
4
-
5
- private loadTimes = 0
8
+ private static instance?: Map<string, Map<string, SingletonPromise>>
6
9
 
7
10
  private promise?: Promise<void>
8
11
 
@@ -12,30 +15,38 @@ export class SingletonPromise {
12
15
  this.resetPromise()
13
16
  }
14
17
 
15
- static getInstance (key:string) {
16
- if (!SingletonPromise.instance) SingletonPromise.instance = {}
17
- if (!SingletonPromise.instance[key]) SingletonPromise.instance[key] = new SingletonPromise()
18
- return SingletonPromise.instance[key]
19
- }
20
-
21
18
  private resetPromise () {
22
19
  this.promise = new Promise<void>((resolve) => {
23
20
  this.resolve = resolve
24
21
  })
25
22
  }
26
23
 
27
- static wait (key:string) {
28
- return this.getInstance(key).promise
24
+ static getInstance (opt: Pick<Opt, 'dynamicPackageName'>) {
25
+ const { dynamicPackageName } = opt
26
+ if (!SingletonPromise.instance) SingletonPromise.instance = new Map()
27
+ if (!SingletonPromise.instance.has(dynamicPackageName)) SingletonPromise.instance.set(dynamicPackageName, new Map())
28
+ return SingletonPromise.instance.get(dynamicPackageName)!
29
+ }
30
+
31
+ static wait (opt: Pick<Opt, 'dynamicPackageName'>) {
32
+ const instance = this.getInstance(opt)
33
+ const currentPages = getCurrentPages()
34
+ return Promise.all(currentPages.map(page => {
35
+ if (!instance.has(page.route)) instance.set(page.route, new SingletonPromise())
36
+ return instance.get(page.route)?.promise
37
+ }))
29
38
  }
30
39
 
31
- static loaded (key:string) {
32
- this.getInstance(key).resolve?.()
33
- this.getInstance(key).loadTimes += 1
40
+ static loaded (opt: Opt) {
41
+ const { pageRoute } = opt
42
+ const instance = this.getInstance(opt)
43
+ if (!instance.has(pageRoute)) instance.set(pageRoute, new SingletonPromise())
44
+ instance.get(pageRoute)?.resolve?.()
34
45
  }
35
46
 
36
- static unloaded (key:string) {
37
- this.getInstance(key).loadTimes -= 1
38
- if (this.getInstance(key).loadTimes > 0) return
39
- this.getInstance(key).resetPromise()
47
+ static unloaded (opt: Opt) {
48
+ const { pageRoute } = opt
49
+ const instance = this.getInstance(opt)
50
+ instance.delete(pageRoute)
40
51
  }
41
52
  }
@@ -13,7 +13,7 @@ export const transformPagesWXml = (opts: Opts) => {
13
13
 
14
14
  const curAppConfig: AppConfig = JSON.parse(assets[appConfigAssetKey].source() as string)
15
15
 
16
- const pagesPath = (() => {
16
+ const pageWXmlPaths = (() => {
17
17
  const { pages = [], subpackages, subPackages, tabBar } = curAppConfig
18
18
  const tabBarPagePaths = tabBar?.list?.map((item) => item.pagePath) || []
19
19
  const curSubPackages = subPackages || subpackages || []
@@ -24,11 +24,11 @@ export const transformPagesWXml = (opts: Opts) => {
24
24
  return [...pages, ...tabBarPagePaths, ...subPackagePagePaths].map((item) => `${item}.wxml`)
25
25
  })()
26
26
 
27
- const asyncComponentCode = Object.keys(asyncComponents).map((item) => `<${item}/>`)
28
-
29
27
  Object.keys(assets).forEach((assetPath) => {
30
- if (!pagesPath.includes(assetPath)) return
28
+ if (!pageWXmlPaths.includes(assetPath)) return
31
29
  const source = assets[assetPath].source() as string
30
+ const pageRoute = assetPath.replace(/\.wxml$/, '')
31
+ const asyncComponentCode = Object.keys(asyncComponents).map((item) => `<${item} route="${pageRoute}"/>`)
32
32
  const tempCode = [source, ...asyncComponentCode].join('\n')
33
33
  assets[assetPath] = new RawSource(tempCode)
34
34
  })
@@ -175,7 +175,7 @@ loadStylesheet = function (chunkId) {
175
175
  const dynamicPackageNameRegex = DYNAMIC_PACKAGE_NAME_REGEX;
176
176
  const [,dynamicPackageName] = fullHref.match(dynamicPackageNameRegex) || [];
177
177
  const { SingletonPromise } = require('~/singleton-promise.js');
178
- return SingletonPromise.wait(dynamicPackageName)
178
+ return SingletonPromise.wait({ dynamicPackageName })
179
179
  }
180
180
  `
181
181
 
package/tsconfig.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "forceConsistentCasingInFileNames": true,
15
15
  "jsx": "react",
16
16
  "lib": ["esnext", "dom"],
17
- "types": ["@types/node"]
17
+ "types": ["@types/node","@types/wechat-miniprogram"]
18
18
  },
19
19
  "include": ["src"]
20
20
  }