@embroider/core 1.6.0 → 1.7.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.
- package/package.json +3 -3
- package/src/app.js +5 -1
- package/src/app.js.map +1 -1
- package/src/atomic-write.d.ts +1 -0
- package/src/atomic-write.js +18 -0
- package/src/atomic-write.js.map +1 -0
- package/src/babel-plugin-adjust-imports.js +1 -1
- package/src/babel-plugin-adjust-imports.js.map +1 -1
- package/src/babel-plugin-inline-hbs-deps-node.js +5 -1
- package/src/babel-plugin-inline-hbs-deps-node.js.map +1 -1
- package/src/babel-plugin-inline-hbs-deps.js +4 -1
- package/src/babel-plugin-inline-hbs-deps.js.map +1 -1
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/template-compiler-common.js +11 -3
- package/src/template-compiler-common.js.map +1 -1
- package/src/write-template-compiler.d.ts +6 -0
- package/src/write-template-compiler.js +24 -0
- package/src/write-template-compiler.js.map +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embroider/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A build system for EmberJS applications.",
|
|
6
6
|
"repository": {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"@babel/plugin-transform-runtime": "^7.14.5",
|
|
38
38
|
"@babel/runtime": "^7.14.5",
|
|
39
39
|
"@babel/traverse": "^7.14.5",
|
|
40
|
-
"@embroider/macros": "1.
|
|
41
|
-
"@embroider/shared-internals": "1.
|
|
40
|
+
"@embroider/macros": "1.7.0",
|
|
41
|
+
"@embroider/shared-internals": "1.7.0",
|
|
42
42
|
"assert-never": "^1.2.1",
|
|
43
43
|
"babel-import-util": "^1.1.0",
|
|
44
44
|
"babel-plugin-ember-template-compilation": "^1.0.0",
|
package/src/app.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/src/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAQqC;AAErC,mDAA0C;AAC1C,sDAA8B;AAC9B,2DAA6C;AAC7C,uCAAsG;AACtG,+BAAkE;AAClE,yCAAyC;AACzC,2DAAmC;AACnC,6DAAqC;AACrC,8DAAqC;AACrC,6CAAiD;AAEjD,gEAAuC;AACvC,kFAAoD;AAEpD,qDAA0D;AAE1D,mEAAuD;AAKvD,qDAAqD;AACrD,2CAA0E;AAC1E,iEAAyC;AACzC,iEAAyC;AACzC,iEAAyC;AAEzC,yCAAkE;AAClE,gFAAgD;AAChD,iFAAiE;AA2GjE,SAAgB,eAAe,CAAC,KAAe;IAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC;AAFD,0CAEC;AAEY,QAAA,oBAAoB,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,+DAA+D,CAAC;IACtF,OAAO,EAAE,IAAA,uBAAY,EAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC,OAAO;CAC9D,CAAC;AAEF,SAAgB,iBAAiB,CAAC,WAA6B;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACxE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,4BAAoB,CAAC,IAAI,CAAC,GAAG,4BAAoB,CAAC,OAAO,CAAC;QAElE,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE;YACxC,IAAI,oBAA4B,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBAC1D,oBAAoB,GAAG,MAAM,CAAC,CAAC,CAAW,CAAC;aAC5C;iBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACrC,oBAAoB,GAAG,MAAM,CAAC;aAC/B;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,iEAAiE,MAAM,EAAE,CAAC,CAAC;aAC5F;YAED,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAA,iCAAsB,EAAC,oBAAoB,CAAC,CAAC;SAC9E;QAED,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB,4BAAoB,CAAC,IAAI;YACzB;gBACE,OAAO;aACR;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAzBD,8CAyBC;AAED,MAAM,gBAAgB;IAMpB,YAAY,KAAiB;QAL7B,SAAI,GAAmB,cAAc,CAAC;QAMpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,8BAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;IACpF,CAAC;CACF;AAED,MAAM,eAAe;IAMnB,YAAY,KAAuB;QALnC,SAAI,GAAkB,aAAa,CAAC;QAMlC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACzC,CAAC;CACF;AAED,MAAM,iBAAiB;IAErB,YACS,YAAoB,EACpB,OAAwC,EACvC,oBAA4B;QAF7B,iBAAY,GAAZ,YAAY,CAAQ;QACpB,YAAO,GAAP,OAAO,CAAiC;QACvC,yBAAoB,GAApB,oBAAoB,CAAQ;QAJtC,SAAI,GAAyB,oBAAoB,CAAC;IAK/C,CAAC;IACJ,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC;IAC3E,CAAC;CACF;AAID,MAAa,UAAU;IAIrB,YACU,IAAY,EACZ,GAAY,EACZ,OAA8B,EAC9B,OAA0B,EAC1B,YAA0B;QAJ1B,SAAI,GAAJ,IAAI,CAAQ;QACZ,QAAG,GAAH,GAAG,CAAS;QACZ,YAAO,GAAP,OAAO,CAAuB;QAC9B,YAAO,GAAP,OAAO,CAAmB;QAC1B,iBAAY,GAAZ,YAAY,CAAc;QARpC,0DAA0D;QAClD,WAAM,GAA+B,IAAI,GAAG,EAAE,CAAC;QASrD,oEAAoE;QACpE,0EAA0E;QAC1E,gCAAgC;QAChC,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,EAAE;YAC1D,sEAAsE;YACtE,0EAA0E;YAC1E,6BAA6B;YAC7B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,GAAY;QACjC,QAAQ,GAAG,CAAC,IAAI,EAAE;YAChB,KAAK,WAAW;gBACd,OAAO,CAAC,CAAC;YACX,KAAK,cAAc;gBACjB,OAAO,EAAE,CAAC;YACZ;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;IAGD,IAAY,2BAA2B;QACrC,OAAO,IAAA,oCAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACrF,CAAC;IAEO,aAAa,CACnB,IAA8B,EAC9B,MAAc,EACd,QAAmB;QAEnB,IAAI,MAAM,GAAoC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CACrF,CAAC,UAAkB,EAAe,EAAE;YAClC,IAAI,KAAK,GAAG,IAAA,mBAAQ,EAAC,UAAU,CAAC,CAAC;YACjC,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,IAAA,mCAAgB,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;gBACrD,UAAU;gBACV,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,IAAI,IAAI,KAAK,kBAAkB,EAAE;YAC/B,MAAM,CAAC,OAAO,CAAC;gBACb,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,qBAAqB;gBACnC,MAAM,EAAE,yBAAyB;aAClC,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC;gBACb,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,gBAAgB;gBAC9B,MAAM,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG;aAChE,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,aAAa;gBAC3B,MAAM,EAAE,iCAAiC;aAC1C,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,KAAK,uBAAuB,EAAE;YACpC,iDAAiD;YACjD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,qBAAqB;gBACnC,MAAM,EAAE;;;;UAIN;aACH,CAAC,CAAC;YAEH,8DAA8D;YAC9D,oEAAoE;YACpE,WAAW;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,EAAE;gBACxG,MAAM,CAAC,OAAO,CAAC;oBACb,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,4DAA4D,CAAC;oBACzF,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,CAAC;oBACP,YAAY,EAAE,kCAAkC;iBACjD,CAAC,CAAC;aACJ;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,IAA8B,EAAE,MAAc;QACvE,IAAI,MAAM,GAAkB,EAAE,CAAC;QAC/B,KAAK,IAAI,KAAK,IAAI,IAAA,gBAAM,EAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YACnF,IAAI,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,eAAe,EAAE;gBACnB,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtC,KAAK,IAAI,GAAG,IAAI,eAAe,EAAE;oBAC/B,IAAI,IAAI,KAAK,iBAAiB,EAAE;wBAC9B,qEAAqE;wBACrE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE;4BACzB,MAAM,CAAC,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;yBACzC;qBACF;yBAAM;wBACL,MAAM,CAAC,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;qBACzC;iBACF;gBACD,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjB,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;iBACjC;aACF;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,8BAA8B;IAEtB,iBAAiB;QACvB,IAAI,KAAK,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;SACpB;QAED,0EAA0E;QAC1E,iCAAiC;QACjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAGO,WAAW,CAAC,sBAAkD,EAAE,QAAkB;QACxF,IAAI,KAAK,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;SACpB;QAED,0EAA0E;QAC1E,iCAAiC;QACjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAE3E,kDAAkD;QAClD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAE/D,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,yBAAyB,EAAE;YACjE,yEAAyE;YACzE,2CAA2C;YAC3C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAA,WAAI,EAAC,SAAS,EAAE,iCAAiC,CAAC;gBAClD;oBACE,gBAAgB,EAAE,sBAAsB;oBACxC,KAAK,EAAE,CAAC;iBACY;aACvB,CAAC,CAAC;SACJ;aAAM;YACL,uEAAuE;YACvE,0EAA0E;YAC1E,sEAAsE;YACtE,gBAAgB;YAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAA,WAAI,EAAC,SAAS,EAAE,6CAA6C,CAAC;gBAC9D,EAAE,gBAAgB,EAAE,sBAAsB,EAAE;aAC7C,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjB,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC;gBAC1D;oBACE,eAAe,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,6CAA6C,CAAC;iBACrD;aAC7B,CAAC,CAAC;SACJ;QAED,kEAAkE;QAClE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAE7D,IAAI,iBAAiB,GAAsB;YACzC,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,4DAA4D,CAAC;YAC7E,iBAAiB;SAClB,CAAC,CAAC;QAEH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEvD,sDAAsD;QACtD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC;YAClD,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;SACvE,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAA,oCAAY,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACjF,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,mBAAmB,CAAC,OAAiB;QAC3C,IAAI,cAAc,GAA2C,EAAE,CAAC;QAChE,KAAK,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE;YAC1C,KAAK,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE;gBAChE,cAAc,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;aAClF;SACF;QACD,IAAI,kBAAkB,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QAClE,IAAA,wBAAa,EAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO;YACL,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC;YAChD;gBACE,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBACjE,kBAAkB;aACnB;SACF,CAAC;IACJ,CAAC;IAEO,cAAc,CACpB,KAAuB,EACvB,QAAkB,EAClB,QAAoC,EACpC,QAAkB;QAElB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,mFAAmF;YACnF,aAAa;YACb,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACxE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7B,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;SACJ;QAED,2EAA2E;QAC3E,gEAAgE;QAChE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE;YACjC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC/E;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,qEAAqE;YACrE,4CAA4C;YAC5C,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBACpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;aAC3E;SACF;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC;QAEjE,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAW,CAAC;QAC7D,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC3E,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;SACnE;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,wDAAwD;YACxD,kEAAkE;YAClE,kCAAkC;YAClC,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;gBACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;aAChF;SACF;QAED,IAAI,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtE,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE;YACjC,OAAO;SACR;QAED,8CAA8C;QAE9C,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnF,IAAI,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACrF,IAAI,wBAAwB,EAAE;YAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,YAAY,CAAC,CAAC;SACvF;QAED,IAAI,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnF,IAAI,uBAAuB,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,YAAY,CAAC,CAAC;SACrF;IACH,CAAC;IAEO,oBAAoB,CAC1B,QAAoC,EACpC,WAAmB,EACnB,QAAkB;QAElB,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,KAAK,GAAG,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,eAAe,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACrG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACzC;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB,CAAC,QAAoC,EAAE,WAAmB;QACnF,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YACxE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,mEAAmE;gBACnE,KAAK,GAAG,IAAI,iBAAiB,CAAC,mBAAmB,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC/G,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACzC;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,wBAAwB,CAC9B,QAAoC,EACpC,WAAmB;QAEnB,IAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;YACnF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClC,aAAa,GAAG,IAAI,iBAAiB,CACnC,wBAAwB,EACxB,mBAAmB,EACnB,IAAI,CAAC,2BAA2B,CACjC,CAAC;gBACF,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;aACzD;SACF;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,uBAAuB,CAC7B,QAAoC,EACpC,WAAmB;QAEnB,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;YACjF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,KAAK,GAAG,IAAI,iBAAiB,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC/G,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACzC;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,8EAA8E;IAC9E,sEAAsE;IACtE,0BAA0B;IAClB,gBAAgB,CAAC,GAAY,EAAE,MAAqB,EAAE,OAAO,GAAG,KAAK;QAC3E,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;YACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;gBACrB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;aAC5C;YACD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,0FAA0F;QAC1F,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,CACrB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC/B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CACH,CAAC;SACH;IACH,CAAC;IAEO,gBAAgB,CAAC,SAAiB;QACxC,IAAI,KAAK,GAAoB;YAC3B;gBACE,OAAO,EAAE,IAAI,CAAC,GAAG;gBACjB,MAAM,EAAE,IAAI,GAAG,EAAE;gBACjB,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,eAAe,EAAE,GAAG;aACrB;SACF,CAAC;QACF,IAAI,IAAI,GAAoB,EAAE,CAAC;QAC/B,IAAI,WAAW,GAAiB,IAAI,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAI,EAAE;YACX,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM;aACP;YACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC/C,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC;wBACT,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI,GAAG,EAAE;wBACjB,MAAM,EAAE,OAAO;wBACf,UAAU,EAAE,IAAA,kCAAiB,EAAC,KAAK,CAAC;wBACpC,QAAQ,EAAE,KAAK,CAAC,IAAI;wBACpB,YAAY,EAAE,KAAK,CAAC,IAAI;wBACxB,eAAe,EAAE,IAAA,mCAAgB,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;qBACzD,CAAC,CAAC;iBACJ;aACF;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACpB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;IAC/F,CAAC;IAGD,IAAY,cAAc;QAGxB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,wGAAwG;YACxG,IAAI,WAAW,GAAG,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;YAC7F,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;YAC5E,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACzC,gBAAgB,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAClE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;SACzD;IACH,CAAC;IAIO,WAAW,CAAC,UAAkC;QACpD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,MAAiB,CAAC;gBACtB,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,MAAM,GAAG,IAAI,oBAAS,CACpB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAClB,IAAI,EACJ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACzC,IAAI,CAAC,iBAAiB,EAAE,CACzB,CAAC;iBACH;qBAAM;oBACL,MAAM,GAAG,IAAI,oBAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;iBAChF;gBACD,OAAO;oBACL,MAAM;oBACN,MAAM;iBACP,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;QACD,2EAA2E;QAC3E,sEAAsE;QACtE,4EAA4E;QAC5E,IAAI,CAAC,UAAU;aACZ,KAAK,EAAE;aACP,OAAO,EAAE;aACT,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjC,QAAQ,EAAE,IAAI,oBAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;aACnG,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAY,EAAE,QAAkB,EAAE,QAAoC,EAAE,QAAkB;QAC7G,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAChD,IAAI,MAAwB,CAAC;YAC7B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC9E,+BAA+B;gBAC/B,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;aACrB;iBAAM;gBACL,MAAM,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1D,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;SAC/D;aAAM;YACL,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;SACzC;IACH,CAAC;IAEO,aAAa,CAAC,eAAwB,EAAE,QAAkB,EAAE,QAAkB;QACpF,IAAI,QAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;QACrD,KAAK,IAAI,KAAK,IAAI,eAAe,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACxD;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,YAAY,CAAC,KAAoB,EAAE,KAAgC;QACzE,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,KAAK,CAAC;SACd;QACD,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;YAC9F,KAAK,WAAW;gBACd,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACvF,KAAK,aAAa;gBAChB,OAAO,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;YACvE,KAAK,oBAAoB;gBACvB,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,oBAAoB;oBACnC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM;oBAC7C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;wBACvC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACnC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAC/C,CAAC,CAAC,CACH,CAAC;SACL;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAkB;QAC1C,IAAI,WAAW,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACtD,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC,CAAC;QACpC,IAAA,mBAAQ,EAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,IAAI,WAAW,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACtD,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC,CAAC;QACpC,IAAA,wBAAa,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAEO,qBAAqB,CAAC,KAAsB;QAClD,IAAI,WAAW,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACtD,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC,CAAC;QACpC,IAAA,wBAAa,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,KAAwB;QAC5D,IAAI,MAAM,GAAG,IAAI,+BAAe,CAAC;YAC/B,UAAU,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC;YAC/C,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YACrE,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE;YACtC,IAAI,aAAa,GAAG,CAAC,wDAAa,kBAAkB,GAAC,CAAC,CAAC,OAAO,CAAC;YAC/D,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACnE;QACD,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;YAChC,QAAQ,MAAM,CAAC,IAAI,EAAE;gBACnB,KAAK,SAAS;oBACZ,MAAM,CAAC,OAAO,CAAC,IAAA,mCAAgB,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC/D,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;wBACrC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;qBAC9E;oBACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/B,MAAM;gBACR;oBACE,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;aACvB;SACF;QACD,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,eAAwB,EAAE,QAAkB,EAAE,QAAkB;QACzF,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrE,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;YACjC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE;gBACjE,SAAS;aACV;YACD,IAAA,gBAAK,EAAC,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3C,QAAQ,KAAK,CAAC,IAAI,EAAE;gBAClB,KAAK,SAAS;oBACZ,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC9B,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,aAAa;oBAChB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM;gBACR,KAAK,oBAAoB;oBACvB,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM;gBACR;oBACE,IAAA,sBAAW,EAAC,KAAK,CAAC,CAAC;aACtB;SACF;QACD,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACtC,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;aACpD;SACF;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC;IAEO,YAAY,CAAC,UAAkC;QACrD,4CAA4C;QAC5C,IAAI,MAAM,GAAY,EAAE,CAAC;QACzB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC5C,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;gBAC7B,KAAK,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE;oBACtF,IAAI,UAAU,GAAG,IAAA,cAAW,EAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACjD,IAAI,KAAK,GAAG,IAAA,mBAAQ,EAAC,UAAU,CAAC,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,SAAS;wBACf,UAAU;wBACV,YAAY,EAAE,cAAc;wBAC5B,KAAK,EAAE,KAAK,CAAC,OAAO;wBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;qBACjB,CAAC,CAAC;iBACJ;aACF;SACF;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,MAAM,GAAG;;;;;;;WAOV,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,MAAM;gBACN,YAAY,EAAE,0CAA0C;aACzD,CAAC,CAAC;SACJ;QAED,mDAAmD;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,UAAkC;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,YAAY,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;SACvC;QACD,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;SACrD;QAED,4EAA4E;QAC5E,2DAA2D;QAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAE7B,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEjC,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,+FAA+F;YAC/F,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACjC;QAED,KAAK,IAAI,KAAK,IAAI,WAAW,EAAE;YAC7B,yEAAyE;YACzE,sEAAsE;YACtE,OAAO;YACP,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE;gBACvC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;aACtC;SACF;QAED,IAAI,IAAI,GAAY;YAClB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE;gBACL,QAAQ,EAAE,mBAAmB;gBAC7B,cAAc,EAAE,WAAW,CAAC,cAAc;gBAC1C,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;gBAC9C,UAAU,EAAE,mBAAmB;aAChC;YACD,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,oBAAoB;YACjF,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;SACnC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE;YAClC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;SAC9B;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAA,wBAAa,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvF,CAAC;IAEO,kBAAkB,CAAC,IAAa;QACtC,IAAI,SAAS,GAAU,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAI,cAAc,EAAE;YAClB,uFAAuF;YACvF,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SAC5C;QACD,6DAA6D;QAC7D,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,kBAAkB,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1C,CAAC;IAEO,gBAAgB,CAAC,MAAgB;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;SAClB;QACD,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,mBAAY,CAAC,UAAU,EAAE,CAAC;QACrE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,KAAK,IAAI,WAAW,IAAI,YAAY,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC/B;QAED,MAAM,YAAY,GAAG,iBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/F,MAAM,gBAAgB,GAAG,IAAA,8CAAe,EAAC,YAAY,CAAC,CAAC,QAAQ,CAAC;QAEhE,OAAO;YACL,OAAO;YACP,YAAY;YACZ,gBAAgB;YAChB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YACzC,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;IAGD,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/B,MAAM,GAAG,IAAA,WAAI,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC;iBACvC;gBACD,MAAM,GAAG,iBAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAA,cAAO,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC7D;YAED,OAAO;gBACL,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,IAAA,iCAAsB,EAAC,MAAM,CAAC;aAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,OAA8D;QACnF,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC3B,IAAA,eAAI,EAAC,sEAAsE,CAAC,CAAC;SAC9E;QACD,IAAA,wBAAa,EACX,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACpC,oBAAoB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAC7D,MAAM,CACP,CAAC;QACF,IAAA,wBAAa,EACX,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACpC,mBAAmB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAC9E,MAAM,CACP,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,SAAiB;QACxC,OAAO,CACL,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;YAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,OAAO,OAAO,KAAK,SAAS,CAAC;iBAC9B;qBAAM;oBACL,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAChC;YACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,UAAU,CAChB,SAAiB,EACjB,KAAiB,EACjB,WAA0D,EAC1D,aAA8D;QAE9D,IAAI,WAAW,GAAG,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;QAExC,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,IAAI,WAAW,EAAE;gBACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC9B,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aACzB;iBAAM;gBACL,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;aACxC;SACF;QAED,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,IAAI,WAAW,EAAE;gBACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAChC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aACzB;iBAAM;gBACL,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;aAC1C;SACF;QAED,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,IAAI,WAAW,EAAE;gBACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3B,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aACzB;iBAAM;gBACL,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;aACrC;SACF;QAED,KAAK,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClD,IAAI,CAAC,UAAU,CACb,GAAG,SAAS,IAAI,SAAS,EAAE,EAC3B,UAAU,EAEV,CAAC,cAAsB,EAAE,SAAiB,EAAE,EAAE;gBAC5C,0CAA0C;gBAC1C,IAAI,WAAW,EAAE;oBACf,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACzB,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;iBAC9B;qBAAM;oBACL,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;iBACxC;YACH,CAAC,EACD,CAAC,UAAoB,EAAE,KAAe,EAAE,EAAE;gBACxC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC,CACF,CAAC;SACH;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,aAAa,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;SACxC;IACH,CAAC;IAEO,aAAa,CAAC,OAAiB,EAAE,QAAoC;QAC3E,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC;QACrC,IAAI,YAAY,GAAG,UAAU,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE;YAChE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC/B,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;YAC9D,UAAU,EAAE,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9E,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAGD,IAAY,qBAAqB;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,OAAO,IAAI,MAAM,CACf,MAAM;gBACJ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,IAAA,8BAAY,EAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,UAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3G,QAAQ;gBACR,UAAG;gBACH,GAAG,CACN,CAAC;SACH;IACH,CAAC;IAEO,kBAAkB,CAAC,QAAkB;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACzC,IAAI,OAAO,EAAE;YACX,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACvC,OAAO,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,QAAQ,CAAC,aAAa,CAAC;SAC/B;IACH,CAAC;IAEO,UAAU,CAChB,YAAoB,EACpB,MAAc,EACd,YAAsB,EACtB,QAAoC,EACpC,WAA0D;QAE1D,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC1B,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC;SACf;QAED,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,IAAI,gBAAgB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAClC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC/B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YACjC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC3C;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,wGAAwG;QACxG,4CAA4C;QAC5C,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE;YAClD,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACnE,KAAK,IAAI,KAAK,IAAI,cAAc,EAAE;gBAChC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,IAAA,mCAAgB,EAAC,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC;iBAC9D,CAAC,CAAC;aACJ;YAED,IAAI,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAiB,CAAC;YAClD,IAAI,UAAU,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE;gBAC/C,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE;oBAC/C,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,YAAY,CAAC,EAAE,IAAA,WAAI,EAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;qBACnF,CAAC,CAAC;iBACJ;aACF;SACF;QAED,IAAI,WAAW,GAAwC,EAAE,CAAC;QAC1D,KAAK,IAAI,WAAW,IAAI,YAAY,EAAE;YACpC,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CACzB,mBAAmB,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EACpE,WAAW,EACX,EAAE,EACF,QAAQ,CACT,CAAC;YACF,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE;gBACtC,WAAW,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjC,IAAI,EAAE,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,YAAY,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;iBAClE,CAAC,CAAC;aACJ;iBAAM;gBACL,YAAY,CAAC,IAAI,CAAC,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,YAAY,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;aAChF;SACF;QACD,IAAI,UAAU,GAAwC,EAAE,CAAC;QACzD,KAAK,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE;YAChE,IAAI,CAAC,UAAU,CACb,SAAS,EACT,UAAU,EACV,CAAC,CAAS,EAAE,QAAgB,EAAE,EAAE;gBAC9B,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpC,CAAC,EACD,CAAC,UAAoB,EAAE,KAAe,EAAE,EAAE;gBACxC,IAAI,eAAe,GAAG,kBAAkB,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC/E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;oBAClC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;iBACrF;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,SAAS;iBACxE,CAAC,CAAC;YACL,CAAC,CACF,CAAC;SACH;QAED,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,mBAAS,EAAC,eAAe,CAAC,IAAA,iBAAO,EAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CACzF,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAClC,CAAC;QACF,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QACvF,IAAI,sBAAsB,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhG,0EAA0E;QAC1E,WAAW;QACX,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEjF,IAAI,MAAM,GAAG,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QACnG,IAAI,WAAW,EAAE;YACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;SACpC;QAED,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,KAAK,GAAkB;YACzB,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,YAAY;SACb,CAAC;QACF,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,kBAA0B,EAAE,QAAgB;QAC9E,IAAI,eAAe,GAAG,IAAA,WAAI,EAAC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QACvE,IAAI,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnG,OAAO;YACL,OAAO,EAAE,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,EAAE;YAC1C,SAAS,EAAE,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;SAChE,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,YAAoB,EAAE,KAAe;QAC3E,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,mBAAS,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjG,IAAI,KAAK,GAAkB;YACzB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,kBAAkB,CAAC;gBACzB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;gBACtE,iBAAiB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;aAChF,CAAC;YACF,YAAY;SACb,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CAAC,OAAiB,EAAE,QAAoC;QAC9E,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,yEAAyE;QACzE,4EAA4E;QAC5E,WAAW;QACX,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAExB,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAEhC,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,sEAAsE;QACtE,qBAAqB;QACrB,IAAI,YAAY,GAAa;YAC3B,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC;SACtF,CAAC;QAEF,IAAI,UAAU,GAA6C,EAAE,CAAC;QAC9D,0EAA0E;QAC1E,wBAAwB;QACxB,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEhF,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC1B,KAAK,IAAI,YAAY,IAAI,QAAQ,CAAC,KAAK,EAAE;YACvC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;SACjE;QAED,IAAI,MAAM,GAAG,aAAa,CAAC;YACzB,UAAU;YACV,YAAY;YACZ,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,KAAK,GAAG;YACN,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,qBAAqB,CAC3B,OAAqD,EACrD,UAAkB,EAClB,MAAc,EACd,WAAqD;QAErD,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;YAC/B,IAAI,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,eAAe,EAAE;gBACnB,IAAI,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACzF,KAAK,IAAI,IAAI,IAAI,eAAe,EAAE;oBAChC,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;oBAE7B,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;wBACrB,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;wBACjD,IAAI,WAAW,EAAE;4BACf,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gCACnD,IAAI,KAAK,KAAK,KAAM,CAAC,IAAI,EAAE;oCACzB,WAAW,GAAG,GAAG,CAAC;iCACnB;4BACH,CAAC,CAAC,CAAC;yBACJ;qBACF;oBAED,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;oBACpF,IAAI,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxD,IAAI,cAAc,IAAI,cAAc,CAAC,mBAAmB,CAAC,EAAE;wBACzD,OAAO,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;qBAC/C;oBACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvC,WAAW,CAAC,IAAI,CAAC;wBACf,OAAO;wBACP,SAAS,EACP,IAAI,CAAC,OAAO,CAAC,uBAAuB,KAAK,cAAc;4BACrD,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,IAAI,CAAC;4BACzB,CAAC,CAAC,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,IAAA,WAAI,EAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBACrF,CAAC,CAAC;iBACJ;aACF;SACF;IACH,CAAC;CACF;AAhkCC;IADC,IAAA,4BAAO,GAAE;6DAGT;AAiGD;IADC,IAAA,4BAAO,GAAE;mDAYT;AAGD;IADC,IAAA,4BAAO,GAAE;6CAiET;AA0ND;IADC,IAAA,4BAAO,GAAE;gDAGT;AAGD;IADC,IAAA,4BAAO,GAAE;gDAYT;AAiTD;IADC,IAAA,4BAAO,GAAE;+CAkBT;AAyGD;IADC,IAAA,4BAAO,GAAE;uDAWT;AA6HD;IADC,IAAA,4BAAO,GAAE;8CAGT;AAj/BH,gCAkmCC;AAED,MAAM,aAAa,GAAG,IAAA,uBAAO,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwE7B,CAYW,CAAC;AAEb,MAAM,kBAAkB,GAAG,IAAA,uBAAO,EAAC;;;;;;;;;;;;;;CAclC,CAGW,CAAC;AAEb,SAAS,mBAAmB,CAAC,CAAkB,EAAE,CAAkB;IACjE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAClD,OAAO,CAAC,KAAK,CAAC,CAAC;KAChB;IACD,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,YAAY,MAAM,EAAE;QAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;KACnC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAA,uBAAO,EAAC;kCACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;CAE9E,CAA6E,CAAC;AAE/E,8EAA8E;AAC9E,+EAA+E;AAC/E,0BAA0B;AAC1B,SAAS,qBAAqB,CAAC,IAA0B,EAAE,UAAkB;IAC3E,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,IAAI,OAAO,EAAE;QACX,IAAI,QAAQ,GAAG,EAAgC,CAAC;QAChD,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACnD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SAC1E;QACD,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAG,MAAgB;IAC7C,SAAS,MAAM,CAAC,QAAa,EAAE,QAAa,EAAE,GAAW,EAAE,OAAY,EAAE,OAAY,EAAE,KAAuB;QAC5G,IAAI,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;YAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC3B,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAClC;SACF;IACH,CAAC;IACD,OAAO,IAAA,mBAAS,EAAC,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["import {\n AddonMeta,\n AppMeta,\n Package,\n AddonPackage,\n explicitRelative,\n extensionsPattern,\n PackageInfo,\n} from '@embroider/shared-internals';\nimport { OutputPaths } from './wait-for-trees';\nimport { compile } from './js-handlebars';\nimport resolve from 'resolve';\nimport { Memoize } from 'typescript-memoize';\nimport { copySync, ensureDirSync, readJSONSync, statSync, unlinkSync, writeFileSync } from 'fs-extra';\nimport { dirname, join, resolve as resolvePath, sep } from 'path';\nimport { debug, warn } from './messages';\nimport sortBy from 'lodash/sortBy';\nimport flatten from 'lodash/flatten';\nimport AppDiffer from './app-differ';\nimport { PreparedEmberHTML } from './ember-html';\nimport { Asset, EmberAsset, ImplicitAssetPaths, InMemoryAsset, OnDiskAsset } from './asset';\nimport assertNever from 'assert-never';\nimport SourceMapConcat from 'fast-sourcemap-concat';\nimport Options from './options';\nimport { MacrosConfig } from '@embroider/macros/src/node';\nimport { PluginItem, TransformOptions } from '@babel/core';\nimport { makePortable } from './portable-babel-config';\nimport { TemplateCompilerPlugins } from '.';\nimport type { NodeTemplateCompilerParams } from './template-compiler-node';\nimport { Resolver } from './resolver';\nimport { Options as AdjustImportsOptions } from './babel-plugin-adjust-imports';\nimport { mangledEngineRoot } from './engine-mangler';\nimport { AppFiles, Engine, EngineSummary, RouteFiles } from './app-files';\nimport partition from 'lodash/partition';\nimport mergeWith from 'lodash/mergeWith';\nimport cloneDeep from 'lodash/cloneDeep';\nimport type { Params as InlineBabelParams } from './babel-plugin-inline-hbs-node';\nimport { PortableHint, maybeNodeModuleVersion } from './portable';\nimport escapeRegExp from 'escape-string-regexp';\nimport { getEmberExports } from './load-ember-template-compiler';\nimport type { Options as InlinePrecompileOptions } from 'babel-plugin-ember-template-compilation';\nimport type { Options as ColocationOptions } from '@embroider/shared-internals/src/template-colocation-plugin';\n\nexport type EmberENV = unknown;\n\n/*\n This interface is the boundary between the general-purpose build system in\n AppBuilder and the messy specifics of apps.\n\n - CompatAppAdapter in `@embroider/compat` implements this interface for\n building based of a legacy ember-cli EmberApp instance\n - We will want to make a different class that implements this interface for\n building apps that don't need an EmberApp instance at all (presumably\n because they opt into new authoring standards.\n*/\nexport interface AppAdapter<TreeNames> {\n // the set of all addon packages that are active (recursive)\n readonly allActiveAddons: AddonPackage[];\n\n // the direct active addon dependencies of a given package\n activeAddonChildren(pkg: Package): AddonPackage[];\n\n // path to the directory where the app's own Javascript lives. Doesn't include\n // any files copied out of addons, we take care of that generically in\n // AppBuilder.\n appJSSrcDir(treePaths: OutputPaths<TreeNames>): string;\n\n // path to the directory where the app's own Fastboot-only Javascript lives.\n // Doesn't include any files copied out of addons, we take care of that\n // generically in AppBuilder.\n fastbootJSSrcDir(treePaths: OutputPaths<TreeNames>): string | undefined;\n\n // this is where you declare what assets must be in the final output\n // (especially index.html, tests/index.html, and anything from your classic\n // public tree).\n assets(treePaths: OutputPaths<TreeNames>): Asset[];\n\n // whether the ember app should boot itself automatically\n autoRun(): boolean;\n\n // custom app-boot logic when the autoRun is set to false\n appBoot(): string | undefined;\n\n // the ember app's main module\n mainModule(): string;\n\n // the configuration that will get passed into the ember app's main module.\n // This traditionally comes from the `APP` property returned by\n // config/environment.js.\n mainModuleConfig(): unknown;\n\n // The namespace for the app's own modules at runtime.\n //\n // (For apps, we _do_ still allow this to be arbitrary. This is in contrast\n // with _addons_, which absolutley must use their real NPM package name as\n // their modulePrefix.)\n modulePrefix(): string;\n\n // The module prefix when pods file layout is used\n podModulePrefix(): string | undefined;\n\n // The public URL at which your app will be served.\n rootURL(): string;\n\n // The path to ember's template compiler source\n templateCompilerPath(): string;\n\n // Path to a build-time Resolver module to be used during template\n // compilation.\n templateResolver(): Resolver;\n\n // describes the special module naming rules that we need to achieve\n // compatibility\n adjustImportsOptions(): AdjustImportsOptions;\n\n adjustImportsOptionsPath(): string;\n\n // The template preprocessor plugins that are configured in the app.\n htmlbarsPlugins(): TemplateCompilerPlugins;\n\n // the app's preferred babel config. No need to worry about making it portable\n // yet, we will do that for you.\n babelConfig(): TransformOptions;\n\n // the babel version that works with your babelConfig.\n babelMajorVersion(): 7;\n\n // The environment settings used to control Ember itself. In a classic app,\n // this comes from the EmberENV property returned by config/environment.js.\n emberENV(): EmberENV;\n\n // when true, the app's own code is understood to already follow v2 standards.\n // For example, all imports of templates have an explicit `hbs` extension, and\n // all imports of your own package use relative imports instead of you rown\n // name. When false, your code is treated more leniently and you get the\n // auto-upgraded behaviors that v1 addons also get.\n strictV2Format(): boolean;\n\n // list of directories that point to the roots of addon packages that are\n // under active development\n developingAddons(): string[];\n\n // development, test, or production\n env: string;\n}\n\nexport function excludeDotFiles(files: string[]) {\n return files.filter(file => !file.startsWith('.') && !file.includes('/.'));\n}\n\nexport const CACHE_BUSTING_PLUGIN = {\n path: require.resolve('@embroider/shared-internals/src/babel-plugin-cache-busting.js'),\n version: readJSONSync(`${__dirname}/../package.json`).version,\n};\n\nexport function addCachablePlugin(babelConfig: TransformOptions) {\n if (Array.isArray(babelConfig.plugins) && babelConfig.plugins.length > 0) {\n const plugins = Object.create(null);\n plugins[CACHE_BUSTING_PLUGIN.path] = CACHE_BUSTING_PLUGIN.version;\n\n for (const plugin of babelConfig.plugins) {\n let absolutePathToPlugin: string;\n if (Array.isArray(plugin) && typeof plugin[0] === 'string') {\n absolutePathToPlugin = plugin[0] as string;\n } else if (typeof plugin === 'string') {\n absolutePathToPlugin = plugin;\n } else {\n throw new Error(`[Embroider] a babel plugin without an absolute path was from: ${plugin}`);\n }\n\n plugins[absolutePathToPlugin] = maybeNodeModuleVersion(absolutePathToPlugin);\n }\n\n babelConfig.plugins.push([\n CACHE_BUSTING_PLUGIN.path,\n {\n plugins,\n },\n ]);\n }\n}\n\nclass ParsedEmberAsset {\n kind: 'parsed-ember' = 'parsed-ember';\n relativePath: string;\n fileAsset: EmberAsset;\n html: PreparedEmberHTML;\n\n constructor(asset: EmberAsset) {\n this.fileAsset = asset;\n this.html = new PreparedEmberHTML(asset);\n this.relativePath = asset.relativePath;\n }\n\n validFor(other: EmberAsset) {\n return this.fileAsset.mtime === other.mtime && this.fileAsset.size === other.size;\n }\n}\n\nclass BuiltEmberAsset {\n kind: 'built-ember' = 'built-ember';\n relativePath: string;\n parsedAsset: ParsedEmberAsset;\n source: string;\n\n constructor(asset: ParsedEmberAsset) {\n this.parsedAsset = asset;\n this.source = asset.html.dom.serialize();\n this.relativePath = asset.relativePath;\n }\n}\n\nclass ConcatenatedAsset {\n kind: 'concatenated-asset' = 'concatenated-asset';\n constructor(\n public relativePath: string,\n public sources: (OnDiskAsset | InMemoryAsset)[],\n private resolvableExtensions: RegExp\n ) {}\n get sourcemapPath() {\n return this.relativePath.replace(this.resolvableExtensions, '') + '.map';\n }\n}\n\ntype InternalAsset = OnDiskAsset | InMemoryAsset | BuiltEmberAsset | ConcatenatedAsset;\n\nexport class AppBuilder<TreeNames> {\n // for each relativePath, an Asset we have already emitted\n private assets: Map<string, InternalAsset> = new Map();\n\n constructor(\n private root: string,\n private app: Package,\n private adapter: AppAdapter<TreeNames>,\n private options: Required<Options>,\n private macrosConfig: MacrosConfig\n ) {\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n }\n\n private scriptPriority(pkg: Package) {\n switch (pkg.name) {\n case 'loader.js':\n return 0;\n case 'ember-source':\n return 10;\n default:\n return 1000;\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern(): RegExp {\n return extensionsPattern(this.adapter.adjustImportsOptions().resolvableExtensions);\n }\n\n private impliedAssets(\n type: keyof ImplicitAssetPaths,\n engine: Engine,\n emberENV?: EmberENV\n ): (OnDiskAsset | InMemoryAsset)[] {\n let result: (OnDiskAsset | InMemoryAsset)[] = this.impliedAddonAssets(type, engine).map(\n (sourcePath: string): OnDiskAsset => {\n let stats = statSync(sourcePath);\n return {\n kind: 'on-disk',\n relativePath: explicitRelative(this.root, sourcePath),\n sourcePath,\n mtime: stats.mtimeMs,\n size: stats.size,\n };\n }\n );\n\n if (type === 'implicit-scripts') {\n result.unshift({\n kind: 'in-memory',\n relativePath: '_testing_prefix_.js',\n source: `var runningTests=false;`,\n });\n\n result.unshift({\n kind: 'in-memory',\n relativePath: '_ember_env_.js',\n source: `window.EmberENV=${JSON.stringify(emberENV, null, 2)};`,\n });\n\n result.push({\n kind: 'in-memory',\n relativePath: '_loader_.js',\n source: `loader.makeDefaultExport=false;`,\n });\n }\n\n if (type === 'implicit-test-scripts') {\n // this is the traditional test-support-suffix.js\n result.push({\n kind: 'in-memory',\n relativePath: '_testing_suffix_.js',\n source: `\n var runningTests=true;\n if (typeof Testem !== 'undefined' && (typeof QUnit !== 'undefined' || typeof Mocha !== 'undefined')) {\n Testem.hookIntoTestFramework();\n }`,\n });\n\n // whether or not anybody was actually using @embroider/macros\n // explicitly as an addon, we ensure its test-support file is always\n // present.\n if (!result.find(s => s.kind === 'on-disk' && s.sourcePath.endsWith('embroider-macros-test-support.js'))) {\n result.unshift({\n kind: 'on-disk',\n sourcePath: require.resolve('@embroider/macros/src/vendor/embroider-macros-test-support'),\n mtime: 0,\n size: 0,\n relativePath: 'embroider-macros-test-support.js',\n });\n }\n }\n\n return result;\n }\n\n private impliedAddonAssets(type: keyof ImplicitAssetPaths, engine: Engine): string[] {\n let result: Array<string> = [];\n for (let addon of sortBy(Array.from(engine.addons), this.scriptPriority.bind(this))) {\n let implicitScripts = addon.meta[type];\n if (implicitScripts) {\n let styles = [];\n let options = { basedir: addon.root };\n for (let mod of implicitScripts) {\n if (type === 'implicit-styles') {\n // exclude engines because they will handle their own css importation\n if (!addon.isLazyEngine()) {\n styles.push(resolve.sync(mod, options));\n }\n } else {\n result.push(resolve.sync(mod, options));\n }\n }\n if (styles.length) {\n result = [...styles, ...result];\n }\n }\n }\n return result;\n }\n\n // unlike our full config, this one just needs to know how to parse all the\n // syntax our app can contain.\n @Memoize()\n private babelParserConfig(): TransformOptions {\n let babel = cloneDeep(this.adapter.babelConfig());\n\n if (!babel.plugins) {\n babel.plugins = [];\n }\n\n // Our stage3 code is always allowed to use dynamic import. We may emit it\n // ourself when splitting routes.\n babel.plugins.push(require.resolve('@babel/plugin-syntax-dynamic-import'));\n return babel;\n }\n\n @Memoize()\n private babelConfig(templateCompilerParams: NodeTemplateCompilerParams, appFiles: Engine[]) {\n let babel = cloneDeep(this.adapter.babelConfig());\n\n if (!babel.plugins) {\n babel.plugins = [];\n }\n\n // Our stage3 code is always allowed to use dynamic import. We may emit it\n // ourself when splitting routes.\n babel.plugins.push(require.resolve('@babel/plugin-syntax-dynamic-import'));\n\n // https://github.com/webpack/webpack/issues/12154\n babel.plugins.push(require.resolve('./rename-require-plugin'));\n\n if (this.adapter.adjustImportsOptions().emberNeedsModulesPolyfill) {\n // on older ember versions that need the modules-api-polyfill, we use our\n // bespoke inline template compiler plugin.\n babel.plugins.push([\n join(__dirname, 'babel-plugin-inline-hbs-node.js'),\n {\n templateCompiler: templateCompilerParams,\n stage: 3,\n } as InlineBabelParams,\n ]);\n } else {\n // on newer ember versions that don't need the modules-api-polyfill, we\n // can compose with the newer babel-plugin-ember-template-compilation, and\n // use a simpler plugin that only needs to handle inserting discovered\n // dependencies.\n babel.plugins.push([\n join(__dirname, '../src/babel-plugin-inline-hbs-deps-node.js'),\n { templateCompiler: templateCompilerParams },\n ]);\n babel.plugins.push([\n require.resolve('babel-plugin-ember-template-compilation'),\n {\n precompilerPath: join(__dirname, '../src/babel-plugin-inline-hbs-deps-node.js'),\n } as InlinePrecompileOptions,\n ]);\n }\n\n // this is @embroider/macros configured for full stage3 resolution\n babel.plugins.push(...this.macrosConfig.babelPluginConfig());\n\n let colocationOptions: ColocationOptions = {\n packageGuard: true,\n appRoot: this.root,\n };\n babel.plugins.push([\n require.resolve('@embroider/shared-internals/src/template-colocation-plugin'),\n colocationOptions,\n ]);\n\n babel.plugins.push(this.adjustImportsPlugin(appFiles));\n\n // we can use globally shared babel runtime by default\n babel.plugins.push([\n require.resolve('@babel/plugin-transform-runtime'),\n { absoluteRuntime: __dirname, useESModules: true, regenerator: false },\n ]);\n\n const portable = makePortable(babel, { basedir: this.root }, this.portableHints);\n addCachablePlugin(portable.config);\n return portable;\n }\n\n private adjustImportsPlugin(engines: Engine[]): PluginItem {\n let relocatedFiles: AdjustImportsOptions['relocatedFiles'] = {};\n for (let { destPath, appFiles } of engines) {\n for (let [relativePath, originalPath] of appFiles.relocatedFiles) {\n relocatedFiles[join(destPath, relativePath).split(sep).join('/')] = originalPath;\n }\n }\n let relocatedFilesPath = join(this.root, '_relocated_files.json');\n writeFileSync(relocatedFilesPath, JSON.stringify({ relocatedFiles }));\n return [\n require.resolve('./babel-plugin-adjust-imports'),\n {\n adjustImportsOptionsPath: this.adapter.adjustImportsOptionsPath(),\n relocatedFilesPath,\n },\n ];\n }\n\n private insertEmberApp(\n asset: ParsedEmberAsset,\n appFiles: Engine[],\n prepared: Map<string, InternalAsset>,\n emberENV: EmberENV\n ) {\n let html = asset.html;\n\n if (this.fastbootConfig) {\n // ignore scripts like ember-cli-livereload.js which are not really associated with\n // \"the app\".\n let ignoreScripts = html.dom.window.document.querySelectorAll('script');\n ignoreScripts.forEach(script => {\n script.setAttribute('data-fastboot-ignore', '');\n });\n }\n\n // our tests entrypoint already includes a correct module dependency on the\n // app, so we only insert the app when we're not inserting tests\n if (!asset.fileAsset.includeTests) {\n let appJS = this.topAppJSAsset(appFiles, prepared);\n html.insertScriptTag(html.javascript, appJS.relativePath, { type: 'module' });\n }\n\n if (this.fastbootConfig) {\n // any extra fastboot app files get inserted into our html.javascript\n // section, after the app has been inserted.\n for (let script of this.fastbootConfig.extraAppFiles) {\n html.insertScriptTag(html.javascript, script, { tag: 'fastboot-script' });\n }\n }\n\n html.insertStyleLink(html.styles, `assets/${this.app.name}.css`);\n\n const parentEngine = appFiles.find(e => !e.parent) as Engine;\n let vendorJS = this.implicitScriptsAsset(prepared, parentEngine, emberENV);\n if (vendorJS) {\n html.insertScriptTag(html.implicitScripts, vendorJS.relativePath);\n }\n\n if (this.fastbootConfig) {\n // any extra fastboot vendor files get inserted into our\n // html.implicitScripts section, after the regular implicit script\n // (vendor.js) have been inserted.\n for (let script of this.fastbootConfig.extraVendorFiles) {\n html.insertScriptTag(html.implicitScripts, script, { tag: 'fastboot-script' });\n }\n }\n\n let implicitStyles = this.implicitStylesAsset(prepared, parentEngine);\n if (implicitStyles) {\n html.insertStyleLink(html.implicitStyles, implicitStyles.relativePath);\n }\n\n if (!asset.fileAsset.includeTests) {\n return;\n }\n\n // Test-related assets happen below this point\n\n let testJS = this.testJSEntrypoint(appFiles, prepared);\n html.insertScriptTag(html.testJavascript, testJS.relativePath, { type: 'module' });\n\n let implicitTestScriptsAsset = this.implicitTestScriptsAsset(prepared, parentEngine);\n if (implicitTestScriptsAsset) {\n html.insertScriptTag(html.implicitTestScripts, implicitTestScriptsAsset.relativePath);\n }\n\n let implicitTestStylesAsset = this.implicitTestStylesAsset(prepared, parentEngine);\n if (implicitTestStylesAsset) {\n html.insertStyleLink(html.implicitTestStyles, implicitTestStylesAsset.relativePath);\n }\n }\n\n private implicitScriptsAsset(\n prepared: Map<string, InternalAsset>,\n application: Engine,\n emberENV: EmberENV\n ): InternalAsset | undefined {\n let asset = prepared.get('assets/vendor.js');\n if (!asset) {\n let implicitScripts = this.impliedAssets('implicit-scripts', application, emberENV);\n if (implicitScripts.length > 0) {\n asset = new ConcatenatedAsset('assets/vendor.js', implicitScripts, this.resolvableExtensionsPattern);\n prepared.set(asset.relativePath, asset);\n }\n }\n return asset;\n }\n\n private implicitStylesAsset(prepared: Map<string, InternalAsset>, application: Engine): InternalAsset | undefined {\n let asset = prepared.get('assets/vendor.css');\n if (!asset) {\n let implicitStyles = this.impliedAssets('implicit-styles', application);\n if (implicitStyles.length > 0) {\n // we reverse because we want the synthetic vendor style at the top\n asset = new ConcatenatedAsset('assets/vendor.css', implicitStyles.reverse(), this.resolvableExtensionsPattern);\n prepared.set(asset.relativePath, asset);\n }\n }\n return asset;\n }\n\n private implicitTestScriptsAsset(\n prepared: Map<string, InternalAsset>,\n application: Engine\n ): InternalAsset | undefined {\n let testSupportJS = prepared.get('assets/test-support.js');\n if (!testSupportJS) {\n let implicitTestScripts = this.impliedAssets('implicit-test-scripts', application);\n if (implicitTestScripts.length > 0) {\n testSupportJS = new ConcatenatedAsset(\n 'assets/test-support.js',\n implicitTestScripts,\n this.resolvableExtensionsPattern\n );\n prepared.set(testSupportJS.relativePath, testSupportJS);\n }\n }\n return testSupportJS;\n }\n\n private implicitTestStylesAsset(\n prepared: Map<string, InternalAsset>,\n application: Engine\n ): InternalAsset | undefined {\n let asset = prepared.get('assets/test-support.css');\n if (!asset) {\n let implicitTestStyles = this.impliedAssets('implicit-test-styles', application);\n if (implicitTestStyles.length > 0) {\n asset = new ConcatenatedAsset('assets/test-support.css', implicitTestStyles, this.resolvableExtensionsPattern);\n prepared.set(asset.relativePath, asset);\n }\n }\n return asset;\n }\n\n // recurse to find all active addons that don't cross an engine boundary.\n // Inner engines themselves will be returned, but not those engines' children.\n // The output set's insertion order is the proper ember-cli compatible\n // ordering of the addons.\n private findActiveAddons(pkg: Package, engine: EngineSummary, isChild = false): void {\n for (let child of this.adapter.activeAddonChildren(pkg)) {\n if (!child.isEngine()) {\n this.findActiveAddons(child, engine, true);\n }\n engine.addons.add(child);\n }\n // ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)\n if (!isChild) {\n engine.addons = new Set(\n [...engine.addons].sort((a, b) => {\n return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);\n })\n );\n }\n }\n\n private partitionEngines(appJSPath: string): EngineSummary[] {\n let queue: EngineSummary[] = [\n {\n package: this.app,\n addons: new Set(),\n parent: undefined,\n sourcePath: appJSPath,\n destPath: this.root,\n modulePrefix: this.modulePrefix,\n appRelativePath: '.',\n },\n ];\n let done: EngineSummary[] = [];\n let seenEngines: Set<Package> = new Set();\n while (true) {\n let current = queue.shift();\n if (!current) {\n break;\n }\n this.findActiveAddons(current.package, current);\n for (let addon of current.addons) {\n if (addon.isEngine() && !seenEngines.has(addon)) {\n seenEngines.add(addon);\n queue.push({\n package: addon,\n addons: new Set(),\n parent: current,\n sourcePath: mangledEngineRoot(addon),\n destPath: addon.root,\n modulePrefix: addon.name,\n appRelativePath: explicitRelative(this.root, addon.root),\n });\n }\n }\n done.push(current);\n }\n return done;\n }\n\n @Memoize()\n private get activeFastboot() {\n return this.adapter.activeAddonChildren(this.app).find(a => a.name === 'ember-cli-fastboot');\n }\n\n @Memoize()\n private get fastbootConfig():\n | { packageJSON: PackageInfo; extraAppFiles: string[]; extraVendorFiles: string[] }\n | undefined {\n if (this.activeFastboot) {\n // this is relying on work done in stage1 by @embroider/compat/src/compat-adapters/ember-cli-fastboot.ts\n let packageJSON = readJSONSync(join(this.activeFastboot.root, '_fastboot_', 'package.json'));\n let { extraAppFiles, extraVendorFiles } = packageJSON['embroider-fastboot'];\n delete packageJSON['embroider-fastboot'];\n extraVendorFiles.push('assets/embroider_macros_fastboot_init.js');\n return { packageJSON, extraAppFiles, extraVendorFiles };\n }\n }\n\n private appDiffers: { differ: AppDiffer; engine: EngineSummary }[] | undefined;\n\n private updateAppJS(inputPaths: OutputPaths<TreeNames>): Engine[] {\n let appJSPath = this.adapter.appJSSrcDir(inputPaths);\n if (!this.appDiffers) {\n let engines = this.partitionEngines(appJSPath);\n this.appDiffers = engines.map(engine => {\n let differ: AppDiffer;\n if (this.activeFastboot) {\n differ = new AppDiffer(\n engine.destPath,\n engine.sourcePath,\n [...engine.addons],\n true,\n this.adapter.fastbootJSSrcDir(inputPaths),\n this.babelParserConfig()\n );\n } else {\n differ = new AppDiffer(engine.destPath, engine.sourcePath, [...engine.addons]);\n }\n return {\n differ,\n engine,\n };\n });\n }\n // this is in reverse order because we need deeper engines to update before\n // their parents, because they aren't really valid packages until they\n // update, and their parents will go looking for their own `app-js` content.\n this.appDiffers\n .slice()\n .reverse()\n .forEach(a => a.differ.update());\n return this.appDiffers.map(a => {\n return Object.assign({}, a.engine, {\n appFiles: new AppFiles(a.differ, this.resolvableExtensionsPattern, this.adapter.podModulePrefix()),\n });\n });\n }\n\n private prepareAsset(asset: Asset, appFiles: Engine[], prepared: Map<string, InternalAsset>, emberENV: EmberENV) {\n if (asset.kind === 'ember') {\n let prior = this.assets.get(asset.relativePath);\n let parsed: ParsedEmberAsset;\n if (prior && prior.kind === 'built-ember' && prior.parsedAsset.validFor(asset)) {\n // we can reuse the parsed html\n parsed = prior.parsedAsset;\n parsed.html.clear();\n } else {\n parsed = new ParsedEmberAsset(asset);\n }\n this.insertEmberApp(parsed, appFiles, prepared, emberENV);\n prepared.set(asset.relativePath, new BuiltEmberAsset(parsed));\n } else {\n prepared.set(asset.relativePath, asset);\n }\n }\n\n private prepareAssets(requestedAssets: Asset[], appFiles: Engine[], emberENV: EmberENV): Map<string, InternalAsset> {\n let prepared: Map<string, InternalAsset> = new Map();\n for (let asset of requestedAssets) {\n this.prepareAsset(asset, appFiles, prepared, emberENV);\n }\n return prepared;\n }\n\n private assetIsValid(asset: InternalAsset, prior: InternalAsset | undefined): boolean {\n if (!prior) {\n return false;\n }\n switch (asset.kind) {\n case 'on-disk':\n return prior.kind === 'on-disk' && prior.size === asset.size && prior.mtime === asset.mtime;\n case 'in-memory':\n return prior.kind === 'in-memory' && stringOrBufferEqual(prior.source, asset.source);\n case 'built-ember':\n return prior.kind === 'built-ember' && prior.source === asset.source;\n case 'concatenated-asset':\n return (\n prior.kind === 'concatenated-asset' &&\n prior.sources.length === asset.sources.length &&\n prior.sources.every((priorFile, index) => {\n let newFile = asset.sources[index];\n return this.assetIsValid(newFile, priorFile);\n })\n );\n }\n }\n\n private updateOnDiskAsset(asset: OnDiskAsset) {\n let destination = join(this.root, asset.relativePath);\n ensureDirSync(dirname(destination));\n copySync(asset.sourcePath, destination, { dereference: true });\n }\n\n private updateInMemoryAsset(asset: InMemoryAsset) {\n let destination = join(this.root, asset.relativePath);\n ensureDirSync(dirname(destination));\n writeFileSync(destination, asset.source, 'utf8');\n }\n\n private updateBuiltEmberAsset(asset: BuiltEmberAsset) {\n let destination = join(this.root, asset.relativePath);\n ensureDirSync(dirname(destination));\n writeFileSync(destination, asset.source, 'utf8');\n }\n\n private async updateConcatenatedAsset(asset: ConcatenatedAsset) {\n let concat = new SourceMapConcat({\n outputFile: join(this.root, asset.relativePath),\n mapCommentType: asset.relativePath.endsWith('.js') ? 'line' : 'block',\n baseDir: this.root,\n });\n if (process.env.EMBROIDER_CONCAT_STATS) {\n let MeasureConcat = (await import('./measure-concat')).default;\n concat = new MeasureConcat(asset.relativePath, concat, this.root);\n }\n for (let source of asset.sources) {\n switch (source.kind) {\n case 'on-disk':\n concat.addFile(explicitRelative(this.root, source.sourcePath));\n break;\n case 'in-memory':\n if (typeof source.source !== 'string') {\n throw new Error(`attempted to concatenated a Buffer-backed in-memory asset`);\n }\n concat.addSpace(source.source);\n break;\n default:\n assertNever(source);\n }\n }\n await concat.end();\n }\n\n private async updateAssets(requestedAssets: Asset[], appFiles: Engine[], emberENV: EmberENV) {\n let assets = this.prepareAssets(requestedAssets, appFiles, emberENV);\n for (let asset of assets.values()) {\n if (this.assetIsValid(asset, this.assets.get(asset.relativePath))) {\n continue;\n }\n debug('rebuilding %s', asset.relativePath);\n switch (asset.kind) {\n case 'on-disk':\n this.updateOnDiskAsset(asset);\n break;\n case 'in-memory':\n this.updateInMemoryAsset(asset);\n break;\n case 'built-ember':\n this.updateBuiltEmberAsset(asset);\n break;\n case 'concatenated-asset':\n await this.updateConcatenatedAsset(asset);\n break;\n default:\n assertNever(asset);\n }\n }\n for (let oldAsset of this.assets.values()) {\n if (!assets.has(oldAsset.relativePath)) {\n unlinkSync(join(this.root, oldAsset.relativePath));\n }\n }\n this.assets = assets;\n return [...assets.values()];\n }\n\n private gatherAssets(inputPaths: OutputPaths<TreeNames>): Asset[] {\n // first gather all the assets out of addons\n let assets: Asset[] = [];\n for (let pkg of this.adapter.allActiveAddons) {\n if (pkg.meta['public-assets']) {\n for (let [filename, appRelativeURL] of Object.entries(pkg.meta['public-assets'] || {})) {\n let sourcePath = resolvePath(pkg.root, filename);\n let stats = statSync(sourcePath);\n assets.push({\n kind: 'on-disk',\n sourcePath,\n relativePath: appRelativeURL,\n mtime: stats.mtimeMs,\n size: stats.size,\n });\n }\n }\n }\n\n if (this.activeFastboot) {\n const source = `\n (function(){\n var key = '_embroider_macros_runtime_config';\n if (!window[key]){ window[key] = [];}\n window[key].push(function(m) {\n m.setGlobalConfig('fastboot', Object.assign({}, m.getGlobalConfig().fastboot, { isRunning: true }));\n });\n }())`;\n assets.push({\n kind: 'in-memory',\n source,\n relativePath: 'assets/embroider_macros_fastboot_init.js',\n });\n }\n\n // and finally tack on the ones from our app itself\n return assets.concat(this.adapter.assets(inputPaths));\n }\n\n async build(inputPaths: OutputPaths<TreeNames>) {\n if (this.adapter.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n }\n for (let pkgRoot of this.adapter.developingAddons()) {\n this.macrosConfig.enablePackageDevelopment(pkgRoot);\n }\n\n // on the first build, we lock down the macros config. on subsequent builds,\n // this doesn't do anything anyway because it's idempotent.\n this.macrosConfig.finalize();\n\n let appFiles = this.updateAppJS(inputPaths);\n let emberENV = this.adapter.emberENV();\n let assets = this.gatherAssets(inputPaths);\n\n let finalAssets = await this.updateAssets(assets, appFiles, emberENV);\n let templateCompiler = this.templateCompiler(emberENV);\n let babelConfig = this.babelConfig(templateCompiler, appFiles);\n this.addBabelConfig(babelConfig);\n\n let assetPaths = assets.map(asset => asset.relativePath);\n\n if (this.activeFastboot) {\n // when using fastboot, our own package.json needs to be in the output so fastboot can read it.\n assetPaths.push('package.json');\n }\n\n for (let asset of finalAssets) {\n // our concatenated assets all have map files that ride along. Here we're\n // telling the final stage packager to be sure and serve the map files\n // too.\n if (asset.kind === 'concatenated-asset') {\n assetPaths.push(asset.sourcemapPath);\n }\n }\n\n let meta: AppMeta = {\n type: 'app',\n version: 2,\n assets: assetPaths,\n babel: {\n filename: '_babel_config_.js',\n isParallelSafe: babelConfig.isParallelSafe,\n majorVersion: this.adapter.babelMajorVersion(),\n fileFilter: '_babel_filter_.js',\n },\n 'resolvable-extensions': this.adapter.adjustImportsOptions().resolvableExtensions,\n 'root-url': this.adapter.rootURL(),\n };\n\n if (!this.adapter.strictV2Format()) {\n meta['auto-upgraded'] = true;\n }\n\n let pkg = this.combinePackageJSON(meta);\n writeFileSync(join(this.root, 'package.json'), JSON.stringify(pkg, null, 2), 'utf8');\n }\n\n private combinePackageJSON(meta: AppMeta): object {\n let pkgLayers: any[] = [this.app.packageJSON];\n let fastbootConfig = this.fastbootConfig;\n if (fastbootConfig) {\n // fastboot-specific package.json output is allowed to add to our original package.json\n pkgLayers.push(fastbootConfig.packageJSON);\n }\n // but our own new v2 app metadata takes precedence over both\n pkgLayers.push({ keywords: ['ember-addon'], 'ember-addon': meta });\n return combinePackageJSON(...pkgLayers);\n }\n\n private templateCompiler(config: EmberENV): NodeTemplateCompilerParams {\n let plugins = this.adapter.htmlbarsPlugins();\n if (!plugins.ast) {\n plugins.ast = [];\n }\n let { plugins: macroPlugins, setConfig } = MacrosConfig.astPlugins();\n setConfig(this.macrosConfig);\n for (let macroPlugin of macroPlugins) {\n plugins.ast.push(macroPlugin);\n }\n\n const compilerPath = resolve.sync(this.adapter.templateCompilerPath(), { basedir: this.root });\n const compilerChecksum = getEmberExports(compilerPath).cacheKey;\n\n return {\n plugins,\n compilerPath,\n compilerChecksum,\n resolver: this.adapter.templateResolver(),\n EmberENV: config,\n };\n }\n\n @Memoize()\n private get portableHints(): PortableHint[] {\n return this.options.pluginHints.map(hint => {\n let cursor = join(this.app.root, 'package.json');\n for (let i = 0; i < hint.resolve.length; i++) {\n let target = hint.resolve[i];\n if (i < hint.resolve.length - 1) {\n target = join(target, 'package.json');\n }\n cursor = resolve.sync(target, { basedir: dirname(cursor) });\n }\n\n return {\n requireFile: cursor,\n useMethod: hint.useMethod,\n packageVersion: maybeNodeModuleVersion(cursor),\n };\n });\n }\n\n private addBabelConfig(pconfig: { config: TransformOptions; isParallelSafe: boolean }) {\n if (!pconfig.isParallelSafe) {\n warn('Your build is slower because some babel plugins are non-serializable');\n }\n writeFileSync(\n join(this.root, '_babel_config_.js'),\n `module.exports = ${JSON.stringify(pconfig.config, null, 2)}`,\n 'utf8'\n );\n writeFileSync(\n join(this.root, '_babel_filter_.js'),\n babelFilterTemplate({ skipBabel: this.options.skipBabel, appRoot: this.root }),\n 'utf8'\n );\n }\n\n private shouldSplitRoute(routeName: string) {\n return (\n !this.options.splitAtRoutes ||\n this.options.splitAtRoutes.find(pattern => {\n if (typeof pattern === 'string') {\n return pattern === routeName;\n } else {\n return pattern.test(routeName);\n }\n })\n );\n }\n\n private splitRoute(\n routeName: string,\n files: RouteFiles,\n addToParent: (routeName: string, filename: string) => void,\n addLazyBundle: (routeNames: string[], files: string[]) => void\n ) {\n let shouldSplit = routeName && this.shouldSplitRoute(routeName);\n let ownFiles = [];\n let ownNames = new Set() as Set<string>;\n\n if (files.template) {\n if (shouldSplit) {\n ownFiles.push(files.template);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.template);\n }\n }\n\n if (files.controller) {\n if (shouldSplit) {\n ownFiles.push(files.controller);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.controller);\n }\n }\n\n if (files.route) {\n if (shouldSplit) {\n ownFiles.push(files.route);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.route);\n }\n }\n\n for (let [childName, childFiles] of files.children) {\n this.splitRoute(\n `${routeName}.${childName}`,\n childFiles,\n\n (childRouteName: string, childFile: string) => {\n // this is our child calling \"addToParent\"\n if (shouldSplit) {\n ownFiles.push(childFile);\n ownNames.add(childRouteName);\n } else {\n addToParent(childRouteName, childFile);\n }\n },\n (routeNames: string[], files: string[]) => {\n addLazyBundle(routeNames, files);\n }\n );\n }\n\n if (ownFiles.length > 0) {\n addLazyBundle([...ownNames], ownFiles);\n }\n }\n\n private topAppJSAsset(engines: Engine[], prepared: Map<string, InternalAsset>): InternalAsset {\n let [app, ...childEngines] = engines;\n let relativePath = `assets/${this.app.name}.js`;\n return this.appJSAsset(relativePath, app, childEngines, prepared, {\n autoRun: this.adapter.autoRun(),\n appBoot: !this.adapter.autoRun() ? this.adapter.appBoot() : '',\n mainModule: explicitRelative(dirname(relativePath), this.adapter.mainModule()),\n appConfig: this.adapter.mainModuleConfig(),\n });\n }\n\n @Memoize()\n private get staticAppPathsPattern(): RegExp | undefined {\n if (this.options.staticAppPaths.length > 0) {\n return new RegExp(\n '^(?:' +\n this.options.staticAppPaths.map(staticAppPath => escapeRegExp(staticAppPath.replace(/\\//g, sep))).join('|') +\n ')(?:$|' +\n sep +\n ')'\n );\n }\n }\n\n private requiredOtherFiles(appFiles: AppFiles): readonly string[] {\n let pattern = this.staticAppPathsPattern;\n if (pattern) {\n return appFiles.otherAppFiles.filter(f => {\n return !pattern!.test(f);\n });\n } else {\n return appFiles.otherAppFiles;\n }\n }\n\n private appJSAsset(\n relativePath: string,\n engine: Engine,\n childEngines: Engine[],\n prepared: Map<string, InternalAsset>,\n entryParams?: Partial<Parameters<typeof entryTemplate>[0]>\n ): InternalAsset {\n let { appFiles } = engine;\n let cached = prepared.get(relativePath);\n if (cached) {\n return cached;\n }\n\n let eagerModules = [];\n\n let requiredAppFiles = [this.requiredOtherFiles(appFiles)];\n if (!this.options.staticComponents) {\n requiredAppFiles.push(appFiles.components);\n }\n if (!this.options.staticHelpers) {\n requiredAppFiles.push(appFiles.helpers);\n }\n if (!this.options.staticModifiers) {\n requiredAppFiles.push(appFiles.modifiers);\n }\n\n let styles = [];\n // only import styles from engines with a parent (this excludeds the parent application) as their styles\n // will be inserted via a direct <link> tag.\n if (engine.parent && engine.package.isLazyEngine()) {\n let implicitStyles = this.impliedAssets('implicit-styles', engine);\n for (let style of implicitStyles) {\n styles.push({\n path: explicitRelative('assets/_engine_', style.relativePath),\n });\n }\n\n let engineMeta = engine.package.meta as AddonMeta;\n if (engineMeta && engineMeta['implicit-styles']) {\n for (let style of engineMeta['implicit-styles']) {\n styles.push({\n path: explicitRelative(dirname(relativePath), join(engine.appRelativePath, style)),\n });\n }\n }\n }\n\n let lazyEngines: { names: string[]; path: string }[] = [];\n for (let childEngine of childEngines) {\n let asset = this.appJSAsset(\n `assets/_engine_/${encodeURIComponent(childEngine.package.name)}.js`,\n childEngine,\n [],\n prepared\n );\n if (childEngine.package.isLazyEngine()) {\n lazyEngines.push({\n names: [childEngine.package.name],\n path: explicitRelative(dirname(relativePath), asset.relativePath),\n });\n } else {\n eagerModules.push(explicitRelative(dirname(relativePath), asset.relativePath));\n }\n }\n let lazyRoutes: { names: string[]; path: string }[] = [];\n for (let [routeName, routeFiles] of appFiles.routeFiles.children) {\n this.splitRoute(\n routeName,\n routeFiles,\n (_: string, filename: string) => {\n requiredAppFiles.push([filename]);\n },\n (routeNames: string[], files: string[]) => {\n let routeEntrypoint = `assets/_route_/${encodeURIComponent(routeNames[0])}.js`;\n if (!prepared.has(routeEntrypoint)) {\n prepared.set(routeEntrypoint, this.routeEntrypoint(engine, routeEntrypoint, files));\n }\n lazyRoutes.push({\n names: routeNames,\n path: this.importPaths(engine, routeEntrypoint, relativePath).buildtime,\n });\n }\n );\n }\n\n let [fastboot, nonFastboot] = partition(excludeDotFiles(flatten(requiredAppFiles)), file =>\n appFiles.isFastbootOnly.get(file)\n );\n let amdModules = nonFastboot.map(file => this.importPaths(engine, file, relativePath));\n let fastbootOnlyAmdModules = fastboot.map(file => this.importPaths(engine, file, relativePath));\n\n // this is a backward-compatibility feature: addons can force inclusion of\n // modules.\n this.gatherImplicitModules('implicit-modules', relativePath, engine, amdModules);\n\n let params = { amdModules, fastbootOnlyAmdModules, lazyRoutes, lazyEngines, eagerModules, styles };\n if (entryParams) {\n Object.assign(params, entryParams);\n }\n\n let source = entryTemplate(params);\n\n let asset: InternalAsset = {\n kind: 'in-memory',\n source,\n relativePath,\n };\n prepared.set(relativePath, asset);\n return asset;\n }\n\n @Memoize()\n private get modulePrefix() {\n return this.adapter.modulePrefix();\n }\n\n private importPaths(engine: Engine, engineRelativePath: string, fromFile: string) {\n let appRelativePath = join(engine.appRelativePath, engineRelativePath);\n let noHBS = engineRelativePath.replace(this.resolvableExtensionsPattern, '').replace(/\\.hbs$/, '');\n return {\n runtime: `${engine.modulePrefix}/${noHBS}`,\n buildtime: explicitRelative(dirname(fromFile), appRelativePath),\n };\n }\n\n private routeEntrypoint(engine: Engine, relativePath: string, files: string[]) {\n let [fastboot, nonFastboot] = partition(files, file => engine.appFiles.isFastbootOnly.get(file));\n\n let asset: InternalAsset = {\n kind: 'in-memory',\n source: routeEntryTemplate({\n files: nonFastboot.map(f => this.importPaths(engine, f, relativePath)),\n fastbootOnlyFiles: fastboot.map(f => this.importPaths(engine, f, relativePath)),\n }),\n relativePath,\n };\n return asset;\n }\n\n private testJSEntrypoint(engines: Engine[], prepared: Map<string, InternalAsset>): InternalAsset {\n let asset = prepared.get(`assets/test.js`);\n if (asset) {\n return asset;\n }\n\n // We're only building tests from the first engine (the app). This is the\n // normal thing to do -- tests from engines don't automatically roll up into\n // the app.\n let engine = engines[0];\n\n const myName = 'assets/test.js';\n\n // tests necessarily also include the app. This is where we account for\n // that. The classic solution was to always include the app's separate\n // script tag in the tests HTML, but that isn't as easy for final stage\n // packagers to understand. It's better to express it here as a direct\n // module dependency.\n let eagerModules: string[] = [\n explicitRelative(dirname(myName), this.topAppJSAsset(engines, prepared).relativePath),\n ];\n\n let amdModules: { runtime: string; buildtime: string }[] = [];\n // this is a backward-compatibility feature: addons can force inclusion of\n // test support modules.\n this.gatherImplicitModules('implicit-test-modules', myName, engine, amdModules);\n\n let { appFiles } = engine;\n for (let relativePath of appFiles.tests) {\n amdModules.push(this.importPaths(engine, relativePath, myName));\n }\n\n let source = entryTemplate({\n amdModules,\n eagerModules,\n testSuffix: true,\n });\n\n asset = {\n kind: 'in-memory',\n source,\n relativePath: myName,\n };\n prepared.set(asset.relativePath, asset);\n return asset;\n }\n\n private gatherImplicitModules(\n section: 'implicit-modules' | 'implicit-test-modules',\n relativeTo: string,\n engine: Engine,\n lazyModules: { runtime: string; buildtime: string }[]\n ) {\n for (let addon of engine.addons) {\n let implicitModules = addon.meta[section];\n if (implicitModules) {\n let renamedModules = inverseRenamedModules(addon.meta, this.resolvableExtensionsPattern);\n for (let name of implicitModules) {\n let packageName = addon.name;\n\n if (addon.isV2Addon()) {\n let renamedMeta = addon.meta['renamed-packages'];\n if (renamedMeta) {\n Object.entries(renamedMeta).forEach(([key, value]) => {\n if (value === addon!.name) {\n packageName = key;\n }\n });\n }\n }\n\n let runtime = join(packageName, name).replace(this.resolvableExtensionsPattern, '');\n let runtimeRenameLookup = runtime.split('\\\\').join('/');\n if (renamedModules && renamedModules[runtimeRenameLookup]) {\n runtime = renamedModules[runtimeRenameLookup];\n }\n runtime = runtime.split(sep).join('/');\n lazyModules.push({\n runtime,\n buildtime:\n this.options.implicitModulesStrategy === 'packageNames'\n ? join(packageName, name)\n : explicitRelative(dirname(join(this.root, relativeTo)), join(addon.root, name)),\n });\n }\n }\n }\n }\n}\n\nconst entryTemplate = compile(`\nimport { importSync as i, macroCondition, getGlobalConfig } from '@embroider/macros';\nlet w = window;\nlet d = w.define;\n\n{{#if styles}}\n if (macroCondition(!getGlobalConfig().fastboot?.isRunning)) {\n {{#each styles as |stylePath| ~}}\n i(\"{{js-string-escape stylePath.path}}\");\n {{/each}}\n }\n{{/if}}\n\n{{#each amdModules as |amdModule| ~}}\n d(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n{{/each}}\n\n{{#if fastbootOnlyAmdModules}}\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {\n {{#each fastbootOnlyAmdModules as |amdModule| ~}}\n d(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n {{/each}}\n }\n{{/if}}\n\n{{#each eagerModules as |eagerModule| ~}}\n i(\"{{js-string-escape eagerModule}}\");\n{{/each}}\n\n{{#if lazyRoutes}}\nw._embroiderRouteBundles_ = [\n {{#each lazyRoutes as |route|}}\n {\n names: {{{json-stringify route.names}}},\n load: function() {\n return import(\"{{js-string-escape route.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\n{{#if lazyEngines}}\nw._embroiderEngineBundles_ = [\n {{#each lazyEngines as |engine|}}\n {\n names: {{{json-stringify engine.names}}},\n load: function() {\n return import(\"{{js-string-escape engine.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\n{{#if autoRun ~}}\nif (!runningTests) {\n i(\"{{js-string-escape mainModule}}\").default.create({{{json-stringify appConfig}}});\n}\n{{else if appBoot ~}}\n {{{ appBoot }}}\n{{/if}}\n\n{{#if testSuffix ~}}\n {{!- TODO: both of these suffixes should get dynamically generated so they incorporate\n any content-for added by addons. -}}\n\n\n {{!- this is the traditional tests-suffix.js -}}\n i('../tests/test-helper');\n EmberENV.TESTS_FILE_LOADED = true;\n{{/if}}\n`) as (params: {\n amdModules: { runtime: string; buildtime: string }[];\n fastbootOnlyAmdModules?: { runtime: string; buildtime: string }[];\n eagerModules?: string[];\n autoRun?: boolean;\n appBoot?: string;\n mainModule?: string;\n appConfig?: unknown;\n testSuffix?: boolean;\n lazyRoutes?: { names: string[]; path: string }[];\n lazyEngines?: { names: string[]; path: string }[];\n styles?: { path: string }[];\n}) => string;\n\nconst routeEntryTemplate = compile(`\nimport { importSync as i } from '@embroider/macros';\nlet d = window.define;\n{{#each files as |amdModule| ~}}\nd(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n{{/each}}\n{{#if fastbootOnlyFiles}}\n import { macroCondition, getGlobalConfig } from '@embroider/macros';\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {\n {{#each fastbootOnlyFiles as |amdModule| ~}}\n d(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n {{/each}}\n }\n{{/if}}\n`) as (params: {\n files: { runtime: string; buildtime: string }[];\n fastbootOnlyFiles: { runtime: string; buildtime: string }[];\n}) => string;\n\nfunction stringOrBufferEqual(a: string | Buffer, b: string | Buffer): boolean {\n if (typeof a === 'string' && typeof b === 'string') {\n return a === b;\n }\n if (a instanceof Buffer && b instanceof Buffer) {\n return Buffer.compare(a, b) === 0;\n }\n return false;\n}\n\nconst babelFilterTemplate = compile(`\nconst { babelFilter } = require(${JSON.stringify(require.resolve('./index.js'))});\nmodule.exports = babelFilter({{{json-stringify skipBabel}}}, \"{{{js-string-escape appRoot}}}\");\n`) as (params: { skipBabel: Options['skipBabel']; appRoot: string }) => string;\n\n// meta['renamed-modules'] has mapping from classic filename to real filename.\n// This takes that and converts it to the inverst mapping from real import path\n// to classic import path.\nfunction inverseRenamedModules(meta: AddonPackage['meta'], extensions: RegExp) {\n let renamed = meta['renamed-modules'];\n if (renamed) {\n let inverted = {} as { [name: string]: string };\n for (let [classic, real] of Object.entries(renamed)) {\n inverted[real.replace(extensions, '')] = classic.replace(extensions, '');\n }\n return inverted;\n }\n}\n\nfunction combinePackageJSON(...layers: object[]) {\n function custom(objValue: any, srcValue: any, key: string, _object: any, _source: any, stack: { size: number }) {\n if (key === 'keywords' && stack.size === 0) {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n }\n }\n return mergeWith({}, ...layers, custom);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AddonMeta,\n AppMeta,\n Package,\n AddonPackage,\n explicitRelative,\n extensionsPattern,\n PackageInfo,\n} from '@embroider/shared-internals';\nimport { OutputPaths } from './wait-for-trees';\nimport { compile } from './js-handlebars';\nimport resolve from 'resolve';\nimport { Memoize } from 'typescript-memoize';\nimport { copySync, ensureDirSync, readJSONSync, statSync, unlinkSync, writeFileSync } from 'fs-extra';\nimport { dirname, join, resolve as resolvePath, sep } from 'path';\nimport { debug, warn } from './messages';\nimport sortBy from 'lodash/sortBy';\nimport flatten from 'lodash/flatten';\nimport AppDiffer from './app-differ';\nimport { PreparedEmberHTML } from './ember-html';\nimport { Asset, EmberAsset, ImplicitAssetPaths, InMemoryAsset, OnDiskAsset } from './asset';\nimport assertNever from 'assert-never';\nimport SourceMapConcat from 'fast-sourcemap-concat';\nimport Options from './options';\nimport { MacrosConfig } from '@embroider/macros/src/node';\nimport { PluginItem, TransformOptions } from '@babel/core';\nimport { makePortable } from './portable-babel-config';\nimport { TemplateCompilerPlugins } from '.';\nimport type { NodeTemplateCompilerParams } from './template-compiler-node';\nimport { Resolver } from './resolver';\nimport { Options as AdjustImportsOptions } from './babel-plugin-adjust-imports';\nimport { mangledEngineRoot } from './engine-mangler';\nimport { AppFiles, Engine, EngineSummary, RouteFiles } from './app-files';\nimport partition from 'lodash/partition';\nimport mergeWith from 'lodash/mergeWith';\nimport cloneDeep from 'lodash/cloneDeep';\nimport type { Params as InlineBabelParams } from './babel-plugin-inline-hbs-node';\nimport { PortableHint, maybeNodeModuleVersion } from './portable';\nimport escapeRegExp from 'escape-string-regexp';\nimport { getEmberExports } from './load-ember-template-compiler';\nimport type { Options as InlinePrecompileOptions } from 'babel-plugin-ember-template-compilation';\nimport type { Options as ColocationOptions } from '@embroider/shared-internals/src/template-colocation-plugin';\n\nexport type EmberENV = unknown;\n\n/*\n This interface is the boundary between the general-purpose build system in\n AppBuilder and the messy specifics of apps.\n\n - CompatAppAdapter in `@embroider/compat` implements this interface for\n building based of a legacy ember-cli EmberApp instance\n - We will want to make a different class that implements this interface for\n building apps that don't need an EmberApp instance at all (presumably\n because they opt into new authoring standards.\n*/\nexport interface AppAdapter<TreeNames> {\n // the set of all addon packages that are active (recursive)\n readonly allActiveAddons: AddonPackage[];\n\n // the direct active addon dependencies of a given package\n activeAddonChildren(pkg: Package): AddonPackage[];\n\n // path to the directory where the app's own Javascript lives. Doesn't include\n // any files copied out of addons, we take care of that generically in\n // AppBuilder.\n appJSSrcDir(treePaths: OutputPaths<TreeNames>): string;\n\n // path to the directory where the app's own Fastboot-only Javascript lives.\n // Doesn't include any files copied out of addons, we take care of that\n // generically in AppBuilder.\n fastbootJSSrcDir(treePaths: OutputPaths<TreeNames>): string | undefined;\n\n // this is where you declare what assets must be in the final output\n // (especially index.html, tests/index.html, and anything from your classic\n // public tree).\n assets(treePaths: OutputPaths<TreeNames>): Asset[];\n\n // whether the ember app should boot itself automatically\n autoRun(): boolean;\n\n // custom app-boot logic when the autoRun is set to false\n appBoot(): string | undefined;\n\n // the ember app's main module\n mainModule(): string;\n\n // the configuration that will get passed into the ember app's main module.\n // This traditionally comes from the `APP` property returned by\n // config/environment.js.\n mainModuleConfig(): unknown;\n\n // The namespace for the app's own modules at runtime.\n //\n // (For apps, we _do_ still allow this to be arbitrary. This is in contrast\n // with _addons_, which absolutley must use their real NPM package name as\n // their modulePrefix.)\n modulePrefix(): string;\n\n // The module prefix when pods file layout is used\n podModulePrefix(): string | undefined;\n\n // The public URL at which your app will be served.\n rootURL(): string;\n\n // The path to ember's template compiler source\n templateCompilerPath(): string;\n\n // Path to a build-time Resolver module to be used during template\n // compilation.\n templateResolver(): Resolver;\n\n // describes the special module naming rules that we need to achieve\n // compatibility\n adjustImportsOptions(): AdjustImportsOptions;\n\n adjustImportsOptionsPath(): string;\n\n // The template preprocessor plugins that are configured in the app.\n htmlbarsPlugins(): TemplateCompilerPlugins;\n\n // the app's preferred babel config. No need to worry about making it portable\n // yet, we will do that for you.\n babelConfig(): TransformOptions;\n\n // the babel version that works with your babelConfig.\n babelMajorVersion(): 7;\n\n // The environment settings used to control Ember itself. In a classic app,\n // this comes from the EmberENV property returned by config/environment.js.\n emberENV(): EmberENV;\n\n // when true, the app's own code is understood to already follow v2 standards.\n // For example, all imports of templates have an explicit `hbs` extension, and\n // all imports of your own package use relative imports instead of you rown\n // name. When false, your code is treated more leniently and you get the\n // auto-upgraded behaviors that v1 addons also get.\n strictV2Format(): boolean;\n\n // list of directories that point to the roots of addon packages that are\n // under active development\n developingAddons(): string[];\n\n // development, test, or production\n env: string;\n}\n\nexport function excludeDotFiles(files: string[]) {\n return files.filter(file => !file.startsWith('.') && !file.includes('/.'));\n}\n\nexport const CACHE_BUSTING_PLUGIN = {\n path: require.resolve('@embroider/shared-internals/src/babel-plugin-cache-busting.js'),\n version: readJSONSync(`${__dirname}/../package.json`).version,\n};\n\nexport function addCachablePlugin(babelConfig: TransformOptions) {\n if (Array.isArray(babelConfig.plugins) && babelConfig.plugins.length > 0) {\n const plugins = Object.create(null);\n plugins[CACHE_BUSTING_PLUGIN.path] = CACHE_BUSTING_PLUGIN.version;\n\n for (const plugin of babelConfig.plugins) {\n let absolutePathToPlugin: string;\n if (Array.isArray(plugin) && typeof plugin[0] === 'string') {\n absolutePathToPlugin = plugin[0] as string;\n } else if (typeof plugin === 'string') {\n absolutePathToPlugin = plugin;\n } else {\n throw new Error(`[Embroider] a babel plugin without an absolute path was from: ${plugin}`);\n }\n\n plugins[absolutePathToPlugin] = maybeNodeModuleVersion(absolutePathToPlugin);\n }\n\n babelConfig.plugins.push([\n CACHE_BUSTING_PLUGIN.path,\n {\n plugins,\n },\n ]);\n }\n}\n\nclass ParsedEmberAsset {\n kind: 'parsed-ember' = 'parsed-ember';\n relativePath: string;\n fileAsset: EmberAsset;\n html: PreparedEmberHTML;\n\n constructor(asset: EmberAsset) {\n this.fileAsset = asset;\n this.html = new PreparedEmberHTML(asset);\n this.relativePath = asset.relativePath;\n }\n\n validFor(other: EmberAsset) {\n return this.fileAsset.mtime === other.mtime && this.fileAsset.size === other.size;\n }\n}\n\nclass BuiltEmberAsset {\n kind: 'built-ember' = 'built-ember';\n relativePath: string;\n parsedAsset: ParsedEmberAsset;\n source: string;\n\n constructor(asset: ParsedEmberAsset) {\n this.parsedAsset = asset;\n this.source = asset.html.dom.serialize();\n this.relativePath = asset.relativePath;\n }\n}\n\nclass ConcatenatedAsset {\n kind: 'concatenated-asset' = 'concatenated-asset';\n constructor(\n public relativePath: string,\n public sources: (OnDiskAsset | InMemoryAsset)[],\n private resolvableExtensions: RegExp\n ) {}\n get sourcemapPath() {\n return this.relativePath.replace(this.resolvableExtensions, '') + '.map';\n }\n}\n\ntype InternalAsset = OnDiskAsset | InMemoryAsset | BuiltEmberAsset | ConcatenatedAsset;\n\nexport class AppBuilder<TreeNames> {\n // for each relativePath, an Asset we have already emitted\n private assets: Map<string, InternalAsset> = new Map();\n\n constructor(\n private root: string,\n private app: Package,\n private adapter: AppAdapter<TreeNames>,\n private options: Required<Options>,\n private macrosConfig: MacrosConfig\n ) {\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n }\n\n private scriptPriority(pkg: Package) {\n switch (pkg.name) {\n case 'loader.js':\n return 0;\n case 'ember-source':\n return 10;\n default:\n return 1000;\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern(): RegExp {\n return extensionsPattern(this.adapter.adjustImportsOptions().resolvableExtensions);\n }\n\n private impliedAssets(\n type: keyof ImplicitAssetPaths,\n engine: Engine,\n emberENV?: EmberENV\n ): (OnDiskAsset | InMemoryAsset)[] {\n let result: (OnDiskAsset | InMemoryAsset)[] = this.impliedAddonAssets(type, engine).map(\n (sourcePath: string): OnDiskAsset => {\n let stats = statSync(sourcePath);\n return {\n kind: 'on-disk',\n relativePath: explicitRelative(this.root, sourcePath),\n sourcePath,\n mtime: stats.mtimeMs,\n size: stats.size,\n };\n }\n );\n\n if (type === 'implicit-scripts') {\n result.unshift({\n kind: 'in-memory',\n relativePath: '_testing_prefix_.js',\n source: `var runningTests=false;`,\n });\n\n result.unshift({\n kind: 'in-memory',\n relativePath: '_ember_env_.js',\n source: `window.EmberENV=${JSON.stringify(emberENV, null, 2)};`,\n });\n\n result.push({\n kind: 'in-memory',\n relativePath: '_loader_.js',\n source: `loader.makeDefaultExport=false;`,\n });\n }\n\n if (type === 'implicit-test-scripts') {\n // this is the traditional test-support-suffix.js\n result.push({\n kind: 'in-memory',\n relativePath: '_testing_suffix_.js',\n source: `\n var runningTests=true;\n if (typeof Testem !== 'undefined' && (typeof QUnit !== 'undefined' || typeof Mocha !== 'undefined')) {\n Testem.hookIntoTestFramework();\n }`,\n });\n\n // whether or not anybody was actually using @embroider/macros\n // explicitly as an addon, we ensure its test-support file is always\n // present.\n if (!result.find(s => s.kind === 'on-disk' && s.sourcePath.endsWith('embroider-macros-test-support.js'))) {\n result.unshift({\n kind: 'on-disk',\n sourcePath: require.resolve('@embroider/macros/src/vendor/embroider-macros-test-support'),\n mtime: 0,\n size: 0,\n relativePath: 'embroider-macros-test-support.js',\n });\n }\n }\n\n return result;\n }\n\n private impliedAddonAssets(type: keyof ImplicitAssetPaths, engine: Engine): string[] {\n let result: Array<string> = [];\n for (let addon of sortBy(Array.from(engine.addons), this.scriptPriority.bind(this))) {\n let implicitScripts = addon.meta[type];\n if (implicitScripts) {\n let styles = [];\n let options = { basedir: addon.root };\n for (let mod of implicitScripts) {\n if (type === 'implicit-styles') {\n // exclude engines because they will handle their own css importation\n if (!addon.isLazyEngine()) {\n styles.push(resolve.sync(mod, options));\n }\n } else {\n result.push(resolve.sync(mod, options));\n }\n }\n if (styles.length) {\n result = [...styles, ...result];\n }\n }\n }\n return result;\n }\n\n // unlike our full config, this one just needs to know how to parse all the\n // syntax our app can contain.\n @Memoize()\n private babelParserConfig(): TransformOptions {\n let babel = cloneDeep(this.adapter.babelConfig());\n\n if (!babel.plugins) {\n babel.plugins = [];\n }\n\n // Our stage3 code is always allowed to use dynamic import. We may emit it\n // ourself when splitting routes.\n babel.plugins.push(require.resolve('@babel/plugin-syntax-dynamic-import'));\n return babel;\n }\n\n @Memoize()\n private babelConfig(templateCompilerParams: NodeTemplateCompilerParams, appFiles: Engine[]) {\n let babel = cloneDeep(this.adapter.babelConfig());\n\n if (!babel.plugins) {\n babel.plugins = [];\n }\n\n // Our stage3 code is always allowed to use dynamic import. We may emit it\n // ourself when splitting routes.\n babel.plugins.push(require.resolve('@babel/plugin-syntax-dynamic-import'));\n\n // https://github.com/webpack/webpack/issues/12154\n babel.plugins.push(require.resolve('./rename-require-plugin'));\n\n if (this.adapter.adjustImportsOptions().emberNeedsModulesPolyfill) {\n // on older ember versions that need the modules-api-polyfill, we use our\n // bespoke inline template compiler plugin.\n babel.plugins.push([\n join(__dirname, 'babel-plugin-inline-hbs-node.js'),\n {\n templateCompiler: templateCompilerParams,\n stage: 3,\n } as InlineBabelParams,\n ]);\n } else {\n // on newer ember versions that don't need the modules-api-polyfill, we\n // can compose with the newer babel-plugin-ember-template-compilation, and\n // use a simpler plugin that only needs to handle inserting discovered\n // dependencies.\n babel.plugins.push([\n join(__dirname, '../src/babel-plugin-inline-hbs-deps-node.js'),\n { templateCompiler: templateCompilerParams },\n ]);\n babel.plugins.push([\n require.resolve('babel-plugin-ember-template-compilation'),\n {\n precompilerPath: join(__dirname, '../src/babel-plugin-inline-hbs-deps-node.js'),\n } as InlinePrecompileOptions,\n ]);\n }\n\n // this is @embroider/macros configured for full stage3 resolution\n babel.plugins.push(...this.macrosConfig.babelPluginConfig());\n\n let colocationOptions: ColocationOptions = {\n packageGuard: true,\n appRoot: this.root,\n };\n babel.plugins.push([\n require.resolve('@embroider/shared-internals/src/template-colocation-plugin'),\n colocationOptions,\n ]);\n\n babel.plugins.push(this.adjustImportsPlugin(appFiles));\n\n // we can use globally shared babel runtime by default\n babel.plugins.push([\n require.resolve('@babel/plugin-transform-runtime'),\n { absoluteRuntime: __dirname, useESModules: true, regenerator: false },\n ]);\n\n const portable = makePortable(babel, { basedir: this.root }, this.portableHints);\n addCachablePlugin(portable.config);\n return portable;\n }\n\n private adjustImportsPlugin(engines: Engine[]): PluginItem {\n let relocatedFiles: AdjustImportsOptions['relocatedFiles'] = {};\n for (let { destPath, appFiles } of engines) {\n for (let [relativePath, originalPath] of appFiles.relocatedFiles) {\n relocatedFiles[join(destPath, relativePath).split(sep).join('/')] = originalPath;\n }\n }\n let relocatedFilesPath = join(this.root, '_relocated_files.json');\n writeFileSync(relocatedFilesPath, JSON.stringify({ relocatedFiles }));\n return [\n require.resolve('./babel-plugin-adjust-imports'),\n {\n adjustImportsOptionsPath: this.adapter.adjustImportsOptionsPath(),\n relocatedFilesPath,\n },\n ];\n }\n\n private insertEmberApp(\n asset: ParsedEmberAsset,\n appFiles: Engine[],\n prepared: Map<string, InternalAsset>,\n emberENV: EmberENV\n ) {\n let html = asset.html;\n\n if (this.fastbootConfig) {\n // ignore scripts like ember-cli-livereload.js which are not really associated with\n // \"the app\".\n let ignoreScripts = html.dom.window.document.querySelectorAll('script');\n ignoreScripts.forEach(script => {\n script.setAttribute('data-fastboot-ignore', '');\n });\n }\n\n // our tests entrypoint already includes a correct module dependency on the\n // app, so we only insert the app when we're not inserting tests\n if (!asset.fileAsset.includeTests) {\n let appJS = this.topAppJSAsset(appFiles, prepared);\n html.insertScriptTag(html.javascript, appJS.relativePath, { type: 'module' });\n }\n\n if (this.fastbootConfig) {\n // any extra fastboot app files get inserted into our html.javascript\n // section, after the app has been inserted.\n for (let script of this.fastbootConfig.extraAppFiles) {\n html.insertScriptTag(html.javascript, script, { tag: 'fastboot-script' });\n }\n }\n\n html.insertStyleLink(html.styles, `assets/${this.app.name}.css`);\n\n const parentEngine = appFiles.find(e => !e.parent) as Engine;\n let vendorJS = this.implicitScriptsAsset(prepared, parentEngine, emberENV);\n if (vendorJS) {\n html.insertScriptTag(html.implicitScripts, vendorJS.relativePath);\n }\n\n if (this.fastbootConfig) {\n // any extra fastboot vendor files get inserted into our\n // html.implicitScripts section, after the regular implicit script\n // (vendor.js) have been inserted.\n for (let script of this.fastbootConfig.extraVendorFiles) {\n html.insertScriptTag(html.implicitScripts, script, { tag: 'fastboot-script' });\n }\n }\n\n let implicitStyles = this.implicitStylesAsset(prepared, parentEngine);\n if (implicitStyles) {\n html.insertStyleLink(html.implicitStyles, implicitStyles.relativePath);\n }\n\n if (!asset.fileAsset.includeTests) {\n return;\n }\n\n // Test-related assets happen below this point\n\n let testJS = this.testJSEntrypoint(appFiles, prepared);\n html.insertScriptTag(html.testJavascript, testJS.relativePath, { type: 'module' });\n\n let implicitTestScriptsAsset = this.implicitTestScriptsAsset(prepared, parentEngine);\n if (implicitTestScriptsAsset) {\n html.insertScriptTag(html.implicitTestScripts, implicitTestScriptsAsset.relativePath);\n }\n\n let implicitTestStylesAsset = this.implicitTestStylesAsset(prepared, parentEngine);\n if (implicitTestStylesAsset) {\n html.insertStyleLink(html.implicitTestStyles, implicitTestStylesAsset.relativePath);\n }\n }\n\n private implicitScriptsAsset(\n prepared: Map<string, InternalAsset>,\n application: Engine,\n emberENV: EmberENV\n ): InternalAsset | undefined {\n let asset = prepared.get('assets/vendor.js');\n if (!asset) {\n let implicitScripts = this.impliedAssets('implicit-scripts', application, emberENV);\n if (implicitScripts.length > 0) {\n asset = new ConcatenatedAsset('assets/vendor.js', implicitScripts, this.resolvableExtensionsPattern);\n prepared.set(asset.relativePath, asset);\n }\n }\n return asset;\n }\n\n private implicitStylesAsset(prepared: Map<string, InternalAsset>, application: Engine): InternalAsset | undefined {\n let asset = prepared.get('assets/vendor.css');\n if (!asset) {\n let implicitStyles = this.impliedAssets('implicit-styles', application);\n if (implicitStyles.length > 0) {\n // we reverse because we want the synthetic vendor style at the top\n asset = new ConcatenatedAsset('assets/vendor.css', implicitStyles.reverse(), this.resolvableExtensionsPattern);\n prepared.set(asset.relativePath, asset);\n }\n }\n return asset;\n }\n\n private implicitTestScriptsAsset(\n prepared: Map<string, InternalAsset>,\n application: Engine\n ): InternalAsset | undefined {\n let testSupportJS = prepared.get('assets/test-support.js');\n if (!testSupportJS) {\n let implicitTestScripts = this.impliedAssets('implicit-test-scripts', application);\n if (implicitTestScripts.length > 0) {\n testSupportJS = new ConcatenatedAsset(\n 'assets/test-support.js',\n implicitTestScripts,\n this.resolvableExtensionsPattern\n );\n prepared.set(testSupportJS.relativePath, testSupportJS);\n }\n }\n return testSupportJS;\n }\n\n private implicitTestStylesAsset(\n prepared: Map<string, InternalAsset>,\n application: Engine\n ): InternalAsset | undefined {\n let asset = prepared.get('assets/test-support.css');\n if (!asset) {\n let implicitTestStyles = this.impliedAssets('implicit-test-styles', application);\n if (implicitTestStyles.length > 0) {\n asset = new ConcatenatedAsset('assets/test-support.css', implicitTestStyles, this.resolvableExtensionsPattern);\n prepared.set(asset.relativePath, asset);\n }\n }\n return asset;\n }\n\n // recurse to find all active addons that don't cross an engine boundary.\n // Inner engines themselves will be returned, but not those engines' children.\n // The output set's insertion order is the proper ember-cli compatible\n // ordering of the addons.\n private findActiveAddons(pkg: Package, engine: EngineSummary, isChild = false): void {\n for (let child of this.adapter.activeAddonChildren(pkg)) {\n if (!child.isEngine()) {\n this.findActiveAddons(child, engine, true);\n }\n engine.addons.add(child);\n }\n // ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)\n if (!isChild) {\n engine.addons = new Set(\n [...engine.addons].sort((a, b) => {\n return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);\n })\n );\n }\n }\n\n private partitionEngines(appJSPath: string): EngineSummary[] {\n let queue: EngineSummary[] = [\n {\n package: this.app,\n addons: new Set(),\n parent: undefined,\n sourcePath: appJSPath,\n destPath: this.root,\n modulePrefix: this.modulePrefix,\n appRelativePath: '.',\n },\n ];\n let done: EngineSummary[] = [];\n let seenEngines: Set<Package> = new Set();\n while (true) {\n let current = queue.shift();\n if (!current) {\n break;\n }\n this.findActiveAddons(current.package, current);\n for (let addon of current.addons) {\n if (addon.isEngine() && !seenEngines.has(addon)) {\n seenEngines.add(addon);\n queue.push({\n package: addon,\n addons: new Set(),\n parent: current,\n sourcePath: mangledEngineRoot(addon),\n destPath: addon.root,\n modulePrefix: addon.name,\n appRelativePath: explicitRelative(this.root, addon.root),\n });\n }\n }\n done.push(current);\n }\n return done;\n }\n\n @Memoize()\n private get activeFastboot() {\n return this.adapter.activeAddonChildren(this.app).find(a => a.name === 'ember-cli-fastboot');\n }\n\n @Memoize()\n private get fastbootConfig():\n | { packageJSON: PackageInfo; extraAppFiles: string[]; extraVendorFiles: string[] }\n | undefined {\n if (this.activeFastboot) {\n // this is relying on work done in stage1 by @embroider/compat/src/compat-adapters/ember-cli-fastboot.ts\n let packageJSON = readJSONSync(join(this.activeFastboot.root, '_fastboot_', 'package.json'));\n let { extraAppFiles, extraVendorFiles } = packageJSON['embroider-fastboot'];\n delete packageJSON['embroider-fastboot'];\n extraVendorFiles.push('assets/embroider_macros_fastboot_init.js');\n return { packageJSON, extraAppFiles, extraVendorFiles };\n }\n }\n\n private appDiffers: { differ: AppDiffer; engine: EngineSummary }[] | undefined;\n\n private updateAppJS(inputPaths: OutputPaths<TreeNames>): Engine[] {\n let appJSPath = this.adapter.appJSSrcDir(inputPaths);\n if (!this.appDiffers) {\n let engines = this.partitionEngines(appJSPath);\n this.appDiffers = engines.map(engine => {\n let differ: AppDiffer;\n if (this.activeFastboot) {\n differ = new AppDiffer(\n engine.destPath,\n engine.sourcePath,\n [...engine.addons],\n true,\n this.adapter.fastbootJSSrcDir(inputPaths),\n this.babelParserConfig()\n );\n } else {\n differ = new AppDiffer(engine.destPath, engine.sourcePath, [...engine.addons]);\n }\n return {\n differ,\n engine,\n };\n });\n }\n // this is in reverse order because we need deeper engines to update before\n // their parents, because they aren't really valid packages until they\n // update, and their parents will go looking for their own `app-js` content.\n this.appDiffers\n .slice()\n .reverse()\n .forEach(a => a.differ.update());\n return this.appDiffers.map(a => {\n return Object.assign({}, a.engine, {\n appFiles: new AppFiles(a.differ, this.resolvableExtensionsPattern, this.adapter.podModulePrefix()),\n });\n });\n }\n\n private prepareAsset(asset: Asset, appFiles: Engine[], prepared: Map<string, InternalAsset>, emberENV: EmberENV) {\n if (asset.kind === 'ember') {\n let prior = this.assets.get(asset.relativePath);\n let parsed: ParsedEmberAsset;\n if (prior && prior.kind === 'built-ember' && prior.parsedAsset.validFor(asset)) {\n // we can reuse the parsed html\n parsed = prior.parsedAsset;\n parsed.html.clear();\n } else {\n parsed = new ParsedEmberAsset(asset);\n }\n this.insertEmberApp(parsed, appFiles, prepared, emberENV);\n prepared.set(asset.relativePath, new BuiltEmberAsset(parsed));\n } else {\n prepared.set(asset.relativePath, asset);\n }\n }\n\n private prepareAssets(requestedAssets: Asset[], appFiles: Engine[], emberENV: EmberENV): Map<string, InternalAsset> {\n let prepared: Map<string, InternalAsset> = new Map();\n for (let asset of requestedAssets) {\n this.prepareAsset(asset, appFiles, prepared, emberENV);\n }\n return prepared;\n }\n\n private assetIsValid(asset: InternalAsset, prior: InternalAsset | undefined): boolean {\n if (!prior) {\n return false;\n }\n switch (asset.kind) {\n case 'on-disk':\n return prior.kind === 'on-disk' && prior.size === asset.size && prior.mtime === asset.mtime;\n case 'in-memory':\n return prior.kind === 'in-memory' && stringOrBufferEqual(prior.source, asset.source);\n case 'built-ember':\n return prior.kind === 'built-ember' && prior.source === asset.source;\n case 'concatenated-asset':\n return (\n prior.kind === 'concatenated-asset' &&\n prior.sources.length === asset.sources.length &&\n prior.sources.every((priorFile, index) => {\n let newFile = asset.sources[index];\n return this.assetIsValid(newFile, priorFile);\n })\n );\n }\n }\n\n private updateOnDiskAsset(asset: OnDiskAsset) {\n let destination = join(this.root, asset.relativePath);\n ensureDirSync(dirname(destination));\n copySync(asset.sourcePath, destination, { dereference: true });\n }\n\n private updateInMemoryAsset(asset: InMemoryAsset) {\n let destination = join(this.root, asset.relativePath);\n ensureDirSync(dirname(destination));\n writeFileSync(destination, asset.source, 'utf8');\n }\n\n private updateBuiltEmberAsset(asset: BuiltEmberAsset) {\n let destination = join(this.root, asset.relativePath);\n ensureDirSync(dirname(destination));\n writeFileSync(destination, asset.source, 'utf8');\n }\n\n private async updateConcatenatedAsset(asset: ConcatenatedAsset) {\n let concat = new SourceMapConcat({\n outputFile: join(this.root, asset.relativePath),\n mapCommentType: asset.relativePath.endsWith('.js') ? 'line' : 'block',\n baseDir: this.root,\n });\n if (process.env.EMBROIDER_CONCAT_STATS) {\n let MeasureConcat = (await import('./measure-concat')).default;\n concat = new MeasureConcat(asset.relativePath, concat, this.root);\n }\n for (let source of asset.sources) {\n switch (source.kind) {\n case 'on-disk':\n concat.addFile(explicitRelative(this.root, source.sourcePath));\n break;\n case 'in-memory':\n if (typeof source.source !== 'string') {\n throw new Error(`attempted to concatenated a Buffer-backed in-memory asset`);\n }\n concat.addSpace(source.source);\n break;\n default:\n assertNever(source);\n }\n }\n await concat.end();\n }\n\n private async updateAssets(requestedAssets: Asset[], appFiles: Engine[], emberENV: EmberENV) {\n let assets = this.prepareAssets(requestedAssets, appFiles, emberENV);\n for (let asset of assets.values()) {\n if (this.assetIsValid(asset, this.assets.get(asset.relativePath))) {\n continue;\n }\n debug('rebuilding %s', asset.relativePath);\n switch (asset.kind) {\n case 'on-disk':\n this.updateOnDiskAsset(asset);\n break;\n case 'in-memory':\n this.updateInMemoryAsset(asset);\n break;\n case 'built-ember':\n this.updateBuiltEmberAsset(asset);\n break;\n case 'concatenated-asset':\n await this.updateConcatenatedAsset(asset);\n break;\n default:\n assertNever(asset);\n }\n }\n for (let oldAsset of this.assets.values()) {\n if (!assets.has(oldAsset.relativePath)) {\n unlinkSync(join(this.root, oldAsset.relativePath));\n }\n }\n this.assets = assets;\n return [...assets.values()];\n }\n\n private gatherAssets(inputPaths: OutputPaths<TreeNames>): Asset[] {\n // first gather all the assets out of addons\n let assets: Asset[] = [];\n for (let pkg of this.adapter.allActiveAddons) {\n if (pkg.meta['public-assets']) {\n for (let [filename, appRelativeURL] of Object.entries(pkg.meta['public-assets'] || {})) {\n let sourcePath = resolvePath(pkg.root, filename);\n let stats = statSync(sourcePath);\n assets.push({\n kind: 'on-disk',\n sourcePath,\n relativePath: appRelativeURL,\n mtime: stats.mtimeMs,\n size: stats.size,\n });\n }\n }\n }\n\n if (this.activeFastboot) {\n const source = `\n (function(){\n var key = '_embroider_macros_runtime_config';\n if (!window[key]){ window[key] = [];}\n window[key].push(function(m) {\n m.setGlobalConfig('fastboot', Object.assign({}, m.getGlobalConfig().fastboot, { isRunning: true }));\n });\n }())`;\n assets.push({\n kind: 'in-memory',\n source,\n relativePath: 'assets/embroider_macros_fastboot_init.js',\n });\n }\n\n // and finally tack on the ones from our app itself\n return assets.concat(this.adapter.assets(inputPaths));\n }\n\n async build(inputPaths: OutputPaths<TreeNames>) {\n if (this.adapter.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n }\n for (let pkgRoot of this.adapter.developingAddons()) {\n this.macrosConfig.enablePackageDevelopment(pkgRoot);\n }\n\n // on the first build, we lock down the macros config. on subsequent builds,\n // this doesn't do anything anyway because it's idempotent.\n this.macrosConfig.finalize();\n\n let appFiles = this.updateAppJS(inputPaths);\n let emberENV = this.adapter.emberENV();\n let assets = this.gatherAssets(inputPaths);\n\n let finalAssets = await this.updateAssets(assets, appFiles, emberENV);\n let templateCompiler = this.templateCompiler(emberENV);\n let babelConfig = this.babelConfig(templateCompiler, appFiles);\n this.addBabelConfig(babelConfig);\n\n let assetPaths = assets.map(asset => asset.relativePath);\n\n if (this.activeFastboot) {\n // when using fastboot, our own package.json needs to be in the output so fastboot can read it.\n assetPaths.push('package.json');\n }\n\n for (let asset of finalAssets) {\n // our concatenated assets all have map files that ride along. Here we're\n // telling the final stage packager to be sure and serve the map files\n // too.\n if (asset.kind === 'concatenated-asset') {\n assetPaths.push(asset.sourcemapPath);\n }\n }\n\n let meta: AppMeta = {\n type: 'app',\n version: 2,\n assets: assetPaths,\n babel: {\n filename: '_babel_config_.js',\n isParallelSafe: babelConfig.isParallelSafe,\n majorVersion: this.adapter.babelMajorVersion(),\n fileFilter: '_babel_filter_.js',\n },\n 'resolvable-extensions': this.adapter.adjustImportsOptions().resolvableExtensions,\n 'root-url': this.adapter.rootURL(),\n };\n\n if (!this.adapter.strictV2Format()) {\n meta['auto-upgraded'] = true;\n }\n\n let pkg = this.combinePackageJSON(meta);\n writeFileSync(join(this.root, 'package.json'), JSON.stringify(pkg, null, 2), 'utf8');\n }\n\n private combinePackageJSON(meta: AppMeta): object {\n let pkgLayers: any[] = [this.app.packageJSON];\n let fastbootConfig = this.fastbootConfig;\n if (fastbootConfig) {\n // fastboot-specific package.json output is allowed to add to our original package.json\n pkgLayers.push(fastbootConfig.packageJSON);\n }\n // but our own new v2 app metadata takes precedence over both\n pkgLayers.push({ keywords: ['ember-addon'], 'ember-addon': meta });\n return combinePackageJSON(...pkgLayers);\n }\n\n private templateCompiler(config: EmberENV): NodeTemplateCompilerParams {\n let plugins = this.adapter.htmlbarsPlugins();\n if (!plugins.ast) {\n plugins.ast = [];\n }\n let { plugins: macroPlugins, setConfig } = MacrosConfig.astPlugins();\n setConfig(this.macrosConfig);\n for (let macroPlugin of macroPlugins) {\n plugins.ast.push(macroPlugin);\n }\n\n const compilerPath = resolve.sync(this.adapter.templateCompilerPath(), { basedir: this.root });\n const compilerChecksum = getEmberExports(compilerPath).cacheKey;\n\n return {\n plugins,\n compilerPath,\n compilerChecksum,\n resolver: this.adapter.templateResolver(),\n EmberENV: config,\n };\n }\n\n @Memoize()\n private get portableHints(): PortableHint[] {\n return this.options.pluginHints.map(hint => {\n let cursor = join(this.app.root, 'package.json');\n for (let i = 0; i < hint.resolve.length; i++) {\n let target = hint.resolve[i];\n if (i < hint.resolve.length - 1) {\n target = join(target, 'package.json');\n }\n cursor = resolve.sync(target, { basedir: dirname(cursor) });\n }\n\n return {\n requireFile: cursor,\n useMethod: hint.useMethod,\n packageVersion: maybeNodeModuleVersion(cursor),\n };\n });\n }\n\n private addBabelConfig(pconfig: { config: TransformOptions; isParallelSafe: boolean }) {\n if (!pconfig.isParallelSafe) {\n warn('Your build is slower because some babel plugins are non-serializable');\n }\n writeFileSync(\n join(this.root, '_babel_config_.js'),\n `module.exports = ${JSON.stringify(pconfig.config, null, 2)}`,\n 'utf8'\n );\n writeFileSync(\n join(this.root, '_babel_filter_.js'),\n babelFilterTemplate({ skipBabel: this.options.skipBabel, appRoot: this.root }),\n 'utf8'\n );\n }\n\n private shouldSplitRoute(routeName: string) {\n return (\n !this.options.splitAtRoutes ||\n this.options.splitAtRoutes.find(pattern => {\n if (typeof pattern === 'string') {\n return pattern === routeName;\n } else {\n return pattern.test(routeName);\n }\n })\n );\n }\n\n private splitRoute(\n routeName: string,\n files: RouteFiles,\n addToParent: (routeName: string, filename: string) => void,\n addLazyBundle: (routeNames: string[], files: string[]) => void\n ) {\n let shouldSplit = routeName && this.shouldSplitRoute(routeName);\n let ownFiles = [];\n let ownNames = new Set() as Set<string>;\n\n if (files.template) {\n if (shouldSplit) {\n ownFiles.push(files.template);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.template);\n }\n }\n\n if (files.controller) {\n if (shouldSplit) {\n ownFiles.push(files.controller);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.controller);\n }\n }\n\n if (files.route) {\n if (shouldSplit) {\n ownFiles.push(files.route);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.route);\n }\n }\n\n for (let [childName, childFiles] of files.children) {\n this.splitRoute(\n `${routeName}.${childName}`,\n childFiles,\n\n (childRouteName: string, childFile: string) => {\n // this is our child calling \"addToParent\"\n if (shouldSplit) {\n ownFiles.push(childFile);\n ownNames.add(childRouteName);\n } else {\n addToParent(childRouteName, childFile);\n }\n },\n (routeNames: string[], files: string[]) => {\n addLazyBundle(routeNames, files);\n }\n );\n }\n\n if (ownFiles.length > 0) {\n addLazyBundle([...ownNames], ownFiles);\n }\n }\n\n private topAppJSAsset(engines: Engine[], prepared: Map<string, InternalAsset>): InternalAsset {\n let [app, ...childEngines] = engines;\n let relativePath = `assets/${this.app.name}.js`;\n return this.appJSAsset(relativePath, app, childEngines, prepared, {\n autoRun: this.adapter.autoRun(),\n appBoot: !this.adapter.autoRun() ? this.adapter.appBoot() : '',\n mainModule: explicitRelative(dirname(relativePath), this.adapter.mainModule()),\n appConfig: this.adapter.mainModuleConfig(),\n });\n }\n\n @Memoize()\n private get staticAppPathsPattern(): RegExp | undefined {\n if (this.options.staticAppPaths.length > 0) {\n return new RegExp(\n '^(?:' +\n this.options.staticAppPaths.map(staticAppPath => escapeRegExp(staticAppPath.replace(/\\//g, sep))).join('|') +\n ')(?:$|' +\n sep +\n ')'\n );\n }\n }\n\n private requiredOtherFiles(appFiles: AppFiles): readonly string[] {\n let pattern = this.staticAppPathsPattern;\n if (pattern) {\n return appFiles.otherAppFiles.filter(f => {\n return !pattern!.test(f);\n });\n } else {\n return appFiles.otherAppFiles;\n }\n }\n\n private appJSAsset(\n relativePath: string,\n engine: Engine,\n childEngines: Engine[],\n prepared: Map<string, InternalAsset>,\n entryParams?: Partial<Parameters<typeof entryTemplate>[0]>\n ): InternalAsset {\n let { appFiles } = engine;\n let cached = prepared.get(relativePath);\n if (cached) {\n return cached;\n }\n\n let eagerModules = [];\n\n let requiredAppFiles = [this.requiredOtherFiles(appFiles)];\n if (!this.options.staticComponents) {\n requiredAppFiles.push(appFiles.components);\n }\n if (!this.options.staticHelpers) {\n requiredAppFiles.push(appFiles.helpers);\n }\n if (!this.options.staticModifiers) {\n requiredAppFiles.push(appFiles.modifiers);\n }\n\n let styles = [];\n // only import styles from engines with a parent (this excludeds the parent application) as their styles\n // will be inserted via a direct <link> tag.\n if (engine.parent && engine.package.isLazyEngine()) {\n let implicitStyles = this.impliedAssets('implicit-styles', engine);\n for (let style of implicitStyles) {\n styles.push({\n path: explicitRelative('assets/_engine_', style.relativePath),\n });\n }\n\n let engineMeta = engine.package.meta as AddonMeta;\n if (engineMeta && engineMeta['implicit-styles']) {\n for (let style of engineMeta['implicit-styles']) {\n styles.push({\n path: explicitRelative(dirname(relativePath), join(engine.appRelativePath, style)),\n });\n }\n }\n }\n\n let lazyEngines: { names: string[]; path: string }[] = [];\n for (let childEngine of childEngines) {\n let asset = this.appJSAsset(\n `assets/_engine_/${encodeURIComponent(childEngine.package.name)}.js`,\n childEngine,\n [],\n prepared\n );\n if (childEngine.package.isLazyEngine()) {\n lazyEngines.push({\n names: [childEngine.package.name],\n path: explicitRelative(dirname(relativePath), asset.relativePath),\n });\n } else {\n eagerModules.push(explicitRelative(dirname(relativePath), asset.relativePath));\n }\n }\n let lazyRoutes: { names: string[]; path: string }[] = [];\n for (let [routeName, routeFiles] of appFiles.routeFiles.children) {\n this.splitRoute(\n routeName,\n routeFiles,\n (_: string, filename: string) => {\n requiredAppFiles.push([filename]);\n },\n (routeNames: string[], files: string[]) => {\n let routeEntrypoint = `assets/_route_/${encodeURIComponent(routeNames[0])}.js`;\n if (!prepared.has(routeEntrypoint)) {\n prepared.set(routeEntrypoint, this.routeEntrypoint(engine, routeEntrypoint, files));\n }\n lazyRoutes.push({\n names: routeNames,\n path: this.importPaths(engine, routeEntrypoint, relativePath).buildtime,\n });\n }\n );\n }\n\n let [fastboot, nonFastboot] = partition(excludeDotFiles(flatten(requiredAppFiles)), file =>\n appFiles.isFastbootOnly.get(file)\n );\n let amdModules = nonFastboot.map(file => this.importPaths(engine, file, relativePath));\n let fastbootOnlyAmdModules = fastboot.map(file => this.importPaths(engine, file, relativePath));\n\n // this is a backward-compatibility feature: addons can force inclusion of\n // modules.\n this.gatherImplicitModules('implicit-modules', relativePath, engine, amdModules);\n\n let params = { amdModules, fastbootOnlyAmdModules, lazyRoutes, lazyEngines, eagerModules, styles };\n if (entryParams) {\n Object.assign(params, entryParams);\n }\n\n let source = entryTemplate(params);\n\n let asset: InternalAsset = {\n kind: 'in-memory',\n source,\n relativePath,\n };\n prepared.set(relativePath, asset);\n return asset;\n }\n\n @Memoize()\n private get modulePrefix() {\n return this.adapter.modulePrefix();\n }\n\n private importPaths(engine: Engine, engineRelativePath: string, fromFile: string) {\n let appRelativePath = join(engine.appRelativePath, engineRelativePath);\n let noHBS = engineRelativePath.replace(this.resolvableExtensionsPattern, '').replace(/\\.hbs$/, '');\n return {\n runtime: `${engine.modulePrefix}/${noHBS}`,\n buildtime: explicitRelative(dirname(fromFile), appRelativePath),\n };\n }\n\n private routeEntrypoint(engine: Engine, relativePath: string, files: string[]) {\n let [fastboot, nonFastboot] = partition(files, file => engine.appFiles.isFastbootOnly.get(file));\n\n let asset: InternalAsset = {\n kind: 'in-memory',\n source: routeEntryTemplate({\n files: nonFastboot.map(f => this.importPaths(engine, f, relativePath)),\n fastbootOnlyFiles: fastboot.map(f => this.importPaths(engine, f, relativePath)),\n }),\n relativePath,\n };\n return asset;\n }\n\n private testJSEntrypoint(engines: Engine[], prepared: Map<string, InternalAsset>): InternalAsset {\n let asset = prepared.get(`assets/test.js`);\n if (asset) {\n return asset;\n }\n\n // We're only building tests from the first engine (the app). This is the\n // normal thing to do -- tests from engines don't automatically roll up into\n // the app.\n let engine = engines[0];\n\n const myName = 'assets/test.js';\n\n // tests necessarily also include the app. This is where we account for\n // that. The classic solution was to always include the app's separate\n // script tag in the tests HTML, but that isn't as easy for final stage\n // packagers to understand. It's better to express it here as a direct\n // module dependency.\n let eagerModules: string[] = [\n explicitRelative(dirname(myName), this.topAppJSAsset(engines, prepared).relativePath),\n ];\n\n let amdModules: { runtime: string; buildtime: string }[] = [];\n // this is a backward-compatibility feature: addons can force inclusion of\n // test support modules.\n this.gatherImplicitModules('implicit-test-modules', myName, engine, amdModules);\n\n let { appFiles } = engine;\n for (let relativePath of appFiles.tests) {\n amdModules.push(this.importPaths(engine, relativePath, myName));\n }\n\n let source = entryTemplate({\n amdModules,\n eagerModules,\n testSuffix: true,\n });\n\n asset = {\n kind: 'in-memory',\n source,\n relativePath: myName,\n };\n prepared.set(asset.relativePath, asset);\n return asset;\n }\n\n private gatherImplicitModules(\n section: 'implicit-modules' | 'implicit-test-modules',\n relativeTo: string,\n engine: Engine,\n lazyModules: { runtime: string; buildtime: string }[]\n ) {\n for (let addon of engine.addons) {\n let implicitModules = addon.meta[section];\n if (implicitModules) {\n let renamedModules = inverseRenamedModules(addon.meta, this.resolvableExtensionsPattern);\n for (let name of implicitModules) {\n let packageName = addon.name;\n\n if (addon.isV2Addon()) {\n let renamedMeta = addon.meta['renamed-packages'];\n if (renamedMeta) {\n Object.entries(renamedMeta).forEach(([key, value]) => {\n if (value === addon!.name) {\n packageName = key;\n }\n });\n }\n }\n\n let runtime = join(packageName, name).replace(this.resolvableExtensionsPattern, '');\n let runtimeRenameLookup = runtime.split('\\\\').join('/');\n if (renamedModules && renamedModules[runtimeRenameLookup]) {\n runtime = renamedModules[runtimeRenameLookup];\n }\n runtime = runtime.split(sep).join('/');\n lazyModules.push({\n runtime,\n buildtime:\n this.options.implicitModulesStrategy === 'packageNames'\n ? join(packageName, name)\n : explicitRelative(dirname(join(this.root, relativeTo)), join(addon.root, name)),\n });\n }\n }\n }\n }\n}\n\nconst entryTemplate = compile(`\nimport { importSync as i, macroCondition, getGlobalConfig } from '@embroider/macros';\nlet w = window;\nlet d = w.define;\n\n{{#if styles}}\n if (macroCondition(!getGlobalConfig().fastboot?.isRunning)) {\n {{#each styles as |stylePath| ~}}\n i(\"{{js-string-escape stylePath.path}}\");\n {{/each}}\n }\n{{/if}}\n\n{{#each amdModules as |amdModule| ~}}\n d(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n{{/each}}\n\n{{#if fastbootOnlyAmdModules}}\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {\n {{#each fastbootOnlyAmdModules as |amdModule| ~}}\n d(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n {{/each}}\n }\n{{/if}}\n\n{{#each eagerModules as |eagerModule| ~}}\n i(\"{{js-string-escape eagerModule}}\");\n{{/each}}\n\n{{#if lazyRoutes}}\nw._embroiderRouteBundles_ = [\n {{#each lazyRoutes as |route|}}\n {\n names: {{{json-stringify route.names}}},\n load: function() {\n return import(\"{{js-string-escape route.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\n{{#if lazyEngines}}\nw._embroiderEngineBundles_ = [\n {{#each lazyEngines as |engine|}}\n {\n names: {{{json-stringify engine.names}}},\n load: function() {\n return import(\"{{js-string-escape engine.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\n{{#if autoRun ~}}\nif (!runningTests) {\n i(\"{{js-string-escape mainModule}}\").default.create({{{json-stringify appConfig}}});\n}\n{{else if appBoot ~}}\n {{{ appBoot }}}\n{{/if}}\n\n{{#if testSuffix ~}}\n {{!- TODO: both of these suffixes should get dynamically generated so they incorporate\n any content-for added by addons. -}}\n\n\n {{!- this is the traditional tests-suffix.js -}}\n i('../tests/test-helper');\n EmberENV.TESTS_FILE_LOADED = true;\n{{/if}}\n`) as (params: {\n amdModules: { runtime: string; buildtime: string }[];\n fastbootOnlyAmdModules?: { runtime: string; buildtime: string }[];\n eagerModules?: string[];\n autoRun?: boolean;\n appBoot?: string;\n mainModule?: string;\n appConfig?: unknown;\n testSuffix?: boolean;\n lazyRoutes?: { names: string[]; path: string }[];\n lazyEngines?: { names: string[]; path: string }[];\n styles?: { path: string }[];\n}) => string;\n\nconst routeEntryTemplate = compile(`\nimport { importSync as i } from '@embroider/macros';\nlet d = window.define;\n{{#each files as |amdModule| ~}}\nd(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n{{/each}}\n{{#if fastbootOnlyFiles}}\n import { macroCondition, getGlobalConfig } from '@embroider/macros';\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {\n {{#each fastbootOnlyFiles as |amdModule| ~}}\n d(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n {{/each}}\n }\n{{/if}}\n`) as (params: {\n files: { runtime: string; buildtime: string }[];\n fastbootOnlyFiles: { runtime: string; buildtime: string }[];\n}) => string;\n\nfunction stringOrBufferEqual(a: string | Buffer, b: string | Buffer): boolean {\n if (typeof a === 'string' && typeof b === 'string') {\n return a === b;\n }\n if (a instanceof Buffer && b instanceof Buffer) {\n return Buffer.compare(a, b) === 0;\n }\n return false;\n}\n\nconst babelFilterTemplate = compile(`\nconst { babelFilter } = require(${JSON.stringify(require.resolve('./index.js'))});\nmodule.exports = babelFilter({{{json-stringify skipBabel}}}, \"{{{js-string-escape appRoot}}}\");\n`) as (params: { skipBabel: Options['skipBabel']; appRoot: string }) => string;\n\n// meta['renamed-modules'] has mapping from classic filename to real filename.\n// This takes that and converts it to the inverst mapping from real import path\n// to classic import path.\nfunction inverseRenamedModules(meta: AddonPackage['meta'], extensions: RegExp) {\n let renamed = meta['renamed-modules'];\n if (renamed) {\n let inverted = {} as { [name: string]: string };\n for (let [classic, real] of Object.entries(renamed)) {\n inverted[real.replace(extensions, '')] = classic.replace(extensions, '');\n }\n return inverted;\n }\n}\n\nfunction combinePackageJSON(...layers: object[]) {\n function custom(objValue: any, srcValue: any, key: string, _object: any, _source: any, stack: { size: number }) {\n if (key === 'keywords' && stack.size === 0) {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n }\n }\n return mergeWith({}, ...layers, custom);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function atomicWrite(path: string, content: string): void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.atomicWrite = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const fs_extra_1 = require("fs-extra");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
// if the path already exists, this will replace it atomically so that nobody
|
|
8
|
+
// will ever read an inconsistent state.
|
|
9
|
+
//
|
|
10
|
+
// if it doesn't already exist, this will create any intervening directories and
|
|
11
|
+
// then create the file.
|
|
12
|
+
function atomicWrite(path, content) {
|
|
13
|
+
let suffix = (0, crypto_1.randomBytes)(8).toString('hex');
|
|
14
|
+
(0, fs_extra_1.outputFileSync)(path + suffix, content);
|
|
15
|
+
(0, fs_1.renameSync)(path + suffix, path);
|
|
16
|
+
}
|
|
17
|
+
exports.atomicWrite = atomicWrite;
|
|
18
|
+
//# sourceMappingURL=atomic-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-write.js","sourceRoot":"","sources":["atomic-write.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AACrC,uCAA0C;AAC1C,2BAAgC;AAEhC,6EAA6E;AAC7E,wCAAwC;AACxC,EAAE;AACF,gFAAgF;AAChF,wBAAwB;AACxB,SAAgB,WAAW,CAAC,IAAY,EAAE,OAAe;IACvD,IAAI,MAAM,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAA,yBAAc,EAAC,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,IAAA,eAAU,EAAC,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAJD,kCAIC","sourcesContent":["import { randomBytes } from 'crypto';\nimport { outputFileSync } from 'fs-extra';\nimport { renameSync } from 'fs';\n\n// if the path already exists, this will replace it atomically so that nobody\n// will ever read an inconsistent state.\n//\n// if it doesn't already exist, this will create any intervening directories and\n// then create the file.\nexport function atomicWrite(path: string, content: string) {\n let suffix = randomBytes(8).toString('hex');\n outputFileSync(path + suffix, content);\n renameSync(path + suffix, path);\n}\n"]}
|
|
@@ -431,7 +431,7 @@ function ensureOpts(state) {
|
|
|
431
431
|
let { opts } = state;
|
|
432
432
|
if ('adjustImportsOptionsPath' in opts) {
|
|
433
433
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
434
|
-
return (state.opts =
|
|
434
|
+
return (state.opts = { ...require(opts.adjustImportsOptionsPath), ...require(opts.relocatedFilesPath) });
|
|
435
435
|
}
|
|
436
436
|
return opts;
|
|
437
437
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-plugin-adjust-imports.js","sourceRoot":"","sources":["babel-plugin-adjust-imports.ts"],"names":[],"mappings":"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","sourcesContent":["import { emberVirtualPackages, emberVirtualPeerDeps, packageName as getPackageName } from '@embroider/shared-internals';\nimport { join, dirname, resolve } from 'path';\nimport type { NodePath } from '@babel/traverse';\nimport type * as Babel from '@babel/core';\nimport type { types as t } from '@babel/core';\nimport { PackageCache, Package, V2Package, explicitRelative } from '@embroider/shared-internals';\nimport { Memoize } from 'typescript-memoize';\nimport { compile } from './js-handlebars';\nimport { handleImportDeclaration } from './mini-modules-polyfill';\nimport { ImportUtil } from 'babel-import-util';\nimport { randomBytes } from 'crypto';\nimport { outputFileSync, pathExistsSync, renameSync } from 'fs-extra';\n\ninterface State {\n adjustFile: AdjustFile;\n opts: Options | DeflatedOptions;\n}\n\nexport interface DeflatedOptions {\n adjustImportsOptionsPath: string;\n relocatedFilesPath: string;\n}\n\ntype BabelTypes = typeof t;\n\nexport interface Options {\n renamePackages: {\n [fromName: string]: string;\n };\n renameModules: {\n [fromName: string]: string;\n };\n extraImports: {\n absPath: string;\n target: string;\n runtimeName?: string;\n }[];\n externalsDir: string;\n activeAddons: {\n [packageName: string]: string;\n };\n relocatedFiles: { [relativePath: string]: string };\n resolvableExtensions: string[];\n emberNeedsModulesPolyfill: boolean;\n appRoot: string;\n}\n\ntype DefineExpressionPath = NodePath<t.CallExpression> & {\n node: t.CallExpression & {\n arguments: [t.StringLiteral, t.ArrayExpression, Function];\n };\n};\n\nexport function isImportSyncExpression(t: BabelTypes, path: NodePath<any>) {\n if (\n !path ||\n !path.isCallExpression() ||\n path.node.callee.type !== 'Identifier' ||\n !path.get('callee').referencesImport('@embroider/macros', 'importSync')\n ) {\n return false;\n }\n\n const args = path.node.arguments;\n return Array.isArray(args) && args.length === 1 && t.isStringLiteral(args[0]);\n}\n\nexport function isDynamicImportExpression(t: BabelTypes, path: NodePath<any>) {\n if (!path || !path.isCallExpression() || path.node.callee.type !== 'Import') {\n return false;\n }\n\n const args = path.node.arguments;\n return Array.isArray(args) && args.length === 1 && t.isStringLiteral(args[0]);\n}\n\nexport function isDefineExpression(t: BabelTypes, path: NodePath<any>): path is DefineExpressionPath {\n // should we allow nested defines, or stop at the top level?\n if (!path.isCallExpression() || path.node.callee.type !== 'Identifier' || path.node.callee.name !== 'define') {\n return false;\n }\n\n const args = path.node.arguments;\n\n // only match define with 3 arguments define(name: string, deps: string[], cb: Function);\n return (\n Array.isArray(args) &&\n args.length === 3 &&\n t.isStringLiteral(args[0]) &&\n t.isArrayExpression(args[1]) &&\n t.isFunction(args[2])\n );\n}\n\nfunction adjustSpecifier(specifier: string, file: AdjustFile, opts: Options, isDynamic: boolean) {\n if (specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return specifier;\n }\n\n specifier = handleRenaming(specifier, file, opts);\n specifier = handleExternal(specifier, file, opts, isDynamic);\n return specifier;\n}\n\nfunction handleRenaming(specifier: string, sourceFile: AdjustFile, opts: Options) {\n let packageName = getPackageName(specifier);\n if (!packageName) {\n return specifier;\n }\n\n for (let [candidate, replacement] of Object.entries(opts.renameModules)) {\n if (candidate === specifier) {\n return replacement;\n }\n for (let extension of opts.resolvableExtensions) {\n if (candidate === specifier + '/index' + extension) {\n return replacement;\n }\n if (candidate === specifier + extension) {\n return replacement;\n }\n }\n }\n\n if (opts.renamePackages[packageName]) {\n return specifier.replace(packageName, opts.renamePackages[packageName]);\n }\n\n let pkg = sourceFile.owningPackage();\n if (!pkg || !pkg.isV2Ember()) {\n return specifier;\n }\n\n if (pkg.meta['auto-upgraded'] && pkg.name === packageName) {\n // we found a self-import, make it relative. Only auto-upgraded packages get\n // this help, v2 packages are natively supposed to use relative imports for\n // their own modules, and we want to push them all to do that correctly.\n let fullPath = specifier.replace(packageName, pkg.root);\n return explicitRelative(dirname(sourceFile.name), fullPath);\n }\n\n let relocatedIntoPkg = sourceFile.relocatedIntoPackage();\n if (relocatedIntoPkg && pkg.meta['auto-upgraded'] && relocatedIntoPkg.name === packageName) {\n // a file that was relocated into a package does a self-import of that\n // package's name. This can happen when an addon (like ember-cli-mirage)\n // emits files from its own treeForApp that contain imports of the app's own\n // fully qualified name.\n let fullPath = specifier.replace(packageName, relocatedIntoPkg.root);\n return explicitRelative(dirname(sourceFile.name), fullPath);\n }\n\n return specifier;\n}\n\nfunction isExplicitlyExternal(specifier: string, fromPkg: V2Package): boolean {\n return Boolean(fromPkg.isV2Addon() && fromPkg.meta['externals'] && fromPkg.meta['externals'].includes(specifier));\n}\n\nfunction isResolvable(packageName: string, fromPkg: V2Package, appRoot: string): false | Package {\n try {\n let dep = PackageCache.shared('embroider-stage3', appRoot).resolve(packageName, fromPkg);\n if (!dep.isEmberPackage() && fromPkg.meta['auto-upgraded'] && !fromPkg.hasDependency('ember-auto-import')) {\n // classic ember addons can only import non-ember dependencies if they\n // have ember-auto-import.\n //\n // whereas native v2 packages can always import any dependency\n return false;\n }\n return dep;\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n return false;\n }\n}\n\nconst dynamicMissingModule = compile(`\n throw new Error('Could not find module \\`{{{js-string-escape moduleName}}}\\`');\n`) as (params: { moduleName: string }) => string;\n\nconst externalTemplate = compile(`\n{{#if (eq runtimeName \"require\")}}\nconst m = window.requirejs;\n{{else}}\nconst m = window.require(\"{{{js-string-escape runtimeName}}}\");\n{{/if}}\n{{!-\n There are plenty of hand-written AMD defines floating around\n that lack this, and they will break when other build systems\n encounter them.\n\n As far as I can tell, Ember's loader was already treating this\n case as a module, so in theory we aren't breaking anything by\n marking it as such when other packagers come looking.\n\n todo: get review on this part.\n-}}\nif (m.default && !m.__esModule) {\n m.__esModule = true;\n}\nmodule.exports = m;\n`) as (params: { runtimeName: string }) => string;\n\nfunction handleExternal(specifier: string, sourceFile: AdjustFile, opts: Options, isDynamic: boolean): string {\n let pkg = sourceFile.owningPackage();\n if (!pkg || !pkg.isV2Ember()) {\n return specifier;\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n // This is a relative import. We don't automatically externalize those\n // because it's rare, and by keeping them static we give better errors. But\n // we do allow them to be explicitly externalized by the package author (or\n // a compat adapter). In the metadata, they would be listed in\n // package-relative form, so we need to convert this specifier to that.\n let absoluteSpecifier = resolve(dirname(sourceFile.name), specifier);\n let packageRelativeSpecifier = explicitRelative(pkg.root, absoluteSpecifier);\n if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {\n let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);\n return makeExternal(publicSpecifier, sourceFile, opts);\n } else {\n return specifier;\n }\n }\n\n // absolute package imports can also be explicitly external based on their\n // full specifier name\n if (isExplicitlyExternal(specifier, pkg)) {\n return makeExternal(specifier, sourceFile, opts);\n }\n\n if (!pkg.meta['auto-upgraded'] && emberVirtualPeerDeps.has(packageName)) {\n // Native v2 addons are allowed to use the emberVirtualPeerDeps like\n // `@glimmer/component`. And like all v2 addons, it's important that they\n // see those dependencies after those dependencies have been converted to\n // v2.\n //\n // But unlike auto-upgraded addons, native v2 addons are not necessarily\n // copied out of their original place in node_modules. And from that\n // original place they might accidentally resolve the emberVirtualPeerDeps\n // that are present there in v1 format.\n //\n // So before we even check isResolvable, we adjust these imports to point at\n // the app's copies instead.\n if (emberVirtualPeerDeps.has(packageName)) {\n if (!opts.activeAddons[packageName]) {\n throw new Error(`${pkg.name} is trying to import the app's ${packageName} package, but it seems to be missing`);\n }\n return explicitRelative(dirname(sourceFile.name), specifier.replace(packageName, opts.activeAddons[packageName]));\n }\n }\n\n let relocatedPkg = sourceFile.relocatedIntoPackage();\n if (relocatedPkg) {\n // this file has been moved into another package (presumably the app).\n\n // self-imports are legal in the app tree, even for v2 packages\n if (packageName === pkg.name) {\n return specifier;\n }\n\n // first try to resolve from the destination package\n if (isResolvable(packageName, relocatedPkg, opts.appRoot)) {\n if (!pkg.meta['auto-upgraded']) {\n throw new Error(\n `${pkg.name} is trying to import ${packageName} from within its app tree. This is unsafe, because ${pkg.name} can't control which dependencies are resolvable from the app`\n );\n }\n return specifier;\n } else {\n // second try to resolve from the source package\n let targetPkg = isResolvable(packageName, pkg, opts.appRoot);\n if (targetPkg) {\n if (!pkg.meta['auto-upgraded']) {\n throw new Error(\n `${pkg.name} is trying to import ${packageName} from within its app tree. This is unsafe, because ${pkg.name} can't control which dependencies are resolvable from the app`\n );\n }\n // we found it, but we need to rewrite it because it's not really going to\n // resolve from where its sitting\n return explicitRelative(dirname(sourceFile.name), specifier.replace(packageName, targetPkg.root));\n }\n }\n } else {\n if (isResolvable(packageName, pkg, opts.appRoot)) {\n if (!pkg.meta['auto-upgraded'] && !reliablyResolvable(pkg, packageName)) {\n throw new Error(\n `${pkg.name} is trying to import from ${packageName} but that is not one of its explicit dependencies`\n );\n }\n return specifier;\n }\n }\n\n // auto-upgraded packages can fall back to the set of known active addons\n if (pkg.meta['auto-upgraded'] && opts.activeAddons[packageName]) {\n return explicitRelative(dirname(sourceFile.name), specifier.replace(packageName, opts.activeAddons[packageName]));\n }\n\n if (pkg.meta['auto-upgraded']) {\n // auto-upgraded packages can fall back to attempting to find dependencies at\n // runtime. Native v2 packages can only get this behavior in the\n // isExplicitlyExternal case above because they need to explicitly ask for\n // externals.\n return makeExternal(specifier, sourceFile, opts);\n } else {\n // native v2 packages don't automatically externalize *everything* the way\n // auto-upgraded packages do, but they still externalize known and approved\n // ember virtual packages (like @ember/component)\n if (emberVirtualPackages.has(packageName)) {\n return makeExternal(specifier, sourceFile, opts);\n }\n }\n\n // non-resolvable imports in dynamic positions become runtime errors, not\n // build-time errors, so we emit the runtime error module here before the\n // stage3 packager has a chance to see the missing module. (Maybe some stage3\n // packagers will have this behavior by default, because it would make sense,\n // but webpack at least does not.)\n if (isDynamic) {\n return makeMissingModule(specifier, sourceFile, opts);\n }\n\n // this is falling through with the original specifier which was\n // non-resolvable, which will presumably cause a static build error in stage3.\n return specifier;\n}\n\nfunction makeMissingModule(specifier: string, sourceFile: AdjustFile, opts: Options): string {\n let target = join(opts.externalsDir, 'missing', specifier + '.js');\n atomicWrite(\n target,\n dynamicMissingModule({\n moduleName: specifier,\n })\n );\n return explicitRelative(dirname(sourceFile.name), target.slice(0, -3));\n}\n\nfunction makeExternal(specifier: string, sourceFile: AdjustFile, opts: Options): string {\n let target = join(opts.externalsDir, specifier + '.js');\n atomicWrite(\n target,\n externalTemplate({\n runtimeName: specifier,\n })\n );\n return explicitRelative(dirname(sourceFile.name), target.slice(0, -3));\n}\n\nfunction atomicWrite(path: string, content: string) {\n if (pathExistsSync(path)) {\n return;\n }\n let suffix = randomBytes(8).toString('hex');\n outputFileSync(path + suffix, content);\n try {\n renameSync(path + suffix, path);\n } catch (err: any) {\n // windows throws EPERM for concurrent access. For us it's not an error\n // condition because the other thread is writing the exact same value we\n // would have.\n if (err.code !== 'EPERM') {\n throw err;\n }\n }\n}\n\nexport default function main(babel: typeof Babel) {\n let t = babel.types;\n return {\n visitor: {\n Program: {\n enter(path: NodePath<t.Program>, state: State) {\n let opts = ensureOpts(state);\n state.adjustFile = new AdjustFile(path.hub.file.opts.filename, opts.relocatedFiles, opts.appRoot);\n let adder = new ImportUtil(t, path);\n addExtraImports(adder, t, path, opts.extraImports);\n },\n exit(path: NodePath<t.Program>, state: State) {\n for (let child of path.get('body')) {\n if (child.isImportDeclaration() || child.isExportNamedDeclaration() || child.isExportAllDeclaration()) {\n rewriteTopLevelImport(t, child, state);\n }\n }\n },\n },\n CallExpression(path: NodePath<t.CallExpression>, state: State) {\n if (isImportSyncExpression(t, path) || isDynamicImportExpression(t, path)) {\n const [source] = path.get('arguments');\n let opts = ensureOpts(state);\n let specifier = adjustSpecifier((source.node as any).value, state.adjustFile, opts, true);\n source.replaceWith(t.stringLiteral(specifier));\n return;\n }\n\n // Should/can we make this early exit when the first define was found?\n if (!isDefineExpression(t, path)) {\n return;\n }\n\n let pkg = state.adjustFile.owningPackage();\n if (pkg && pkg.isV2Ember() && !pkg.meta['auto-upgraded']) {\n throw new Error(\n `The file ${state.adjustFile.originalFile} in package ${pkg.name} tried to use AMD define. Native V2 Ember addons are forbidden from using AMD define, they must use ECMA export only.`\n );\n }\n\n let opts = ensureOpts(state);\n\n const dependencies = path.node.arguments[1];\n\n const specifiers = dependencies.elements.slice();\n specifiers.push(path.node.arguments[0]);\n\n for (let source of specifiers) {\n if (!source) {\n continue;\n }\n\n if (source.type !== 'StringLiteral') {\n throw path.buildCodeFrameError(`expected only string literal arguments`);\n }\n\n if (source.value === 'exports' || source.value === 'require') {\n // skip \"special\" AMD dependencies\n continue;\n }\n\n let specifier = adjustSpecifier(source.value, state.adjustFile, opts, false);\n\n if (specifier !== source.value) {\n source.value = specifier;\n }\n }\n },\n },\n };\n}\n\nfunction rewriteTopLevelImport(\n t: BabelTypes,\n path: NodePath<t.ImportDeclaration | t.ExportNamedDeclaration | t.ExportAllDeclaration>,\n state: State\n) {\n let opts = ensureOpts(state);\n const { source } = path.node;\n if (source === null || source === undefined) {\n return;\n }\n\n if (opts.emberNeedsModulesPolyfill && path.isImportDeclaration()) {\n let replacement = handleImportDeclaration(t, path);\n if (replacement) {\n path.replaceWith(replacement);\n return;\n }\n }\n\n let specifier = adjustSpecifier(source.value, state.adjustFile, opts, false);\n if (specifier !== source.value) {\n source.value = specifier;\n }\n}\n\n(main as any).baseDir = function () {\n return join(__dirname, '..');\n};\n\nfunction addExtraImports(\n adder: ImportUtil,\n t: BabelTypes,\n path: NodePath<t.Program>,\n extraImports: Required<Options>['extraImports']\n) {\n for (let { absPath, target, runtimeName } of extraImports) {\n if (absPath === path.hub.file.opts.filename) {\n if (runtimeName) {\n path.node.body.unshift(amdDefine(t, adder, path, target, runtimeName));\n } else {\n adder.importForSideEffect(target);\n }\n }\n }\n}\n\nfunction amdDefine(t: BabelTypes, adder: ImportUtil, path: NodePath<t.Program>, target: string, runtimeName: string) {\n let value = t.callExpression(adder.import(path, '@embroider/macros', 'importSync'), [t.stringLiteral(target)]);\n return t.expressionStatement(\n t.callExpression(t.memberExpression(t.identifier('window'), t.identifier('define')), [\n t.stringLiteral(runtimeName),\n t.functionExpression(null, [], t.blockStatement([t.returnStatement(value)])),\n ])\n );\n}\n\nclass AdjustFile {\n readonly originalFile: string;\n private packageCache: PackageCache;\n\n constructor(public name: string, relocatedFiles: Options['relocatedFiles'], appRoot: string) {\n this.packageCache = PackageCache.shared('embroider-stage3', appRoot);\n if (!name) {\n throw new Error(`bug: adjust-imports plugin was run without a filename`);\n }\n this.originalFile = relocatedFiles[name] || name;\n }\n\n get isRelocated() {\n return this.originalFile !== this.name;\n }\n\n @Memoize()\n owningPackage(): Package | undefined {\n return this.packageCache.ownerOfFile(this.originalFile);\n }\n\n @Memoize()\n relocatedIntoPackage(): V2Package | undefined {\n if (this.isRelocated) {\n let owning = this.packageCache.ownerOfFile(this.name);\n if (owning && !owning.isV2Ember()) {\n throw new Error(`bug: it should only be possible to get relocated into a v2 ember package here`);\n }\n return owning;\n }\n }\n}\n\nfunction ensureOpts(state: State): Options {\n let { opts } = state;\n if ('adjustImportsOptionsPath' in opts) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return (state.opts = { ...require(opts.adjustImportsOptionsPath), ...require(opts.relocatedFilesPath) });\n }\n return opts;\n}\n\n// we don't want to allow things that resolve only by accident that are likely\n// to break in other setups. For example: import your dependencies'\n// dependencies, or importing your own name from within a monorepo (which will\n// work because of the symlinking) without setting up \"exports\" (which makes\n// your own name reliably resolvable)\nfunction reliablyResolvable(pkg: V2Package, packageName: string) {\n if (pkg.hasDependency(packageName)) {\n return true;\n }\n\n if (pkg.name === packageName && pkg.packageJSON.exports) {\n return true;\n }\n\n if (emberVirtualPeerDeps.has(packageName)) {\n return true;\n }\n\n return false;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"babel-plugin-adjust-imports.js","sourceRoot":"","sources":["babel-plugin-adjust-imports.ts"],"names":[],"mappings":"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","sourcesContent":["import { emberVirtualPackages, emberVirtualPeerDeps, packageName as getPackageName } from '@embroider/shared-internals';\nimport { join, dirname, resolve } from 'path';\nimport type { NodePath } from '@babel/traverse';\nimport type * as Babel from '@babel/core';\nimport type { types as t } from '@babel/core';\nimport { PackageCache, Package, V2Package, explicitRelative } from '@embroider/shared-internals';\nimport { Memoize } from 'typescript-memoize';\nimport { compile } from './js-handlebars';\nimport { handleImportDeclaration } from './mini-modules-polyfill';\nimport { ImportUtil } from 'babel-import-util';\nimport { randomBytes } from 'crypto';\nimport { outputFileSync, pathExistsSync, renameSync } from 'fs-extra';\n\ninterface State {\n adjustFile: AdjustFile;\n opts: Options | DeflatedOptions;\n}\n\nexport interface DeflatedOptions {\n adjustImportsOptionsPath: string;\n relocatedFilesPath: string;\n}\n\ntype BabelTypes = typeof t;\n\nexport interface Options {\n renamePackages: {\n [fromName: string]: string;\n };\n renameModules: {\n [fromName: string]: string;\n };\n extraImports: {\n absPath: string;\n target: string;\n runtimeName?: string;\n }[];\n externalsDir: string;\n activeAddons: {\n [packageName: string]: string;\n };\n relocatedFiles: { [relativePath: string]: string };\n resolvableExtensions: string[];\n emberNeedsModulesPolyfill: boolean;\n appRoot: string;\n}\n\ntype DefineExpressionPath = NodePath<t.CallExpression> & {\n node: t.CallExpression & {\n arguments: [t.StringLiteral, t.ArrayExpression, Function];\n };\n};\n\nexport function isImportSyncExpression(t: BabelTypes, path: NodePath<any>) {\n if (\n !path ||\n !path.isCallExpression() ||\n path.node.callee.type !== 'Identifier' ||\n !path.get('callee').referencesImport('@embroider/macros', 'importSync')\n ) {\n return false;\n }\n\n const args = path.node.arguments;\n return Array.isArray(args) && args.length === 1 && t.isStringLiteral(args[0]);\n}\n\nexport function isDynamicImportExpression(t: BabelTypes, path: NodePath<any>) {\n if (!path || !path.isCallExpression() || path.node.callee.type !== 'Import') {\n return false;\n }\n\n const args = path.node.arguments;\n return Array.isArray(args) && args.length === 1 && t.isStringLiteral(args[0]);\n}\n\nexport function isDefineExpression(t: BabelTypes, path: NodePath<any>): path is DefineExpressionPath {\n // should we allow nested defines, or stop at the top level?\n if (!path.isCallExpression() || path.node.callee.type !== 'Identifier' || path.node.callee.name !== 'define') {\n return false;\n }\n\n const args = path.node.arguments;\n\n // only match define with 3 arguments define(name: string, deps: string[], cb: Function);\n return (\n Array.isArray(args) &&\n args.length === 3 &&\n t.isStringLiteral(args[0]) &&\n t.isArrayExpression(args[1]) &&\n t.isFunction(args[2])\n );\n}\n\nfunction adjustSpecifier(specifier: string, file: AdjustFile, opts: Options, isDynamic: boolean) {\n if (specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return specifier;\n }\n\n specifier = handleRenaming(specifier, file, opts);\n specifier = handleExternal(specifier, file, opts, isDynamic);\n return specifier;\n}\n\nfunction handleRenaming(specifier: string, sourceFile: AdjustFile, opts: Options) {\n let packageName = getPackageName(specifier);\n if (!packageName) {\n return specifier;\n }\n\n for (let [candidate, replacement] of Object.entries(opts.renameModules)) {\n if (candidate === specifier) {\n return replacement;\n }\n for (let extension of opts.resolvableExtensions) {\n if (candidate === specifier + '/index' + extension) {\n return replacement;\n }\n if (candidate === specifier + extension) {\n return replacement;\n }\n }\n }\n\n if (opts.renamePackages[packageName]) {\n return specifier.replace(packageName, opts.renamePackages[packageName]);\n }\n\n let pkg = sourceFile.owningPackage();\n if (!pkg || !pkg.isV2Ember()) {\n return specifier;\n }\n\n if (pkg.meta['auto-upgraded'] && pkg.name === packageName) {\n // we found a self-import, make it relative. Only auto-upgraded packages get\n // this help, v2 packages are natively supposed to use relative imports for\n // their own modules, and we want to push them all to do that correctly.\n let fullPath = specifier.replace(packageName, pkg.root);\n return explicitRelative(dirname(sourceFile.name), fullPath);\n }\n\n let relocatedIntoPkg = sourceFile.relocatedIntoPackage();\n if (relocatedIntoPkg && pkg.meta['auto-upgraded'] && relocatedIntoPkg.name === packageName) {\n // a file that was relocated into a package does a self-import of that\n // package's name. This can happen when an addon (like ember-cli-mirage)\n // emits files from its own treeForApp that contain imports of the app's own\n // fully qualified name.\n let fullPath = specifier.replace(packageName, relocatedIntoPkg.root);\n return explicitRelative(dirname(sourceFile.name), fullPath);\n }\n\n return specifier;\n}\n\nfunction isExplicitlyExternal(specifier: string, fromPkg: V2Package): boolean {\n return Boolean(fromPkg.isV2Addon() && fromPkg.meta['externals'] && fromPkg.meta['externals'].includes(specifier));\n}\n\nfunction isResolvable(packageName: string, fromPkg: V2Package, appRoot: string): false | Package {\n try {\n let dep = PackageCache.shared('embroider-stage3', appRoot).resolve(packageName, fromPkg);\n if (!dep.isEmberPackage() && fromPkg.meta['auto-upgraded'] && !fromPkg.hasDependency('ember-auto-import')) {\n // classic ember addons can only import non-ember dependencies if they\n // have ember-auto-import.\n //\n // whereas native v2 packages can always import any dependency\n return false;\n }\n return dep;\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n return false;\n }\n}\n\nconst dynamicMissingModule = compile(`\n throw new Error('Could not find module \\`{{{js-string-escape moduleName}}}\\`');\n`) as (params: { moduleName: string }) => string;\n\nconst externalTemplate = compile(`\n{{#if (eq runtimeName \"require\")}}\nconst m = window.requirejs;\n{{else}}\nconst m = window.require(\"{{{js-string-escape runtimeName}}}\");\n{{/if}}\n{{!-\n There are plenty of hand-written AMD defines floating around\n that lack this, and they will break when other build systems\n encounter them.\n\n As far as I can tell, Ember's loader was already treating this\n case as a module, so in theory we aren't breaking anything by\n marking it as such when other packagers come looking.\n\n todo: get review on this part.\n-}}\nif (m.default && !m.__esModule) {\n m.__esModule = true;\n}\nmodule.exports = m;\n`) as (params: { runtimeName: string }) => string;\n\nfunction handleExternal(specifier: string, sourceFile: AdjustFile, opts: Options, isDynamic: boolean): string {\n let pkg = sourceFile.owningPackage();\n if (!pkg || !pkg.isV2Ember()) {\n return specifier;\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n // This is a relative import. We don't automatically externalize those\n // because it's rare, and by keeping them static we give better errors. But\n // we do allow them to be explicitly externalized by the package author (or\n // a compat adapter). In the metadata, they would be listed in\n // package-relative form, so we need to convert this specifier to that.\n let absoluteSpecifier = resolve(dirname(sourceFile.name), specifier);\n let packageRelativeSpecifier = explicitRelative(pkg.root, absoluteSpecifier);\n if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {\n let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);\n return makeExternal(publicSpecifier, sourceFile, opts);\n } else {\n return specifier;\n }\n }\n\n // absolute package imports can also be explicitly external based on their\n // full specifier name\n if (isExplicitlyExternal(specifier, pkg)) {\n return makeExternal(specifier, sourceFile, opts);\n }\n\n if (!pkg.meta['auto-upgraded'] && emberVirtualPeerDeps.has(packageName)) {\n // Native v2 addons are allowed to use the emberVirtualPeerDeps like\n // `@glimmer/component`. And like all v2 addons, it's important that they\n // see those dependencies after those dependencies have been converted to\n // v2.\n //\n // But unlike auto-upgraded addons, native v2 addons are not necessarily\n // copied out of their original place in node_modules. And from that\n // original place they might accidentally resolve the emberVirtualPeerDeps\n // that are present there in v1 format.\n //\n // So before we even check isResolvable, we adjust these imports to point at\n // the app's copies instead.\n if (emberVirtualPeerDeps.has(packageName)) {\n if (!opts.activeAddons[packageName]) {\n throw new Error(`${pkg.name} is trying to import the app's ${packageName} package, but it seems to be missing`);\n }\n return explicitRelative(dirname(sourceFile.name), specifier.replace(packageName, opts.activeAddons[packageName]));\n }\n }\n\n let relocatedPkg = sourceFile.relocatedIntoPackage();\n if (relocatedPkg) {\n // this file has been moved into another package (presumably the app).\n\n // self-imports are legal in the app tree, even for v2 packages\n if (packageName === pkg.name) {\n return specifier;\n }\n\n // first try to resolve from the destination package\n if (isResolvable(packageName, relocatedPkg, opts.appRoot)) {\n if (!pkg.meta['auto-upgraded']) {\n throw new Error(\n `${pkg.name} is trying to import ${packageName} from within its app tree. This is unsafe, because ${pkg.name} can't control which dependencies are resolvable from the app`\n );\n }\n return specifier;\n } else {\n // second try to resolve from the source package\n let targetPkg = isResolvable(packageName, pkg, opts.appRoot);\n if (targetPkg) {\n if (!pkg.meta['auto-upgraded']) {\n throw new Error(\n `${pkg.name} is trying to import ${packageName} from within its app tree. This is unsafe, because ${pkg.name} can't control which dependencies are resolvable from the app`\n );\n }\n // we found it, but we need to rewrite it because it's not really going to\n // resolve from where its sitting\n return explicitRelative(dirname(sourceFile.name), specifier.replace(packageName, targetPkg.root));\n }\n }\n } else {\n if (isResolvable(packageName, pkg, opts.appRoot)) {\n if (!pkg.meta['auto-upgraded'] && !reliablyResolvable(pkg, packageName)) {\n throw new Error(\n `${pkg.name} is trying to import from ${packageName} but that is not one of its explicit dependencies`\n );\n }\n return specifier;\n }\n }\n\n // auto-upgraded packages can fall back to the set of known active addons\n if (pkg.meta['auto-upgraded'] && opts.activeAddons[packageName]) {\n return explicitRelative(dirname(sourceFile.name), specifier.replace(packageName, opts.activeAddons[packageName]));\n }\n\n if (pkg.meta['auto-upgraded']) {\n // auto-upgraded packages can fall back to attempting to find dependencies at\n // runtime. Native v2 packages can only get this behavior in the\n // isExplicitlyExternal case above because they need to explicitly ask for\n // externals.\n return makeExternal(specifier, sourceFile, opts);\n } else {\n // native v2 packages don't automatically externalize *everything* the way\n // auto-upgraded packages do, but they still externalize known and approved\n // ember virtual packages (like @ember/component)\n if (emberVirtualPackages.has(packageName)) {\n return makeExternal(specifier, sourceFile, opts);\n }\n }\n\n // non-resolvable imports in dynamic positions become runtime errors, not\n // build-time errors, so we emit the runtime error module here before the\n // stage3 packager has a chance to see the missing module. (Maybe some stage3\n // packagers will have this behavior by default, because it would make sense,\n // but webpack at least does not.)\n if (isDynamic) {\n return makeMissingModule(specifier, sourceFile, opts);\n }\n\n // this is falling through with the original specifier which was\n // non-resolvable, which will presumably cause a static build error in stage3.\n return specifier;\n}\n\nfunction makeMissingModule(specifier: string, sourceFile: AdjustFile, opts: Options): string {\n let target = join(opts.externalsDir, 'missing', specifier + '.js');\n atomicWrite(\n target,\n dynamicMissingModule({\n moduleName: specifier,\n })\n );\n return explicitRelative(dirname(sourceFile.name), target.slice(0, -3));\n}\n\nfunction makeExternal(specifier: string, sourceFile: AdjustFile, opts: Options): string {\n let target = join(opts.externalsDir, specifier + '.js');\n atomicWrite(\n target,\n externalTemplate({\n runtimeName: specifier,\n })\n );\n return explicitRelative(dirname(sourceFile.name), target.slice(0, -3));\n}\n\nfunction atomicWrite(path: string, content: string) {\n if (pathExistsSync(path)) {\n return;\n }\n let suffix = randomBytes(8).toString('hex');\n outputFileSync(path + suffix, content);\n try {\n renameSync(path + suffix, path);\n } catch (err: any) {\n // windows throws EPERM for concurrent access. For us it's not an error\n // condition because the other thread is writing the exact same value we\n // would have.\n if (err.code !== 'EPERM') {\n throw err;\n }\n }\n}\n\nexport default function main(babel: typeof Babel) {\n let t = babel.types;\n return {\n visitor: {\n Program: {\n enter(path: NodePath<t.Program>, state: State) {\n let opts = ensureOpts(state);\n state.adjustFile = new AdjustFile(path.hub.file.opts.filename, opts.relocatedFiles, opts.appRoot);\n let adder = new ImportUtil(t, path);\n addExtraImports(adder, t, path, opts.extraImports);\n },\n exit(path: NodePath<t.Program>, state: State) {\n for (let child of path.get('body')) {\n if (child.isImportDeclaration() || child.isExportNamedDeclaration() || child.isExportAllDeclaration()) {\n rewriteTopLevelImport(t, child, state);\n }\n }\n },\n },\n CallExpression(path: NodePath<t.CallExpression>, state: State) {\n if (isImportSyncExpression(t, path) || isDynamicImportExpression(t, path)) {\n const [source] = path.get('arguments');\n let opts = ensureOpts(state);\n let specifier = adjustSpecifier((source.node as any).value, state.adjustFile, opts, true);\n source.replaceWith(t.stringLiteral(specifier));\n return;\n }\n\n // Should/can we make this early exit when the first define was found?\n if (!isDefineExpression(t, path)) {\n return;\n }\n\n let pkg = state.adjustFile.owningPackage();\n if (pkg && pkg.isV2Ember() && !pkg.meta['auto-upgraded']) {\n throw new Error(\n `The file ${state.adjustFile.originalFile} in package ${pkg.name} tried to use AMD define. Native V2 Ember addons are forbidden from using AMD define, they must use ECMA export only.`\n );\n }\n\n let opts = ensureOpts(state);\n\n const dependencies = path.node.arguments[1];\n\n const specifiers = dependencies.elements.slice();\n specifiers.push(path.node.arguments[0]);\n\n for (let source of specifiers) {\n if (!source) {\n continue;\n }\n\n if (source.type !== 'StringLiteral') {\n throw path.buildCodeFrameError(`expected only string literal arguments`);\n }\n\n if (source.value === 'exports' || source.value === 'require') {\n // skip \"special\" AMD dependencies\n continue;\n }\n\n let specifier = adjustSpecifier(source.value, state.adjustFile, opts, false);\n\n if (specifier !== source.value) {\n source.value = specifier;\n }\n }\n },\n },\n };\n}\n\nfunction rewriteTopLevelImport(\n t: BabelTypes,\n path: NodePath<t.ImportDeclaration | t.ExportNamedDeclaration | t.ExportAllDeclaration>,\n state: State\n) {\n let opts = ensureOpts(state);\n const { source } = path.node;\n if (source === null || source === undefined) {\n return;\n }\n\n if (opts.emberNeedsModulesPolyfill && path.isImportDeclaration()) {\n let replacement = handleImportDeclaration(t, path);\n if (replacement) {\n path.replaceWith(replacement);\n return;\n }\n }\n\n let specifier = adjustSpecifier(source.value, state.adjustFile, opts, false);\n if (specifier !== source.value) {\n source.value = specifier;\n }\n}\n\n(main as any).baseDir = function () {\n return join(__dirname, '..');\n};\n\nfunction addExtraImports(\n adder: ImportUtil,\n t: BabelTypes,\n path: NodePath<t.Program>,\n extraImports: Required<Options>['extraImports']\n) {\n for (let { absPath, target, runtimeName } of extraImports) {\n if (absPath === path.hub.file.opts.filename) {\n if (runtimeName) {\n path.node.body.unshift(amdDefine(t, adder, path, target, runtimeName));\n } else {\n adder.importForSideEffect(target);\n }\n }\n }\n}\n\nfunction amdDefine(t: BabelTypes, adder: ImportUtil, path: NodePath<t.Program>, target: string, runtimeName: string) {\n let value = t.callExpression(adder.import(path, '@embroider/macros', 'importSync'), [t.stringLiteral(target)]);\n return t.expressionStatement(\n t.callExpression(t.memberExpression(t.identifier('window'), t.identifier('define')), [\n t.stringLiteral(runtimeName),\n t.functionExpression(null, [], t.blockStatement([t.returnStatement(value)])),\n ])\n );\n}\n\nclass AdjustFile {\n readonly originalFile: string;\n private packageCache: PackageCache;\n\n constructor(public name: string, relocatedFiles: Options['relocatedFiles'], appRoot: string) {\n this.packageCache = PackageCache.shared('embroider-stage3', appRoot);\n if (!name) {\n throw new Error(`bug: adjust-imports plugin was run without a filename`);\n }\n this.originalFile = relocatedFiles[name] || name;\n }\n\n get isRelocated() {\n return this.originalFile !== this.name;\n }\n\n @Memoize()\n owningPackage(): Package | undefined {\n return this.packageCache.ownerOfFile(this.originalFile);\n }\n\n @Memoize()\n relocatedIntoPackage(): V2Package | undefined {\n if (this.isRelocated) {\n let owning = this.packageCache.ownerOfFile(this.name);\n if (owning && !owning.isV2Ember()) {\n throw new Error(`bug: it should only be possible to get relocated into a v2 ember package here`);\n }\n return owning;\n }\n }\n}\n\nfunction ensureOpts(state: State): Options {\n let { opts } = state;\n if ('adjustImportsOptionsPath' in opts) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return (state.opts = { ...require(opts.adjustImportsOptionsPath), ...require(opts.relocatedFilesPath) });\n }\n return opts;\n}\n\n// we don't want to allow things that resolve only by accident that are likely\n// to break in other setups. For example: import your dependencies'\n// dependencies, or importing your own name from within a monorepo (which will\n// work because of the symlinking) without setting up \"exports\" (which makes\n// your own name reliably resolvable)\nfunction reliablyResolvable(pkg: V2Package, packageName: string) {\n if (pkg.hasDependency(packageName)) {\n return true;\n }\n\n if (pkg.name === packageName && pkg.packageJSON.exports) {\n return true;\n }\n\n if (emberVirtualPeerDeps.has(packageName)) {\n return true;\n }\n\n return false;\n}\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-plugin-inline-hbs-deps-node.js","sourceRoot":"","sources":["babel-plugin-inline-hbs-deps-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"babel-plugin-inline-hbs-deps-node.js","sourceRoot":"","sources":["babel-plugin-inline-hbs-deps-node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAA4F;AAC5F,+FAAkE;AAOzD,2FAPM,yCAAU,OAON;AADnB,kBAAe,IAAA,sCAAI,EAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,6CAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC","sourcesContent":["import { NodeTemplateCompiler, NodeTemplateCompilerParams } from './template-compiler-node';\nimport make, { precompile } from './babel-plugin-inline-hbs-deps';\n\nexport interface Params {\n templateCompiler: NodeTemplateCompilerParams;\n}\n\nexport default make((opts: Params) => new NodeTemplateCompiler(opts.templateCompiler));\nexport { precompile };\n"]}
|
|
@@ -20,7 +20,10 @@ function precompile(templateSource, options) {
|
|
|
20
20
|
if (!currentState) {
|
|
21
21
|
throw new Error(`bug: babel-plugin-ember-template-compilation and babel-plugin-inline-hbs-deps aren't coordinating correctly`);
|
|
22
22
|
}
|
|
23
|
-
let { compiled, dependencies } = compiler(currentState).precompile(templateSource,
|
|
23
|
+
let { compiled, dependencies } = compiler(currentState).precompile(templateSource, {
|
|
24
|
+
filename: currentState.file.opts.filename,
|
|
25
|
+
...options,
|
|
26
|
+
});
|
|
24
27
|
for (let dep of dependencies) {
|
|
25
28
|
currentState.dependencies.set(dep.runtimeName, dep);
|
|
26
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-plugin-inline-hbs-deps.js","sourceRoot":"","sources":["babel-plugin-inline-hbs-deps.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type * as Babel from '@babel/core';\nimport type { types as t } from '@babel/core';\nimport { join } from 'path';\nimport type { TemplateCompiler } from './template-compiler-common';\nimport { ResolvedDep } from './resolver';\nimport { templateCompilationModules } from '@embroider/shared-internals';\nimport { ImportUtil } from 'babel-import-util';\n\n/*\n In order to coordinate with babel-plugin-ember-template-compilation, we need\n to give it a `precompile` function that, as a side-effect, captures the\n dependencies needed within the current file. We do this coordination via this\n module-scoped variable, which is safe given Javascript's single-threaded\n nature and babel's synchronicity.\n*/\nlet currentState: State | undefined;\n\n/*\n This is the precompile function you should pass to\n babel-plugin-ember-template-compilation.\n*/\nexport function precompile(templateSource: string, options: Record<string, unknown>) {\n if (!currentState) {\n throw new Error(\n `bug: babel-plugin-ember-template-compilation and babel-plugin-inline-hbs-deps aren't coordinating correctly`\n );\n }\n let { compiled, dependencies } = compiler(currentState).precompile(templateSource, {\n filename: currentState.file.opts.filename,\n ...options,\n });\n for (let dep of dependencies) {\n currentState.dependencies.set(dep.runtimeName, dep);\n }\n return compiled;\n}\n\ninterface State {\n opts: {};\n file: {\n code: string;\n opts: {\n filename: string;\n };\n };\n dependencies: Map<string, ResolvedDep>;\n getCompiler: (opts: any) => TemplateCompiler;\n templateCompiler: TemplateCompiler | undefined;\n adder: ImportUtil;\n emittedCallExpressions: Set<t.Node>;\n}\n\nexport default function make(getCompiler: (opts: any) => TemplateCompiler) {\n function inlineHBSTransform(babel: typeof Babel): unknown {\n let t = babel.types;\n return {\n visitor: {\n Program: {\n enter(path: NodePath<t.Program>, state: State) {\n state.dependencies = new Map();\n state.adder = new ImportUtil(t, path);\n state.emittedCallExpressions = new Set();\n state.getCompiler = getCompiler;\n currentState = state;\n },\n exit(path: NodePath<t.Program>, state: State) {\n // we are responsible for rewriting all usages of all the\n // templateCompilationModules to standardize on\n // @ember/template-compilation, so all imports other than that one\n // need to be cleaned up here.\n for (let moduleConfig of templateCompilationModules) {\n if (moduleConfig.module !== '@ember/template-compilation') {\n state.adder.removeImport(moduleConfig.module, moduleConfig.exportedName);\n }\n }\n let counter = 0;\n for (let dep of state.dependencies.values()) {\n path.node.body.unshift(amdDefine(dep.runtimeName, counter, t));\n path.node.body.unshift(\n t.importDeclaration(\n [t.importDefaultSpecifier(t.identifier(`a${counter++}`))],\n t.stringLiteral(dep.path)\n )\n );\n }\n currentState = undefined;\n },\n },\n TaggedTemplateExpression(path: NodePath<t.TaggedTemplateExpression>, state: State) {\n for (let { module, exportedName } of templateCompilationModules) {\n if (path.get('tag').referencesImport(module, exportedName)) {\n handleTagged(path, state, t);\n }\n }\n },\n CallExpression(path: NodePath<t.CallExpression>, state: State) {\n if (state.emittedCallExpressions.has(path.node)) {\n return;\n }\n for (let { module, exportedName } of templateCompilationModules) {\n if (path.get('callee').referencesImport(module, exportedName)) {\n handleCalled(path, state, t);\n }\n }\n },\n },\n };\n }\n\n inlineHBSTransform._parallelBabel = {\n requireFile: __filename,\n };\n\n inlineHBSTransform.baseDir = function () {\n return join(__dirname, '..');\n };\n\n function handleTagged(path: NodePath<t.TaggedTemplateExpression>, state: State, t: typeof Babel.types) {\n if (path.node.quasi.expressions.length) {\n throw path.buildCodeFrameError('placeholders inside a tagged template string are not supported');\n }\n let template = path.node.quasi.quasis.map(quasi => quasi.value.cooked).join('');\n let args: t.Expression[] = [t.stringLiteral(template)];\n\n let locals: t.Identifier[] = [\n // TODO: this is where lexically scoped dependencies go\n ];\n let opts = precompileOpts(locals, t);\n if (opts) {\n args.push(opts);\n }\n\n let newCallExpression = t.callExpression(\n state.adder.import(path, '@ember/template-compilation', 'precompileTemplate'),\n args\n );\n\n state.emittedCallExpressions.add(newCallExpression);\n path.replaceWith(newCallExpression);\n }\n\n function handleCalled(path: NodePath<t.CallExpression>, state: State, t: typeof Babel.types) {\n let newCallExpression = t.callExpression(\n state.adder.import(path, '@ember/template-compilation', 'precompileTemplate'),\n path.node.arguments\n );\n state.emittedCallExpressions.add(newCallExpression);\n path.replaceWith(newCallExpression);\n }\n\n function precompileOpts(locals: t.Identifier[], t: typeof Babel.types) {\n if (locals.length > 0) {\n return t.objectExpression([\n t.objectProperty(\n t.identifier('scope'),\n t.arrowFunctionExpression(\n [],\n t.objectExpression(locals.map(name => t.objectProperty(name, name, false, true)))\n )\n ),\n ]);\n }\n }\n\n function amdDefine(runtimeName: string, importCounter: number, t: typeof Babel.types) {\n return t.expressionStatement(\n t.callExpression(t.memberExpression(t.identifier('window'), t.identifier('define')), [\n t.stringLiteral(runtimeName),\n t.functionExpression(null, [], t.blockStatement([t.returnStatement(t.identifier(`a${importCounter}`))])),\n ])\n );\n }\n return inlineHBSTransform;\n}\n\nfunction compiler(state: State) {\n if (!state.templateCompiler) {\n state.templateCompiler = state.getCompiler(state.opts);\n }\n return state.templateCompiler;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"babel-plugin-inline-hbs-deps.js","sourceRoot":"","sources":["babel-plugin-inline-hbs-deps.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type * as Babel from '@babel/core';\nimport type { types as t } from '@babel/core';\nimport { join } from 'path';\nimport type { TemplateCompiler } from './template-compiler-common';\nimport { ResolvedDep } from './resolver';\nimport { templateCompilationModules } from '@embroider/shared-internals';\nimport { ImportUtil } from 'babel-import-util';\n\n/*\n In order to coordinate with babel-plugin-ember-template-compilation, we need\n to give it a `precompile` function that, as a side-effect, captures the\n dependencies needed within the current file. We do this coordination via this\n module-scoped variable, which is safe given Javascript's single-threaded\n nature and babel's synchronicity.\n*/\nlet currentState: State | undefined;\n\n/*\n This is the precompile function you should pass to\n babel-plugin-ember-template-compilation.\n*/\nexport function precompile(templateSource: string, options: Record<string, unknown>) {\n if (!currentState) {\n throw new Error(\n `bug: babel-plugin-ember-template-compilation and babel-plugin-inline-hbs-deps aren't coordinating correctly`\n );\n }\n let { compiled, dependencies } = compiler(currentState).precompile(templateSource, {\n filename: currentState.file.opts.filename,\n ...options,\n });\n for (let dep of dependencies) {\n currentState.dependencies.set(dep.runtimeName, dep);\n }\n return compiled;\n}\n\ninterface State {\n opts: {};\n file: {\n code: string;\n opts: {\n filename: string;\n };\n };\n dependencies: Map<string, ResolvedDep>;\n getCompiler: (opts: any) => TemplateCompiler;\n templateCompiler: TemplateCompiler | undefined;\n adder: ImportUtil;\n emittedCallExpressions: Set<t.Node>;\n}\n\nexport default function make(getCompiler: (opts: any) => TemplateCompiler) {\n function inlineHBSTransform(babel: typeof Babel): unknown {\n let t = babel.types;\n return {\n visitor: {\n Program: {\n enter(path: NodePath<t.Program>, state: State) {\n state.dependencies = new Map();\n state.adder = new ImportUtil(t, path);\n state.emittedCallExpressions = new Set();\n state.getCompiler = getCompiler;\n currentState = state;\n },\n exit(path: NodePath<t.Program>, state: State) {\n // we are responsible for rewriting all usages of all the\n // templateCompilationModules to standardize on\n // @ember/template-compilation, so all imports other than that one\n // need to be cleaned up here.\n for (let moduleConfig of templateCompilationModules) {\n if (moduleConfig.module !== '@ember/template-compilation') {\n state.adder.removeImport(moduleConfig.module, moduleConfig.exportedName);\n }\n }\n let counter = 0;\n for (let dep of state.dependencies.values()) {\n path.node.body.unshift(amdDefine(dep.runtimeName, counter, t));\n path.node.body.unshift(\n t.importDeclaration(\n [t.importDefaultSpecifier(t.identifier(`a${counter++}`))],\n t.stringLiteral(dep.path)\n )\n );\n }\n currentState = undefined;\n },\n },\n TaggedTemplateExpression(path: NodePath<t.TaggedTemplateExpression>, state: State) {\n for (let { module, exportedName } of templateCompilationModules) {\n if (path.get('tag').referencesImport(module, exportedName)) {\n handleTagged(path, state, t);\n }\n }\n },\n CallExpression(path: NodePath<t.CallExpression>, state: State) {\n if (state.emittedCallExpressions.has(path.node)) {\n return;\n }\n for (let { module, exportedName } of templateCompilationModules) {\n if (path.get('callee').referencesImport(module, exportedName)) {\n handleCalled(path, state, t);\n }\n }\n },\n },\n };\n }\n\n inlineHBSTransform._parallelBabel = {\n requireFile: __filename,\n };\n\n inlineHBSTransform.baseDir = function () {\n return join(__dirname, '..');\n };\n\n function handleTagged(path: NodePath<t.TaggedTemplateExpression>, state: State, t: typeof Babel.types) {\n if (path.node.quasi.expressions.length) {\n throw path.buildCodeFrameError('placeholders inside a tagged template string are not supported');\n }\n let template = path.node.quasi.quasis.map(quasi => quasi.value.cooked).join('');\n let args: t.Expression[] = [t.stringLiteral(template)];\n\n let locals: t.Identifier[] = [\n // TODO: this is where lexically scoped dependencies go\n ];\n let opts = precompileOpts(locals, t);\n if (opts) {\n args.push(opts);\n }\n\n let newCallExpression = t.callExpression(\n state.adder.import(path, '@ember/template-compilation', 'precompileTemplate'),\n args\n );\n\n state.emittedCallExpressions.add(newCallExpression);\n path.replaceWith(newCallExpression);\n }\n\n function handleCalled(path: NodePath<t.CallExpression>, state: State, t: typeof Babel.types) {\n let newCallExpression = t.callExpression(\n state.adder.import(path, '@ember/template-compilation', 'precompileTemplate'),\n path.node.arguments\n );\n state.emittedCallExpressions.add(newCallExpression);\n path.replaceWith(newCallExpression);\n }\n\n function precompileOpts(locals: t.Identifier[], t: typeof Babel.types) {\n if (locals.length > 0) {\n return t.objectExpression([\n t.objectProperty(\n t.identifier('scope'),\n t.arrowFunctionExpression(\n [],\n t.objectExpression(locals.map(name => t.objectProperty(name, name, false, true)))\n )\n ),\n ]);\n }\n }\n\n function amdDefine(runtimeName: string, importCounter: number, t: typeof Babel.types) {\n return t.expressionStatement(\n t.callExpression(t.memberExpression(t.identifier('window'), t.identifier('define')), [\n t.stringLiteral(runtimeName),\n t.functionExpression(null, [], t.blockStatement([t.returnStatement(t.identifier(`a${importCounter}`))])),\n ])\n );\n }\n return inlineHBSTransform;\n}\n\nfunction compiler(state: State) {\n if (!state.templateCompiler) {\n state.templateCompiler = state.getCompiler(state.opts);\n }\n return state.templateCompiler;\n}\n"]}
|
package/src/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,uCAOoB;AAHlB,qHAAA,yBAAyB,OAAA;AACzB,sGAAA,UAAU,OAAA;AACV,+GAAA,mBAAmB,OAAA;AAErB,qDAAkE;AAAzD,iHAAA,cAAc,OAAA;AAGvB,mEAA4F;AAAnF,8HAAA,oBAAoB,OAAA;AAC7B,uEAAsF;AAA7E,4HAAA,gBAAgB,OAAA;AAGzB,qCAAoE;AAAvC,8GAAA,mBAAmB,OAAA;AAChD,2DAAmE;AAA1D,uIAAA,OAAO,OAAoB;AACpC,mDAAwE;AAA/D,+HAAA,OAAO,OAAgB;AAChC,6CAAsD;AAA7C,0HAAA,OAAO,OAAc;AAC9B,iDAAiE;AAAxD,oHAAA,OAAO,OAAuB;AACvC,6BAAyD;AAApC,iGAAA,UAAU,OAAA;AAC/B,uCAA4F;AAAnF,gGAAA,IAAI,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,iGAAA,KAAK,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,2GAAA,eAAe,OAAA;AACvE,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAE1B,8EAA8E;AAC9E,yDAAyD;AACzD,8DAA4C","sourcesContent":["export {\n Packager,\n PackagerConstructor,\n Variant,\n applyVariantToBabelConfig,\n getAppMeta,\n getPackagerCacheDir,\n} from './packager';\nexport { HTMLEntrypoint, BundleSummary } from './html-entrypoint';\nexport { Resolver } from './resolver';\nexport { default as Stage } from './stage';\nexport { NodeTemplateCompiler, NodeTemplateCompilerParams } from './template-compiler-node';\nexport { TemplateCompiler, TemplateCompilerParams } from './template-compiler-common';\nexport { Plugins as TemplateCompilerPlugins } from './ember-template-compiler-types';\nexport { Asset, EmberAsset, ImplicitAssetPaths } from './asset';\nexport { default as Options, optionsWithDefaults } from './options';\nexport { default as toBroccoliPlugin } from './to-broccoli-plugin';\nexport { default as WaitForTrees, OutputPaths } from './wait-for-trees';\nexport { default as BuildStage } from './build-stage';\nexport { compile as jsHandlebarsCompile } from './js-handlebars';\nexport { AppAdapter, AppBuilder, EmberENV } from './app';\nexport { todo, unsupported, warn, debug, expectWarning, throwOnWarnings } from './messages';\nexport { mangledEngineRoot } from './engine-mangler';\n\n// this is reexported because we already make users manage a peerDep from some\n// other packages (like embroider/webpack and @embroider/\nexport * from '@embroider/shared-internals';\n"]}
|
|
@@ -50,13 +50,21 @@ class TemplateCompiler {
|
|
|
50
50
|
runtimeName = filename;
|
|
51
51
|
}
|
|
52
52
|
let opts = this.syntax.defaultOptions({ contents: templateSource, moduleName: filename });
|
|
53
|
-
let plugins =
|
|
53
|
+
let plugins = {
|
|
54
|
+
...opts === null || opts === void 0 ? void 0 : opts.plugins,
|
|
55
|
+
ast: [
|
|
54
56
|
...this.getReversedASTPlugins(this.plugins.ast),
|
|
55
57
|
this.resolver && this.resolver.astTransformer(this),
|
|
56
58
|
// Ember 3.27+ uses _buildCompileOptions will not add AST plugins to its result
|
|
57
59
|
...((_b = (_a = opts === null || opts === void 0 ? void 0 : opts.plugins) === null || _a === void 0 ? void 0 : _a.ast) !== null && _b !== void 0 ? _b : []),
|
|
58
|
-
].filter(Boolean)
|
|
59
|
-
|
|
60
|
+
].filter(Boolean),
|
|
61
|
+
};
|
|
62
|
+
let compiled = this.syntax.precompile((0, strip_bom_1.default)(templateSource), {
|
|
63
|
+
contents: templateSource,
|
|
64
|
+
moduleName: runtimeName,
|
|
65
|
+
plugins,
|
|
66
|
+
...options,
|
|
67
|
+
});
|
|
60
68
|
if (this.resolver) {
|
|
61
69
|
dependencies = this.resolver.dependenciesOf(filename);
|
|
62
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-compiler-common.js","sourceRoot":"","sources":["template-compiler-common.ts"],"names":[],"mappings":"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","sourcesContent":["import stripBom from 'strip-bom';\nimport { Resolver, ResolvedDep } from './resolver';\nimport { join } from 'path';\nimport { Memoize } from 'typescript-memoize';\nimport wrapLegacyHbsPluginIfNeeded from 'wrap-legacy-hbs-plugin-if-needed';\n\nexport interface Plugins {\n ast?: unknown[];\n}\n\nexport interface AST {\n _deliberatelyOpaque: 'AST';\n}\n\nexport interface PreprocessOptions {\n contents: string;\n moduleName: string;\n plugins?: Plugins;\n filename?: string;\n\n parseOptions?: {\n srcName?: string;\n ignoreStandalone?: boolean;\n };\n\n // added in Ember 3.17 (@glimmer/syntax@0.40.2)\n mode?: 'codemod' | 'precompile';\n\n // added in Ember 3.25\n strictMode?: boolean;\n locals?: string[];\n}\n\nexport interface PrinterOptions {\n entityEncoding?: 'transformed' | 'raw';\n}\n\n// This just reflects the API we're extracting from ember-template-compiler.js,\n// plus a cache key that lets us know when the underlying source has remained\n// stable.\nexport interface GlimmerSyntax {\n preprocess(html: string, options?: PreprocessOptions): AST;\n print(ast: AST, options?: PrinterOptions): string;\n defaultOptions(options: PreprocessOptions): PreprocessOptions;\n precompile(\n templateContents: string,\n options: {\n contents: string;\n moduleName: string;\n filename: string;\n plugins?: any;\n parseOptions?: {\n srcName?: string;\n };\n }\n ): string;\n _Ember: { FEATURES: any; ENV: any };\n}\n\nexport interface TemplateCompilerParams {\n // this should be the exports object from ember-template-compiler.js. It's\n // \"unknown\" here because it changes shape in different ember versions, we\n // will do our best to consume it.\n loadEmberTemplateCompiler: () => { theExports: unknown; cacheKey: string };\n resolver?: Resolver;\n EmberENV: unknown;\n plugins: Plugins;\n}\n\nexport class TemplateCompiler {\n private loadEmberTemplateCompiler: () => { theExports: unknown; cacheKey: string };\n private resolver?: Resolver;\n private EmberENV: unknown;\n private plugins: Plugins;\n\n constructor(params: TemplateCompilerParams) {\n this.loadEmberTemplateCompiler = params.loadEmberTemplateCompiler;\n this.resolver = params.resolver;\n this.EmberENV = params.EmberENV;\n this.plugins = params.plugins;\n }\n\n private get syntax(): GlimmerSyntax {\n return this.setup().syntax;\n }\n\n get cacheKey(): string {\n return this.setup().cacheKey;\n }\n\n @Memoize()\n private setup() {\n let { theExports, cacheKey } = this.loadEmberTemplateCompiler();\n let syntax = loadGlimmerSyntax(theExports);\n initializeEmberENV(syntax, this.EmberENV);\n // todo: get resolver reflected in cacheKey\n return { syntax, cacheKey };\n }\n\n @Memoize()\n private getReversedASTPlugins(ast: unknown[]): unknown[] {\n return ast.slice().reverse();\n }\n\n // Compiles to the wire format plus dependency list.\n precompile(\n templateSource: string,\n options: Record<string, unknown> & { filename: string }\n ): { compiled: string; dependencies: ResolvedDep[] } {\n let dependencies: ResolvedDep[];\n let runtimeName: string;\n let filename: string = options.filename;\n\n if (this.resolver) {\n runtimeName = this.resolver.absPathToRuntimePath(filename);\n } else {\n runtimeName = filename;\n }\n\n let opts = this.syntax.defaultOptions({ contents: templateSource, moduleName: filename });\n let plugins: Plugins = {\n ...opts?.plugins,\n\n ast: [\n ...this.getReversedASTPlugins(this.plugins.ast!),\n this.resolver && this.resolver.astTransformer(this),\n\n // Ember 3.27+ uses _buildCompileOptions will not add AST plugins to its result\n ...(opts?.plugins?.ast ?? []),\n ].filter(Boolean),\n };\n\n let compiled = this.syntax.precompile(stripBom(templateSource), {\n contents: templateSource,\n moduleName: runtimeName,\n plugins,\n ...options,\n });\n\n if (this.resolver) {\n dependencies = this.resolver.dependenciesOf(filename);\n } else {\n dependencies = [];\n }\n\n return { compiled, dependencies };\n }\n\n // Applies all custom AST transforms and emits the results still as\n // handlebars.\n applyTransforms(moduleName: string, contents: string): string {\n let opts = this.syntax.defaultOptions({ contents, moduleName });\n\n // the user-provided plugins come first in the list, and those are the\n // only ones we want to run. The built-in plugins don't need to run here\n // in stage1, it's better that they run in stage3 when the appropriate\n // ember version is in charge.\n //\n // rather than slicing them off, we could choose instead to not call\n // syntax.defaultOptions, but then we lose some of the compatibility\n // normalization that it does on the user-provided plugins.\n opts.plugins = opts.plugins || {}; // Ember 3.27+ won't add opts.plugins\n opts.plugins.ast = this.getReversedASTPlugins(this.plugins.ast!).map(plugin => {\n // Although the precompile API does, this direct glimmer syntax api\n // does not support these legacy plugins, so we must wrap them.\n return wrapLegacyHbsPluginIfNeeded(plugin as any);\n });\n\n // instructs glimmer-vm to preserve entity encodings (e.g. don't parse -> ' ')\n opts.mode = 'codemod';\n\n opts.filename = moduleName;\n opts.moduleName = this.resolver ? this.resolver.absPathToRuntimePath(moduleName) || moduleName : moduleName;\n let ast = this.syntax.preprocess(contents, opts);\n\n return this.syntax.print(ast, { entityEncoding: 'raw' });\n }\n\n parse(moduleName: string, contents: string): AST {\n // this is just a parse, so we deliberately don't run any plugins.\n let opts = { contents, moduleName, plugins: {} };\n return this.syntax.preprocess(contents, opts);\n }\n\n baseDir() {\n return join(__dirname, '..');\n }\n}\n\n// this matches the setup done by ember-cli-htmlbars: https://git.io/JtbN6\nfunction initializeEmberENV(syntax: GlimmerSyntax, EmberENV: any) {\n if (!EmberENV) {\n return;\n }\n\n let props;\n\n if (EmberENV.FEATURES) {\n props = Object.keys(EmberENV.FEATURES);\n props.forEach(prop => {\n syntax._Ember.FEATURES[prop] = EmberENV.FEATURES[prop];\n });\n }\n\n if (EmberENV) {\n props = Object.keys(EmberENV);\n props.forEach(prop => {\n if (prop === 'FEATURES') {\n return;\n }\n syntax._Ember.ENV[prop] = EmberENV[prop];\n });\n }\n}\n\n// we could directly depend on @glimmer/syntax and have nice types and\n// everything. But the problem is, we really want to use the exact version that\n// the app itself is using, and its copy is bundled away inside\n// ember-template-compiler.js.\nfunction loadGlimmerSyntax(emberTemplateCompilerExports: any): GlimmerSyntax {\n // detect if we are using an Ember version with the exports we need\n // (from https://github.com/emberjs/ember.js/pull/19426)\n if (emberTemplateCompilerExports._preprocess !== undefined) {\n return {\n print: emberTemplateCompilerExports._print,\n preprocess: emberTemplateCompilerExports._preprocess,\n defaultOptions: emberTemplateCompilerExports._buildCompileOptions,\n precompile: emberTemplateCompilerExports.precompile,\n _Ember: emberTemplateCompilerExports._Ember,\n };\n } else {\n // Older Ember versions (prior to 3.27) do not expose a public way to to source 2 source compilation of templates.\n // because of this, we must resort to some hackery.\n //\n // We use the following API's (that we grab from Ember.__loader):\n //\n // * glimmer/syntax's preprocess\n // * glimmer/syntax's print\n // * ember-template-compiler/lib/system/compile-options's defaultOptions\n let syntax = (emberTemplateCompilerExports.Ember ?? emberTemplateCompilerExports._Ember).__loader.require(\n '@glimmer/syntax'\n );\n let compilerOptions = (emberTemplateCompilerExports.Ember ?? emberTemplateCompilerExports._Ember).__loader.require(\n 'ember-template-compiler/lib/system/compile-options'\n );\n\n return {\n print: syntax.print,\n preprocess: syntax.preprocess,\n defaultOptions: compilerOptions.default,\n precompile: emberTemplateCompilerExports.precompile,\n _Ember: emberTemplateCompilerExports._Ember,\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"template-compiler-common.js","sourceRoot":"","sources":["template-compiler-common.ts"],"names":[],"mappings":"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","sourcesContent":["import stripBom from 'strip-bom';\nimport { Resolver, ResolvedDep } from './resolver';\nimport { join } from 'path';\nimport { Memoize } from 'typescript-memoize';\nimport wrapLegacyHbsPluginIfNeeded from 'wrap-legacy-hbs-plugin-if-needed';\n\nexport interface Plugins {\n ast?: unknown[];\n}\n\nexport interface AST {\n _deliberatelyOpaque: 'AST';\n}\n\nexport interface PreprocessOptions {\n contents: string;\n moduleName: string;\n plugins?: Plugins;\n filename?: string;\n\n parseOptions?: {\n srcName?: string;\n ignoreStandalone?: boolean;\n };\n\n // added in Ember 3.17 (@glimmer/syntax@0.40.2)\n mode?: 'codemod' | 'precompile';\n\n // added in Ember 3.25\n strictMode?: boolean;\n locals?: string[];\n}\n\nexport interface PrinterOptions {\n entityEncoding?: 'transformed' | 'raw';\n}\n\n// This just reflects the API we're extracting from ember-template-compiler.js,\n// plus a cache key that lets us know when the underlying source has remained\n// stable.\nexport interface GlimmerSyntax {\n preprocess(html: string, options?: PreprocessOptions): AST;\n print(ast: AST, options?: PrinterOptions): string;\n defaultOptions(options: PreprocessOptions): PreprocessOptions;\n precompile(\n templateContents: string,\n options: {\n contents: string;\n moduleName: string;\n filename: string;\n plugins?: any;\n parseOptions?: {\n srcName?: string;\n };\n }\n ): string;\n _Ember: { FEATURES: any; ENV: any };\n}\n\nexport interface TemplateCompilerParams {\n // this should be the exports object from ember-template-compiler.js. It's\n // \"unknown\" here because it changes shape in different ember versions, we\n // will do our best to consume it.\n loadEmberTemplateCompiler: () => { theExports: unknown; cacheKey: string };\n resolver?: Resolver;\n EmberENV: unknown;\n plugins: Plugins;\n}\n\nexport class TemplateCompiler {\n private loadEmberTemplateCompiler: () => { theExports: unknown; cacheKey: string };\n private resolver?: Resolver;\n private EmberENV: unknown;\n private plugins: Plugins;\n\n constructor(params: TemplateCompilerParams) {\n this.loadEmberTemplateCompiler = params.loadEmberTemplateCompiler;\n this.resolver = params.resolver;\n this.EmberENV = params.EmberENV;\n this.plugins = params.plugins;\n }\n\n private get syntax(): GlimmerSyntax {\n return this.setup().syntax;\n }\n\n get cacheKey(): string {\n return this.setup().cacheKey;\n }\n\n @Memoize()\n private setup() {\n let { theExports, cacheKey } = this.loadEmberTemplateCompiler();\n let syntax = loadGlimmerSyntax(theExports);\n initializeEmberENV(syntax, this.EmberENV);\n // todo: get resolver reflected in cacheKey\n return { syntax, cacheKey };\n }\n\n @Memoize()\n private getReversedASTPlugins(ast: unknown[]): unknown[] {\n return ast.slice().reverse();\n }\n\n // Compiles to the wire format plus dependency list.\n precompile(\n templateSource: string,\n options: Record<string, unknown> & { filename: string }\n ): { compiled: string; dependencies: ResolvedDep[] } {\n let dependencies: ResolvedDep[];\n let runtimeName: string;\n let filename: string = options.filename;\n\n if (this.resolver) {\n runtimeName = this.resolver.absPathToRuntimePath(filename);\n } else {\n runtimeName = filename;\n }\n\n let opts = this.syntax.defaultOptions({ contents: templateSource, moduleName: filename });\n let plugins: Plugins = {\n ...opts?.plugins,\n\n ast: [\n ...this.getReversedASTPlugins(this.plugins.ast!),\n this.resolver && this.resolver.astTransformer(this),\n\n // Ember 3.27+ uses _buildCompileOptions will not add AST plugins to its result\n ...(opts?.plugins?.ast ?? []),\n ].filter(Boolean),\n };\n\n let compiled = this.syntax.precompile(stripBom(templateSource), {\n contents: templateSource,\n moduleName: runtimeName,\n plugins,\n ...options,\n });\n\n if (this.resolver) {\n dependencies = this.resolver.dependenciesOf(filename);\n } else {\n dependencies = [];\n }\n\n return { compiled, dependencies };\n }\n\n // Applies all custom AST transforms and emits the results still as\n // handlebars.\n applyTransforms(moduleName: string, contents: string): string {\n let opts = this.syntax.defaultOptions({ contents, moduleName });\n\n // the user-provided plugins come first in the list, and those are the\n // only ones we want to run. The built-in plugins don't need to run here\n // in stage1, it's better that they run in stage3 when the appropriate\n // ember version is in charge.\n //\n // rather than slicing them off, we could choose instead to not call\n // syntax.defaultOptions, but then we lose some of the compatibility\n // normalization that it does on the user-provided plugins.\n opts.plugins = opts.plugins || {}; // Ember 3.27+ won't add opts.plugins\n opts.plugins.ast = this.getReversedASTPlugins(this.plugins.ast!).map(plugin => {\n // Although the precompile API does, this direct glimmer syntax api\n // does not support these legacy plugins, so we must wrap them.\n return wrapLegacyHbsPluginIfNeeded(plugin as any);\n });\n\n // instructs glimmer-vm to preserve entity encodings (e.g. don't parse -> ' ')\n opts.mode = 'codemod';\n\n opts.filename = moduleName;\n opts.moduleName = this.resolver ? this.resolver.absPathToRuntimePath(moduleName) || moduleName : moduleName;\n let ast = this.syntax.preprocess(contents, opts);\n\n return this.syntax.print(ast, { entityEncoding: 'raw' });\n }\n\n parse(moduleName: string, contents: string): AST {\n // this is just a parse, so we deliberately don't run any plugins.\n let opts = { contents, moduleName, plugins: {} };\n return this.syntax.preprocess(contents, opts);\n }\n\n baseDir() {\n return join(__dirname, '..');\n }\n}\n\n// this matches the setup done by ember-cli-htmlbars: https://git.io/JtbN6\nfunction initializeEmberENV(syntax: GlimmerSyntax, EmberENV: any) {\n if (!EmberENV) {\n return;\n }\n\n let props;\n\n if (EmberENV.FEATURES) {\n props = Object.keys(EmberENV.FEATURES);\n props.forEach(prop => {\n syntax._Ember.FEATURES[prop] = EmberENV.FEATURES[prop];\n });\n }\n\n if (EmberENV) {\n props = Object.keys(EmberENV);\n props.forEach(prop => {\n if (prop === 'FEATURES') {\n return;\n }\n syntax._Ember.ENV[prop] = EmberENV[prop];\n });\n }\n}\n\n// we could directly depend on @glimmer/syntax and have nice types and\n// everything. But the problem is, we really want to use the exact version that\n// the app itself is using, and its copy is bundled away inside\n// ember-template-compiler.js.\nfunction loadGlimmerSyntax(emberTemplateCompilerExports: any): GlimmerSyntax {\n // detect if we are using an Ember version with the exports we need\n // (from https://github.com/emberjs/ember.js/pull/19426)\n if (emberTemplateCompilerExports._preprocess !== undefined) {\n return {\n print: emberTemplateCompilerExports._print,\n preprocess: emberTemplateCompilerExports._preprocess,\n defaultOptions: emberTemplateCompilerExports._buildCompileOptions,\n precompile: emberTemplateCompilerExports.precompile,\n _Ember: emberTemplateCompilerExports._Ember,\n };\n } else {\n // Older Ember versions (prior to 3.27) do not expose a public way to to source 2 source compilation of templates.\n // because of this, we must resort to some hackery.\n //\n // We use the following API's (that we grab from Ember.__loader):\n //\n // * glimmer/syntax's preprocess\n // * glimmer/syntax's print\n // * ember-template-compiler/lib/system/compile-options's defaultOptions\n let syntax = (emberTemplateCompilerExports.Ember ?? emberTemplateCompilerExports._Ember).__loader.require(\n '@glimmer/syntax'\n );\n let compilerOptions = (emberTemplateCompilerExports.Ember ?? emberTemplateCompilerExports._Ember).__loader.require(\n 'ember-template-compiler/lib/system/compile-options'\n );\n\n return {\n print: syntax.print,\n preprocess: syntax.preprocess,\n defaultOptions: compilerOptions.default,\n precompile: emberTemplateCompilerExports.precompile,\n _Ember: emberTemplateCompilerExports._Ember,\n };\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PortableHint } from './portable';
|
|
2
|
+
import type { NodeTemplateCompilerParams } from './template-compiler-node';
|
|
3
|
+
export declare function templateCompilerModule(params: NodeTemplateCompilerParams, hints: PortableHint[]): {
|
|
4
|
+
src: string;
|
|
5
|
+
isParallelSafe: boolean;
|
|
6
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.templateCompilerModule = void 0;
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const portable_1 = require("./portable");
|
|
9
|
+
const js_string_escape_1 = __importDefault(require("js-string-escape"));
|
|
10
|
+
function templateCompilerModule(params, hints) {
|
|
11
|
+
let p = new portable_1.Portable({ hints });
|
|
12
|
+
let result = p.dehydrate(params);
|
|
13
|
+
return {
|
|
14
|
+
src: [
|
|
15
|
+
`const { NodeTemplateCompiler } = require("${(0, js_string_escape_1.default)((0, path_1.resolve)(__dirname, './template-compiler-node.js'))}");`,
|
|
16
|
+
`const { Portable } = require("${(0, js_string_escape_1.default)((0, path_1.resolve)(__dirname, './portable.js'))}");`,
|
|
17
|
+
`let p = new Portable({ hints: ${JSON.stringify(hints, null, 2)} });`,
|
|
18
|
+
`module.exports = new NodeTemplateCompiler(p.hydrate(${JSON.stringify(result.value, null, 2)}))`,
|
|
19
|
+
].join('\n'),
|
|
20
|
+
isParallelSafe: result.isParallelSafe,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.templateCompilerModule = templateCompilerModule;
|
|
24
|
+
//# sourceMappingURL=write-template-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-template-compiler.js","sourceRoot":"","sources":["write-template-compiler.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,yCAAoD;AAEpD,wEAA8C;AAE9C,SAAgB,sBAAsB,CAAC,MAAkC,EAAE,KAAqB;IAC9F,IAAI,CAAC,GAAG,IAAI,mBAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO;QACL,GAAG,EAAE;YACH,6CAA6C,IAAA,0BAAc,EACzD,IAAA,cAAO,EAAC,SAAS,EAAE,6BAA6B,CAAC,CAClD,KAAK;YACN,iCAAiC,IAAA,0BAAc,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC,KAAK;YACzF,iCAAiC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM;YACrE,uDAAuD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;SACjG,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC;AACJ,CAAC;AAdD,wDAcC","sourcesContent":["import { resolve } from 'path';\nimport { Portable, PortableHint } from './portable';\nimport type { NodeTemplateCompilerParams } from './template-compiler-node';\nimport jsStringEscape from 'js-string-escape';\n\nexport function templateCompilerModule(params: NodeTemplateCompilerParams, hints: PortableHint[]) {\n let p = new Portable({ hints });\n let result = p.dehydrate(params);\n return {\n src: [\n `const { NodeTemplateCompiler } = require(\"${jsStringEscape(\n resolve(__dirname, './template-compiler-node.js')\n )}\");`,\n `const { Portable } = require(\"${jsStringEscape(resolve(__dirname, './portable.js'))}\");`,\n `let p = new Portable({ hints: ${JSON.stringify(hints, null, 2)} });`,\n `module.exports = new NodeTemplateCompiler(p.hydrate(${JSON.stringify(result.value, null, 2)}))`,\n ].join('\\n'),\n isParallelSafe: result.isParallelSafe,\n };\n}\n"]}
|