@wyw-in-js/transform 0.1.1 → 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 +4 -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 +28 -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 +24 -21
  96. package/types/index.d.ts +5 -2
  97. package/types/index.js +9 -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 -26
  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 -35
  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 -56
  142. package/types/utils/hasLinariaPreval.d.ts +0 -4
package/esm/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  export { slugify } from '@wyw-in-js/shared';
2
2
  export { createFileReporter } from './debug/fileReporter';
3
+ export { default as babelTransformPlugin } from './plugins/babel-transform';
3
4
  export { default as preeval } from './plugins/preeval';
4
5
  export { getTransformMetadata, withTransformMetadata } from './utils/TransformMetadata';
5
6
  export { Module, DefaultModuleImplementation } from './module';
7
+ export { default as shaker } from './shaker';
6
8
  export { transform } from './transform';
7
9
  export { isUnprocessedEntrypointError, UnprocessedEntrypointError } from './transform/actions/UnprocessedEntrypointError';
8
10
  export * from './types';
@@ -13,8 +15,9 @@ export { prepareCode } from './transform/generators/transform';
13
15
  export { Entrypoint } from './transform/Entrypoint';
14
16
  export { transformUrl } from './transform/generators/extract';
15
17
  export { asyncResolveImports, syncResolveImports } from './transform/generators/resolveImports';
16
- export { loadLinariaOptions } from './transform/helpers/loadLinariaOptions';
18
+ export { loadWywOptions } from './transform/helpers/loadWywOptions';
17
19
  export { withDefaultServices } from './transform/helpers/withDefaultServices';
20
+ export { EventEmitter } from './utils/EventEmitter';
18
21
  export { isNode } from './utils/isNode';
19
22
  export { getFileIdx } from './utils/getFileIdx';
20
23
  export { getTagProcessor } from './utils/getTagProcessor';
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["slugify","createFileReporter","default","preeval","getTransformMetadata","withTransformMetadata","Module","DefaultModuleImplementation","transform","isUnprocessedEntrypointError","UnprocessedEntrypointError","EvaluatedEntrypoint","parseFile","baseHandlers","prepareCode","Entrypoint","transformUrl","asyncResolveImports","syncResolveImports","loadLinariaOptions","withDefaultServices","isNode","getFileIdx","getTagProcessor","getVisitorKeys","peek","processTemplateExpression","TransformCacheCollection"],"sources":["../src/index.ts"],"sourcesContent":["export { slugify } from '@wyw-in-js/shared';\n\nexport { createFileReporter } from './debug/fileReporter';\nexport type { IFileReporterOptions } from './debug/fileReporter';\nexport { default as preeval } from './plugins/preeval';\nexport {\n getTransformMetadata,\n withTransformMetadata,\n} from './utils/TransformMetadata';\nexport type { WYWTransformMetadata } from './utils/TransformMetadata';\nexport { Module, DefaultModuleImplementation } from './module';\nexport { transform } from './transform';\nexport {\n isUnprocessedEntrypointError,\n UnprocessedEntrypointError,\n} from './transform/actions/UnprocessedEntrypointError';\nexport * from './types';\nexport { EvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nexport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nexport { parseFile } from './transform/Entrypoint.helpers';\nexport type { LoadAndParseFn } from './transform/Entrypoint.types';\nexport { baseHandlers } from './transform/generators';\nexport { prepareCode } from './transform/generators/transform';\nexport { Entrypoint } from './transform/Entrypoint';\nexport { transformUrl } from './transform/generators/extract';\nexport {\n asyncResolveImports,\n syncResolveImports,\n} from './transform/generators/resolveImports';\nexport { loadLinariaOptions } from './transform/helpers/loadLinariaOptions';\nexport { withDefaultServices } from './transform/helpers/withDefaultServices';\nexport type { Services } from './transform/types';\nexport type { EventEmitter } from './utils/EventEmitter';\nexport { isNode } from './utils/isNode';\nexport { getFileIdx } from './utils/getFileIdx';\nexport { getTagProcessor } from './utils/getTagProcessor';\nexport { getVisitorKeys } from './utils/getVisitorKeys';\nexport type { VisitorKeys } from './utils/getVisitorKeys';\nexport { peek } from './utils/peek';\nexport { processTemplateExpression } from './utils/processTemplateExpression';\nexport { TransformCacheCollection } from './cache';\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,mBAAmB;AAE3C,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD,SAASC,OAAO,IAAIC,OAAO,QAAQ,mBAAmB;AACtD,SACEC,oBAAoB,EACpBC,qBAAqB,QAChB,2BAA2B;AAElC,SAASC,MAAM,EAAEC,2BAA2B,QAAQ,UAAU;AAC9D,SAASC,SAAS,QAAQ,aAAa;AACvC,SACEC,4BAA4B,EAC5BC,0BAA0B,QACrB,gDAAgD;AACvD,cAAc,SAAS;AACvB,SAASC,mBAAmB,QAAQ,iCAAiC;AAErE,SAASC,SAAS,QAAQ,gCAAgC;AAE1D,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,WAAW,QAAQ,kCAAkC;AAC9D,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,YAAY,QAAQ,gCAAgC;AAC7D,SACEC,mBAAmB,EACnBC,kBAAkB,QACb,uCAAuC;AAC9C,SAASC,kBAAkB,QAAQ,wCAAwC;AAC3E,SAASC,mBAAmB,QAAQ,yCAAyC;AAG7E,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,cAAc,QAAQ,wBAAwB;AAEvD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,wBAAwB,QAAQ,SAAS"}
1
+ {"version":3,"file":"index.js","names":["slugify","createFileReporter","default","babelTransformPlugin","preeval","getTransformMetadata","withTransformMetadata","Module","DefaultModuleImplementation","shaker","transform","isUnprocessedEntrypointError","UnprocessedEntrypointError","EvaluatedEntrypoint","parseFile","baseHandlers","prepareCode","Entrypoint","transformUrl","asyncResolveImports","syncResolveImports","loadWywOptions","withDefaultServices","EventEmitter","isNode","getFileIdx","getTagProcessor","getVisitorKeys","peek","processTemplateExpression","TransformCacheCollection"],"sources":["../src/index.ts"],"sourcesContent":["export { slugify } from '@wyw-in-js/shared';\n\nexport { createFileReporter } from './debug/fileReporter';\nexport type { IFileReporterOptions } from './debug/fileReporter';\nexport { default as babelTransformPlugin } from './plugins/babel-transform';\nexport { default as preeval } from './plugins/preeval';\nexport {\n getTransformMetadata,\n withTransformMetadata,\n} from './utils/TransformMetadata';\nexport type { WYWTransformMetadata } from './utils/TransformMetadata';\nexport { Module, DefaultModuleImplementation } from './module';\nexport { default as shaker } from './shaker';\nexport { transform } from './transform';\nexport {\n isUnprocessedEntrypointError,\n UnprocessedEntrypointError,\n} from './transform/actions/UnprocessedEntrypointError';\nexport * from './types';\nexport { EvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nexport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nexport { parseFile } from './transform/Entrypoint.helpers';\nexport type { LoadAndParseFn } from './transform/Entrypoint.types';\nexport { baseHandlers } from './transform/generators';\nexport { prepareCode } from './transform/generators/transform';\nexport { Entrypoint } from './transform/Entrypoint';\nexport { transformUrl } from './transform/generators/extract';\nexport {\n asyncResolveImports,\n syncResolveImports,\n} from './transform/generators/resolveImports';\nexport { loadWywOptions } from './transform/helpers/loadWywOptions';\nexport { withDefaultServices } from './transform/helpers/withDefaultServices';\nexport type { Services } from './transform/types';\nexport { EventEmitter } from './utils/EventEmitter';\nexport type {\n EntrypointEvent,\n OnEvent,\n OnActionStartArgs,\n OnActionFinishArgs,\n} from './utils/EventEmitter';\nexport { isNode } from './utils/isNode';\nexport { getFileIdx } from './utils/getFileIdx';\nexport { getTagProcessor } from './utils/getTagProcessor';\nexport { getVisitorKeys } from './utils/getVisitorKeys';\nexport type { VisitorKeys } from './utils/getVisitorKeys';\nexport { peek } from './utils/peek';\nexport { processTemplateExpression } from './utils/processTemplateExpression';\nexport { TransformCacheCollection } from './cache';\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,mBAAmB;AAE3C,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD,SAASC,OAAO,IAAIC,oBAAoB,QAAQ,2BAA2B;AAC3E,SAASD,OAAO,IAAIE,OAAO,QAAQ,mBAAmB;AACtD,SACEC,oBAAoB,EACpBC,qBAAqB,QAChB,2BAA2B;AAElC,SAASC,MAAM,EAAEC,2BAA2B,QAAQ,UAAU;AAC9D,SAASN,OAAO,IAAIO,MAAM,QAAQ,UAAU;AAC5C,SAASC,SAAS,QAAQ,aAAa;AACvC,SACEC,4BAA4B,EAC5BC,0BAA0B,QACrB,gDAAgD;AACvD,cAAc,SAAS;AACvB,SAASC,mBAAmB,QAAQ,iCAAiC;AAErE,SAASC,SAAS,QAAQ,gCAAgC;AAE1D,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,WAAW,QAAQ,kCAAkC;AAC9D,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,YAAY,QAAQ,gCAAgC;AAC7D,SACEC,mBAAmB,EACnBC,kBAAkB,QACb,uCAAuC;AAC9C,SAASC,cAAc,QAAQ,oCAAoC;AACnE,SAASC,mBAAmB,QAAQ,yCAAyC;AAE7E,SAASC,YAAY,QAAQ,sBAAsB;AAOnD,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,cAAc,QAAQ,wBAAwB;AAEvD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,wBAAwB,QAAQ,SAAS"}
@@ -9,7 +9,7 @@ export function loadBabelOptions(babel, filename, overrides = empty) {
9
9
  ...overrides,
10
10
  filename,
11
11
  caller: {
12
- name: 'linaria',
12
+ name: 'wyw-in-js',
13
13
  // Indicates for @babel/preset-env to support all ESM syntax and avoid transforms before it's needed
14
14
  supportsStaticESM: true,
15
15
  supportsDynamicImport: true,
@@ -1 +1 @@
1
- {"version":3,"file":"loadBabelOptions.js","names":["cache","WeakMap","empty","loadBabelOptions","babel","filename","overrides","fileCache","get","Map","has","babelOptions","loadOptions","caller","name","supportsStaticESM","supportsDynamicImport","supportsTopLevelAwait","supportsExportNamespaceFrom","set"],"sources":["../../src/options/loadBabelOptions.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\n\nimport type { Core } from '../babel';\n\nconst cache = new WeakMap<\n Partial<TransformOptions>,\n Map<string, TransformOptions>\n>();\n\nconst empty = {};\n\nexport function loadBabelOptions(\n babel: Core,\n filename: string,\n overrides: TransformOptions = empty\n) {\n const fileCache = cache.get(overrides) ?? new Map<string, TransformOptions>();\n if (fileCache.has(filename)) {\n return fileCache.get(filename)!;\n }\n\n const babelOptions: TransformOptions =\n babel.loadOptions({\n ...overrides,\n filename,\n caller: {\n name: 'linaria',\n\n // Indicates for @babel/preset-env to support all ESM syntax and avoid transforms before it's needed\n supportsStaticESM: true,\n supportsDynamicImport: true,\n supportsTopLevelAwait: true,\n supportsExportNamespaceFrom: true,\n },\n }) ?? {};\n\n fileCache.set(filename, babelOptions);\n cache.set(overrides, fileCache);\n\n return babelOptions;\n}\n"],"mappings":"AAIA,MAAMA,KAAK,GAAG,IAAIC,OAAO,CAGvB,CAAC;AAEH,MAAMC,KAAK,GAAG,CAAC,CAAC;AAEhB,OAAO,SAASC,gBAAgBA,CAC9BC,KAAW,EACXC,QAAgB,EAChBC,SAA2B,GAAGJ,KAAK,EACnC;EACA,MAAMK,SAAS,GAAGP,KAAK,CAACQ,GAAG,CAACF,SAAS,CAAC,IAAI,IAAIG,GAAG,CAA2B,CAAC;EAC7E,IAAIF,SAAS,CAACG,GAAG,CAACL,QAAQ,CAAC,EAAE;IAC3B,OAAOE,SAAS,CAACC,GAAG,CAACH,QAAQ,CAAC;EAChC;EAEA,MAAMM,YAA8B,GAClCP,KAAK,CAACQ,WAAW,CAAC;IAChB,GAAGN,SAAS;IACZD,QAAQ;IACRQ,MAAM,EAAE;MACNC,IAAI,EAAE,SAAS;MAEf;MACAC,iBAAiB,EAAE,IAAI;MACvBC,qBAAqB,EAAE,IAAI;MAC3BC,qBAAqB,EAAE,IAAI;MAC3BC,2BAA2B,EAAE;IAC/B;EACF,CAAC,CAAC,IAAI,CAAC,CAAC;EAEVX,SAAS,CAACY,GAAG,CAACd,QAAQ,EAAEM,YAAY,CAAC;EACrCX,KAAK,CAACmB,GAAG,CAACb,SAAS,EAAEC,SAAS,CAAC;EAE/B,OAAOI,YAAY;AACrB"}
1
+ {"version":3,"file":"loadBabelOptions.js","names":["cache","WeakMap","empty","loadBabelOptions","babel","filename","overrides","fileCache","get","Map","has","babelOptions","loadOptions","caller","name","supportsStaticESM","supportsDynamicImport","supportsTopLevelAwait","supportsExportNamespaceFrom","set"],"sources":["../../src/options/loadBabelOptions.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\n\nimport type { Core } from '../babel';\n\nconst cache = new WeakMap<\n Partial<TransformOptions>,\n Map<string, TransformOptions>\n>();\n\nconst empty = {};\n\nexport function loadBabelOptions(\n babel: Core,\n filename: string,\n overrides: TransformOptions = empty\n) {\n const fileCache = cache.get(overrides) ?? new Map<string, TransformOptions>();\n if (fileCache.has(filename)) {\n return fileCache.get(filename)!;\n }\n\n const babelOptions: TransformOptions =\n babel.loadOptions({\n ...overrides,\n filename,\n caller: {\n name: 'wyw-in-js',\n\n // Indicates for @babel/preset-env to support all ESM syntax and avoid transforms before it's needed\n supportsStaticESM: true,\n supportsDynamicImport: true,\n supportsTopLevelAwait: true,\n supportsExportNamespaceFrom: true,\n },\n }) ?? {};\n\n fileCache.set(filename, babelOptions);\n cache.set(overrides, fileCache);\n\n return babelOptions;\n}\n"],"mappings":"AAIA,MAAMA,KAAK,GAAG,IAAIC,OAAO,CAGvB,CAAC;AAEH,MAAMC,KAAK,GAAG,CAAC,CAAC;AAEhB,OAAO,SAASC,gBAAgBA,CAC9BC,KAAW,EACXC,QAAgB,EAChBC,SAA2B,GAAGJ,KAAK,EACnC;EACA,MAAMK,SAAS,GAAGP,KAAK,CAACQ,GAAG,CAACF,SAAS,CAAC,IAAI,IAAIG,GAAG,CAA2B,CAAC;EAC7E,IAAIF,SAAS,CAACG,GAAG,CAACL,QAAQ,CAAC,EAAE;IAC3B,OAAOE,SAAS,CAACC,GAAG,CAACH,QAAQ,CAAC;EAChC;EAEA,MAAMM,YAA8B,GAClCP,KAAK,CAACQ,WAAW,CAAC;IAChB,GAAGN,SAAS;IACZD,QAAQ;IACRQ,MAAM,EAAE;MACNC,IAAI,EAAE,WAAW;MAEjB;MACAC,iBAAiB,EAAE,IAAI;MACvBC,qBAAqB,EAAE,IAAI;MAC3BC,qBAAqB,EAAE,IAAI;MAC3BC,2BAA2B,EAAE;IAC/B;EACF,CAAC,CAAC,IAAI,CAAC,CAAC;EAEVX,SAAS,CAACY,GAAG,CAACd,QAAQ,EAAEM,YAAY,CAAC;EACrCX,KAAK,CAACmB,GAAG,CAACb,SAAS,EAAEC,SAAS,CAAC;EAE/B,OAAOI,YAAY;AACrB"}
@@ -1,7 +1,7 @@
1
1
  import { logger, syncResolve } from '@wyw-in-js/shared';
2
+ import { loadWywOptions } from '../transform/helpers/loadWywOptions';
2
3
  import { TransformCacheCollection } from '../cache';
3
4
  import { transformSync } from '../transform';
4
- import { loadLinariaOptions } from '../transform/helpers/loadLinariaOptions';
5
5
  import { collector } from './collector';
6
6
  export default function babelTransform(babel, options) {
7
7
  const cache = new TransformCacheCollection();
@@ -30,7 +30,7 @@ export default function babelTransform(babel, options) {
30
30
  };
31
31
  }
32
32
  debug('start %s', file.opts.filename);
33
- const pluginOptions = loadLinariaOptions(options);
33
+ const pluginOptions = loadWywOptions(options);
34
34
  transformSync({
35
35
  babel,
36
36
  cache,
@@ -1 +1 @@
1
- {"version":3,"file":"babel-transform.js","names":["logger","syncResolve","TransformCacheCollection","transformSync","loadLinariaOptions","collector","babelTransform","babel","options","cache","debug","extend","name","pre","file","collect","valueCache","data","loadedAndParsed","entrypoint","pluginOptions","services","evaluator","Error","ast","code","opts","filename","root","undefined","inputSourceMap","visitor","post"],"sources":["../../src/plugins/babel-transform.ts"],"sourcesContent":["import type { BabelFile, PluginObj } from '@babel/core';\n\nimport { logger, syncResolve } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { TransformCacheCollection } from '../cache';\nimport { transformSync } from '../transform';\nimport { loadLinariaOptions } from '../transform/helpers/loadLinariaOptions';\nimport type { ICollectAction, SyncScenarioForAction } from '../transform/types';\nimport type { IPluginState, PluginOptions } from '../types';\n\nimport { collector } from './collector';\n\nexport default function babelTransform(\n babel: Core,\n options: Partial<PluginOptions>\n): PluginObj<IPluginState> {\n const cache = new TransformCacheCollection();\n const debug = logger.extend('babel-transform');\n\n return {\n name: '@wyw-in-js/transform/babel-transform',\n pre(file: BabelFile) {\n // eslint-disable-next-line require-yield\n function* collect(\n this: ICollectAction\n ): SyncScenarioForAction<ICollectAction> {\n const { valueCache } = this.data;\n const { loadedAndParsed } = this.entrypoint;\n const { pluginOptions } = this.services.options;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n collector(file, pluginOptions, valueCache);\n\n return {\n ast: loadedAndParsed.ast,\n code: loadedAndParsed.code,\n };\n }\n\n debug('start %s', file.opts.filename);\n\n const pluginOptions = loadLinariaOptions(options);\n\n transformSync(\n {\n babel,\n cache,\n options: {\n filename: file.opts.filename!,\n root: file.opts.root ?? undefined,\n inputSourceMap: file.opts.inputSourceMap ?? undefined,\n pluginOptions,\n },\n },\n file.code,\n syncResolve,\n {\n collect,\n }\n );\n },\n visitor: {},\n post(file: BabelFile) {\n debug('end %s', file.opts.filename);\n },\n };\n}\n"],"mappings":"AAEA,SAASA,MAAM,EAAEC,WAAW,QAAQ,mBAAmB;AAGvD,SAASC,wBAAwB,QAAQ,UAAU;AACnD,SAASC,aAAa,QAAQ,cAAc;AAC5C,SAASC,kBAAkB,QAAQ,yCAAyC;AAI5E,SAASC,SAAS,QAAQ,aAAa;AAEvC,eAAe,SAASC,cAAcA,CACpCC,KAAW,EACXC,OAA+B,EACN;EACzB,MAAMC,KAAK,GAAG,IAAIP,wBAAwB,CAAC,CAAC;EAC5C,MAAMQ,KAAK,GAAGV,MAAM,CAACW,MAAM,CAAC,iBAAiB,CAAC;EAE9C,OAAO;IACLC,IAAI,EAAE,sCAAsC;IAC5CC,GAAGA,CAACC,IAAe,EAAE;MACnB;MACA,UAAUC,OAAOA,CAAA,EAEwB;QACvC,MAAM;UAAEC;QAAW,CAAC,GAAG,IAAI,CAACC,IAAI;QAChC,MAAM;UAAEC;QAAgB,CAAC,GAAG,IAAI,CAACC,UAAU;QAC3C,MAAM;UAAEC;QAAc,CAAC,GAAG,IAAI,CAACC,QAAQ,CAACb,OAAO;QAC/C,IAAIU,eAAe,CAACI,SAAS,KAAK,SAAS,EAAE;UAC3C,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;QAC3C;QAEAlB,SAAS,CAACS,IAAI,EAAEM,aAAa,EAAEJ,UAAU,CAAC;QAE1C,OAAO;UACLQ,GAAG,EAAEN,eAAe,CAACM,GAAG;UACxBC,IAAI,EAAEP,eAAe,CAACO;QACxB,CAAC;MACH;MAEAf,KAAK,CAAC,UAAU,EAAEI,IAAI,CAACY,IAAI,CAACC,QAAQ,CAAC;MAErC,MAAMP,aAAa,GAAGhB,kBAAkB,CAACI,OAAO,CAAC;MAEjDL,aAAa,CACX;QACEI,KAAK;QACLE,KAAK;QACLD,OAAO,EAAE;UACPmB,QAAQ,EAAEb,IAAI,CAACY,IAAI,CAACC,QAAS;UAC7BC,IAAI,EAAEd,IAAI,CAACY,IAAI,CAACE,IAAI,IAAIC,SAAS;UACjCC,cAAc,EAAEhB,IAAI,CAACY,IAAI,CAACI,cAAc,IAAID,SAAS;UACrDT;QACF;MACF,CAAC,EACDN,IAAI,CAACW,IAAI,EACTxB,WAAW,EACX;QACEc;MACF,CACF,CAAC;IACH,CAAC;IACDgB,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAAClB,IAAe,EAAE;MACpBJ,KAAK,CAAC,QAAQ,EAAEI,IAAI,CAACY,IAAI,CAACC,QAAQ,CAAC;IACrC;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"babel-transform.js","names":["logger","syncResolve","loadWywOptions","TransformCacheCollection","transformSync","collector","babelTransform","babel","options","cache","debug","extend","name","pre","file","collect","valueCache","data","loadedAndParsed","entrypoint","pluginOptions","services","evaluator","Error","ast","code","opts","filename","root","undefined","inputSourceMap","visitor","post"],"sources":["../../src/plugins/babel-transform.ts"],"sourcesContent":["import type { BabelFile, PluginObj } from '@babel/core';\n\nimport { logger, syncResolve } from '@wyw-in-js/shared';\n\nimport { loadWywOptions } from '../transform/helpers/loadWywOptions';\nimport type { Core } from '../babel';\nimport { TransformCacheCollection } from '../cache';\nimport { transformSync } from '../transform';\nimport type { ICollectAction, SyncScenarioForAction } from '../transform/types';\nimport type { IPluginState, PluginOptions } from '../types';\n\nimport { collector } from './collector';\n\nexport default function babelTransform(\n babel: Core,\n options: Partial<PluginOptions>\n): PluginObj<IPluginState> {\n const cache = new TransformCacheCollection();\n const debug = logger.extend('babel-transform');\n\n return {\n name: '@wyw-in-js/transform/babel-transform',\n pre(file: BabelFile) {\n // eslint-disable-next-line require-yield\n function* collect(\n this: ICollectAction\n ): SyncScenarioForAction<ICollectAction> {\n const { valueCache } = this.data;\n const { loadedAndParsed } = this.entrypoint;\n const { pluginOptions } = this.services.options;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n collector(file, pluginOptions, valueCache);\n\n return {\n ast: loadedAndParsed.ast,\n code: loadedAndParsed.code,\n };\n }\n\n debug('start %s', file.opts.filename);\n\n const pluginOptions = loadWywOptions(options);\n\n transformSync(\n {\n babel,\n cache,\n options: {\n filename: file.opts.filename!,\n root: file.opts.root ?? undefined,\n inputSourceMap: file.opts.inputSourceMap ?? undefined,\n pluginOptions,\n },\n },\n file.code,\n syncResolve,\n {\n collect,\n }\n );\n },\n visitor: {},\n post(file: BabelFile) {\n debug('end %s', file.opts.filename);\n },\n };\n}\n"],"mappings":"AAEA,SAASA,MAAM,EAAEC,WAAW,QAAQ,mBAAmB;AAEvD,SAASC,cAAc,QAAQ,qCAAqC;AAEpE,SAASC,wBAAwB,QAAQ,UAAU;AACnD,SAASC,aAAa,QAAQ,cAAc;AAI5C,SAASC,SAAS,QAAQ,aAAa;AAEvC,eAAe,SAASC,cAAcA,CACpCC,KAAW,EACXC,OAA+B,EACN;EACzB,MAAMC,KAAK,GAAG,IAAIN,wBAAwB,CAAC,CAAC;EAC5C,MAAMO,KAAK,GAAGV,MAAM,CAACW,MAAM,CAAC,iBAAiB,CAAC;EAE9C,OAAO;IACLC,IAAI,EAAE,sCAAsC;IAC5CC,GAAGA,CAACC,IAAe,EAAE;MACnB;MACA,UAAUC,OAAOA,CAAA,EAEwB;QACvC,MAAM;UAAEC;QAAW,CAAC,GAAG,IAAI,CAACC,IAAI;QAChC,MAAM;UAAEC;QAAgB,CAAC,GAAG,IAAI,CAACC,UAAU;QAC3C,MAAM;UAAEC;QAAc,CAAC,GAAG,IAAI,CAACC,QAAQ,CAACb,OAAO;QAC/C,IAAIU,eAAe,CAACI,SAAS,KAAK,SAAS,EAAE;UAC3C,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;QAC3C;QAEAlB,SAAS,CAACS,IAAI,EAAEM,aAAa,EAAEJ,UAAU,CAAC;QAE1C,OAAO;UACLQ,GAAG,EAAEN,eAAe,CAACM,GAAG;UACxBC,IAAI,EAAEP,eAAe,CAACO;QACxB,CAAC;MACH;MAEAf,KAAK,CAAC,UAAU,EAAEI,IAAI,CAACY,IAAI,CAACC,QAAQ,CAAC;MAErC,MAAMP,aAAa,GAAGlB,cAAc,CAACM,OAAO,CAAC;MAE7CJ,aAAa,CACX;QACEG,KAAK;QACLE,KAAK;QACLD,OAAO,EAAE;UACPmB,QAAQ,EAAEb,IAAI,CAACY,IAAI,CAACC,QAAS;UAC7BC,IAAI,EAAEd,IAAI,CAACY,IAAI,CAACE,IAAI,IAAIC,SAAS;UACjCC,cAAc,EAAEhB,IAAI,CAACY,IAAI,CAACI,cAAc,IAAID,SAAS;UACrDT;QACF;MACF,CAAC,EACDN,IAAI,CAACW,IAAI,EACTxB,WAAW,EACX;QACEc;MACF,CACF,CAAC;IACH,CAAC;IACDgB,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAAClB,IAAe,EAAE;MACpBJ,KAAK,CAAC,QAAQ,EAAEI,IAAI,CAACY,IAAI,CAACC,QAAQ,CAAC;IACrC;EACF,CAAC;AACH"}
@@ -30,8 +30,8 @@ export function collector(file, options, values) {
30
30
  return processors;
31
31
  }
32
32
 
33
- // We can remove __linariaPreval export and all related code
34
- const prevalExport = file.path.scope.getData('__linariaPreval')?.findParent(p => p.isExpressionStatement());
33
+ // We can remove __wywPreval export and all related code
34
+ const prevalExport = file.path.scope.getData('__wywPreval')?.findParent(p => p.isExpressionStatement());
35
35
  if (prevalExport) {
36
36
  removeWithRelated([prevalExport]);
37
37
  }
@@ -46,10 +46,10 @@ export default function collectorPlugin(babel, options) {
46
46
  debug('start %s', file.opts.filename);
47
47
  const processors = collector(file, options, values);
48
48
  if (processors.length === 0) {
49
- // We didn't find any Linaria template literals.
49
+ // We didn't find any wyw-in-js template literals.
50
50
  return;
51
51
  }
52
- this.file.metadata.linaria = {
52
+ this.file.metadata.wywInJS = {
53
53
  processors,
54
54
  replacements: [],
55
55
  rules: {},
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","names":["logger","processTemplateExpression","removeWithRelated","invalidateTraversalCache","filename","__filename","collector","file","options","values","processors","identifiers","path","traverse","Identifier","p","push","forEach","opts","processor","build","doRuntimeReplacement","length","prevalExport","scope","getData","findParent","isExpressionStatement","collectorPlugin","babel","Map","debug","extend","name","pre","metadata","linaria","replacements","rules","dependencies","visitor","post"],"sources":["../../src/plugins/collector.ts"],"sourcesContent":["/**\n * Collector traverses the AST and collects information about imports and\n * all usages of WYW-processors.\n */\n\nimport type { BabelFile, PluginObj } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { Identifier } from '@babel/types';\n\nimport type { ValueCache } from '@wyw-in-js/processor-utils';\nimport { logger } from '@wyw-in-js/shared';\nimport type { StrictOptions } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IPluginState } from '../types';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\nimport { processTemplateExpression } from '../utils/processTemplateExpression';\nimport { removeWithRelated } from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nexport const filename = __filename;\n\nexport function collector(\n file: BabelFile,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'evaluate' | 'tagResolver'\n >,\n values: ValueCache\n) {\n const processors: WYWTransformMetadata['processors'] = [];\n\n const identifiers: NodePath<Identifier>[] = [];\n file.path.traverse({\n Identifier: (p) => {\n identifiers.push(p);\n },\n });\n\n // TODO: process transformed literals\n identifiers.forEach((p) => {\n processTemplateExpression(p, file.opts, options, (processor) => {\n processor.build(values);\n processor.doRuntimeReplacement();\n processors.push(processor);\n });\n });\n\n if (processors.length === 0) {\n // We didn't find any processors.\n return processors;\n }\n\n // We can remove __linariaPreval export and all related code\n const prevalExport = (\n file.path.scope.getData('__linariaPreval') as NodePath | undefined\n )?.findParent((p) => p.isExpressionStatement());\n if (prevalExport) {\n removeWithRelated([prevalExport]);\n }\n\n return processors;\n}\n\nexport default function collectorPlugin(\n babel: Core,\n options: StrictOptions & { values?: ValueCache }\n): PluginObj<IPluginState> {\n const values = options.values ?? new Map<string, unknown>();\n const debug = logger.extend('collector');\n return {\n name: '@wyw-in-js/transform/collector',\n pre(file: BabelFile) {\n debug('start %s', file.opts.filename);\n\n const processors = collector(file, options, values);\n\n if (processors.length === 0) {\n // We didn't find any Linaria template literals.\n return;\n }\n\n this.file.metadata.linaria = {\n processors,\n replacements: [],\n rules: {},\n dependencies: [],\n };\n\n debug('end %s', file.opts.filename);\n },\n visitor: {},\n post(file: BabelFile) {\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;;AAOA,SAASA,MAAM,QAAQ,mBAAmB;AAM1C,SAASC,yBAAyB,QAAQ,oCAAoC;AAC9E,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,wBAAwB,QAAQ,yBAAyB;AAElE,OAAO,MAAMC,QAAQ,GAAGC,UAAU;AAElC,OAAO,SAASC,SAASA,CACvBC,IAAe,EACfC,OAGC,EACDC,MAAkB,EAClB;EACA,MAAMC,UAA8C,GAAG,EAAE;EAEzD,MAAMC,WAAmC,GAAG,EAAE;EAC9CJ,IAAI,CAACK,IAAI,CAACC,QAAQ,CAAC;IACjBC,UAAU,EAAGC,CAAC,IAAK;MACjBJ,WAAW,CAACK,IAAI,CAACD,CAAC,CAAC;IACrB;EACF,CAAC,CAAC;;EAEF;EACAJ,WAAW,CAACM,OAAO,CAAEF,CAAC,IAAK;IACzBd,yBAAyB,CAACc,CAAC,EAAER,IAAI,CAACW,IAAI,EAAEV,OAAO,EAAGW,SAAS,IAAK;MAC9DA,SAAS,CAACC,KAAK,CAACX,MAAM,CAAC;MACvBU,SAAS,CAACE,oBAAoB,CAAC,CAAC;MAChCX,UAAU,CAACM,IAAI,CAACG,SAAS,CAAC;IAC5B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAIT,UAAU,CAACY,MAAM,KAAK,CAAC,EAAE;IAC3B;IACA,OAAOZ,UAAU;EACnB;;EAEA;EACA,MAAMa,YAAY,GAChBhB,IAAI,CAACK,IAAI,CAACY,KAAK,CAACC,OAAO,CAAC,iBAAiB,CAAC,EACzCC,UAAU,CAAEX,CAAC,IAAKA,CAAC,CAACY,qBAAqB,CAAC,CAAC,CAAC;EAC/C,IAAIJ,YAAY,EAAE;IAChBrB,iBAAiB,CAAC,CAACqB,YAAY,CAAC,CAAC;EACnC;EAEA,OAAOb,UAAU;AACnB;AAEA,eAAe,SAASkB,eAAeA,CACrCC,KAAW,EACXrB,OAAgD,EACvB;EACzB,MAAMC,MAAM,GAAGD,OAAO,CAACC,MAAM,IAAI,IAAIqB,GAAG,CAAkB,CAAC;EAC3D,MAAMC,KAAK,GAAG/B,MAAM,CAACgC,MAAM,CAAC,WAAW,CAAC;EACxC,OAAO;IACLC,IAAI,EAAE,gCAAgC;IACtCC,GAAGA,CAAC3B,IAAe,EAAE;MACnBwB,KAAK,CAAC,UAAU,EAAExB,IAAI,CAACW,IAAI,CAACd,QAAQ,CAAC;MAErC,MAAMM,UAAU,GAAGJ,SAAS,CAACC,IAAI,EAAEC,OAAO,EAAEC,MAAM,CAAC;MAEnD,IAAIC,UAAU,CAACY,MAAM,KAAK,CAAC,EAAE;QAC3B;QACA;MACF;MAEA,IAAI,CAACf,IAAI,CAAC4B,QAAQ,CAACC,OAAO,GAAG;QAC3B1B,UAAU;QACV2B,YAAY,EAAE,EAAE;QAChBC,KAAK,EAAE,CAAC,CAAC;QACTC,YAAY,EAAE;MAChB,CAAC;MAEDR,KAAK,CAAC,QAAQ,EAAExB,IAAI,CAACW,IAAI,CAACd,QAAQ,CAAC;IACrC,CAAC;IACDoC,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAAClC,IAAe,EAAE;MACpBJ,wBAAwB,CAACI,IAAI,CAACK,IAAI,CAAC;IACrC;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"collector.js","names":["logger","processTemplateExpression","removeWithRelated","invalidateTraversalCache","filename","__filename","collector","file","options","values","processors","identifiers","path","traverse","Identifier","p","push","forEach","opts","processor","build","doRuntimeReplacement","length","prevalExport","scope","getData","findParent","isExpressionStatement","collectorPlugin","babel","Map","debug","extend","name","pre","metadata","wywInJS","replacements","rules","dependencies","visitor","post"],"sources":["../../src/plugins/collector.ts"],"sourcesContent":["/**\n * Collector traverses the AST and collects information about imports and\n * all usages of WYW-processors.\n */\n\nimport type { BabelFile, PluginObj } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { Identifier } from '@babel/types';\n\nimport type { ValueCache } from '@wyw-in-js/processor-utils';\nimport { logger } from '@wyw-in-js/shared';\nimport type { StrictOptions } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IPluginState } from '../types';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\nimport { processTemplateExpression } from '../utils/processTemplateExpression';\nimport { removeWithRelated } from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nexport const filename = __filename;\n\nexport function collector(\n file: BabelFile,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'evaluate' | 'tagResolver'\n >,\n values: ValueCache\n) {\n const processors: WYWTransformMetadata['processors'] = [];\n\n const identifiers: NodePath<Identifier>[] = [];\n file.path.traverse({\n Identifier: (p) => {\n identifiers.push(p);\n },\n });\n\n // TODO: process transformed literals\n identifiers.forEach((p) => {\n processTemplateExpression(p, file.opts, options, (processor) => {\n processor.build(values);\n processor.doRuntimeReplacement();\n processors.push(processor);\n });\n });\n\n if (processors.length === 0) {\n // We didn't find any processors.\n return processors;\n }\n\n // We can remove __wywPreval export and all related code\n const prevalExport = (\n file.path.scope.getData('__wywPreval') as NodePath | undefined\n )?.findParent((p) => p.isExpressionStatement());\n if (prevalExport) {\n removeWithRelated([prevalExport]);\n }\n\n return processors;\n}\n\nexport default function collectorPlugin(\n babel: Core,\n options: StrictOptions & { values?: ValueCache }\n): PluginObj<IPluginState> {\n const values = options.values ?? new Map<string, unknown>();\n const debug = logger.extend('collector');\n return {\n name: '@wyw-in-js/transform/collector',\n pre(file: BabelFile) {\n debug('start %s', file.opts.filename);\n\n const processors = collector(file, options, values);\n\n if (processors.length === 0) {\n // We didn't find any wyw-in-js template literals.\n return;\n }\n\n this.file.metadata.wywInJS = {\n processors,\n replacements: [],\n rules: {},\n dependencies: [],\n };\n\n debug('end %s', file.opts.filename);\n },\n visitor: {},\n post(file: BabelFile) {\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;;AAOA,SAASA,MAAM,QAAQ,mBAAmB;AAM1C,SAASC,yBAAyB,QAAQ,oCAAoC;AAC9E,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,wBAAwB,QAAQ,yBAAyB;AAElE,OAAO,MAAMC,QAAQ,GAAGC,UAAU;AAElC,OAAO,SAASC,SAASA,CACvBC,IAAe,EACfC,OAGC,EACDC,MAAkB,EAClB;EACA,MAAMC,UAA8C,GAAG,EAAE;EAEzD,MAAMC,WAAmC,GAAG,EAAE;EAC9CJ,IAAI,CAACK,IAAI,CAACC,QAAQ,CAAC;IACjBC,UAAU,EAAGC,CAAC,IAAK;MACjBJ,WAAW,CAACK,IAAI,CAACD,CAAC,CAAC;IACrB;EACF,CAAC,CAAC;;EAEF;EACAJ,WAAW,CAACM,OAAO,CAAEF,CAAC,IAAK;IACzBd,yBAAyB,CAACc,CAAC,EAAER,IAAI,CAACW,IAAI,EAAEV,OAAO,EAAGW,SAAS,IAAK;MAC9DA,SAAS,CAACC,KAAK,CAACX,MAAM,CAAC;MACvBU,SAAS,CAACE,oBAAoB,CAAC,CAAC;MAChCX,UAAU,CAACM,IAAI,CAACG,SAAS,CAAC;IAC5B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAIT,UAAU,CAACY,MAAM,KAAK,CAAC,EAAE;IAC3B;IACA,OAAOZ,UAAU;EACnB;;EAEA;EACA,MAAMa,YAAY,GAChBhB,IAAI,CAACK,IAAI,CAACY,KAAK,CAACC,OAAO,CAAC,aAAa,CAAC,EACrCC,UAAU,CAAEX,CAAC,IAAKA,CAAC,CAACY,qBAAqB,CAAC,CAAC,CAAC;EAC/C,IAAIJ,YAAY,EAAE;IAChBrB,iBAAiB,CAAC,CAACqB,YAAY,CAAC,CAAC;EACnC;EAEA,OAAOb,UAAU;AACnB;AAEA,eAAe,SAASkB,eAAeA,CACrCC,KAAW,EACXrB,OAAgD,EACvB;EACzB,MAAMC,MAAM,GAAGD,OAAO,CAACC,MAAM,IAAI,IAAIqB,GAAG,CAAkB,CAAC;EAC3D,MAAMC,KAAK,GAAG/B,MAAM,CAACgC,MAAM,CAAC,WAAW,CAAC;EACxC,OAAO;IACLC,IAAI,EAAE,gCAAgC;IACtCC,GAAGA,CAAC3B,IAAe,EAAE;MACnBwB,KAAK,CAAC,UAAU,EAAExB,IAAI,CAACW,IAAI,CAACd,QAAQ,CAAC;MAErC,MAAMM,UAAU,GAAGJ,SAAS,CAACC,IAAI,EAAEC,OAAO,EAAEC,MAAM,CAAC;MAEnD,IAAIC,UAAU,CAACY,MAAM,KAAK,CAAC,EAAE;QAC3B;QACA;MACF;MAEA,IAAI,CAACf,IAAI,CAAC4B,QAAQ,CAACC,OAAO,GAAG;QAC3B1B,UAAU;QACV2B,YAAY,EAAE,EAAE;QAChBC,KAAK,EAAE,CAAC,CAAC;QACTC,YAAY,EAAE;MAChB,CAAC;MAEDR,KAAK,CAAC,QAAQ,EAAExB,IAAI,CAACW,IAAI,CAACd,QAAQ,CAAC;IACrC,CAAC;IACDoC,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAAClC,IAAe,EAAE;MACpBJ,wBAAwB,CAACI,IAAI,CAACK,IAAI,CAAC;IACrC;EACF,CAAC;AACH"}
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { isFeatureEnabled, logger } from '@wyw-in-js/shared';
7
7
  import { EventEmitter } from '../utils/EventEmitter';
8
- import { addIdentifierToLinariaPreval } from '../utils/addIdentifierToLinariaPreval';
8
+ import { addIdentifierToWywPreval } from '../utils/addIdentifierToWywPreval';
9
9
  import { getFileIdx } from '../utils/getFileIdx';
10
10
  import { processTemplateExpression } from '../utils/processTemplateExpression';
11
11
  import { removeDangerousCode } from '../utils/removeDangerousCode';
@@ -31,7 +31,7 @@ export function preeval(babel, {
31
31
  processTemplateExpression(p, file.opts, options, processor => {
32
32
  processor.dependencies.forEach(dependency => {
33
33
  if (dependency.ex.type === 'Identifier') {
34
- addIdentifierToLinariaPreval(rootScope, dependency.ex.name);
34
+ addIdentifierToWywPreval(rootScope, dependency.ex.name);
35
35
  }
36
36
  });
37
37
  processor.doEvaltimeReplacement();
@@ -50,24 +50,24 @@ export function preeval(babel, {
50
50
  const log = logger.extend('preeval').extend(getFileIdx(file.opts.filename));
51
51
  invalidateTraversalCache(file.path);
52
52
  if (this.processors.length === 0) {
53
- log('end', "We didn't find any Linaria template literals");
53
+ log('end', "We didn't find any wyw-in-js template literals");
54
54
 
55
- // We didn't find any Linaria template literals.
55
+ // We didn't find any wyw-in-js template literals.
56
56
  return;
57
57
  }
58
- this.file.metadata.linaria = {
58
+ this.file.metadata.wywInJS = {
59
59
  processors: this.processors,
60
60
  replacements: [],
61
61
  rules: {},
62
62
  dependencies: []
63
63
  };
64
- const linariaPreval = file.path.getData('__linariaPreval');
65
- if (!linariaPreval) {
66
- // Event if there is no dependencies, we still need to add __linariaPreval
67
- const linariaExport = t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.identifier('exports'), t.identifier('__linariaPreval')), t.objectExpression([])));
68
- file.path.pushContainer('body', linariaExport);
64
+ const wywPreval = file.path.getData('__wywPreval');
65
+ if (!wywPreval) {
66
+ // Event if there is no dependencies, we still need to add __wywPreval
67
+ const wywExport = t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.identifier('exports'), t.identifier('__wywPreval')), t.objectExpression([])));
68
+ file.path.pushContainer('body', wywExport);
69
69
  }
70
- log('end', '__linariaPreval has been added');
70
+ log('end', '__wywPreval has been added');
71
71
  }
72
72
  };
73
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preeval.js","names":["isFeatureEnabled","logger","EventEmitter","addIdentifierToLinariaPreval","getFileIdx","processTemplateExpression","removeDangerousCode","invalidateTraversalCache","preeval","babel","eventEmitter","dummy","options","types","t","name","pre","file","filename","opts","log","extend","rootScope","scope","processors","perf","path","traverse","Identifier","p","processor","dependencies","forEach","dependency","ex","type","doEvaltimeReplacement","push","features","visitor","post","length","metadata","linaria","replacements","rules","linariaPreval","getData","linariaExport","expressionStatement","assignmentExpression","memberExpression","identifier","objectExpression","pushContainer"],"sources":["../../src/plugins/preeval.ts"],"sourcesContent":["/**\n * This file is a babel preset used to transform files inside evaluators.\n * It works the same as main `babel/extract` preset, but do not evaluate lazy dependencies.\n */\nimport type { BabelFile, PluginObj } from '@babel/core';\n\nimport type { StrictOptions } from '@wyw-in-js/shared';\nimport { isFeatureEnabled, logger } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IPluginState } from '../types';\nimport { EventEmitter } from '../utils/EventEmitter';\nimport { addIdentifierToLinariaPreval } from '../utils/addIdentifierToLinariaPreval';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { processTemplateExpression } from '../utils/processTemplateExpression';\nimport { removeDangerousCode } from '../utils/removeDangerousCode';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nexport type PreevalOptions = Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'evaluate' | 'features'\n> & { eventEmitter: EventEmitter };\n\nexport function preeval(\n babel: Core,\n { eventEmitter = EventEmitter.dummy, ...options }: PreevalOptions\n): PluginObj<IPluginState & { onFinish: () => void }> {\n const { types: t } = babel;\n return {\n name: '@wyw-in-js/transform/preeval',\n pre(file: BabelFile) {\n const filename = file.opts.filename!;\n const log = logger.extend('preeval').extend(getFileIdx(filename));\n\n log('start', 'Looking for template literals…');\n\n const rootScope = file.scope;\n this.processors = [];\n\n eventEmitter.perf('transform:preeval:processTemplate', () => {\n file.path.traverse({\n Identifier: (p) => {\n processTemplateExpression(p, file.opts, options, (processor) => {\n processor.dependencies.forEach((dependency) => {\n if (dependency.ex.type === 'Identifier') {\n addIdentifierToLinariaPreval(rootScope, dependency.ex.name);\n }\n });\n\n processor.doEvaltimeReplacement();\n this.processors.push(processor);\n });\n },\n });\n });\n\n if (\n isFeatureEnabled(options.features, 'dangerousCodeRemover', filename)\n ) {\n log('start', 'Strip all JSX and browser related stuff');\n eventEmitter.perf('transform:preeval:removeDangerousCode', () =>\n removeDangerousCode(file.path)\n );\n }\n },\n visitor: {},\n post(file: BabelFile) {\n const log = logger\n .extend('preeval')\n .extend(getFileIdx(file.opts.filename!));\n\n invalidateTraversalCache(file.path);\n\n if (this.processors.length === 0) {\n log('end', \"We didn't find any Linaria template literals\");\n\n // We didn't find any Linaria template literals.\n return;\n }\n\n this.file.metadata.linaria = {\n processors: this.processors,\n replacements: [],\n rules: {},\n dependencies: [],\n };\n\n const linariaPreval = file.path.getData('__linariaPreval');\n if (!linariaPreval) {\n // Event if there is no dependencies, we still need to add __linariaPreval\n const linariaExport = t.expressionStatement(\n t.assignmentExpression(\n '=',\n t.memberExpression(\n t.identifier('exports'),\n t.identifier('__linariaPreval')\n ),\n t.objectExpression([])\n )\n );\n\n file.path.pushContainer('body', linariaExport);\n }\n\n log('end', '__linariaPreval has been added');\n },\n };\n}\n\nexport default preeval;\n"],"mappings":"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"}
1
+ {"version":3,"file":"preeval.js","names":["isFeatureEnabled","logger","EventEmitter","addIdentifierToWywPreval","getFileIdx","processTemplateExpression","removeDangerousCode","invalidateTraversalCache","preeval","babel","eventEmitter","dummy","options","types","t","name","pre","file","filename","opts","log","extend","rootScope","scope","processors","perf","path","traverse","Identifier","p","processor","dependencies","forEach","dependency","ex","type","doEvaltimeReplacement","push","features","visitor","post","length","metadata","wywInJS","replacements","rules","wywPreval","getData","wywExport","expressionStatement","assignmentExpression","memberExpression","identifier","objectExpression","pushContainer"],"sources":["../../src/plugins/preeval.ts"],"sourcesContent":["/**\n * This file is a babel preset used to transform files inside evaluators.\n * It works the same as main `babel/extract` preset, but do not evaluate lazy dependencies.\n */\nimport type { BabelFile, PluginObj } from '@babel/core';\n\nimport type { StrictOptions } from '@wyw-in-js/shared';\nimport { isFeatureEnabled, logger } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IPluginState } from '../types';\nimport { EventEmitter } from '../utils/EventEmitter';\nimport { addIdentifierToWywPreval } from '../utils/addIdentifierToWywPreval';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { processTemplateExpression } from '../utils/processTemplateExpression';\nimport { removeDangerousCode } from '../utils/removeDangerousCode';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nexport type PreevalOptions = Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'evaluate' | 'features'\n> & { eventEmitter: EventEmitter };\n\nexport function preeval(\n babel: Core,\n { eventEmitter = EventEmitter.dummy, ...options }: PreevalOptions\n): PluginObj<IPluginState & { onFinish: () => void }> {\n const { types: t } = babel;\n return {\n name: '@wyw-in-js/transform/preeval',\n pre(file: BabelFile) {\n const filename = file.opts.filename!;\n const log = logger.extend('preeval').extend(getFileIdx(filename));\n\n log('start', 'Looking for template literals…');\n\n const rootScope = file.scope;\n this.processors = [];\n\n eventEmitter.perf('transform:preeval:processTemplate', () => {\n file.path.traverse({\n Identifier: (p) => {\n processTemplateExpression(p, file.opts, options, (processor) => {\n processor.dependencies.forEach((dependency) => {\n if (dependency.ex.type === 'Identifier') {\n addIdentifierToWywPreval(rootScope, dependency.ex.name);\n }\n });\n\n processor.doEvaltimeReplacement();\n this.processors.push(processor);\n });\n },\n });\n });\n\n if (\n isFeatureEnabled(options.features, 'dangerousCodeRemover', filename)\n ) {\n log('start', 'Strip all JSX and browser related stuff');\n eventEmitter.perf('transform:preeval:removeDangerousCode', () =>\n removeDangerousCode(file.path)\n );\n }\n },\n visitor: {},\n post(file: BabelFile) {\n const log = logger\n .extend('preeval')\n .extend(getFileIdx(file.opts.filename!));\n\n invalidateTraversalCache(file.path);\n\n if (this.processors.length === 0) {\n log('end', \"We didn't find any wyw-in-js template literals\");\n\n // We didn't find any wyw-in-js template literals.\n return;\n }\n\n this.file.metadata.wywInJS = {\n processors: this.processors,\n replacements: [],\n rules: {},\n dependencies: [],\n };\n\n const wywPreval = file.path.getData('__wywPreval');\n if (!wywPreval) {\n // Event if there is no dependencies, we still need to add __wywPreval\n const wywExport = t.expressionStatement(\n t.assignmentExpression(\n '=',\n t.memberExpression(\n t.identifier('exports'),\n t.identifier('__wywPreval')\n ),\n t.objectExpression([])\n )\n );\n\n file.path.pushContainer('body', wywExport);\n }\n\n log('end', '__wywPreval has been added');\n },\n };\n}\n\nexport default preeval;\n"],"mappings":"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"}
@@ -111,12 +111,12 @@ export default function shakerPlugin(babel, {
111
111
  }
112
112
  }
113
113
  });
114
- const hasLinariaPreval = exports.__linariaPreval !== undefined;
114
+ const hasWywPreval = exports.__wywPreval !== undefined;
115
115
  const hasDefault = exports.default !== undefined;
116
116
 
117
- // If __linariaPreval is not exported, we can remove it from onlyExports
118
- if (onlyExportsSet.has('__linariaPreval') && !hasLinariaPreval) {
119
- onlyExportsSet.delete('__linariaPreval');
117
+ // If __wywPreval is not exported, we can remove it from onlyExports
118
+ if (onlyExportsSet.has('__wywPreval') && !hasWywPreval) {
119
+ onlyExportsSet.delete('__wywPreval');
120
120
  }
121
121
  if (onlyExportsSet.size === 0) {
122
122
  // Fast-lane: if there are no exports to keep, we can just shake out the whole file
@@ -286,7 +286,7 @@ export default function shakerPlugin(babel, {
286
286
  log('end', `remaining imports: %O`, imports);
287
287
 
288
288
  // eslint-disable-next-line no-param-reassign
289
- file.metadata.linariaEvaluator = {
289
+ file.metadata.wywEvaluator = {
290
290
  imports
291
291
  };
292
292
  invalidateTraversalCache(file.path);
@@ -1 +1 @@
1
- {"version":3,"file":"shaker.js","names":["logger","collectExportsAndImports","sideEffectImport","getFileIdx","isRemoved","applyAction","dereference","findActionForNode","reference","removeWithRelated","invalidateTraversalCache","EXT_REGEX","ALLOWED_EXTENSIONS","shouldKeepSideEffect","importPath","ext","match","includes","getBindingForExport","exportPath","isIdentifier","scope","getBinding","node","name","variableDeclarator","findParent","p","isVariableDeclarator","id","get","isAssignmentExpression","left","isFunctionDeclaration","isClassDeclaration","undefined","withoutRemoved","items","filter","local","rearrangeExports","types","t","root","exportRefs","exports","rearranged","rootScope","forEach","refs","length","declarator","uid","generateUid","declaration","unshiftContainer","variableDeclaration","identifier","registerDeclaration","ref","replaced","replaceWith","isBindingIdentifier","registerConstantViolation","parentPath","pushed","pushContainer","expressionStatement","assignmentExpression","memberExpression","shakerPlugin","babel","keepSideEffects","ifUnknownExport","onlyExports","shakerLogger","extend","pre","file","filename","opts","log","join","onlyExportsSet","Set","collected","path","sideEffectImports","imports","Object","values","reexports","hasLinariaPreval","__linariaPreval","hasDefault","default","has","delete","size","deadExports","keys","remove","importedAsSideEffect","isEsModule","add","aliveExports","importNames","map","imported","entries","exported","some","alive","exp","exportToPath","Map","set","notFoundExports","clear","isAllExportsFound","Error","forDeleting","i","source","push","deleted","dereferenced","changed","binding","action","parent","outerReferences","referencePaths","isAncestor","visitor","post","processedImports","addImport","metadata","linariaEvaluator"],"sources":["../../src/plugins/shaker.ts"],"sourcesContent":["import type { BabelFile, PluginObj, NodePath } from '@babel/core';\nimport type { Binding } from '@babel/traverse';\nimport type {\n Identifier,\n MemberExpression,\n Program,\n VariableDeclarator,\n} from '@babel/types';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IMetadata } from '../utils/ShakerMetadata';\nimport type { Exports, IState } from '../utils/collectExportsAndImports';\nimport {\n collectExportsAndImports,\n sideEffectImport,\n} from '../utils/collectExportsAndImports';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { isRemoved } from '../utils/isRemoved';\nimport {\n applyAction,\n dereference,\n findActionForNode,\n reference,\n removeWithRelated,\n} from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nconst EXT_REGEX = /\\.[0-9a-z]+$/;\nconst ALLOWED_EXTENSIONS = ['.js', '.cjs', '.mjs'];\n\nfunction shouldKeepSideEffect(importPath: string) {\n const [ext] = importPath.match(EXT_REGEX) || [''];\n\n return ext === '' || ALLOWED_EXTENSIONS.includes(ext);\n}\n\nexport interface IShakerOptions {\n ifUnknownExport?: 'error' | 'ignore' | 'reexport-all' | 'skip-shaking';\n keepSideEffects?: boolean;\n onlyExports: string[];\n}\n\ninterface NodeWithName {\n name: string;\n}\n\nfunction getBindingForExport(exportPath: NodePath): Binding | undefined {\n if (exportPath.isIdentifier()) {\n return exportPath.scope.getBinding(exportPath.node.name);\n }\n\n const variableDeclarator = exportPath.findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n if (variableDeclarator) {\n const id = variableDeclarator.get('id');\n if (id.isIdentifier()) {\n return variableDeclarator.scope.getBinding(id.node.name);\n }\n }\n\n if (exportPath.isAssignmentExpression()) {\n const left = exportPath.get('left');\n if (left.isIdentifier()) {\n return exportPath.scope.getBinding(left.node.name);\n }\n }\n\n if (exportPath.isFunctionDeclaration() || exportPath.isClassDeclaration()) {\n return exportPath.scope.getBinding(exportPath.node.id!.name);\n }\n\n return undefined;\n}\n\nconst withoutRemoved = <T extends { local: NodePath }>(items: T[]): T[] =>\n items.filter(({ local }) => !isRemoved(local));\n\nfunction rearrangeExports(\n { types: t }: Core,\n root: NodePath<Program>,\n exportRefs: Map<string, NodePath<MemberExpression>[]>,\n exports: Exports\n): Exports {\n const rearranged = {\n ...exports,\n };\n\n const rootScope = root.scope;\n exportRefs.forEach((refs, name) => {\n if (refs.length <= 1) {\n if (refs.length === 1) {\n // Maybe exports is assigned to another variable?\n const declarator = refs[0].findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n\n if (!declarator) {\n return;\n }\n } else {\n return;\n }\n }\n\n const uid = rootScope.generateUid(name);\n // Define variable in the beginning\n const [declaration] = root.unshiftContainer('body', [\n t.variableDeclaration('var', [t.variableDeclarator(t.identifier(uid))]),\n ]);\n\n rootScope.registerDeclaration(declaration);\n\n // Replace every reference with defined variable\n refs.forEach((ref) => {\n const [replaced] = ref.replaceWith(t.identifier(uid));\n if (replaced.isBindingIdentifier()) {\n rootScope.registerConstantViolation(replaced);\n if (replaced.parentPath?.parentPath?.isVariableDeclarator()) {\n // This is `const foo = exports.foo = \"value\"` case\n reference(replaced, replaced, true);\n }\n } else {\n reference(replaced);\n }\n });\n\n // Assign defined variable to the export\n const [pushed] = root.pushContainer('body', [\n t.expressionStatement(\n t.assignmentExpression(\n '=',\n t.memberExpression(t.identifier('exports'), t.identifier(name)),\n t.identifier(uid)\n )\n ),\n ]);\n\n const local = pushed.get('expression.right') as NodePath<Identifier>;\n reference(local);\n\n rearranged[name] = local;\n });\n\n return rearranged;\n}\n\nexport default function shakerPlugin(\n babel: Core,\n {\n keepSideEffects = false,\n ifUnknownExport = 'skip-shaking',\n onlyExports,\n }: IShakerOptions\n): PluginObj<IState & { filename: string }> {\n const shakerLogger = logger.extend('shaker');\n\n return {\n name: '@wyw-in-js/transform/shaker',\n pre(file: BabelFile) {\n this.filename = file.opts.filename!;\n const log = shakerLogger.extend(getFileIdx(this.filename));\n\n log('start', `${this.filename}, onlyExports: ${onlyExports.join(',')}`);\n const onlyExportsSet = new Set(onlyExports);\n\n const collected = collectExportsAndImports(file.path);\n const sideEffectImports = collected.imports.filter(sideEffectImport);\n log(\n 'import-and-exports',\n [\n `imports: ${collected.imports.length} (side-effects: ${sideEffectImports.length})`,\n `exports: ${Object.values(collected.exports).length}`,\n `reexports: ${collected.reexports.length}`,\n ].join(', ')\n );\n\n // We cannot just throw out exports if they are referred in the code\n // Let's dome some replacements\n const exports = rearrangeExports(\n babel,\n file.path,\n collected.exportRefs,\n collected.exports\n );\n\n Object.values(exports).forEach((local) => {\n if (local.isAssignmentExpression()) {\n const left = local.get('left');\n if (left.isIdentifier()) {\n // For some reason babel does not mark id in AssignmentExpression as a reference\n // So we need to do it manually\n reference(left, left, true);\n }\n }\n });\n\n const hasLinariaPreval = exports.__linariaPreval !== undefined;\n const hasDefault = exports.default !== undefined;\n\n // If __linariaPreval is not exported, we can remove it from onlyExports\n if (onlyExportsSet.has('__linariaPreval') && !hasLinariaPreval) {\n onlyExportsSet.delete('__linariaPreval');\n }\n\n if (onlyExportsSet.size === 0) {\n // Fast-lane: if there are no exports to keep, we can just shake out the whole file\n this.imports = [];\n this.exports = {};\n this.reexports = [];\n this.deadExports = Object.keys(exports);\n\n file.path.get('body').forEach((p) => {\n p.remove();\n });\n\n return;\n }\n\n const importedAsSideEffect = onlyExportsSet.has('side-effect');\n onlyExportsSet.delete('side-effect');\n\n // Hackaround for packages which include a 'default' export without specifying __esModule; such packages cannot be\n // shaken as they will break interopRequireDefault babel helper\n // See example in shaker-plugin.test.ts\n // Real-world example was found in preact/compat npm package\n if (\n onlyExportsSet.has('default') &&\n hasDefault &&\n !collected.isEsModule\n ) {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n return;\n }\n\n if (!onlyExportsSet.has('*')) {\n // __esModule should be kept alive\n onlyExportsSet.add('__esModule');\n\n const aliveExports = new Set<NodePath>();\n const importNames = collected.imports.map(({ imported }) => imported);\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (onlyExportsSet.has(exported)) {\n aliveExports.add(local);\n } else if (\n importNames.includes((local.node as NodeWithName).name || '')\n ) {\n aliveExports.add(local);\n } else if ([...aliveExports].some((alive) => alive === local)) {\n // It's possible to export multiple values from a single variable initializer, e.g\n // export const { foo, bar } = baz();\n // We need to treat all of them as used if any of them are used, since otherwise\n // we'll attempt to delete the baz() call\n aliveExports.add(local);\n }\n });\n\n collected.reexports.forEach((exp) => {\n if (onlyExportsSet.has(exp.exported)) {\n aliveExports.add(exp.local);\n }\n });\n\n const exportToPath = new Map<string, NodePath>();\n Object.entries(exports).forEach(([exported, local]) => {\n exportToPath.set(exported, local);\n });\n\n collected.reexports.forEach((exp) => {\n exportToPath.set(exp.exported, exp.local);\n });\n\n const notFoundExports = [...onlyExportsSet].filter(\n (exp) =>\n exp !== '__esModule' && !aliveExports.has(exportToPath.get(exp)!)\n );\n exportToPath.clear();\n\n const isAllExportsFound = notFoundExports.length === 0;\n if (!isAllExportsFound && ifUnknownExport !== 'ignore') {\n if (ifUnknownExport === 'error') {\n throw new Error(\n `Unknown export(s) requested: ${onlyExports.join(',')}`\n );\n }\n\n if (ifUnknownExport === 'reexport-all') {\n // If there are unknown exports, we have keep alive all re-exports.\n if (exports['*'] !== undefined) {\n aliveExports.add(exports['*']);\n }\n\n collected.reexports.forEach((exp) => {\n if (exp.exported === '*') {\n aliveExports.add(exp.local);\n }\n });\n }\n\n if (ifUnknownExport === 'skip-shaking') {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n\n return;\n }\n }\n\n const forDeleting = [\n ...Object.values(exports),\n ...collected.reexports.map((i) => i.local),\n ].filter((exp) => !aliveExports.has(exp));\n\n if (!keepSideEffects && !importedAsSideEffect) {\n // Remove all imports that don't import something explicitly and should not be kept\n sideEffectImports.forEach((i) => {\n if (!shouldKeepSideEffect(i.source)) {\n forDeleting.push(i.local);\n }\n });\n }\n\n const deleted = new Set<NodePath>();\n\n let dereferenced: NodePath<Identifier>[] = [];\n let changed = true;\n while (changed && deleted.size < forDeleting.length) {\n changed = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const path of forDeleting) {\n if (deleted.has(path)) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const binding = getBindingForExport(path);\n const action = findActionForNode(path);\n const parent = action?.[1];\n const outerReferences = (binding?.referencePaths || []).filter(\n (ref) => ref !== parent && !parent?.isAncestor(ref)\n );\n if (outerReferences.length > 0 && path.isIdentifier()) {\n // Temporary deref it in order to simplify further checks.\n dereference(path);\n dereferenced.push(path);\n }\n\n if (\n !deleted.has(path) &&\n (!binding || outerReferences.length === 0)\n ) {\n if (action) {\n applyAction(action);\n } else {\n removeWithRelated([path]);\n }\n\n deleted.add(path);\n changed = true;\n }\n }\n\n dereferenced.forEach((path) => {\n // If path is still alive, we need to reference it back\n if (!isRemoved(path)) {\n reference(path);\n }\n });\n\n dereferenced = [];\n }\n }\n\n this.imports = withoutRemoved(collected.imports);\n this.exports = {};\n this.deadExports = [];\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (isRemoved(local)) {\n this.deadExports.push(exported);\n } else {\n this.exports[exported] = local;\n }\n });\n\n this.reexports = withoutRemoved(collected.reexports);\n },\n visitor: {},\n post(file: BabelFile) {\n const log = shakerLogger.extend(getFileIdx(file.opts.filename!));\n\n const processedImports = new Set<string>();\n const imports = new Map<string, string[]>();\n const addImport = ({\n imported,\n source,\n }: {\n imported: string;\n source: string;\n }) => {\n if (processedImports.has(`${source}:${imported}`)) {\n return;\n }\n\n if (!imports.has(source)) {\n imports.set(source, []);\n }\n\n if (imported) {\n imports.get(source)!.push(imported);\n }\n\n processedImports.add(`${source}:${imported}`);\n };\n\n this.imports.forEach(addImport);\n this.reexports.forEach(addImport);\n\n log('end', `remaining imports: %O`, imports);\n\n // eslint-disable-next-line no-param-reassign\n (file.metadata as IMetadata).linariaEvaluator = {\n imports,\n };\n\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"shaker.js","names":["logger","collectExportsAndImports","sideEffectImport","getFileIdx","isRemoved","applyAction","dereference","findActionForNode","reference","removeWithRelated","invalidateTraversalCache","EXT_REGEX","ALLOWED_EXTENSIONS","shouldKeepSideEffect","importPath","ext","match","includes","getBindingForExport","exportPath","isIdentifier","scope","getBinding","node","name","variableDeclarator","findParent","p","isVariableDeclarator","id","get","isAssignmentExpression","left","isFunctionDeclaration","isClassDeclaration","undefined","withoutRemoved","items","filter","local","rearrangeExports","types","t","root","exportRefs","exports","rearranged","rootScope","forEach","refs","length","declarator","uid","generateUid","declaration","unshiftContainer","variableDeclaration","identifier","registerDeclaration","ref","replaced","replaceWith","isBindingIdentifier","registerConstantViolation","parentPath","pushed","pushContainer","expressionStatement","assignmentExpression","memberExpression","shakerPlugin","babel","keepSideEffects","ifUnknownExport","onlyExports","shakerLogger","extend","pre","file","filename","opts","log","join","onlyExportsSet","Set","collected","path","sideEffectImports","imports","Object","values","reexports","hasWywPreval","__wywPreval","hasDefault","default","has","delete","size","deadExports","keys","remove","importedAsSideEffect","isEsModule","add","aliveExports","importNames","map","imported","entries","exported","some","alive","exp","exportToPath","Map","set","notFoundExports","clear","isAllExportsFound","Error","forDeleting","i","source","push","deleted","dereferenced","changed","binding","action","parent","outerReferences","referencePaths","isAncestor","visitor","post","processedImports","addImport","metadata","wywEvaluator"],"sources":["../../src/plugins/shaker.ts"],"sourcesContent":["import type { BabelFile, PluginObj, NodePath } from '@babel/core';\nimport type { Binding } from '@babel/traverse';\nimport type {\n Identifier,\n MemberExpression,\n Program,\n VariableDeclarator,\n} from '@babel/types';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IMetadata } from '../utils/ShakerMetadata';\nimport type { Exports, IState } from '../utils/collectExportsAndImports';\nimport {\n collectExportsAndImports,\n sideEffectImport,\n} from '../utils/collectExportsAndImports';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { isRemoved } from '../utils/isRemoved';\nimport {\n applyAction,\n dereference,\n findActionForNode,\n reference,\n removeWithRelated,\n} from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nconst EXT_REGEX = /\\.[0-9a-z]+$/;\nconst ALLOWED_EXTENSIONS = ['.js', '.cjs', '.mjs'];\n\nfunction shouldKeepSideEffect(importPath: string) {\n const [ext] = importPath.match(EXT_REGEX) || [''];\n\n return ext === '' || ALLOWED_EXTENSIONS.includes(ext);\n}\n\nexport interface IShakerOptions {\n ifUnknownExport?: 'error' | 'ignore' | 'reexport-all' | 'skip-shaking';\n keepSideEffects?: boolean;\n onlyExports: string[];\n}\n\ninterface NodeWithName {\n name: string;\n}\n\nfunction getBindingForExport(exportPath: NodePath): Binding | undefined {\n if (exportPath.isIdentifier()) {\n return exportPath.scope.getBinding(exportPath.node.name);\n }\n\n const variableDeclarator = exportPath.findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n if (variableDeclarator) {\n const id = variableDeclarator.get('id');\n if (id.isIdentifier()) {\n return variableDeclarator.scope.getBinding(id.node.name);\n }\n }\n\n if (exportPath.isAssignmentExpression()) {\n const left = exportPath.get('left');\n if (left.isIdentifier()) {\n return exportPath.scope.getBinding(left.node.name);\n }\n }\n\n if (exportPath.isFunctionDeclaration() || exportPath.isClassDeclaration()) {\n return exportPath.scope.getBinding(exportPath.node.id!.name);\n }\n\n return undefined;\n}\n\nconst withoutRemoved = <T extends { local: NodePath }>(items: T[]): T[] =>\n items.filter(({ local }) => !isRemoved(local));\n\nfunction rearrangeExports(\n { types: t }: Core,\n root: NodePath<Program>,\n exportRefs: Map<string, NodePath<MemberExpression>[]>,\n exports: Exports\n): Exports {\n const rearranged = {\n ...exports,\n };\n\n const rootScope = root.scope;\n exportRefs.forEach((refs, name) => {\n if (refs.length <= 1) {\n if (refs.length === 1) {\n // Maybe exports is assigned to another variable?\n const declarator = refs[0].findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n\n if (!declarator) {\n return;\n }\n } else {\n return;\n }\n }\n\n const uid = rootScope.generateUid(name);\n // Define variable in the beginning\n const [declaration] = root.unshiftContainer('body', [\n t.variableDeclaration('var', [t.variableDeclarator(t.identifier(uid))]),\n ]);\n\n rootScope.registerDeclaration(declaration);\n\n // Replace every reference with defined variable\n refs.forEach((ref) => {\n const [replaced] = ref.replaceWith(t.identifier(uid));\n if (replaced.isBindingIdentifier()) {\n rootScope.registerConstantViolation(replaced);\n if (replaced.parentPath?.parentPath?.isVariableDeclarator()) {\n // This is `const foo = exports.foo = \"value\"` case\n reference(replaced, replaced, true);\n }\n } else {\n reference(replaced);\n }\n });\n\n // Assign defined variable to the export\n const [pushed] = root.pushContainer('body', [\n t.expressionStatement(\n t.assignmentExpression(\n '=',\n t.memberExpression(t.identifier('exports'), t.identifier(name)),\n t.identifier(uid)\n )\n ),\n ]);\n\n const local = pushed.get('expression.right') as NodePath<Identifier>;\n reference(local);\n\n rearranged[name] = local;\n });\n\n return rearranged;\n}\n\nexport default function shakerPlugin(\n babel: Core,\n {\n keepSideEffects = false,\n ifUnknownExport = 'skip-shaking',\n onlyExports,\n }: IShakerOptions\n): PluginObj<IState & { filename: string }> {\n const shakerLogger = logger.extend('shaker');\n\n return {\n name: '@wyw-in-js/transform/shaker',\n pre(file: BabelFile) {\n this.filename = file.opts.filename!;\n const log = shakerLogger.extend(getFileIdx(this.filename));\n\n log('start', `${this.filename}, onlyExports: ${onlyExports.join(',')}`);\n const onlyExportsSet = new Set(onlyExports);\n\n const collected = collectExportsAndImports(file.path);\n const sideEffectImports = collected.imports.filter(sideEffectImport);\n log(\n 'import-and-exports',\n [\n `imports: ${collected.imports.length} (side-effects: ${sideEffectImports.length})`,\n `exports: ${Object.values(collected.exports).length}`,\n `reexports: ${collected.reexports.length}`,\n ].join(', ')\n );\n\n // We cannot just throw out exports if they are referred in the code\n // Let's dome some replacements\n const exports = rearrangeExports(\n babel,\n file.path,\n collected.exportRefs,\n collected.exports\n );\n\n Object.values(exports).forEach((local) => {\n if (local.isAssignmentExpression()) {\n const left = local.get('left');\n if (left.isIdentifier()) {\n // For some reason babel does not mark id in AssignmentExpression as a reference\n // So we need to do it manually\n reference(left, left, true);\n }\n }\n });\n\n const hasWywPreval = exports.__wywPreval !== undefined;\n const hasDefault = exports.default !== undefined;\n\n // If __wywPreval is not exported, we can remove it from onlyExports\n if (onlyExportsSet.has('__wywPreval') && !hasWywPreval) {\n onlyExportsSet.delete('__wywPreval');\n }\n\n if (onlyExportsSet.size === 0) {\n // Fast-lane: if there are no exports to keep, we can just shake out the whole file\n this.imports = [];\n this.exports = {};\n this.reexports = [];\n this.deadExports = Object.keys(exports);\n\n file.path.get('body').forEach((p) => {\n p.remove();\n });\n\n return;\n }\n\n const importedAsSideEffect = onlyExportsSet.has('side-effect');\n onlyExportsSet.delete('side-effect');\n\n // Hackaround for packages which include a 'default' export without specifying __esModule; such packages cannot be\n // shaken as they will break interopRequireDefault babel helper\n // See example in shaker-plugin.test.ts\n // Real-world example was found in preact/compat npm package\n if (\n onlyExportsSet.has('default') &&\n hasDefault &&\n !collected.isEsModule\n ) {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n return;\n }\n\n if (!onlyExportsSet.has('*')) {\n // __esModule should be kept alive\n onlyExportsSet.add('__esModule');\n\n const aliveExports = new Set<NodePath>();\n const importNames = collected.imports.map(({ imported }) => imported);\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (onlyExportsSet.has(exported)) {\n aliveExports.add(local);\n } else if (\n importNames.includes((local.node as NodeWithName).name || '')\n ) {\n aliveExports.add(local);\n } else if ([...aliveExports].some((alive) => alive === local)) {\n // It's possible to export multiple values from a single variable initializer, e.g\n // export const { foo, bar } = baz();\n // We need to treat all of them as used if any of them are used, since otherwise\n // we'll attempt to delete the baz() call\n aliveExports.add(local);\n }\n });\n\n collected.reexports.forEach((exp) => {\n if (onlyExportsSet.has(exp.exported)) {\n aliveExports.add(exp.local);\n }\n });\n\n const exportToPath = new Map<string, NodePath>();\n Object.entries(exports).forEach(([exported, local]) => {\n exportToPath.set(exported, local);\n });\n\n collected.reexports.forEach((exp) => {\n exportToPath.set(exp.exported, exp.local);\n });\n\n const notFoundExports = [...onlyExportsSet].filter(\n (exp) =>\n exp !== '__esModule' && !aliveExports.has(exportToPath.get(exp)!)\n );\n exportToPath.clear();\n\n const isAllExportsFound = notFoundExports.length === 0;\n if (!isAllExportsFound && ifUnknownExport !== 'ignore') {\n if (ifUnknownExport === 'error') {\n throw new Error(\n `Unknown export(s) requested: ${onlyExports.join(',')}`\n );\n }\n\n if (ifUnknownExport === 'reexport-all') {\n // If there are unknown exports, we have keep alive all re-exports.\n if (exports['*'] !== undefined) {\n aliveExports.add(exports['*']);\n }\n\n collected.reexports.forEach((exp) => {\n if (exp.exported === '*') {\n aliveExports.add(exp.local);\n }\n });\n }\n\n if (ifUnknownExport === 'skip-shaking') {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n\n return;\n }\n }\n\n const forDeleting = [\n ...Object.values(exports),\n ...collected.reexports.map((i) => i.local),\n ].filter((exp) => !aliveExports.has(exp));\n\n if (!keepSideEffects && !importedAsSideEffect) {\n // Remove all imports that don't import something explicitly and should not be kept\n sideEffectImports.forEach((i) => {\n if (!shouldKeepSideEffect(i.source)) {\n forDeleting.push(i.local);\n }\n });\n }\n\n const deleted = new Set<NodePath>();\n\n let dereferenced: NodePath<Identifier>[] = [];\n let changed = true;\n while (changed && deleted.size < forDeleting.length) {\n changed = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const path of forDeleting) {\n if (deleted.has(path)) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const binding = getBindingForExport(path);\n const action = findActionForNode(path);\n const parent = action?.[1];\n const outerReferences = (binding?.referencePaths || []).filter(\n (ref) => ref !== parent && !parent?.isAncestor(ref)\n );\n if (outerReferences.length > 0 && path.isIdentifier()) {\n // Temporary deref it in order to simplify further checks.\n dereference(path);\n dereferenced.push(path);\n }\n\n if (\n !deleted.has(path) &&\n (!binding || outerReferences.length === 0)\n ) {\n if (action) {\n applyAction(action);\n } else {\n removeWithRelated([path]);\n }\n\n deleted.add(path);\n changed = true;\n }\n }\n\n dereferenced.forEach((path) => {\n // If path is still alive, we need to reference it back\n if (!isRemoved(path)) {\n reference(path);\n }\n });\n\n dereferenced = [];\n }\n }\n\n this.imports = withoutRemoved(collected.imports);\n this.exports = {};\n this.deadExports = [];\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (isRemoved(local)) {\n this.deadExports.push(exported);\n } else {\n this.exports[exported] = local;\n }\n });\n\n this.reexports = withoutRemoved(collected.reexports);\n },\n visitor: {},\n post(file: BabelFile) {\n const log = shakerLogger.extend(getFileIdx(file.opts.filename!));\n\n const processedImports = new Set<string>();\n const imports = new Map<string, string[]>();\n const addImport = ({\n imported,\n source,\n }: {\n imported: string;\n source: string;\n }) => {\n if (processedImports.has(`${source}:${imported}`)) {\n return;\n }\n\n if (!imports.has(source)) {\n imports.set(source, []);\n }\n\n if (imported) {\n imports.get(source)!.push(imported);\n }\n\n processedImports.add(`${source}:${imported}`);\n };\n\n this.imports.forEach(addImport);\n this.reexports.forEach(addImport);\n\n log('end', `remaining imports: %O`, imports);\n\n // eslint-disable-next-line no-param-reassign\n (file.metadata as IMetadata).wywEvaluator = {\n imports,\n };\n\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":"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"}
package/esm/shaker.js CHANGED
@@ -36,7 +36,7 @@ const shaker = (evalConfig, ast, code, {
36
36
  const transformOptions = {
37
37
  ...evalConfig,
38
38
  caller: {
39
- name: 'linaria'
39
+ name: 'wyw-in-js'
40
40
  },
41
41
  plugins
42
42
  };
@@ -44,7 +44,7 @@ const shaker = (evalConfig, ast, code, {
44
44
  if (!transformed || !hasShakerMetadata(transformed.metadata)) {
45
45
  throw new Error(`${evalConfig.filename} has no shaker metadata`);
46
46
  }
47
- return [transformed.ast, transformed.code ?? '', transformed.metadata.linariaEvaluator.imports];
47
+ return [transformed.ast, transformed.code ?? '', transformed.metadata.wywEvaluator.imports];
48
48
  };
49
49
  export default shaker;
50
50
  //# sourceMappingURL=shaker.js.map
package/esm/shaker.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shaker.js","names":["hasShakerMetadata","getPluginKey","hasKeyInList","plugin","list","pluginKey","some","i","includes","safeResolve","id","paths","require","resolve","filter","shaker","evalConfig","ast","code","highPriorityPlugins","config","babel","preShakePlugins","plugins","hasCommonjsPlugin","push","filename","endsWith","hasTypescriptPlugin","preset","transformOptions","caller","name","transformed","transformFromAstSync","metadata","Error","linariaEvaluator","imports"],"sources":["../src/shaker.ts"],"sourcesContent":["import type { TransformOptions, PluginItem } from '@babel/core';\n\nimport type { Evaluator } from '@wyw-in-js/shared';\n\nimport { hasShakerMetadata } from './utils/ShakerMetadata';\nimport { getPluginKey } from './utils/getPluginKey';\n\nconst hasKeyInList = (plugin: PluginItem, list: string[]): boolean => {\n const pluginKey = getPluginKey(plugin);\n return pluginKey ? list.some((i) => pluginKey.includes(i)) : false;\n};\n\nconst safeResolve = (id: string, paths: (string | null)[]): string | null => {\n try {\n return require.resolve(id, {\n paths: paths.filter((i) => i !== null) as string[],\n });\n } catch {\n return null;\n }\n};\n\nconst shaker: Evaluator = (\n evalConfig,\n ast,\n code,\n { highPriorityPlugins, ...config },\n babel\n) => {\n const preShakePlugins =\n evalConfig.plugins?.filter((i) => hasKeyInList(i, highPriorityPlugins)) ??\n [];\n\n const plugins = [\n ...preShakePlugins,\n [require.resolve('./plugins/shaker'), config],\n ...(evalConfig.plugins ?? []).filter(\n (i) => !hasKeyInList(i, highPriorityPlugins)\n ),\n ];\n\n const hasCommonjsPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-modules-commonjs'\n );\n\n if (!hasCommonjsPlugin) {\n plugins.push(require.resolve('@babel/plugin-transform-modules-commonjs'));\n }\n\n if (\n evalConfig.filename?.endsWith('.ts') ||\n evalConfig.filename?.endsWith('.tsx')\n ) {\n const hasTypescriptPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-typescript'\n );\n\n if (!hasTypescriptPlugin) {\n const preset = safeResolve('@babel/preset-typescript', [\n evalConfig.filename,\n ]);\n const plugin = safeResolve('@babel/plugin-transform-typescript', [\n evalConfig.filename,\n preset,\n ]);\n\n if (plugin) {\n plugins.push(plugin);\n }\n }\n }\n\n const transformOptions: TransformOptions = {\n ...evalConfig,\n caller: {\n name: 'linaria',\n },\n plugins,\n };\n\n const transformed = babel.transformFromAstSync(ast, code, transformOptions);\n\n if (!transformed || !hasShakerMetadata(transformed.metadata)) {\n throw new Error(`${evalConfig.filename} has no shaker metadata`);\n }\n\n return [\n transformed.ast!,\n transformed.code ?? '',\n transformed.metadata.linariaEvaluator.imports,\n ];\n};\n\nexport default shaker;\n"],"mappings":"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"}
1
+ {"version":3,"file":"shaker.js","names":["hasShakerMetadata","getPluginKey","hasKeyInList","plugin","list","pluginKey","some","i","includes","safeResolve","id","paths","require","resolve","filter","shaker","evalConfig","ast","code","highPriorityPlugins","config","babel","preShakePlugins","plugins","hasCommonjsPlugin","push","filename","endsWith","hasTypescriptPlugin","preset","transformOptions","caller","name","transformed","transformFromAstSync","metadata","Error","wywEvaluator","imports"],"sources":["../src/shaker.ts"],"sourcesContent":["import type { TransformOptions, PluginItem } from '@babel/core';\n\nimport type { Evaluator } from '@wyw-in-js/shared';\n\nimport { hasShakerMetadata } from './utils/ShakerMetadata';\nimport { getPluginKey } from './utils/getPluginKey';\n\nconst hasKeyInList = (plugin: PluginItem, list: string[]): boolean => {\n const pluginKey = getPluginKey(plugin);\n return pluginKey ? list.some((i) => pluginKey.includes(i)) : false;\n};\n\nconst safeResolve = (id: string, paths: (string | null)[]): string | null => {\n try {\n return require.resolve(id, {\n paths: paths.filter((i) => i !== null) as string[],\n });\n } catch {\n return null;\n }\n};\n\nconst shaker: Evaluator = (\n evalConfig,\n ast,\n code,\n { highPriorityPlugins, ...config },\n babel\n) => {\n const preShakePlugins =\n evalConfig.plugins?.filter((i) => hasKeyInList(i, highPriorityPlugins)) ??\n [];\n\n const plugins = [\n ...preShakePlugins,\n [require.resolve('./plugins/shaker'), config],\n ...(evalConfig.plugins ?? []).filter(\n (i) => !hasKeyInList(i, highPriorityPlugins)\n ),\n ];\n\n const hasCommonjsPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-modules-commonjs'\n );\n\n if (!hasCommonjsPlugin) {\n plugins.push(require.resolve('@babel/plugin-transform-modules-commonjs'));\n }\n\n if (\n evalConfig.filename?.endsWith('.ts') ||\n evalConfig.filename?.endsWith('.tsx')\n ) {\n const hasTypescriptPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-typescript'\n );\n\n if (!hasTypescriptPlugin) {\n const preset = safeResolve('@babel/preset-typescript', [\n evalConfig.filename,\n ]);\n const plugin = safeResolve('@babel/plugin-transform-typescript', [\n evalConfig.filename,\n preset,\n ]);\n\n if (plugin) {\n plugins.push(plugin);\n }\n }\n }\n\n const transformOptions: TransformOptions = {\n ...evalConfig,\n caller: {\n name: 'wyw-in-js',\n },\n plugins,\n };\n\n const transformed = babel.transformFromAstSync(ast, code, transformOptions);\n\n if (!transformed || !hasShakerMetadata(transformed.metadata)) {\n throw new Error(`${evalConfig.filename} has no shaker metadata`);\n }\n\n return [\n transformed.ast!,\n transformed.code ?? '',\n transformed.metadata.wywEvaluator.imports,\n ];\n};\n\nexport default shaker;\n"],"mappings":"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"}
@@ -67,7 +67,7 @@ function buildConfigs(services, name, pluginOptions, babelOptions) {
67
67
  if (parseHasModuleResolver && !rawHasModuleResolver) {
68
68
  if (!moduleResolverWarned) {
69
69
  // eslint-disable-next-line no-console
70
- console.warn(`[linaria] ${name} has a module-resolver plugin in its babelrc, but it is not present ` + `in the babelOptions for the linaria plugin. This works for now but will be an error in the future. ` + `Please add the module-resolver plugin to the babelOptions for the linaria plugin.`);
70
+ console.warn(`[wyw-in-js] ${name} has a module-resolver plugin in its babelrc, but it is not present ` + `in the babelOptions for the wyw-in-js plugin. This works for now but will be an error in the future. ` + `Please add the module-resolver plugin to the babelOptions for the wyw-in-js plugin.`);
71
71
  moduleResolverWarned = true;
72
72
  }
73
73
  rawConfig.plugins = [...(parseConfig.plugins?.filter(plugin => isModuleResolver(plugin)) ?? []), ...(rawConfig.plugins ?? [])];
@@ -99,7 +99,6 @@ export function loadAndParse(services, name, loadedCode, log) {
99
99
  }
100
100
  return ''; // it is a built-in module
101
101
  },
102
-
103
102
  evaluator: 'ignored',
104
103
  reason: 'extension'
105
104
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Entrypoint.helpers.js","names":["readFileSync","dirname","extname","isAbsolute","logger","isFeatureEnabled","buildOptions","loadBabelOptions","getFileIdx","getPluginKey","getMatchedRule","rules","filename","code","i","length","rule","test","RegExp","action","parseFile","babel","originalCode","parseConfig","log","extend","parseResult","parseSync","Error","isModuleResolver","plugin","key","includes","moduleResolverWarned","buildConfigs","services","name","pluginOptions","babelOptions","options","commonOptions","ast","inputSourceMap","root","sourceFileName","sourceMaps","rawConfig","useBabelConfigs","features","configFile","babelrc","parseHasModuleResolver","plugins","some","rawHasModuleResolver","console","warn","filter","evalConfig","loadAndParse","loadedCode","eventEmitter","extension","extensions","evaluator","reason","getOrParse","perf","require","resolve","paths","default","getStack","entrypoint","stack","parents","push","mergeOnly","a","b","result","Set","forEach","item","add","sort","isSuperSet","aSet","every","has"],"sources":["../../src/transform/Entrypoint.helpers.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, extname, isAbsolute } from 'path';\n\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type {\n Debugger,\n EvalRule,\n Evaluator,\n StrictOptions,\n} from '@wyw-in-js/shared';\nimport { logger, isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { buildOptions } from '../options/buildOptions';\nimport { loadBabelOptions } from '../options/loadBabelOptions';\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { getPluginKey } from '../utils/getPluginKey';\n\nimport type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';\nimport type { Services } from './types';\n\nexport function getMatchedRule(\n rules: EvalRule[],\n filename: string,\n code: string\n): EvalRule {\n for (let i = rules.length - 1; i >= 0; i--) {\n const rule = rules[i];\n if (!rule.test) {\n return rule;\n }\n\n if (typeof rule.test === 'function' && rule.test(filename, code)) {\n return rule;\n }\n\n if (rule.test instanceof RegExp && rule.test.test(filename)) {\n return rule;\n }\n }\n\n return { action: 'ignore' };\n}\n\nexport function parseFile(\n babel: Core,\n filename: string,\n originalCode: string,\n parseConfig: TransformOptions\n): File {\n const log = logger.extend('transform:parse').extend(getFileIdx(filename));\n\n const parseResult = babel.parseSync(originalCode, parseConfig);\n if (!parseResult) {\n throw new Error(`Failed to parse ${filename}`);\n }\n\n log('stage-1', `${filename} has been parsed`);\n\n return parseResult;\n}\n\nconst isModuleResolver = (plugin: PluginItem) => {\n const key = getPluginKey(plugin);\n if (!key) return false;\n\n if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {\n return true;\n }\n\n return /([\\\\/])babel-plugin-module-resolver\\1/.test(key);\n};\n\nlet moduleResolverWarned = false;\n\nfunction buildConfigs(\n services: Services,\n name: string,\n pluginOptions: StrictOptions,\n babelOptions: TransformOptions | undefined\n): {\n evalConfig: TransformOptions;\n parseConfig: TransformOptions;\n} {\n const { babel, options } = services;\n\n const commonOptions = {\n ast: true,\n filename: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n sourceFileName: name,\n sourceMaps: true,\n };\n\n const rawConfig = buildOptions(\n pluginOptions?.babelOptions,\n babelOptions,\n commonOptions\n );\n\n const useBabelConfigs = isFeatureEnabled(\n pluginOptions.features,\n 'useBabelConfigs',\n name\n );\n\n if (!useBabelConfigs) {\n rawConfig.configFile = false;\n }\n\n const parseConfig = loadBabelOptions(babel, name, {\n babelrc: useBabelConfigs,\n ...rawConfig,\n });\n\n const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);\n const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);\n\n if (parseHasModuleResolver && !rawHasModuleResolver) {\n if (!moduleResolverWarned) {\n // eslint-disable-next-line no-console\n console.warn(\n `[linaria] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +\n `in the babelOptions for the linaria plugin. This works for now but will be an error in the future. ` +\n `Please add the module-resolver plugin to the babelOptions for the linaria plugin.`\n );\n\n moduleResolverWarned = true;\n }\n\n rawConfig.plugins = [\n ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??\n []),\n ...(rawConfig.plugins ?? []),\n ];\n }\n\n const evalConfig = loadBabelOptions(babel, name, {\n babelrc: false,\n ...rawConfig,\n });\n\n return {\n evalConfig,\n parseConfig,\n };\n}\n\nexport function loadAndParse(\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n): IEntrypointCode | IIgnoredEntrypoint {\n const {\n babel,\n eventEmitter,\n options: { pluginOptions },\n } = services;\n\n const extension = extname(name);\n\n if (!pluginOptions.extensions.includes(extension)) {\n log(\n '[createEntrypoint] %s is ignored. If you want it to be processed, you should add \\'%s\\' to the \"extensions\" option.',\n name,\n extension\n );\n\n return {\n get code() {\n if (isAbsolute(name)) {\n return loadedCode ?? readFileSync(name, 'utf-8');\n }\n\n return ''; // it is a built-in module\n },\n evaluator: 'ignored',\n reason: 'extension',\n };\n }\n\n const code = loadedCode ?? readFileSync(name, 'utf-8');\n\n const { action, babelOptions } = getMatchedRule(\n pluginOptions.rules,\n name,\n code\n );\n\n let ast: File | undefined;\n\n const { evalConfig, parseConfig } = buildConfigs(\n services,\n name,\n pluginOptions,\n babelOptions\n );\n\n const getOrParse = () => {\n if (ast) return ast;\n ast = eventEmitter.perf('parseFile', () =>\n parseFile(babel, name, code, parseConfig)\n );\n\n return ast;\n };\n\n if (action === 'ignore') {\n log('[createEntrypoint] %s is ignored by rule', name);\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator: 'ignored',\n reason: 'rule',\n };\n }\n\n const evaluator: Evaluator =\n typeof action === 'function'\n ? action\n : require(\n require.resolve(action, {\n paths: [dirname(name)],\n })\n ).default;\n\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator,\n evalConfig,\n };\n}\n\nexport function getStack(entrypoint: ParentEntrypoint) {\n if (!entrypoint) return [];\n\n const stack = [entrypoint.name];\n\n let { parents } = entrypoint;\n while (parents.length) {\n stack.push(parents[0].name);\n parents = parents[0].parents;\n }\n\n return stack;\n}\n\nexport function mergeOnly(a: string[], b: string[]) {\n const result = new Set(a);\n b.forEach((item) => result.add(item));\n return [...result].filter((i) => i).sort();\n}\n\nexport const isSuperSet = <T>(a: (T | '*')[], b: (T | '*')[]) => {\n if (a.includes('*')) return true;\n if (b.length === 0) return true;\n const aSet = new Set(a);\n return b.every((item) => aSet.has(item));\n};\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,IAAI;AACjC,SAASC,OAAO,EAAEC,OAAO,EAAEC,UAAU,QAAQ,MAAM;AAWnD,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,mBAAmB;AAG5D,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,gBAAgB,QAAQ,6BAA6B;AAE9D,SAASC,UAAU,QAAQ,qBAAqB;AAChD,SAASC,YAAY,QAAQ,uBAAuB;AAKpD,OAAO,SAASC,cAAcA,CAC5BC,KAAiB,EACjBC,QAAgB,EAChBC,IAAY,EACF;EACV,KAAK,IAAIC,CAAC,GAAGH,KAAK,CAACI,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC1C,MAAME,IAAI,GAAGL,KAAK,CAACG,CAAC,CAAC;IACrB,IAAI,CAACE,IAAI,CAACC,IAAI,EAAE;MACd,OAAOD,IAAI;IACb;IAEA,IAAI,OAAOA,IAAI,CAACC,IAAI,KAAK,UAAU,IAAID,IAAI,CAACC,IAAI,CAACL,QAAQ,EAAEC,IAAI,CAAC,EAAE;MAChE,OAAOG,IAAI;IACb;IAEA,IAAIA,IAAI,CAACC,IAAI,YAAYC,MAAM,IAAIF,IAAI,CAACC,IAAI,CAACA,IAAI,CAACL,QAAQ,CAAC,EAAE;MAC3D,OAAOI,IAAI;IACb;EACF;EAEA,OAAO;IAAEG,MAAM,EAAE;EAAS,CAAC;AAC7B;AAEA,OAAO,SAASC,SAASA,CACvBC,KAAW,EACXT,QAAgB,EAChBU,YAAoB,EACpBC,WAA6B,EACvB;EACN,MAAMC,GAAG,GAAGpB,MAAM,CAACqB,MAAM,CAAC,iBAAiB,CAAC,CAACA,MAAM,CAACjB,UAAU,CAACI,QAAQ,CAAC,CAAC;EAEzE,MAAMc,WAAW,GAAGL,KAAK,CAACM,SAAS,CAACL,YAAY,EAAEC,WAAW,CAAC;EAC9D,IAAI,CAACG,WAAW,EAAE;IAChB,MAAM,IAAIE,KAAK,CAAE,mBAAkBhB,QAAS,EAAC,CAAC;EAChD;EAEAY,GAAG,CAAC,SAAS,EAAG,GAAEZ,QAAS,kBAAiB,CAAC;EAE7C,OAAOc,WAAW;AACpB;AAEA,MAAMG,gBAAgB,GAAIC,MAAkB,IAAK;EAC/C,MAAMC,GAAG,GAAGtB,YAAY,CAACqB,MAAM,CAAC;EAChC,IAAI,CAACC,GAAG,EAAE,OAAO,KAAK;EAEtB,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAACC,QAAQ,CAACD,GAAG,CAAC,EAAE;IACrE,OAAO,IAAI;EACb;EAEA,OAAO,uCAAuC,CAACd,IAAI,CAACc,GAAG,CAAC;AAC1D,CAAC;AAED,IAAIE,oBAAoB,GAAG,KAAK;AAEhC,SAASC,YAAYA,CACnBC,QAAkB,EAClBC,IAAY,EACZC,aAA4B,EAC5BC,YAA0C,EAI1C;EACA,MAAM;IAAEjB,KAAK;IAAEkB;EAAQ,CAAC,GAAGJ,QAAQ;EAEnC,MAAMK,aAAa,GAAG;IACpBC,GAAG,EAAE,IAAI;IACT7B,QAAQ,EAAEwB,IAAI;IACdM,cAAc,EAAEH,OAAO,CAACG,cAAc;IACtCC,IAAI,EAAEJ,OAAO,CAACI,IAAI;IAClBC,cAAc,EAAER,IAAI;IACpBS,UAAU,EAAE;EACd,CAAC;EAED,MAAMC,SAAS,GAAGxC,YAAY,CAC5B+B,aAAa,EAAEC,YAAY,EAC3BA,YAAY,EACZE,aACF,CAAC;EAED,MAAMO,eAAe,GAAG1C,gBAAgB,CACtCgC,aAAa,CAACW,QAAQ,EACtB,iBAAiB,EACjBZ,IACF,CAAC;EAED,IAAI,CAACW,eAAe,EAAE;IACpBD,SAAS,CAACG,UAAU,GAAG,KAAK;EAC9B;EAEA,MAAM1B,WAAW,GAAGhB,gBAAgB,CAACc,KAAK,EAAEe,IAAI,EAAE;IAChDc,OAAO,EAAEH,eAAe;IACxB,GAAGD;EACL,CAAC,CAAC;EAEF,MAAMK,sBAAsB,GAAG5B,WAAW,CAAC6B,OAAO,EAAEC,IAAI,CAACxB,gBAAgB,CAAC;EAC1E,MAAMyB,oBAAoB,GAAGR,SAAS,CAACM,OAAO,EAAEC,IAAI,CAACxB,gBAAgB,CAAC;EAEtE,IAAIsB,sBAAsB,IAAI,CAACG,oBAAoB,EAAE;IACnD,IAAI,CAACrB,oBAAoB,EAAE;MACzB;MACAsB,OAAO,CAACC,IAAI,CACT,aAAYpB,IAAK,sEAAqE,GACpF,qGAAoG,GACpG,mFACL,CAAC;MAEDH,oBAAoB,GAAG,IAAI;IAC7B;IAEAa,SAAS,CAACM,OAAO,GAAG,CAClB,IAAI7B,WAAW,CAAC6B,OAAO,EAAEK,MAAM,CAAE3B,MAAM,IAAKD,gBAAgB,CAACC,MAAM,CAAC,CAAC,IACnE,EAAE,CAAC,EACL,IAAIgB,SAAS,CAACM,OAAO,IAAI,EAAE,CAAC,CAC7B;EACH;EAEA,MAAMM,UAAU,GAAGnD,gBAAgB,CAACc,KAAK,EAAEe,IAAI,EAAE;IAC/Cc,OAAO,EAAE,KAAK;IACd,GAAGJ;EACL,CAAC,CAAC;EAEF,OAAO;IACLY,UAAU;IACVnC;EACF,CAAC;AACH;AAEA,OAAO,SAASoC,YAAYA,CAC1BxB,QAAkB,EAClBC,IAAY,EACZwB,UAA8B,EAC9BpC,GAAa,EACyB;EACtC,MAAM;IACJH,KAAK;IACLwC,YAAY;IACZtB,OAAO,EAAE;MAAEF;IAAc;EAC3B,CAAC,GAAGF,QAAQ;EAEZ,MAAM2B,SAAS,GAAG5D,OAAO,CAACkC,IAAI,CAAC;EAE/B,IAAI,CAACC,aAAa,CAAC0B,UAAU,CAAC/B,QAAQ,CAAC8B,SAAS,CAAC,EAAE;IACjDtC,GAAG,CACD,qHAAqH,EACrHY,IAAI,EACJ0B,SACF,CAAC;IAED,OAAO;MACL,IAAIjD,IAAIA,CAAA,EAAG;QACT,IAAIV,UAAU,CAACiC,IAAI,CAAC,EAAE;UACpB,OAAOwB,UAAU,IAAI5D,YAAY,CAACoC,IAAI,EAAE,OAAO,CAAC;QAClD;QAEA,OAAO,EAAE,CAAC,CAAC;MACb,CAAC;;MACD4B,SAAS,EAAE,SAAS;MACpBC,MAAM,EAAE;IACV,CAAC;EACH;EAEA,MAAMpD,IAAI,GAAG+C,UAAU,IAAI5D,YAAY,CAACoC,IAAI,EAAE,OAAO,CAAC;EAEtD,MAAM;IAAEjB,MAAM;IAAEmB;EAAa,CAAC,GAAG5B,cAAc,CAC7C2B,aAAa,CAAC1B,KAAK,EACnByB,IAAI,EACJvB,IACF,CAAC;EAED,IAAI4B,GAAqB;EAEzB,MAAM;IAAEiB,UAAU;IAAEnC;EAAY,CAAC,GAAGW,YAAY,CAC9CC,QAAQ,EACRC,IAAI,EACJC,aAAa,EACbC,YACF,CAAC;EAED,MAAM4B,UAAU,GAAGA,CAAA,KAAM;IACvB,IAAIzB,GAAG,EAAE,OAAOA,GAAG;IACnBA,GAAG,GAAGoB,YAAY,CAACM,IAAI,CAAC,WAAW,EAAE,MACnC/C,SAAS,CAACC,KAAK,EAAEe,IAAI,EAAEvB,IAAI,EAAEU,WAAW,CAC1C,CAAC;IAED,OAAOkB,GAAG;EACZ,CAAC;EAED,IAAItB,MAAM,KAAK,QAAQ,EAAE;IACvBK,GAAG,CAAC,0CAA0C,EAAEY,IAAI,CAAC;IACrD,OAAO;MACL,IAAIK,GAAGA,CAAA,EAAG;QACR,OAAOyB,UAAU,CAAC,CAAC;MACrB,CAAC;MACDrD,IAAI;MACJmD,SAAS,EAAE,SAAS;MACpBC,MAAM,EAAE;IACV,CAAC;EACH;EAEA,MAAMD,SAAoB,GACxB,OAAO7C,MAAM,KAAK,UAAU,GACxBA,MAAM,GACNiD,OAAO,CACLA,OAAO,CAACC,OAAO,CAAClD,MAAM,EAAE;IACtBmD,KAAK,EAAE,CAACrE,OAAO,CAACmC,IAAI,CAAC;EACvB,CAAC,CACH,CAAC,CAACmC,OAAO;EAEf,OAAO;IACL,IAAI9B,GAAGA,CAAA,EAAG;MACR,OAAOyB,UAAU,CAAC,CAAC;IACrB,CAAC;IACDrD,IAAI;IACJmD,SAAS;IACTN;EACF,CAAC;AACH;AAEA,OAAO,SAASc,QAAQA,CAACC,UAA4B,EAAE;EACrD,IAAI,CAACA,UAAU,EAAE,OAAO,EAAE;EAE1B,MAAMC,KAAK,GAAG,CAACD,UAAU,CAACrC,IAAI,CAAC;EAE/B,IAAI;IAAEuC;EAAQ,CAAC,GAAGF,UAAU;EAC5B,OAAOE,OAAO,CAAC5D,MAAM,EAAE;IACrB2D,KAAK,CAACE,IAAI,CAACD,OAAO,CAAC,CAAC,CAAC,CAACvC,IAAI,CAAC;IAC3BuC,OAAO,GAAGA,OAAO,CAAC,CAAC,CAAC,CAACA,OAAO;EAC9B;EAEA,OAAOD,KAAK;AACd;AAEA,OAAO,SAASG,SAASA,CAACC,CAAW,EAAEC,CAAW,EAAE;EAClD,MAAMC,MAAM,GAAG,IAAIC,GAAG,CAACH,CAAC,CAAC;EACzBC,CAAC,CAACG,OAAO,CAAEC,IAAI,IAAKH,MAAM,CAACI,GAAG,CAACD,IAAI,CAAC,CAAC;EACrC,OAAO,CAAC,GAAGH,MAAM,CAAC,CAACvB,MAAM,CAAE3C,CAAC,IAAKA,CAAC,CAAC,CAACuE,IAAI,CAAC,CAAC;AAC5C;AAEA,OAAO,MAAMC,UAAU,GAAGA,CAAIR,CAAc,EAAEC,CAAc,KAAK;EAC/D,IAAID,CAAC,CAAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;EAChC,IAAI+C,CAAC,CAAChE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAC/B,MAAMwE,IAAI,GAAG,IAAIN,GAAG,CAACH,CAAC,CAAC;EACvB,OAAOC,CAAC,CAACS,KAAK,CAAEL,IAAI,IAAKI,IAAI,CAACE,GAAG,CAACN,IAAI,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"Entrypoint.helpers.js","names":["readFileSync","dirname","extname","isAbsolute","logger","isFeatureEnabled","buildOptions","loadBabelOptions","getFileIdx","getPluginKey","getMatchedRule","rules","filename","code","i","length","rule","test","RegExp","action","parseFile","babel","originalCode","parseConfig","log","extend","parseResult","parseSync","Error","isModuleResolver","plugin","key","includes","moduleResolverWarned","buildConfigs","services","name","pluginOptions","babelOptions","options","commonOptions","ast","inputSourceMap","root","sourceFileName","sourceMaps","rawConfig","useBabelConfigs","features","configFile","babelrc","parseHasModuleResolver","plugins","some","rawHasModuleResolver","console","warn","filter","evalConfig","loadAndParse","loadedCode","eventEmitter","extension","extensions","evaluator","reason","getOrParse","perf","require","resolve","paths","default","getStack","entrypoint","stack","parents","push","mergeOnly","a","b","result","Set","forEach","item","add","sort","isSuperSet","aSet","every","has"],"sources":["../../src/transform/Entrypoint.helpers.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, extname, isAbsolute } from 'path';\n\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type {\n Debugger,\n EvalRule,\n Evaluator,\n StrictOptions,\n} from '@wyw-in-js/shared';\nimport { logger, isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { buildOptions } from '../options/buildOptions';\nimport { loadBabelOptions } from '../options/loadBabelOptions';\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { getPluginKey } from '../utils/getPluginKey';\n\nimport type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';\nimport type { Services } from './types';\n\nexport function getMatchedRule(\n rules: EvalRule[],\n filename: string,\n code: string\n): EvalRule {\n for (let i = rules.length - 1; i >= 0; i--) {\n const rule = rules[i];\n if (!rule.test) {\n return rule;\n }\n\n if (typeof rule.test === 'function' && rule.test(filename, code)) {\n return rule;\n }\n\n if (rule.test instanceof RegExp && rule.test.test(filename)) {\n return rule;\n }\n }\n\n return { action: 'ignore' };\n}\n\nexport function parseFile(\n babel: Core,\n filename: string,\n originalCode: string,\n parseConfig: TransformOptions\n): File {\n const log = logger.extend('transform:parse').extend(getFileIdx(filename));\n\n const parseResult = babel.parseSync(originalCode, parseConfig);\n if (!parseResult) {\n throw new Error(`Failed to parse ${filename}`);\n }\n\n log('stage-1', `${filename} has been parsed`);\n\n return parseResult;\n}\n\nconst isModuleResolver = (plugin: PluginItem) => {\n const key = getPluginKey(plugin);\n if (!key) return false;\n\n if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {\n return true;\n }\n\n return /([\\\\/])babel-plugin-module-resolver\\1/.test(key);\n};\n\nlet moduleResolverWarned = false;\n\nfunction buildConfigs(\n services: Services,\n name: string,\n pluginOptions: StrictOptions,\n babelOptions: TransformOptions | undefined\n): {\n evalConfig: TransformOptions;\n parseConfig: TransformOptions;\n} {\n const { babel, options } = services;\n\n const commonOptions = {\n ast: true,\n filename: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n sourceFileName: name,\n sourceMaps: true,\n };\n\n const rawConfig = buildOptions(\n pluginOptions?.babelOptions,\n babelOptions,\n commonOptions\n );\n\n const useBabelConfigs = isFeatureEnabled(\n pluginOptions.features,\n 'useBabelConfigs',\n name\n );\n\n if (!useBabelConfigs) {\n rawConfig.configFile = false;\n }\n\n const parseConfig = loadBabelOptions(babel, name, {\n babelrc: useBabelConfigs,\n ...rawConfig,\n });\n\n const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);\n const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);\n\n if (parseHasModuleResolver && !rawHasModuleResolver) {\n if (!moduleResolverWarned) {\n // eslint-disable-next-line no-console\n console.warn(\n `[wyw-in-js] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +\n `in the babelOptions for the wyw-in-js plugin. This works for now but will be an error in the future. ` +\n `Please add the module-resolver plugin to the babelOptions for the wyw-in-js plugin.`\n );\n\n moduleResolverWarned = true;\n }\n\n rawConfig.plugins = [\n ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??\n []),\n ...(rawConfig.plugins ?? []),\n ];\n }\n\n const evalConfig = loadBabelOptions(babel, name, {\n babelrc: false,\n ...rawConfig,\n });\n\n return {\n evalConfig,\n parseConfig,\n };\n}\n\nexport function loadAndParse(\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n): IEntrypointCode | IIgnoredEntrypoint {\n const {\n babel,\n eventEmitter,\n options: { pluginOptions },\n } = services;\n\n const extension = extname(name);\n\n if (!pluginOptions.extensions.includes(extension)) {\n log(\n '[createEntrypoint] %s is ignored. If you want it to be processed, you should add \\'%s\\' to the \"extensions\" option.',\n name,\n extension\n );\n\n return {\n get code() {\n if (isAbsolute(name)) {\n return loadedCode ?? readFileSync(name, 'utf-8');\n }\n\n return ''; // it is a built-in module\n },\n evaluator: 'ignored',\n reason: 'extension',\n };\n }\n\n const code = loadedCode ?? readFileSync(name, 'utf-8');\n\n const { action, babelOptions } = getMatchedRule(\n pluginOptions.rules,\n name,\n code\n );\n\n let ast: File | undefined;\n\n const { evalConfig, parseConfig } = buildConfigs(\n services,\n name,\n pluginOptions,\n babelOptions\n );\n\n const getOrParse = () => {\n if (ast) return ast;\n ast = eventEmitter.perf('parseFile', () =>\n parseFile(babel, name, code, parseConfig)\n );\n\n return ast;\n };\n\n if (action === 'ignore') {\n log('[createEntrypoint] %s is ignored by rule', name);\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator: 'ignored',\n reason: 'rule',\n };\n }\n\n const evaluator: Evaluator =\n typeof action === 'function'\n ? action\n : require(\n require.resolve(action, {\n paths: [dirname(name)],\n })\n ).default;\n\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator,\n evalConfig,\n };\n}\n\nexport function getStack(entrypoint: ParentEntrypoint) {\n if (!entrypoint) return [];\n\n const stack = [entrypoint.name];\n\n let { parents } = entrypoint;\n while (parents.length) {\n stack.push(parents[0].name);\n parents = parents[0].parents;\n }\n\n return stack;\n}\n\nexport function mergeOnly(a: string[], b: string[]) {\n const result = new Set(a);\n b.forEach((item) => result.add(item));\n return [...result].filter((i) => i).sort();\n}\n\nexport const isSuperSet = <T>(a: (T | '*')[], b: (T | '*')[]) => {\n if (a.includes('*')) return true;\n if (b.length === 0) return true;\n const aSet = new Set(a);\n return b.every((item) => aSet.has(item));\n};\n"],"mappings":"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"}
@@ -22,7 +22,7 @@ export class Entrypoint extends BaseEntrypoint {
22
22
  evaluated = false;
23
23
  onSupersedeHandlers = [];
24
24
  actionsCache = new Map();
25
- #hasLinariaMetadata = false;
25
+ #hasWywMetadata = false;
26
26
  #supersededWith = null;
27
27
  #transformResultCode = null;
28
28
  constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), generation = 1) {
@@ -173,8 +173,8 @@ export class Entrypoint extends BaseEntrypoint {
173
173
  getResolveTask(name) {
174
174
  return this.resolveTasks.get(name);
175
175
  }
176
- hasLinariaMetadata() {
177
- return this.#hasLinariaMetadata;
176
+ hasWywMetadata() {
177
+ return this.#hasWywMetadata;
178
178
  }
179
179
  onSupersede(callback) {
180
180
  if (this.#supersededWith) {
@@ -190,7 +190,7 @@ export class Entrypoint extends BaseEntrypoint {
190
190
  };
191
191
  }
192
192
  setTransformResult(res) {
193
- this.#hasLinariaMetadata = Boolean(res?.metadata);
193
+ this.#hasWywMetadata = Boolean(res?.metadata);
194
194
  this.#transformResultCode = res?.code ?? null;
195
195
  this.services.eventEmitter.entrypointEvent(this.seqId, {
196
196
  isNull: res === null,