@wyw-in-js/transform 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/esm/index.js +5 -1
  2. package/esm/index.js.map +1 -1
  3. package/esm/options/loadBabelOptions.js +1 -1
  4. package/esm/options/loadBabelOptions.js.map +1 -1
  5. package/esm/plugins/babel-transform.js +2 -2
  6. package/esm/plugins/babel-transform.js.map +1 -1
  7. package/esm/plugins/collector.js +4 -4
  8. package/esm/plugins/collector.js.map +1 -1
  9. package/esm/plugins/preeval.js +11 -11
  10. package/esm/plugins/preeval.js.map +1 -1
  11. package/esm/plugins/shaker.js +5 -5
  12. package/esm/plugins/shaker.js.map +1 -1
  13. package/esm/shaker.js +2 -2
  14. package/esm/shaker.js.map +1 -1
  15. package/esm/transform/Entrypoint.helpers.js +1 -2
  16. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  17. package/esm/transform/Entrypoint.js +4 -4
  18. package/esm/transform/Entrypoint.js.map +1 -1
  19. package/esm/transform/generators/collect.js +3 -2
  20. package/esm/transform/generators/collect.js.map +1 -1
  21. package/esm/transform/generators/evalFile.js +6 -6
  22. package/esm/transform/generators/evalFile.js.map +1 -1
  23. package/esm/transform/generators/extract.js +18 -14
  24. package/esm/transform/generators/extract.js.map +1 -1
  25. package/esm/transform/generators/transform.js +2 -2
  26. package/esm/transform/generators/transform.js.map +1 -1
  27. package/esm/transform/generators/workflow.js +3 -3
  28. package/esm/transform/generators/workflow.js.map +1 -1
  29. package/esm/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +5 -5
  30. package/esm/transform/helpers/loadWywOptions.js.map +1 -0
  31. package/esm/transform.js +11 -10
  32. package/esm/transform.js.map +1 -1
  33. package/esm/types.js.map +1 -1
  34. package/esm/utils/ShakerMetadata.js +1 -1
  35. package/esm/utils/ShakerMetadata.js.map +1 -1
  36. package/esm/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +10 -10
  37. package/esm/utils/addIdentifierToWywPreval.js.map +1 -0
  38. package/esm/utils/collectExportsAndImports.js +141 -53
  39. package/esm/utils/collectExportsAndImports.js.map +1 -1
  40. package/esm/utils/collectTemplateDependencies.js +2 -2
  41. package/esm/utils/collectTemplateDependencies.js.map +1 -1
  42. package/esm/utils/getTagProcessor.js +1 -1
  43. package/esm/utils/getTagProcessor.js.map +1 -1
  44. package/esm/utils/hasWywPreval.js +7 -0
  45. package/esm/utils/hasWywPreval.js.map +1 -0
  46. package/lib/index.js +36 -4
  47. package/lib/index.js.map +1 -1
  48. package/lib/options/loadBabelOptions.js +1 -1
  49. package/lib/options/loadBabelOptions.js.map +1 -1
  50. package/lib/plugins/babel-transform.js +2 -2
  51. package/lib/plugins/babel-transform.js.map +1 -1
  52. package/lib/plugins/collector.js +4 -4
  53. package/lib/plugins/collector.js.map +1 -1
  54. package/lib/plugins/preeval.js +11 -11
  55. package/lib/plugins/preeval.js.map +1 -1
  56. package/lib/plugins/shaker.js +5 -5
  57. package/lib/plugins/shaker.js.map +1 -1
  58. package/lib/shaker.js +2 -2
  59. package/lib/shaker.js.map +1 -1
  60. package/lib/transform/Entrypoint.helpers.js +1 -2
  61. package/lib/transform/Entrypoint.helpers.js.map +1 -1
  62. package/lib/transform/Entrypoint.js +4 -4
  63. package/lib/transform/Entrypoint.js.map +1 -1
  64. package/lib/transform/generators/collect.js +1 -1
  65. package/lib/transform/generators/collect.js.map +1 -1
  66. package/lib/transform/generators/evalFile.js +6 -6
  67. package/lib/transform/generators/evalFile.js.map +1 -1
  68. package/lib/transform/generators/extract.js +18 -14
  69. package/lib/transform/generators/extract.js.map +1 -1
  70. package/lib/transform/generators/transform.js +2 -2
  71. package/lib/transform/generators/transform.js.map +1 -1
  72. package/lib/transform/generators/workflow.js +3 -3
  73. package/lib/transform/generators/workflow.js.map +1 -1
  74. package/lib/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +6 -6
  75. package/lib/transform/helpers/loadWywOptions.js.map +1 -0
  76. package/lib/transform/helpers/withDefaultServices.js +2 -2
  77. package/lib/transform/helpers/withDefaultServices.js.map +1 -1
  78. package/lib/transform.js +11 -10
  79. package/lib/transform.js.map +1 -1
  80. package/lib/types.js.map +1 -1
  81. package/lib/utils/ShakerMetadata.js +1 -1
  82. package/lib/utils/ShakerMetadata.js.map +1 -1
  83. package/lib/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +12 -12
  84. package/lib/utils/addIdentifierToWywPreval.js.map +1 -0
  85. package/lib/utils/collectExportsAndImports.js +141 -53
  86. package/lib/utils/collectExportsAndImports.js.map +1 -1
  87. package/lib/utils/collectTemplateDependencies.js +2 -2
  88. package/lib/utils/collectTemplateDependencies.js.map +1 -1
  89. package/lib/utils/getTagProcessor.js +2 -2
  90. package/lib/utils/getTagProcessor.js.map +1 -1
  91. package/lib/utils/hasWywPreval.js +13 -0
  92. package/lib/utils/hasWywPreval.js.map +1 -0
  93. package/lib/vm/createVmContext.js +2 -2
  94. package/lib/vm/createVmContext.js.map +1 -1
  95. package/package.json +25 -21
  96. package/types/index.d.ts +6 -2
  97. package/types/index.js +11 -3
  98. package/types/options/loadBabelOptions.js +1 -1
  99. package/types/plugins/babel-transform.js +2 -2
  100. package/types/plugins/collector.js +4 -4
  101. package/types/plugins/preeval.js +11 -11
  102. package/types/plugins/shaker.js +5 -5
  103. package/types/shaker.js +2 -2
  104. package/types/transform/Entrypoint.d.ts +1 -1
  105. package/types/transform/Entrypoint.helpers.js +3 -3
  106. package/types/transform/Entrypoint.js +4 -4
  107. package/types/transform/generators/collect.js +1 -1
  108. package/types/transform/generators/evalFile.js +7 -7
  109. package/types/transform/generators/extract.js +21 -12
  110. package/types/transform/generators/transform.js +2 -4
  111. package/types/transform/generators/workflow.js +3 -3
  112. package/types/transform/helpers/{loadLinariaOptions.d.ts → loadWywOptions.d.ts} +1 -1
  113. package/types/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +19 -19
  114. package/types/transform.d.ts +7 -6
  115. package/types/transform.js +11 -10
  116. package/types/types.d.ts +1 -1
  117. package/types/utils/ShakerMetadata.d.ts +1 -1
  118. package/types/utils/ShakerMetadata.js +1 -1
  119. package/types/utils/addIdentifierToWywPreval.d.ts +4 -0
  120. package/types/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +12 -12
  121. package/types/utils/collectExportsAndImports.js +157 -58
  122. package/types/utils/collectTemplateDependencies.d.ts +1 -1
  123. package/types/utils/collectTemplateDependencies.js +2 -2
  124. package/types/utils/getTagProcessor.js +2 -2
  125. package/types/utils/hasWywPreval.d.ts +4 -0
  126. package/types/utils/{hasLinariaPreval.js → hasWywPreval.js} +3 -3
  127. package/esm/transform/helpers/loadLinariaOptions.js.map +0 -1
  128. package/esm/utils/addIdentifierToLinariaPreval.js.map +0 -1
  129. package/esm/utils/findPackageJSON.js +0 -22
  130. package/esm/utils/findPackageJSON.js.map +0 -1
  131. package/esm/utils/hasLinariaPreval.js +0 -7
  132. package/esm/utils/hasLinariaPreval.js.map +0 -1
  133. package/lib/transform/helpers/loadLinariaOptions.js.map +0 -1
  134. package/lib/utils/addIdentifierToLinariaPreval.js.map +0 -1
  135. package/lib/utils/findPackageJSON.js +0 -29
  136. package/lib/utils/findPackageJSON.js.map +0 -1
  137. package/lib/utils/hasLinariaPreval.js +0 -13
  138. package/lib/utils/hasLinariaPreval.js.map +0 -1
  139. package/types/utils/addIdentifierToLinariaPreval.d.ts +0 -4
  140. package/types/utils/findPackageJSON.d.ts +0 -1
  141. package/types/utils/findPackageJSON.js +0 -29
  142. package/types/utils/hasLinariaPreval.d.ts +0 -4
@@ -220,26 +220,55 @@ function getCalleeName(path) {
220
220
  }
221
221
  return undefined;
222
222
  }
223
- function getImportExportTypeByInteropFunction(path) {
224
- const name = getCalleeName(path);
223
+ const matchCall = (p, rules) => {
224
+ const name = getCalleeName(p);
225
225
  if (name === undefined) {
226
- return undefined;
227
- }
228
- if (name.startsWith('__exportStar')) {
226
+ return false;
227
+ }
228
+ return rules.some(([n, ...args]) => {
229
+ if (name !== n)
230
+ return false;
231
+ const fnArgs = p.get('arguments');
232
+ if (fnArgs.length !== args.length)
233
+ return false;
234
+ return args.every((arg, i) => {
235
+ if (arg === '*')
236
+ return true;
237
+ if (typeof arg === 'function')
238
+ return arg(fnArgs[i]);
239
+ return arg === fnArgs[i];
240
+ });
241
+ });
242
+ };
243
+ function getImportExportTypeByInteropFunction(path, argPath) {
244
+ if (matchCall(path, [['__exportStar', argPath, (p) => (0, isExports_1.isExports)(p)]])) {
229
245
  return 're-export:*';
230
246
  }
231
- if (name.startsWith('_interopRequireDefault') ||
232
- name.startsWith('__importDefault')) {
247
+ if (matchCall(path, [
248
+ ['_interopRequireDefault', argPath],
249
+ ['_interop_require_default', argPath],
250
+ ['__importDefault', argPath], // ?
251
+ ])) {
233
252
  return 'default';
234
253
  }
235
- if (name.startsWith('_interopRequireWildcard') ||
236
- name.startsWith('__importStar') ||
237
- name.startsWith('__toESM')) {
254
+ if (matchCall(path, [
255
+ ['_interopRequireWildcard', argPath],
256
+ ['_interop_require_wildcard', argPath],
257
+ ['__importStar', argPath],
258
+ ['__toESM', argPath],
259
+ ['__toModule', argPath], // esbuild <0.14.7
260
+ ])) {
238
261
  return 'import:*';
239
262
  }
240
- if (name.startsWith('__rest') ||
241
- name.startsWith('__objRest') ||
242
- name.startsWith('_objectDestructuringEmpty')) {
263
+ if (matchCall(path, [
264
+ ['_extends', isEmptyObject, argPath],
265
+ ['__rest', argPath, isArrayExpression],
266
+ ['__objRest', argPath, isArrayExpression],
267
+ ['_objectWithoutProperties', argPath, isArrayExpression],
268
+ ['_object_without_properties', argPath, isArrayExpression],
269
+ ['_objectDestructuringEmpty', argPath],
270
+ ['_object_destructuring_empty', argPath], // swc >=1.3.50
271
+ ])) {
243
272
  return 'import:*';
244
273
  }
245
274
  return undefined;
@@ -252,6 +281,28 @@ function isAlreadyProcessed(path) {
252
281
  }
253
282
  return false;
254
283
  }
284
+ function isRequireCall(path) {
285
+ return path.isCallExpression() && (0, isRequire_1.isRequire)(path.get('callee'));
286
+ }
287
+ function isEmptyObject(path) {
288
+ return path.isObjectExpression() && path.node.properties.length === 0;
289
+ }
290
+ function isArrayExpression(path) {
291
+ return path.isArrayExpression();
292
+ }
293
+ function isCallExpression(pathOrName) {
294
+ if (typeof pathOrName === 'string') {
295
+ return (p) => p.isCallExpression() &&
296
+ p.get('callee').isIdentifier({ name: pathOrName });
297
+ }
298
+ return pathOrName.isCallExpression();
299
+ }
300
+ function isObjectExpression(path) {
301
+ return path.isObjectExpression();
302
+ }
303
+ function isIdentifier(name) {
304
+ return (path) => path.isIdentifier({ name });
305
+ }
255
306
  function collectFromRequire(path, state) {
256
307
  if (!(0, isRequire_1.isRequire)(path))
257
308
  return;
@@ -272,10 +323,10 @@ function collectFromRequire(path, state) {
272
323
  }
273
324
  const source = sourcePath.node.value;
274
325
  const { parentPath: container, key } = callExpression;
275
- if (container.isCallExpression() && key === 0) {
326
+ if (container.isCallExpression()) {
276
327
  // It may be transpiled import such as
277
328
  // `var _atomic = _interopRequireDefault(require("@linaria/atomic"));`
278
- const imported = getImportExportTypeByInteropFunction(container);
329
+ const imported = getImportExportTypeByInteropFunction(container, callExpression);
279
330
  if (!imported) {
280
331
  // It's not a transpiled import.
281
332
  // TODO: Can we guess that it's a namespace import?
@@ -526,8 +577,7 @@ function collectFromExports(path, state) {
526
577
  // It is `exports.foo = void 0`
527
578
  return;
528
579
  }
529
- const { name } = property.node;
530
- if (name === '__esModule') {
580
+ if (exportName === '__esModule') {
531
581
  // eslint-disable-next-line no-param-reassign
532
582
  state.isEsModule = true;
533
583
  return;
@@ -600,7 +650,12 @@ function unfoldNamespaceImport(importItem) {
600
650
  if (!binding?.referenced) {
601
651
  // Imported namespace is not referenced and probably not used,
602
652
  // but it can have side effects, so we should keep it as is
603
- return [importItem];
653
+ return [
654
+ {
655
+ ...importItem,
656
+ imported: 'side-effect',
657
+ },
658
+ ];
604
659
  }
605
660
  for (const referencePath of binding?.referencePaths ?? []) {
606
661
  if (referencePath.find((ancestor) => ancestor.isTSType() || ancestor.isFlowType())) {
@@ -640,7 +695,7 @@ function unfoldNamespaceImport(importItem) {
640
695
  if (parentPath?.isCallExpression() &&
641
696
  referencePath.listKey === 'arguments') {
642
697
  // The defined variable is used as a function argument. Let's try to figure out what is imported.
643
- const importType = getImportExportTypeByInteropFunction(parentPath);
698
+ const importType = getImportExportTypeByInteropFunction(parentPath, referencePath);
644
699
  if (!importType) {
645
700
  // Imported value is used as an unknown function argument,
646
701
  // so we can't predict usage and import it as is.
@@ -785,9 +840,12 @@ function collectFromAssignmentExpression(path, state) {
785
840
  let exported;
786
841
  if (left.isMemberExpression() && (0, isExports_1.isExports)(left.get('object'))) {
787
842
  const property = left.get('property');
788
- if (property.isIdentifier()) {
843
+ if (!left.node.computed && property.isIdentifier()) {
789
844
  exported = property.node.name;
790
845
  }
846
+ else if (left.node.computed && property.isStringLiteral()) {
847
+ exported = property.node.value;
848
+ }
791
849
  }
792
850
  else if ((0, isExports_1.isExports)(left)) {
793
851
  // module.exports = ...
@@ -797,9 +855,24 @@ function collectFromAssignmentExpression(path, state) {
797
855
  }
798
856
  if (!exported)
799
857
  return;
800
- if (!right.isCallExpression() || !(0, isRequire_1.isRequire)(right.get('callee'))) {
858
+ if (exported === '__esModule') {
801
859
  // eslint-disable-next-line no-param-reassign
802
- state.exports[exported] = right;
860
+ state.isEsModule = true;
861
+ return;
862
+ }
863
+ if (!isRequireCall(right)) {
864
+ const relatedImport = state.imports.find((imp) => imp.local === right);
865
+ if (relatedImport) {
866
+ state.reexports.push({
867
+ exported,
868
+ ...relatedImport,
869
+ });
870
+ }
871
+ else {
872
+ // eslint-disable-next-line no-param-reassign
873
+ state.exports[exported] = right;
874
+ }
875
+ path.skip();
803
876
  return;
804
877
  }
805
878
  const sourcePath = right.get('arguments')?.[0];
@@ -821,10 +894,8 @@ function collectFromAssignmentExpression(path, state) {
821
894
  });
822
895
  path.skip();
823
896
  }
824
- function collectFromExportStarCall(path, state) {
825
- const [requireCall, exports] = path.get('arguments');
826
- if (!(0, isExports_1.isExports)(exports))
827
- return;
897
+ function collectAllFromCall(path, require, state) {
898
+ const requireCall = typeof require === 'number' ? path.get('arguments')[require] : require;
828
899
  if (!requireCall.isCallExpression())
829
900
  return;
830
901
  const callee = requireCall.get('callee');
@@ -862,25 +933,33 @@ function collectFromMap(map, state) {
862
933
  addExport(returnValue, exported, state);
863
934
  });
864
935
  }
865
- function collectFromEsbuildExportCall(path, state) {
866
- const [sourceExports, map] = path.get('arguments');
867
- if (!sourceExports.isIdentifier({ name: 'source_exports' }))
868
- return;
936
+ function collectMapFromCall(path, mapPosition, state) {
937
+ const map = path.get('arguments')[mapPosition];
869
938
  if (!map.isObjectExpression())
870
939
  return;
871
940
  collectFromMap(map, state);
872
941
  path.skip();
873
942
  }
874
943
  function collectFromEsbuildReExportCall(path, state) {
875
- const [sourceExports, requireCall, exports] = path.get('arguments');
876
- if (!sourceExports.isIdentifier({ name: 'source_exports' }))
944
+ const [sourceExports, someCall, exports] = path.get('arguments');
945
+ if (!sourceExports.isIdentifier({ name: 'source_exports' }) &&
946
+ !(0, isExports_1.isExports)(sourceExports))
877
947
  return;
878
- if (!requireCall.isCallExpression())
948
+ if (!someCall.isCallExpression())
879
949
  return;
880
- if (!(0, isExports_1.isExports)(exports))
881
- return;
882
- const callee = requireCall.get('callee');
883
- if (!(0, isRequire_1.isRequire)(callee))
950
+ let requireCall = someCall;
951
+ while (!(0, isRequire_1.isRequire)(requireCall.get('callee'))) {
952
+ const args = requireCall.get('arguments');
953
+ if (args.length !== 1) {
954
+ return;
955
+ }
956
+ const firstArg = args[0];
957
+ if (!firstArg.isCallExpression()) {
958
+ return;
959
+ }
960
+ requireCall = firstArg;
961
+ }
962
+ if (exports !== undefined && !(0, isExports_1.isExports)(exports))
884
963
  return;
885
964
  const sourcePath = requireCall.get('arguments')?.[0];
886
965
  if (!sourcePath.isStringLiteral())
@@ -893,38 +972,58 @@ function collectFromEsbuildReExportCall(path, state) {
893
972
  });
894
973
  path.skip();
895
974
  }
896
- function collectFromSwcExportCall(path, state) {
897
- const [exports, map] = path.get('arguments');
898
- if (!(0, isExports_1.isExports)(exports))
899
- return;
900
- if (!map.isObjectExpression())
901
- return;
902
- collectFromMap(map, state);
903
- path.skip();
904
- }
905
975
  function collectFromCallExpression(path, state) {
906
976
  const maybeExportStart = path.get('callee');
907
977
  if (!maybeExportStart.isIdentifier()) {
908
978
  return;
909
979
  }
910
- const { name } = maybeExportStart.node;
911
- // TypeScript
912
- if (name.startsWith('__exportStar')) {
913
- collectFromExportStarCall(path, state);
980
+ if (matchCall(path, [
981
+ ['__exportStar', isExports_1.isExports, isCallExpression('__toModule')],
982
+ ])) {
983
+ // __exportStar(exports, __toModule(require('…')));
984
+ const secondArg = path.get('arguments')[1];
985
+ collectAllFromCall(path, secondArg.get('arguments')[0], state);
986
+ return;
987
+ }
988
+ // TypeScript & swc
989
+ if (matchCall(path, [
990
+ ['__exportStart', isRequireCall, isExports_1.isExports],
991
+ ['_exportStar', isRequireCall, isExports_1.isExports],
992
+ ['_export_star', isRequireCall, isExports_1.isExports],
993
+ ['__export', isRequireCall], // TypeScript <=3.8.3
994
+ ])) {
995
+ collectAllFromCall(path, 0, state);
914
996
  return;
915
997
  }
916
- // swc
917
- if (name === '_exportStar') {
918
- collectFromExportStarCall(path, state);
998
+ if (matchCall(path, [['_export', isExports_1.isExports, isObjectExpression]])) {
999
+ collectMapFromCall(path, 1, state);
1000
+ return;
919
1001
  }
920
- if (name === '_export') {
921
- collectFromSwcExportCall(path, state);
1002
+ if (matchCall(path, [
1003
+ ['_extends', isEmptyObject, isRequireCall], // swc <=1.3.16
1004
+ ])) {
1005
+ collectAllFromCall(path, 1, state);
1006
+ return;
922
1007
  }
923
1008
  // esbuild
924
- if (name === '__export') {
925
- collectFromEsbuildExportCall(path, state);
1009
+ if (matchCall(path, [
1010
+ ['__export', isExports_1.isExports, isObjectExpression],
1011
+ ['__export', isIdentifier('source_exports'), isObjectExpression],
1012
+ ])) {
1013
+ collectMapFromCall(path, 1, state);
1014
+ return;
926
1015
  }
927
- if (name === '__reExport') {
1016
+ if (matchCall(path, [
1017
+ // Different variants of re-exports in esbuild
1018
+ [
1019
+ '__reExport',
1020
+ isIdentifier('source_exports'),
1021
+ isCallExpression,
1022
+ isExports_1.isExports,
1023
+ ],
1024
+ ['__reExport', isIdentifier('source_exports'), isCallExpression],
1025
+ ['__reExport', isExports_1.isExports, isCallExpression],
1026
+ ])) {
928
1027
  collectFromEsbuildReExportCall(path, state);
929
1028
  }
930
1029
  }
@@ -4,7 +4,7 @@ import type { ExpressionValue } from '@wyw-in-js/shared';
4
4
  import type { IImport } from './collectExportsAndImports';
5
5
  /**
6
6
  * Only an expression that can be evaluated in the root scope can be
7
- * used in a Linaria template. This function tries to hoist the expression.
7
+ * used in a WYW template. This function tries to hoist the expression.
8
8
  * @param ex The expression to hoist.
9
9
  * @param evaluate If true, we try to statically evaluate the expression.
10
10
  * @param imports All the imports of the file.
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.collectTemplateDependencies = exports.extractExpression = void 0;
5
5
  /**
6
- * This file is a visitor that checks TaggedTemplateExpressions and look for Linaria css or styled templates.
6
+ * This file is a visitor that checks TaggedTemplateExpressions and look for WYW template literals.
7
7
  * For each template it makes a list of dependencies, try to evaluate expressions, and if it is not possible, mark them as lazy dependencies.
8
8
  */
9
9
  const template_1 = require("@babel/template");
@@ -95,7 +95,7 @@ function hoistIdentifier(idPath) {
95
95
  }
96
96
  /**
97
97
  * Only an expression that can be evaluated in the root scope can be
98
- * used in a Linaria template. This function tries to hoist the expression.
98
+ * used in a WYW template. This function tries to hoist the expression.
99
99
  * @param ex The expression to hoist.
100
100
  * @param evaluate If true, we try to statically evaluate the expression.
101
101
  * @param imports All the imports of the file.
@@ -6,9 +6,9 @@ const path_1 = require("path");
6
6
  const core_1 = require("@babel/core");
7
7
  const helper_module_imports_1 = require("@babel/helper-module-imports");
8
8
  const processor_utils_1 = require("@wyw-in-js/processor-utils");
9
+ const shared_1 = require("@wyw-in-js/shared");
9
10
  const collectExportsAndImports_1 = require("./collectExportsAndImports");
10
11
  const collectTemplateDependencies_1 = require("./collectTemplateDependencies");
11
- const findPackageJSON_1 = require("./findPackageJSON");
12
12
  const getSource_1 = require("./getSource");
13
13
  const isNotNull_1 = require("./isNotNull");
14
14
  const scopeHelpers_1 = require("./scopeHelpers");
@@ -36,7 +36,7 @@ const getDefinedTagsFromPackage = (pkgName, filename) => {
36
36
  if (definedTagsCache.has(pkgName)) {
37
37
  return definedTagsCache.get(pkgName);
38
38
  }
39
- const packageJSONPath = (0, findPackageJSON_1.findPackageJSON)(pkgName, filename);
39
+ const packageJSONPath = (0, shared_1.findPackageJSON)(pkgName, filename);
40
40
  if (!packageJSONPath) {
41
41
  return undefined;
42
42
  }
@@ -0,0 +1,4 @@
1
+ import type { Value } from '@wyw-in-js/processor-utils';
2
+ export default function hasWywPreval(exports: unknown): exports is {
3
+ __wywPreval: Record<string, () => Value> | null | undefined;
4
+ };
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- function hasLinariaPreval(exports) {
3
+ function hasWywPreval(exports) {
4
4
  if (!exports || typeof exports !== 'object') {
5
5
  return false;
6
6
  }
7
- return '__linariaPreval' in exports;
7
+ return '__wywPreval' in exports;
8
8
  }
9
- exports.default = hasLinariaPreval;
9
+ exports.default = hasWywPreval;
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadLinariaOptions.js","names":["cosmiconfigSync","shaker","searchPlaces","explorerSync","cache","WeakMap","defaultOverrides","nodeModulesRegExp","loadLinariaOptions","overrides","has","get","configFile","ignore","rules","babelOptions","rest","result","undefined","load","search","defaultFeatures","dangerousCodeRemover","globalCache","happyDOM","softErrors","useBabelConfigs","options","displayName","evaluate","extensions","action","test","filename","code","highPriorityPlugins","config","features","set"],"sources":["../../../src/transform/helpers/loadLinariaOptions.ts"],"sourcesContent":["import { cosmiconfigSync } from 'cosmiconfig';\n\nimport type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';\n\nimport shaker from '../../shaker';\nimport type { PluginOptions } from '../../types';\n\nconst searchPlaces = [\n `.linariarc`,\n `.linariarc.json`,\n `.linariarc.yaml`,\n `.linariarc.yml`,\n `.linariarc.js`,\n `.linariarc.cjs`,\n `.config/linariarc`,\n `.config/linariarc.json`,\n `.config/linariarc.yaml`,\n `.config/linariarc.yml`,\n `.config/linariarc.js`,\n `.config/linariarc.cjs`,\n `linaria.config.js`,\n `linaria.config.cjs`,\n];\n\nconst explorerSync = cosmiconfigSync('linaria', { searchPlaces });\n\nexport type PartialOptions = Partial<Omit<PluginOptions, 'features'>> & {\n features?: Partial<FeatureFlags>;\n};\n\nconst cache = new WeakMap<Partial<PartialOptions>, StrictOptions>();\nconst defaultOverrides = {};\nconst nodeModulesRegExp = /[\\\\/]node_modules[\\\\/]/;\n\nexport function loadLinariaOptions(\n overrides: PartialOptions = defaultOverrides\n): StrictOptions {\n if (cache.has(overrides)) {\n return cache.get(overrides)!;\n }\n\n const { configFile, ignore, rules, babelOptions = {}, ...rest } = overrides;\n\n const result =\n // eslint-disable-next-line no-nested-ternary\n configFile === false\n ? undefined\n : configFile !== undefined\n ? explorerSync.load(configFile)\n : explorerSync.search();\n\n const defaultFeatures: FeatureFlags = {\n dangerousCodeRemover: true,\n globalCache: true,\n happyDOM: true,\n softErrors: false,\n useBabelConfigs: true,\n };\n\n const options: StrictOptions = {\n displayName: false,\n evaluate: true,\n extensions: ['.cjs', '.cts', '.js', '.jsx', '.mjs', '.mts', '.ts', '.tsx'],\n rules: rules ?? [\n {\n action: shaker,\n },\n {\n // The old `ignore` option is used as a default value for `ignore` rule.\n test: ignore ?? nodeModulesRegExp,\n action: 'ignore',\n },\n {\n // Do not ignore ES-modules\n test: (filename, code) => {\n if (!nodeModulesRegExp.test(filename)) {\n return false;\n }\n\n // If a file contains `export` or `import` keywords, we assume it's an ES-module\n return /(?:^|\\*\\/|;)\\s*(?:export|import)\\s/m.test(code);\n },\n action: shaker,\n },\n ],\n babelOptions,\n highPriorityPlugins: ['module-resolver'],\n ...(result ? result.config : {}),\n ...rest,\n features: {\n ...defaultFeatures,\n ...(result ? result.config.features : {}),\n ...rest.features,\n },\n };\n\n cache.set(overrides, options);\n\n return options;\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,aAAa;AAI7C,OAAOC,MAAM,MAAM,cAAc;AAGjC,MAAMC,YAAY,GAAG,CAClB,YAAW,EACX,iBAAgB,EAChB,iBAAgB,EAChB,gBAAe,EACf,eAAc,EACd,gBAAe,EACf,mBAAkB,EAClB,wBAAuB,EACvB,wBAAuB,EACvB,uBAAsB,EACtB,sBAAqB,EACrB,uBAAsB,EACtB,mBAAkB,EAClB,oBAAmB,CACrB;AAED,MAAMC,YAAY,GAAGH,eAAe,CAAC,SAAS,EAAE;EAAEE;AAAa,CAAC,CAAC;AAMjE,MAAME,KAAK,GAAG,IAAIC,OAAO,CAAyC,CAAC;AACnE,MAAMC,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAMC,iBAAiB,GAAG,wBAAwB;AAElD,OAAO,SAASC,kBAAkBA,CAChCC,SAAyB,GAAGH,gBAAgB,EAC7B;EACf,IAAIF,KAAK,CAACM,GAAG,CAACD,SAAS,CAAC,EAAE;IACxB,OAAOL,KAAK,CAACO,GAAG,CAACF,SAAS,CAAC;EAC7B;EAEA,MAAM;IAAEG,UAAU;IAAEC,MAAM;IAAEC,KAAK;IAAEC,YAAY,GAAG,CAAC,CAAC;IAAE,GAAGC;EAAK,CAAC,GAAGP,SAAS;EAE3E,MAAMQ,MAAM;EACV;EACAL,UAAU,KAAK,KAAK,GAChBM,SAAS,GACTN,UAAU,KAAKM,SAAS,GACxBf,YAAY,CAACgB,IAAI,CAACP,UAAU,CAAC,GAC7BT,YAAY,CAACiB,MAAM,CAAC,CAAC;EAE3B,MAAMC,eAA6B,GAAG;IACpCC,oBAAoB,EAAE,IAAI;IAC1BC,WAAW,EAAE,IAAI;IACjBC,QAAQ,EAAE,IAAI;IACdC,UAAU,EAAE,KAAK;IACjBC,eAAe,EAAE;EACnB,CAAC;EAED,MAAMC,OAAsB,GAAG;IAC7BC,WAAW,EAAE,KAAK;IAClBC,QAAQ,EAAE,IAAI;IACdC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC1EhB,KAAK,EAAEA,KAAK,IAAI,CACd;MACEiB,MAAM,EAAE9B;IACV,CAAC,EACD;MACE;MACA+B,IAAI,EAAEnB,MAAM,IAAIN,iBAAiB;MACjCwB,MAAM,EAAE;IACV,CAAC,EACD;MACE;MACAC,IAAI,EAAEA,CAACC,QAAQ,EAAEC,IAAI,KAAK;QACxB,IAAI,CAAC3B,iBAAiB,CAACyB,IAAI,CAACC,QAAQ,CAAC,EAAE;UACrC,OAAO,KAAK;QACd;;QAEA;QACA,OAAO,qCAAqC,CAACD,IAAI,CAACE,IAAI,CAAC;MACzD,CAAC;MACDH,MAAM,EAAE9B;IACV,CAAC,CACF;IACDc,YAAY;IACZoB,mBAAmB,EAAE,CAAC,iBAAiB,CAAC;IACxC,IAAIlB,MAAM,GAAGA,MAAM,CAACmB,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,GAAGpB,IAAI;IACPqB,QAAQ,EAAE;MACR,GAAGhB,eAAe;MAClB,IAAIJ,MAAM,GAAGA,MAAM,CAACmB,MAAM,CAACC,QAAQ,GAAG,CAAC,CAAC,CAAC;MACzC,GAAGrB,IAAI,CAACqB;IACV;EACF,CAAC;EAEDjC,KAAK,CAACkC,GAAG,CAAC7B,SAAS,EAAEkB,OAAO,CAAC;EAE7B,OAAOA,OAAO;AAChB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"addIdentifierToLinariaPreval.js","names":["createId","reference","getOrAddLinariaPreval","scope","rootScope","getProgramParent","programPath","path","object","getData","node","sourceType","prevalExport","expression","type","operator","left","computed","property","right","properties","inserted","pushContainer","get","declaration","declarations","id","init","kind","specifiers","setData","addIdentifierToLinariaPreval","name","newProperty","key","value","shorthand"],"sources":["../../src/utils/addIdentifierToLinariaPreval.ts"],"sourcesContent":["import type { NodePath, Scope } from '@babel/traverse';\nimport type {\n ExportNamedDeclaration,\n ExpressionStatement,\n Identifier,\n ObjectExpression,\n ObjectProperty,\n Program,\n} from '@babel/types';\n\nimport { createId } from './createId';\nimport { reference } from './scopeHelpers';\n\nexport function getOrAddLinariaPreval(\n scope: Scope\n): NodePath<ObjectExpression> {\n const rootScope = scope.getProgramParent();\n const programPath = rootScope.path as NodePath<Program>;\n\n let object = programPath.getData('__linariaPreval');\n if (object) {\n return object;\n }\n\n if (programPath.node.sourceType === 'script') {\n // CJS exports.__linariaPreval = {};\n const prevalExport: ExpressionStatement = {\n expression: {\n type: 'AssignmentExpression',\n operator: '=',\n left: {\n computed: false,\n object: createId('exports'),\n property: createId('__linariaPreval'),\n type: 'MemberExpression',\n },\n right: {\n properties: [],\n type: 'ObjectExpression',\n },\n },\n type: 'ExpressionStatement',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get('expression.right') as NodePath<ObjectExpression>;\n } else {\n // ESM export const __linariaPreval = {};\n const prevalExport: ExportNamedDeclaration = {\n declaration: {\n declarations: [\n {\n id: createId('__linariaPreval'),\n init: {\n properties: [],\n type: 'ObjectExpression',\n },\n type: 'VariableDeclarator',\n },\n ],\n kind: 'const',\n type: 'VariableDeclaration',\n },\n specifiers: [],\n type: 'ExportNamedDeclaration',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get(\n 'declaration.declarations.0.init'\n ) as NodePath<ObjectExpression>;\n }\n\n programPath.setData('__linariaPreval', object);\n return object;\n}\n\nexport function addIdentifierToLinariaPreval(scope: Scope, name: string) {\n const rootScope = scope.getProgramParent();\n const object = getOrAddLinariaPreval(rootScope);\n const newProperty: ObjectProperty = {\n type: 'ObjectProperty',\n key: createId(name),\n value: createId(name),\n computed: false,\n shorthand: false,\n };\n\n const [inserted] = object.pushContainer('properties', [newProperty]);\n reference(inserted.get('value') as NodePath<Identifier>);\n}\n"],"mappings":"AAUA,SAASA,QAAQ,QAAQ,YAAY;AACrC,SAASC,SAAS,QAAQ,gBAAgB;AAE1C,OAAO,SAASC,qBAAqBA,CACnCC,KAAY,EACgB;EAC5B,MAAMC,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMC,WAAW,GAAGF,SAAS,CAACG,IAAyB;EAEvD,IAAIC,MAAM,GAAGF,WAAW,CAACG,OAAO,CAAC,iBAAiB,CAAC;EACnD,IAAID,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,IAAIF,WAAW,CAACI,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAC5C;IACA,MAAMC,YAAiC,GAAG;MACxCC,UAAU,EAAE;QACVC,IAAI,EAAE,sBAAsB;QAC5BC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAE;UACJC,QAAQ,EAAE,KAAK;UACfT,MAAM,EAAER,QAAQ,CAAC,SAAS,CAAC;UAC3BkB,QAAQ,EAAElB,QAAQ,CAAC,iBAAiB,CAAC;UACrCc,IAAI,EAAE;QACR,CAAC;QACDK,KAAK,EAAE;UACLC,UAAU,EAAE,EAAE;UACdN,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACO,QAAQ,CAAC,GAAGf,WAAW,CAACgB,aAAa,CAAC,MAAM,EAAE,CAACV,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGa,QAAQ,CAACE,GAAG,CAAC,kBAAkB,CAA+B;EACzE,CAAC,MAAM;IACL;IACA,MAAMX,YAAoC,GAAG;MAC3CY,WAAW,EAAE;QACXC,YAAY,EAAE,CACZ;UACEC,EAAE,EAAE1B,QAAQ,CAAC,iBAAiB,CAAC;UAC/B2B,IAAI,EAAE;YACJP,UAAU,EAAE,EAAE;YACdN,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC,CACF;QACDc,IAAI,EAAE,OAAO;QACbd,IAAI,EAAE;MACR,CAAC;MACDe,UAAU,EAAE,EAAE;MACdf,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACO,QAAQ,CAAC,GAAGf,WAAW,CAACgB,aAAa,CAAC,MAAM,EAAE,CAACV,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGa,QAAQ,CAACE,GAAG,CACnB,iCACF,CAA+B;EACjC;EAEAjB,WAAW,CAACwB,OAAO,CAAC,iBAAiB,EAAEtB,MAAM,CAAC;EAC9C,OAAOA,MAAM;AACf;AAEA,OAAO,SAASuB,4BAA4BA,CAAC5B,KAAY,EAAE6B,IAAY,EAAE;EACvE,MAAM5B,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMG,MAAM,GAAGN,qBAAqB,CAACE,SAAS,CAAC;EAC/C,MAAM6B,WAA2B,GAAG;IAClCnB,IAAI,EAAE,gBAAgB;IACtBoB,GAAG,EAAElC,QAAQ,CAACgC,IAAI,CAAC;IACnBG,KAAK,EAAEnC,QAAQ,CAACgC,IAAI,CAAC;IACrBf,QAAQ,EAAE,KAAK;IACfmB,SAAS,EAAE;EACb,CAAC;EAED,MAAM,CAACf,QAAQ,CAAC,GAAGb,MAAM,CAACc,aAAa,CAAC,YAAY,EAAE,CAACW,WAAW,CAAC,CAAC;EACpEhC,SAAS,CAACoB,QAAQ,CAACE,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC1D"}
@@ -1,22 +0,0 @@
1
- import { dirname, isAbsolute } from 'path';
2
- import findUp from 'find-up';
3
- const cache = new Map();
4
- export function findPackageJSON(pkgName, filename) {
5
- try {
6
- const pkgPath = pkgName === '.' && filename && isAbsolute(filename) ? filename : require.resolve(pkgName, filename ? {
7
- paths: [dirname(filename)]
8
- } : {});
9
- if (!cache.has(pkgPath)) {
10
- cache.set(pkgPath, findUp.sync('package.json', {
11
- cwd: pkgPath
12
- }));
13
- }
14
- return cache.get(pkgPath);
15
- } catch (er) {
16
- if (typeof er === 'object' && er !== null && er.code === 'MODULE_NOT_FOUND') {
17
- return undefined;
18
- }
19
- throw er;
20
- }
21
- }
22
- //# sourceMappingURL=findPackageJSON.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"findPackageJSON.js","names":["dirname","isAbsolute","findUp","cache","Map","findPackageJSON","pkgName","filename","pkgPath","require","resolve","paths","has","set","sync","cwd","get","er","code","undefined"],"sources":["../../src/utils/findPackageJSON.ts"],"sourcesContent":["import { dirname, isAbsolute } from 'path';\n\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\n\nexport function findPackageJSON(\n pkgName: string,\n filename: string | null | undefined\n) {\n try {\n const pkgPath =\n pkgName === '.' && filename && isAbsolute(filename)\n ? filename\n : require.resolve(\n pkgName,\n filename ? { paths: [dirname(filename)] } : {}\n );\n if (!cache.has(pkgPath)) {\n cache.set(pkgPath, findUp.sync('package.json', { cwd: pkgPath }));\n }\n\n return cache.get(pkgPath);\n } catch (er: unknown) {\n if (\n typeof er === 'object' &&\n er !== null &&\n (er as { code?: unknown }).code === 'MODULE_NOT_FOUND'\n ) {\n return undefined;\n }\n\n throw er;\n }\n}\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,UAAU,QAAQ,MAAM;AAE1C,OAAOC,MAAM,MAAM,SAAS;AAE5B,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAA6B,CAAC;AAEnD,OAAO,SAASC,eAAeA,CAC7BC,OAAe,EACfC,QAAmC,EACnC;EACA,IAAI;IACF,MAAMC,OAAO,GACXF,OAAO,KAAK,GAAG,IAAIC,QAAQ,IAAIN,UAAU,CAACM,QAAQ,CAAC,GAC/CA,QAAQ,GACRE,OAAO,CAACC,OAAO,CACbJ,OAAO,EACPC,QAAQ,GAAG;MAAEI,KAAK,EAAE,CAACX,OAAO,CAACO,QAAQ,CAAC;IAAE,CAAC,GAAG,CAAC,CAC/C,CAAC;IACP,IAAI,CAACJ,KAAK,CAACS,GAAG,CAACJ,OAAO,CAAC,EAAE;MACvBL,KAAK,CAACU,GAAG,CAACL,OAAO,EAAEN,MAAM,CAACY,IAAI,CAAC,cAAc,EAAE;QAAEC,GAAG,EAAEP;MAAQ,CAAC,CAAC,CAAC;IACnE;IAEA,OAAOL,KAAK,CAACa,GAAG,CAACR,OAAO,CAAC;EAC3B,CAAC,CAAC,OAAOS,EAAW,EAAE;IACpB,IACE,OAAOA,EAAE,KAAK,QAAQ,IACtBA,EAAE,KAAK,IAAI,IACVA,EAAE,CAAwBC,IAAI,KAAK,kBAAkB,EACtD;MACA,OAAOC,SAAS;IAClB;IAEA,MAAMF,EAAE;EACV;AACF"}
@@ -1,7 +0,0 @@
1
- export default function hasLinariaPreval(exports) {
2
- if (!exports || typeof exports !== 'object') {
3
- return false;
4
- }
5
- return '__linariaPreval' in exports;
6
- }
7
- //# sourceMappingURL=hasLinariaPreval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hasLinariaPreval.js","names":["hasLinariaPreval","exports"],"sources":["../../src/utils/hasLinariaPreval.ts"],"sourcesContent":["import type { Value } from '@wyw-in-js/processor-utils';\n\nexport default function hasLinariaPreval(exports: unknown): exports is {\n __linariaPreval: Record<string, () => Value> | null | undefined;\n} {\n if (!exports || typeof exports !== 'object') {\n return false;\n }\n\n return '__linariaPreval' in exports;\n}\n"],"mappings":"AAEA,eAAe,SAASA,gBAAgBA,CAACC,OAAgB,EAEvD;EACA,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC3C,OAAO,KAAK;EACd;EAEA,OAAO,iBAAiB,IAAIA,OAAO;AACrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadLinariaOptions.js","names":["_cosmiconfig","require","_shaker","_interopRequireDefault","obj","__esModule","default","searchPlaces","explorerSync","cosmiconfigSync","cache","WeakMap","defaultOverrides","nodeModulesRegExp","loadLinariaOptions","overrides","has","get","configFile","ignore","rules","babelOptions","rest","result","undefined","load","search","defaultFeatures","dangerousCodeRemover","globalCache","happyDOM","softErrors","useBabelConfigs","options","displayName","evaluate","extensions","action","shaker","test","filename","code","highPriorityPlugins","config","features","set"],"sources":["../../../src/transform/helpers/loadLinariaOptions.ts"],"sourcesContent":["import { cosmiconfigSync } from 'cosmiconfig';\n\nimport type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';\n\nimport shaker from '../../shaker';\nimport type { PluginOptions } from '../../types';\n\nconst searchPlaces = [\n `.linariarc`,\n `.linariarc.json`,\n `.linariarc.yaml`,\n `.linariarc.yml`,\n `.linariarc.js`,\n `.linariarc.cjs`,\n `.config/linariarc`,\n `.config/linariarc.json`,\n `.config/linariarc.yaml`,\n `.config/linariarc.yml`,\n `.config/linariarc.js`,\n `.config/linariarc.cjs`,\n `linaria.config.js`,\n `linaria.config.cjs`,\n];\n\nconst explorerSync = cosmiconfigSync('linaria', { searchPlaces });\n\nexport type PartialOptions = Partial<Omit<PluginOptions, 'features'>> & {\n features?: Partial<FeatureFlags>;\n};\n\nconst cache = new WeakMap<Partial<PartialOptions>, StrictOptions>();\nconst defaultOverrides = {};\nconst nodeModulesRegExp = /[\\\\/]node_modules[\\\\/]/;\n\nexport function loadLinariaOptions(\n overrides: PartialOptions = defaultOverrides\n): StrictOptions {\n if (cache.has(overrides)) {\n return cache.get(overrides)!;\n }\n\n const { configFile, ignore, rules, babelOptions = {}, ...rest } = overrides;\n\n const result =\n // eslint-disable-next-line no-nested-ternary\n configFile === false\n ? undefined\n : configFile !== undefined\n ? explorerSync.load(configFile)\n : explorerSync.search();\n\n const defaultFeatures: FeatureFlags = {\n dangerousCodeRemover: true,\n globalCache: true,\n happyDOM: true,\n softErrors: false,\n useBabelConfigs: true,\n };\n\n const options: StrictOptions = {\n displayName: false,\n evaluate: true,\n extensions: ['.cjs', '.cts', '.js', '.jsx', '.mjs', '.mts', '.ts', '.tsx'],\n rules: rules ?? [\n {\n action: shaker,\n },\n {\n // The old `ignore` option is used as a default value for `ignore` rule.\n test: ignore ?? nodeModulesRegExp,\n action: 'ignore',\n },\n {\n // Do not ignore ES-modules\n test: (filename, code) => {\n if (!nodeModulesRegExp.test(filename)) {\n return false;\n }\n\n // If a file contains `export` or `import` keywords, we assume it's an ES-module\n return /(?:^|\\*\\/|;)\\s*(?:export|import)\\s/m.test(code);\n },\n action: shaker,\n },\n ],\n babelOptions,\n highPriorityPlugins: ['module-resolver'],\n ...(result ? result.config : {}),\n ...rest,\n features: {\n ...defaultFeatures,\n ...(result ? result.config.features : {}),\n ...rest.features,\n },\n };\n\n cache.set(overrides, options);\n\n return options;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAkC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGlC,MAAMG,YAAY,GAAG,CAClB,YAAW,EACX,iBAAgB,EAChB,iBAAgB,EAChB,gBAAe,EACf,eAAc,EACd,gBAAe,EACf,mBAAkB,EAClB,wBAAuB,EACvB,wBAAuB,EACvB,uBAAsB,EACtB,sBAAqB,EACrB,uBAAsB,EACtB,mBAAkB,EAClB,oBAAmB,CACrB;AAED,MAAMC,YAAY,GAAG,IAAAC,4BAAe,EAAC,SAAS,EAAE;EAAEF;AAAa,CAAC,CAAC;AAMjE,MAAMG,KAAK,GAAG,IAAIC,OAAO,CAAyC,CAAC;AACnE,MAAMC,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAMC,iBAAiB,GAAG,wBAAwB;AAE3C,SAASC,kBAAkBA,CAChCC,SAAyB,GAAGH,gBAAgB,EAC7B;EACf,IAAIF,KAAK,CAACM,GAAG,CAACD,SAAS,CAAC,EAAE;IACxB,OAAOL,KAAK,CAACO,GAAG,CAACF,SAAS,CAAC;EAC7B;EAEA,MAAM;IAAEG,UAAU;IAAEC,MAAM;IAAEC,KAAK;IAAEC,YAAY,GAAG,CAAC,CAAC;IAAE,GAAGC;EAAK,CAAC,GAAGP,SAAS;EAE3E,MAAMQ,MAAM;EACV;EACAL,UAAU,KAAK,KAAK,GAChBM,SAAS,GACTN,UAAU,KAAKM,SAAS,GACxBhB,YAAY,CAACiB,IAAI,CAACP,UAAU,CAAC,GAC7BV,YAAY,CAACkB,MAAM,CAAC,CAAC;EAE3B,MAAMC,eAA6B,GAAG;IACpCC,oBAAoB,EAAE,IAAI;IAC1BC,WAAW,EAAE,IAAI;IACjBC,QAAQ,EAAE,IAAI;IACdC,UAAU,EAAE,KAAK;IACjBC,eAAe,EAAE;EACnB,CAAC;EAED,MAAMC,OAAsB,GAAG;IAC7BC,WAAW,EAAE,KAAK;IAClBC,QAAQ,EAAE,IAAI;IACdC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC1EhB,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CACd;MACEiB,MAAM,EAAEC;IACV,CAAC,EACD;MACE;MACAC,IAAI,EAAEpB,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIN,iBAAiB;MACjCwB,MAAM,EAAE;IACV,CAAC,EACD;MACE;MACAE,IAAI,EAAEA,CAACC,QAAQ,EAAEC,IAAI,KAAK;QACxB,IAAI,CAAC5B,iBAAiB,CAAC0B,IAAI,CAACC,QAAQ,CAAC,EAAE;UACrC,OAAO,KAAK;QACd;;QAEA;QACA,OAAO,qCAAqC,CAACD,IAAI,CAACE,IAAI,CAAC;MACzD,CAAC;MACDJ,MAAM,EAAEC;IACV,CAAC,CACF;IACDjB,YAAY;IACZqB,mBAAmB,EAAE,CAAC,iBAAiB,CAAC;IACxC,IAAInB,MAAM,GAAGA,MAAM,CAACoB,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,GAAGrB,IAAI;IACPsB,QAAQ,EAAE;MACR,GAAGjB,eAAe;MAClB,IAAIJ,MAAM,GAAGA,MAAM,CAACoB,MAAM,CAACC,QAAQ,GAAG,CAAC,CAAC,CAAC;MACzC,GAAGtB,IAAI,CAACsB;IACV;EACF,CAAC;EAEDlC,KAAK,CAACmC,GAAG,CAAC9B,SAAS,EAAEkB,OAAO,CAAC;EAE7B,OAAOA,OAAO;AAChB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"addIdentifierToLinariaPreval.js","names":["_createId","require","_scopeHelpers","getOrAddLinariaPreval","scope","rootScope","getProgramParent","programPath","path","object","getData","node","sourceType","prevalExport","expression","type","operator","left","computed","createId","property","right","properties","inserted","pushContainer","get","declaration","declarations","id","init","kind","specifiers","setData","addIdentifierToLinariaPreval","name","newProperty","key","value","shorthand","reference"],"sources":["../../src/utils/addIdentifierToLinariaPreval.ts"],"sourcesContent":["import type { NodePath, Scope } from '@babel/traverse';\nimport type {\n ExportNamedDeclaration,\n ExpressionStatement,\n Identifier,\n ObjectExpression,\n ObjectProperty,\n Program,\n} from '@babel/types';\n\nimport { createId } from './createId';\nimport { reference } from './scopeHelpers';\n\nexport function getOrAddLinariaPreval(\n scope: Scope\n): NodePath<ObjectExpression> {\n const rootScope = scope.getProgramParent();\n const programPath = rootScope.path as NodePath<Program>;\n\n let object = programPath.getData('__linariaPreval');\n if (object) {\n return object;\n }\n\n if (programPath.node.sourceType === 'script') {\n // CJS exports.__linariaPreval = {};\n const prevalExport: ExpressionStatement = {\n expression: {\n type: 'AssignmentExpression',\n operator: '=',\n left: {\n computed: false,\n object: createId('exports'),\n property: createId('__linariaPreval'),\n type: 'MemberExpression',\n },\n right: {\n properties: [],\n type: 'ObjectExpression',\n },\n },\n type: 'ExpressionStatement',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get('expression.right') as NodePath<ObjectExpression>;\n } else {\n // ESM export const __linariaPreval = {};\n const prevalExport: ExportNamedDeclaration = {\n declaration: {\n declarations: [\n {\n id: createId('__linariaPreval'),\n init: {\n properties: [],\n type: 'ObjectExpression',\n },\n type: 'VariableDeclarator',\n },\n ],\n kind: 'const',\n type: 'VariableDeclaration',\n },\n specifiers: [],\n type: 'ExportNamedDeclaration',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get(\n 'declaration.declarations.0.init'\n ) as NodePath<ObjectExpression>;\n }\n\n programPath.setData('__linariaPreval', object);\n return object;\n}\n\nexport function addIdentifierToLinariaPreval(scope: Scope, name: string) {\n const rootScope = scope.getProgramParent();\n const object = getOrAddLinariaPreval(rootScope);\n const newProperty: ObjectProperty = {\n type: 'ObjectProperty',\n key: createId(name),\n value: createId(name),\n computed: false,\n shorthand: false,\n };\n\n const [inserted] = object.pushContainer('properties', [newProperty]);\n reference(inserted.get('value') as NodePath<Identifier>);\n}\n"],"mappings":";;;;;;;AAUA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEO,SAASE,qBAAqBA,CACnCC,KAAY,EACgB;EAC5B,MAAMC,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMC,WAAW,GAAGF,SAAS,CAACG,IAAyB;EAEvD,IAAIC,MAAM,GAAGF,WAAW,CAACG,OAAO,CAAC,iBAAiB,CAAC;EACnD,IAAID,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,IAAIF,WAAW,CAACI,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAC5C;IACA,MAAMC,YAAiC,GAAG;MACxCC,UAAU,EAAE;QACVC,IAAI,EAAE,sBAAsB;QAC5BC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAE;UACJC,QAAQ,EAAE,KAAK;UACfT,MAAM,EAAE,IAAAU,kBAAQ,EAAC,SAAS,CAAC;UAC3BC,QAAQ,EAAE,IAAAD,kBAAQ,EAAC,iBAAiB,CAAC;UACrCJ,IAAI,EAAE;QACR,CAAC;QACDM,KAAK,EAAE;UACLC,UAAU,EAAE,EAAE;UACdP,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CAAC,kBAAkB,CAA+B;EACzE,CAAC,MAAM;IACL;IACA,MAAMZ,YAAoC,GAAG;MAC3Ca,WAAW,EAAE;QACXC,YAAY,EAAE,CACZ;UACEC,EAAE,EAAE,IAAAT,kBAAQ,EAAC,iBAAiB,CAAC;UAC/BU,IAAI,EAAE;YACJP,UAAU,EAAE,EAAE;YACdP,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC,CACF;QACDe,IAAI,EAAE,OAAO;QACbf,IAAI,EAAE;MACR,CAAC;MACDgB,UAAU,EAAE,EAAE;MACdhB,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CACnB,iCACF,CAA+B;EACjC;EAEAlB,WAAW,CAACyB,OAAO,CAAC,iBAAiB,EAAEvB,MAAM,CAAC;EAC9C,OAAOA,MAAM;AACf;AAEO,SAASwB,4BAA4BA,CAAC7B,KAAY,EAAE8B,IAAY,EAAE;EACvE,MAAM7B,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMG,MAAM,GAAGN,qBAAqB,CAACE,SAAS,CAAC;EAC/C,MAAM8B,WAA2B,GAAG;IAClCpB,IAAI,EAAE,gBAAgB;IACtBqB,GAAG,EAAE,IAAAjB,kBAAQ,EAACe,IAAI,CAAC;IACnBG,KAAK,EAAE,IAAAlB,kBAAQ,EAACe,IAAI,CAAC;IACrBhB,QAAQ,EAAE,KAAK;IACfoB,SAAS,EAAE;EACb,CAAC;EAED,MAAM,CAACf,QAAQ,CAAC,GAAGd,MAAM,CAACe,aAAa,CAAC,YAAY,EAAE,CAACW,WAAW,CAAC,CAAC;EACpE,IAAAI,uBAAS,EAAChB,QAAQ,CAACE,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC1D"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.findPackageJSON = findPackageJSON;
7
- var _path = require("path");
8
- var _findUp = _interopRequireDefault(require("find-up"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- const cache = new Map();
11
- function findPackageJSON(pkgName, filename) {
12
- try {
13
- const pkgPath = pkgName === '.' && filename && (0, _path.isAbsolute)(filename) ? filename : require.resolve(pkgName, filename ? {
14
- paths: [(0, _path.dirname)(filename)]
15
- } : {});
16
- if (!cache.has(pkgPath)) {
17
- cache.set(pkgPath, _findUp.default.sync('package.json', {
18
- cwd: pkgPath
19
- }));
20
- }
21
- return cache.get(pkgPath);
22
- } catch (er) {
23
- if (typeof er === 'object' && er !== null && er.code === 'MODULE_NOT_FOUND') {
24
- return undefined;
25
- }
26
- throw er;
27
- }
28
- }
29
- //# sourceMappingURL=findPackageJSON.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"findPackageJSON.js","names":["_path","require","_findUp","_interopRequireDefault","obj","__esModule","default","cache","Map","findPackageJSON","pkgName","filename","pkgPath","isAbsolute","resolve","paths","dirname","has","set","findUp","sync","cwd","get","er","code","undefined"],"sources":["../../src/utils/findPackageJSON.ts"],"sourcesContent":["import { dirname, isAbsolute } from 'path';\n\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\n\nexport function findPackageJSON(\n pkgName: string,\n filename: string | null | undefined\n) {\n try {\n const pkgPath =\n pkgName === '.' && filename && isAbsolute(filename)\n ? filename\n : require.resolve(\n pkgName,\n filename ? { paths: [dirname(filename)] } : {}\n );\n if (!cache.has(pkgPath)) {\n cache.set(pkgPath, findUp.sync('package.json', { cwd: pkgPath }));\n }\n\n return cache.get(pkgPath);\n } catch (er: unknown) {\n if (\n typeof er === 'object' &&\n er !== null &&\n (er as { code?: unknown }).code === 'MODULE_NOT_FOUND'\n ) {\n return undefined;\n }\n\n throw er;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA6B,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE7B,MAAMG,KAAK,GAAG,IAAIC,GAAG,CAA6B,CAAC;AAE5C,SAASC,eAAeA,CAC7BC,OAAe,EACfC,QAAmC,EACnC;EACA,IAAI;IACF,MAAMC,OAAO,GACXF,OAAO,KAAK,GAAG,IAAIC,QAAQ,IAAI,IAAAE,gBAAU,EAACF,QAAQ,CAAC,GAC/CA,QAAQ,GACRV,OAAO,CAACa,OAAO,CACbJ,OAAO,EACPC,QAAQ,GAAG;MAAEI,KAAK,EAAE,CAAC,IAAAC,aAAO,EAACL,QAAQ,CAAC;IAAE,CAAC,GAAG,CAAC,CAC/C,CAAC;IACP,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACL,OAAO,CAAC,EAAE;MACvBL,KAAK,CAACW,GAAG,CAACN,OAAO,EAAEO,eAAM,CAACC,IAAI,CAAC,cAAc,EAAE;QAAEC,GAAG,EAAET;MAAQ,CAAC,CAAC,CAAC;IACnE;IAEA,OAAOL,KAAK,CAACe,GAAG,CAACV,OAAO,CAAC;EAC3B,CAAC,CAAC,OAAOW,EAAW,EAAE;IACpB,IACE,OAAOA,EAAE,KAAK,QAAQ,IACtBA,EAAE,KAAK,IAAI,IACVA,EAAE,CAAwBC,IAAI,KAAK,kBAAkB,EACtD;MACA,OAAOC,SAAS;IAClB;IAEA,MAAMF,EAAE;EACV;AACF"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = hasLinariaPreval;
7
- function hasLinariaPreval(exports) {
8
- if (!exports || typeof exports !== 'object') {
9
- return false;
10
- }
11
- return '__linariaPreval' in exports;
12
- }
13
- //# sourceMappingURL=hasLinariaPreval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hasLinariaPreval.js","names":["hasLinariaPreval","exports"],"sources":["../../src/utils/hasLinariaPreval.ts"],"sourcesContent":["import type { Value } from '@wyw-in-js/processor-utils';\n\nexport default function hasLinariaPreval(exports: unknown): exports is {\n __linariaPreval: Record<string, () => Value> | null | undefined;\n} {\n if (!exports || typeof exports !== 'object') {\n return false;\n }\n\n return '__linariaPreval' in exports;\n}\n"],"mappings":";;;;;;AAEe,SAASA,gBAAgBA,CAACC,OAAgB,EAEvD;EACA,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC3C,OAAO,KAAK;EACd;EAEA,OAAO,iBAAiB,IAAIA,OAAO;AACrC"}
@@ -1,4 +0,0 @@
1
- import type { NodePath, Scope } from '@babel/traverse';
2
- import type { ObjectExpression } from '@babel/types';
3
- export declare function getOrAddLinariaPreval(scope: Scope): NodePath<ObjectExpression>;
4
- export declare function addIdentifierToLinariaPreval(scope: Scope, name: string): void;
@@ -1 +0,0 @@
1
- export declare function findPackageJSON(pkgName: string, filename: string | null | undefined): string | undefined;
@@ -1,29 +0,0 @@
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.findPackageJSON = void 0;
7
- const path_1 = require("path");
8
- const find_up_1 = __importDefault(require("find-up"));
9
- const cache = new Map();
10
- function findPackageJSON(pkgName, filename) {
11
- try {
12
- const pkgPath = pkgName === '.' && filename && (0, path_1.isAbsolute)(filename)
13
- ? filename
14
- : require.resolve(pkgName, filename ? { paths: [(0, path_1.dirname)(filename)] } : {});
15
- if (!cache.has(pkgPath)) {
16
- cache.set(pkgPath, find_up_1.default.sync('package.json', { cwd: pkgPath }));
17
- }
18
- return cache.get(pkgPath);
19
- }
20
- catch (er) {
21
- if (typeof er === 'object' &&
22
- er !== null &&
23
- er.code === 'MODULE_NOT_FOUND') {
24
- return undefined;
25
- }
26
- throw er;
27
- }
28
- }
29
- exports.findPackageJSON = findPackageJSON;
@@ -1,4 +0,0 @@
1
- import type { Value } from '@wyw-in-js/processor-utils';
2
- export default function hasLinariaPreval(exports: unknown): exports is {
3
- __linariaPreval: Record<string, () => Value> | null | undefined;
4
- };