@zohodesk/react-cli 1.1.27-exp.1 → 1.1.27-exp.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (350) hide show
  1. package/lib/configs/jest.config.js +1 -1
  2. package/lib/configs/libAlias.js +2 -2
  3. package/lib/configs/resolvers.js +2 -2
  4. package/lib/schemas/index.js +1 -0
  5. package/npm-shrinkwrap.json +4 -4
  6. package/package.json +1 -1
  7. package/packages/client_build_tool/lib/allCommandsConfigs.js +25 -0
  8. package/packages/client_build_tool/lib/commands/build/commandExecutor.js +17 -0
  9. package/packages/client_build_tool/lib/commands/build/config.js +12 -0
  10. package/packages/client_build_tool/lib/commands/build/optionsProcessor.js +35 -0
  11. package/packages/client_build_tool/lib/commands/build/preProcessor.js +12 -0
  12. package/packages/client_build_tool/lib/commands/buildEs/commandExecutor.js +33 -0
  13. package/packages/client_build_tool/lib/commands/buildEs/config.js +12 -0
  14. package/packages/client_build_tool/lib/commands/buildEs/preProcessor.js +17 -0
  15. package/packages/client_build_tool/lib/commands/buildLib/commandExecutor.js +33 -0
  16. package/packages/client_build_tool/lib/commands/buildLib/config.js +12 -0
  17. package/packages/client_build_tool/lib/commands/buildLib/preProcessor.js +17 -0
  18. package/packages/client_build_tool/lib/commands/mockserver/commandExecutor.js +43 -0
  19. package/packages/client_build_tool/lib/commands/mockserver/config.js +12 -0
  20. package/packages/client_build_tool/lib/commands/pre_process/commandExecutor.js +18 -0
  21. package/packages/client_build_tool/lib/commands/pre_process/config.js +12 -0
  22. package/packages/client_build_tool/lib/commands/start/commandExecutor.js +12 -0
  23. package/packages/client_build_tool/lib/commands/start/config.js +12 -0
  24. package/packages/client_build_tool/lib/commands/start/optionsProcessor.js +30 -0
  25. package/packages/client_build_tool/lib/commands/start/preProcessor.js +12 -0
  26. package/packages/client_build_tool/lib/commands/template/commandExecutor.js +28 -0
  27. package/packages/client_build_tool/lib/commands/template/config.js +12 -0
  28. package/packages/client_build_tool/lib/commands/version/commandExecutor.js +14 -0
  29. package/packages/client_build_tool/lib/commands/version/config.js +12 -0
  30. package/packages/client_build_tool/lib/commandsRouter.js +74 -0
  31. package/packages/client_build_tool/lib/index.js +12 -0
  32. package/packages/client_build_tool/lib/logger.js +34 -0
  33. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/otherTestCases.test.js +234 -0
  34. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingDifferentDataTypesToSchema.test.js +103 -0
  35. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingEmptyObjects.test.js +41 -0
  36. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertArray.test.js +68 -0
  37. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertNumber.test.js +68 -0
  38. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertObject.test.js +141 -0
  39. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertString.test.js +68 -0
  40. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertUndefinedAndNull.test.js +132 -0
  41. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertArray.test.js +71 -0
  42. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertNumber.test.js +71 -0
  43. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertObject.test.js +73 -0
  44. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertString.test.js +71 -0
  45. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertUndefinedAndNull.test.js +138 -0
  46. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/index.js +34 -0
  47. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isObject.js +10 -0
  48. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isValid.js +14 -0
  49. package/packages/client_build_tool/lib/schemas/cliArgsToObject.js +39 -0
  50. package/packages/client_build_tool/lib/schemas/defaultConfigValues.js +349 -0
  51. package/packages/client_build_tool/lib/schemas/defaultConfigValuesOnly.js +187 -0
  52. package/packages/client_build_tool/lib/schemas/deprecatedOptionsHandler.js +67 -0
  53. package/packages/client_build_tool/lib/schemas/getNpmVersion.js +22 -0
  54. package/packages/client_build_tool/lib/schemas/giveDefaultValue.js +18 -0
  55. package/packages/client_build_tool/lib/schemas/npmConfigToObject.js +35 -0
  56. package/packages/client_build_tool/lib/schemas/readOptions.js +54 -0
  57. package/packages/client_build_tool/lib/schemas/readOptionsForConfigFile.js +42 -0
  58. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Map.test.js +15 -0
  59. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/MathAndNumberMethod.test.js +30 -0
  60. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/ObjectAndModules.test.js +47 -0
  61. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Sets.test.js +18 -0
  62. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Symbol.test.js +25 -0
  63. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/arrowFunction.test.js +34 -0
  64. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/block-scoping.test.js +18 -0
  65. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/classes.test.js +55 -0
  66. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/defaultParameterValues.test.js +18 -0
  67. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/extraFeatures.test.js +82 -0
  68. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/forOf.test.js +20 -0
  69. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/promise.test.js +22 -0
  70. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadOperator.test.js +20 -0
  71. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadParams.test.js +24 -0
  72. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/stringAndArrayMethods.test.js +67 -0
  73. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/variables.test.js +21 -0
  74. package/packages/client_build_tool/lib/shared/babel/__test__/es2016/array-includes.test.js +13 -0
  75. package/packages/client_build_tool/lib/shared/babel/__test__/es2016/exponentationOperator.test.js +20 -0
  76. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/asyncAndawait.test.js +23 -0
  77. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-entries.test.js +24 -0
  78. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-getOwnproperties.test.js +24 -0
  79. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-values.test.js +24 -0
  80. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/stringMethods.test.js +20 -0
  81. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/asynchronous-iterator.test.js +19 -0
  82. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/object-rest-spread.test.js +24 -0
  83. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/promise-finally.test.js +26 -0
  84. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/regularExpressions.test.js +35 -0
  85. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/Json.stringify.test.js +21 -0
  86. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/arrayMethods.test.js +31 -0
  87. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/object-fromEntriesMethod.test.js +13 -0
  88. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/optionalCatchBinding.test.js +23 -0
  89. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/revisedFunctionToString.test.js +17 -0
  90. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/trim-startAndend-method.test.js +20 -0
  91. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/AssignmentOperator.test.js +27 -0
  92. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/Dynamic-Import.test.js +19 -0
  93. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/NullishOperator.test.js +15 -0
  94. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/bigInt.test.js +13 -0
  95. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/chainOperator.test.js +17 -0
  96. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/export-namespace-from.test.js +12 -0
  97. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/promiseAllSettledMathod.test.js +17 -0
  98. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/stringMatchMethod.test.js +13 -0
  99. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/NumericSeparator.test.js +23 -0
  100. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/logicalOperatorAssignments.test.js +25 -0
  101. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/promiseAny.test.js +16 -0
  102. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/stringReplaceMethod.test.js +16 -0
  103. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/Array-atMethod.test.js +13 -0
  104. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjectKeyCheck.test.js +27 -0
  105. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjecthasOwnMethod.test.js +19 -0
  106. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/RegexMatchIndices.test.js +20 -0
  107. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/String-atMethod.test.js +15 -0
  108. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/error.Cause.test.js +23 -0
  109. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/keysCheckinPrivateFields.test.js +27 -0
  110. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/privateMethodsAndFields.test.js +23 -0
  111. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/staticFieldsAndMethod.test.js +54 -0
  112. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/topLevelAwait.test.js +11 -0
  113. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/weakRef.test.js +17 -0
  114. package/packages/client_build_tool/lib/shared/babel/__test__/utilities.js +28 -0
  115. package/packages/client_build_tool/lib/shared/babel/addDefaultPlugins.js +15 -0
  116. package/packages/client_build_tool/lib/shared/babel/babelWebConfig.js +54 -0
  117. package/packages/client_build_tool/lib/shared/babel/babel_plugins/removeAttributesPlugin.js +23 -0
  118. package/packages/client_build_tool/lib/shared/babel/getBabelPlugin.js +37 -0
  119. package/packages/client_build_tool/lib/shared/babel/runBabelForJSFile.js +24 -0
  120. package/packages/client_build_tool/lib/shared/babel/runBabelForTsFile.js +30 -0
  121. package/packages/client_build_tool/lib/shared/bundler/webpack/common/decidePublicPath.js +57 -0
  122. package/packages/client_build_tool/lib/shared/bundler/webpack/common/libAlias.js +31 -0
  123. package/packages/client_build_tool/lib/shared/bundler/webpack/common/modeUtils.js +39 -0
  124. package/packages/client_build_tool/lib/shared/bundler/webpack/common/nameTemplates.js +105 -0
  125. package/packages/client_build_tool/lib/shared/bundler/webpack/common/resourceBasedPublicPath.js +21 -0
  126. package/packages/client_build_tool/lib/shared/bundler/webpack/configCustomLoaders.js +10 -0
  127. package/packages/client_build_tool/lib/shared/bundler/webpack/cssLoaders.js +16 -0
  128. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/BundleIntegrityReport/index.js +83 -0
  129. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/index.js +119 -0
  130. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/webpackCustomJsUrlLoader.js +46 -0
  131. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CustomScriptLoadingPlugin.js +109 -0
  132. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
  133. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +11 -0
  134. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +174 -0
  135. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +76 -0
  136. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +223 -0
  137. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -0
  138. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
  139. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
  140. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -0
  141. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/constants.js +29 -0
  142. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +24 -0
  143. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +76 -0
  144. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +39 -0
  145. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
  146. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +68 -0
  147. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/pathCreator.js +23 -0
  148. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/readI18nValues.js +29 -0
  149. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +43 -0
  150. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +77 -0
  151. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/classesAndObject.test.js +56 -0
  152. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/conditionalOperation.test.js +154 -0
  153. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function.test.js +89 -0
  154. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function2.test.js +71 -0
  155. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/loop.test.js +112 -0
  156. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minifyBooleanValues.test.js +43 -0
  157. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minimizeVariableNames.test.js +45 -0
  158. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/promise.test.js +53 -0
  159. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
  160. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeUnusedStrings.test.js +14 -0
  161. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/variableDeclaration.test.js +30 -0
  162. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +66 -0
  163. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
  164. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/hashUtils.js +19 -0
  165. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/index.js +31 -0
  166. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +129 -0
  167. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +60 -0
  168. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/addFilesNamesToManifestJson.test.js +51 -0
  169. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/createInitialEntries.test.js +95 -0
  170. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/removeHashFromFileName.test.js +91 -0
  171. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +30 -0
  172. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +23 -0
  173. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
  174. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
  175. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +46 -0
  176. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
  177. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RTLSplitPlugin.js +1 -0
  178. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +193 -0
  179. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +62 -0
  180. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +84 -0
  181. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -0
  182. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +27 -0
  183. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RuntimeResourceCleanup/index.js +73 -0
  184. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/classHandling.js +20 -0
  185. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/index.js +78 -0
  186. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/selectorWeightPrefixAdder.js +51 -0
  187. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/windowsModification.js +16 -0
  188. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPlugin.js +114 -0
  189. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPluginUtils.js +13 -0
  190. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +68 -0
  191. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/addHashToFilePath.js +22 -0
  192. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/index.js +55 -0
  193. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifyCss1.test.js +74 -0
  194. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifycss.test.js +64 -0
  195. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/utilities.js +28 -0
  196. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/index.js.js +49 -0
  197. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
  198. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +362 -0
  199. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/custom_attribute_plugin/index.js +80 -0
  200. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
  201. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
  202. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
  203. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/classesAndObject.test.js +56 -0
  204. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/conditionalOperation.test.js +154 -0
  205. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function.test.js +89 -0
  206. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function2.test.js +71 -0
  207. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/loop.test.js +112 -0
  208. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minifyBooleanValues.test.js +43 -0
  209. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minimizeVariableNames.test.js +45 -0
  210. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/promise.test.js +53 -0
  211. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
  212. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeUnusedStrings.test.js +14 -0
  213. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/variableDeclaration.test.js +30 -0
  214. package/packages/client_build_tool/lib/shared/bundler/webpack/defaultVendorPatternList.js +13 -0
  215. package/packages/client_build_tool/lib/shared/bundler/webpack/devtoolConfig.js +13 -0
  216. package/packages/client_build_tool/lib/shared/bundler/webpack/entryConfig.js +28 -0
  217. package/packages/client_build_tool/lib/shared/bundler/webpack/externals.js +17 -0
  218. package/packages/client_build_tool/lib/shared/bundler/webpack/getCSSLoaders.js +29 -0
  219. package/packages/client_build_tool/lib/shared/bundler/webpack/getFilenameFromModule.js +24 -0
  220. package/packages/client_build_tool/lib/shared/bundler/webpack/jsLoaders.js +17 -0
  221. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +12 -0
  222. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +18 -0
  223. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +56 -0
  224. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configHtmlTemplateLoader.js +18 -0
  225. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
  226. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configWebWorkerLoader.js +21 -0
  227. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +86 -0
  228. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +65 -0
  229. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +21 -0
  230. package/packages/client_build_tool/lib/shared/bundler/webpack/loaders/miniCssFallBackLoader.js +7 -0
  231. package/packages/client_build_tool/lib/shared/bundler/webpack/loaders/workerLoader.js +133 -0
  232. package/packages/client_build_tool/lib/shared/bundler/webpack/optimizationConfig.js +56 -0
  233. package/packages/client_build_tool/lib/shared/bundler/webpack/outputConfig.js +38 -0
  234. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
  235. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configBundleIntegrityReport.js +36 -0
  236. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +28 -0
  237. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +27 -0
  238. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +63 -0
  239. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCustomAttributesPlugin.js +20 -0
  240. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCustomScriptLoadingStrategyPlugin.js +76 -0
  241. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
  242. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +51 -0
  243. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +56 -0
  244. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +41 -0
  245. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configIgnorePlugin.js +16 -0
  246. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +44 -0
  247. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configMiniCSSExtractPlugin.js +24 -0
  248. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +24 -0
  249. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +21 -0
  250. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configRtlCssPlugin.js +27 -0
  251. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configRuntimeResourceCleanup.js +31 -0
  252. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
  253. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +40 -0
  254. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
  255. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configTPHashMappingPlugin.js +32 -0
  256. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
  257. package/packages/client_build_tool/lib/shared/bundler/webpack/plugins.js +58 -0
  258. package/packages/client_build_tool/lib/shared/bundler/webpack/resolvers.js +82 -0
  259. package/packages/client_build_tool/lib/shared/bundler/webpack/splitChunksConfig.js +116 -0
  260. package/packages/client_build_tool/lib/shared/bundler/webpack/statsConfig.js +30 -0
  261. package/packages/client_build_tool/lib/shared/bundler/webpack/tsLoaders.js +17 -0
  262. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/__test__/getArrayWithDefaultWithCustomEqual.test.js +54 -0
  263. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/__test__/updateArrayWithDefault.test.js +47 -0
  264. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/index.js +31 -0
  265. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/object-manipulation.js +87 -0
  266. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +34 -0
  267. package/packages/client_build_tool/lib/shared/bundler/webpack/webpackBuild.js +27 -0
  268. package/packages/client_build_tool/lib/shared/bundler/webpack/webpackConfig.js +58 -0
  269. package/packages/client_build_tool/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
  270. package/packages/client_build_tool/lib/shared/commands-utils/getCliPath.js +39 -0
  271. package/packages/client_build_tool/lib/shared/commands-utils/index.js +29 -0
  272. package/packages/client_build_tool/lib/shared/commands-utils/log.js +13 -0
  273. package/packages/client_build_tool/lib/shared/commands-utils/readArgsFormCommandLine.js +11 -0
  274. package/packages/client_build_tool/lib/shared/commands-utils/readOptionFormCommandLine.js +11 -0
  275. package/packages/client_build_tool/lib/shared/commands-utils/spawnSyncIO.js +38 -0
  276. package/packages/client_build_tool/lib/shared/constants.js +48 -0
  277. package/packages/client_build_tool/lib/shared/fileUtils/copyFile.js +38 -0
  278. package/packages/client_build_tool/lib/shared/fileUtils/directoryIterator.js +21 -0
  279. package/packages/client_build_tool/lib/shared/fileUtils/watchRun.js +112 -0
  280. package/packages/client_build_tool/lib/shared/postcss/__test__/ignoreTestCases.test.js +80 -0
  281. package/packages/client_build_tool/lib/shared/postcss/__test__/postcss-rtl-all-cases.test.js +119 -0
  282. package/packages/client_build_tool/lib/shared/postcss/__test__/postcssRtl.spec.js +34 -0
  283. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
  284. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
  285. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
  286. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
  287. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
  288. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
  289. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
  290. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
  291. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
  292. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
  293. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/RTLSplitPlugin.js +139 -0
  294. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
  295. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
  296. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +347 -0
  297. package/packages/client_build_tool/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
  298. package/packages/client_build_tool/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
  299. package/packages/client_build_tool/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
  300. package/packages/client_build_tool/lib/shared/postcss/runPostCssForCssFile.js +37 -0
  301. package/packages/client_build_tool/lib/shared/pre_process/runPreProcess.js +58 -0
  302. package/packages/client_build_tool/lib/shared/server/configWebpackDevMiddleware.js +41 -0
  303. package/packages/client_build_tool/lib/shared/server/corsHandling.js +30 -0
  304. package/packages/client_build_tool/lib/shared/server/getIp.js +30 -0
  305. package/packages/client_build_tool/lib/shared/server/getServerURL.js +36 -0
  306. package/packages/client_build_tool/lib/shared/server/httpsOptions.js +46 -0
  307. package/packages/client_build_tool/lib/shared/server/initExpressApp.js +19 -0
  308. package/packages/client_build_tool/lib/shared/server/initialHTMLHandling.js +99 -0
  309. package/packages/client_build_tool/lib/shared/server/mockApiHandler.js +60 -0
  310. package/packages/client_build_tool/lib/shared/server/mockServer.js +41 -0
  311. package/packages/client_build_tool/lib/shared/server/serveContextFiles.js +27 -0
  312. package/packages/client_build_tool/lib/shared/server/serverBywebpackDevMiddleware.js +35 -0
  313. package/packages/client_build_tool/lib/shared/server/startHttpServer.js +26 -0
  314. package/packages/client_build_tool/lib/shared/server/startHttpsServer.js +38 -0
  315. package/packages/client_build_tool/lib/shared/server/unwanted/addHttp2Server.js +41 -0
  316. package/packages/client_build_tool/lib/shared/server/unwanted/configWebpackDevMiddleware.js +44 -0
  317. package/packages/client_build_tool/lib/shared/server/unwanted/mockApiSupport.js +19 -0
  318. package/packages/client_build_tool/lib/shared/server/unwanted/websocketMockSetup.js +48 -0
  319. package/packages/client_build_tool/lib/shared/server/urlConcat.js +32 -0
  320. package/packages/client_build_tool/lib/shared/utils/requireLocalOrGlobal.js +81 -0
  321. package/packages/client_build_tool/lib/shared/utils/utils.js +1 -0
  322. package/packages/client_build_tool/lib/shared/utils/versionPrint.js +20 -0
  323. package/packages/client_build_tool/node_modules/history/CHANGES.md +395 -0
  324. package/packages/client_build_tool/node_modules/history/DOMUtils.js +3 -0
  325. package/packages/client_build_tool/node_modules/history/ExecutionEnvironment.js +3 -0
  326. package/packages/client_build_tool/node_modules/history/LICENSE +21 -0
  327. package/packages/client_build_tool/node_modules/history/LocationUtils.js +3 -0
  328. package/packages/client_build_tool/node_modules/history/PathUtils.js +3 -0
  329. package/packages/client_build_tool/node_modules/history/README.md +282 -0
  330. package/packages/client_build_tool/node_modules/history/cjs/history.js +933 -0
  331. package/packages/client_build_tool/node_modules/history/cjs/history.min.js +1 -0
  332. package/packages/client_build_tool/node_modules/history/createBrowserHistory.js +3 -0
  333. package/packages/client_build_tool/node_modules/history/createHashHistory.js +3 -0
  334. package/packages/client_build_tool/node_modules/history/createMemoryHistory.js +3 -0
  335. package/packages/client_build_tool/node_modules/history/createTransitionManager.js +3 -0
  336. package/packages/client_build_tool/node_modules/history/es/DOMUtils.js +7 -0
  337. package/packages/client_build_tool/node_modules/history/es/ExecutionEnvironment.js +7 -0
  338. package/packages/client_build_tool/node_modules/history/es/LocationUtils.js +7 -0
  339. package/packages/client_build_tool/node_modules/history/es/PathUtils.js +7 -0
  340. package/packages/client_build_tool/node_modules/history/es/createBrowserHistory.js +7 -0
  341. package/packages/client_build_tool/node_modules/history/es/createHashHistory.js +7 -0
  342. package/packages/client_build_tool/node_modules/history/es/createMemoryHistory.js +7 -0
  343. package/packages/client_build_tool/node_modules/history/es/createTransitionManager.js +7 -0
  344. package/packages/client_build_tool/node_modules/history/es/warnAboutDeprecatedESMImport.js +35 -0
  345. package/packages/client_build_tool/node_modules/history/esm/history.js +904 -0
  346. package/packages/client_build_tool/node_modules/history/index.js +7 -0
  347. package/packages/client_build_tool/node_modules/history/package.json +120 -0
  348. package/packages/client_build_tool/node_modules/history/umd/history.js +1059 -0
  349. package/packages/client_build_tool/node_modules/history/umd/history.min.js +1 -0
  350. package/packages/client_build_tool/node_modules/history/warnAboutDeprecatedCJSRequire.js +35 -0
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ var _postcss = _interopRequireDefault(require("postcss"));
4
+
5
+ var _getSpecificPostCssPlugin = require("../getSpecificPostCssPlugin");
6
+
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
9
+ /* eslint-disable max-lines */
10
+
11
+ /* eslint-disable no-use-before-define */
12
+ // import { checkIsPatternsMatchFilename } from '../filterPluginsAllowedForSpecficFile';
13
+ const normalize = cssString => cssString.replace(/} /g, '}');
14
+ /* fix extra space added by `postcss-import` */
15
+
16
+
17
+ const run = (expect, input, output, opts) => // opts && console.log(opts);
18
+ (0, _postcss.default)([(0, _getSpecificPostCssPlugin.configPostCssRtl)(opts)]).process(input, {
19
+ from: undefined
20
+ }).then(result => {
21
+ expect(normalize(result.css)).toEqual(normalize(output));
22
+ expect(result.warnings().length).toEqual(0);
23
+ });
24
+
25
+ test('Should NOT add [dir] prefix to symmetric rules', () => run(expect, 'a { font-size: 1em }', 'a { font-size: 1em }'));
26
+ test('Should ONLY create LTR & RTL rules to asymmetric rules', () => run(expect, 'a { font-size: 1em; text-align: left }', 'a { font-size: 1em }' + '[dir=ltr] a { text-align: left }' + '[dir=rtl] a { text-align: right }'));
27
+ xtest('Should add [dir] prefix to symmetric rules with direction related declarations', () => run(expect, 'a { text-align: center }', '[dir] a { text-align: center }'));
28
+ xtest('Should add [dir] prefix to symmetric rules with direction related declarations (2)', () => run(expect, 'a { font-size: 1em; text-align: center }', 'a { font-size: 1em }[dir] a { text-align: center }'));
29
+ xtest('Should add [dir] prefix to symmetric rules with direction related declarations (3)', () => run(expect, 'a { text-align: left }a { text-align: center }', '[dir=ltr] a { text-align: left }' + '[dir=rtl] a { text-align: right }' + '[dir] a { text-align: center }'));
30
+ xtest('Should add [dir] prefix to symmetric rules with direction related declarations (4)', () => run(expect, 'a { margin: 0 10px 0 0 }a { margin-top: 20px }', '[dir=ltr] a { margin: 0 10px 0 0 }' + '[dir=rtl] a { margin: 0 0 0 10px }' + '[dir] a { margin-top: 20px }'));
31
+ test('Creates both LTR & RTL rules for asymmetric declarations', () => run(expect, 'a { text-align: left }', '[dir=ltr] a { text-align: left }[dir=rtl] a { text-align: right }'));
32
+ test('Removes original rule without symmetric declarations', () => run(expect, 'a { text-align: left }', '[dir=ltr] a { text-align: left }[dir=rtl] a { text-align: right }'));
33
+ xtest('Adds prefix to the html element', () => run(expect, 'html { text-align: left }', 'html[dir=ltr] { text-align: left }html[dir=rtl] { text-align: right }'));
34
+ xtest('Adds prefix to the html element with class', () => run(expect, 'html.foo { text-align: left }', 'html[dir=ltr].foo { text-align: left }' + 'html[dir=rtl].foo { text-align: right }'));
35
+ test('Adds prefix to the :root element', () => run(expect, ':root { text-align: left }', '[dir=ltr]:root { text-align: left }' + '[dir=rtl]:root { text-align: right }'));
36
+ xtest('Adds prefix to the :root element with class', () => run(expect, ':root.foo { text-align: left }', '[dir=ltr]:root.foo { text-align: left }' + '[dir=rtl]:root.foo { text-align: right }'));
37
+ xtest('Use custom `addPrefixToSelector` function', () => run(expect, 'a { text-align: left }', '[dir=ltr] > a { text-align: left }' + '[dir=rtl] > a { text-align: right }', {
38
+ addPrefixToSelector(selector, prefix) {
39
+ return `${prefix} > ${selector}`;
40
+ }
41
+
42
+ }));
43
+ test('Should correctly process values containing commas', () => run(expect, // eslint-disable-next-line no-useless-concat
44
+ 'div { background: url(\'ht' + 'tp://placecage.com/400/400\') 0 0 }', // eslint-disable-next-line no-useless-concat
45
+ '[dir=ltr] div { background: url(\'ht' + 'tp://placecage.com/400/400\') 0 0 }' + // eslint-disable-next-line no-useless-concat
46
+ '[dir=rtl] div { background: url(\'ht' + 'tp://placecage.com/400/400\') 100% 0 }'));
47
+ test('Should correctly process values containing !important', () => run(expect, '.test { margin-left: 0 !important; padding-left: 0 !important }', '[dir=ltr] .test { margin-left: 0 !important; padding-left: 0 !important }' + '[dir=rtl] .test { margin-right: 0 !important; padding-right: 0 !important }'));
48
+ test('Shouldn not create unnecessary duplications with !important', () => run(expect, '.test { display: none !important }', '.test { display: none !important }'));
49
+ test('Should correctly process values containing _display', () => run(expect, '.test { float: left; _display: inline }', '.test { _display: inline }' + '[dir=ltr] .test { float: left }' + '[dir=rtl] .test { float: right }'));
50
+ test('Should ignore declarations prefixed with /* rtl:ignore */', () => run(expect, '/* rtl:ignore */ .test { margin-left:0; padding-left:0 }', '.test { margin-left:0; padding-left:0 }'));
51
+ test('/* rtl:ignore */: Should leave other selectors alone', () => run(expect, '/* rtl:ignore */ .test { margin-left:0 } ' + '.rtled { margin-left:0; padding-left:0 }', '.test { margin-left:0 } ' + '[dir=ltr] .rtled { margin-left:0; padding-left:0 } ' + '[dir=rtl] .rtled { margin-right:0; padding-right:0 }'));
52
+ test('/* rtl:ignore */: should understand overrides', () => run(expect, '.x { left: 0 } /* rtl:ignore */.x { direction: ltr }', '[dir=ltr] .x { left: 0 }' + '[dir=rtl] .x { right: 0 }' + '.x { direction: ltr }'));
53
+ test('/* rtl:begin:ignore */ starts ignore mode', () => run(expect, '/* rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '.bar { direction: ltr }', '.foo { padding-left: 0 }.bar { direction: ltr }'));
54
+ test('/* rtl:end:ignore */ stops ignore mode', () => run(expect, '/* rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '/* rtl:end:ignore */' + '.bar { direction: ltr }', '.foo { padding-left: 0 }' + '[dir=ltr] .bar { direction: ltr }' + '[dir=rtl] .bar { direction: rtl }'));
55
+ test('/* rtl:ignore */ can be used inside /* rtl:begin:ignore */ and /* rtl:end:ignore */', () => run(expect, '/* rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '/* rtl:ignore */' + '.bar { direction: ltr }' + '.baz { left: 0 }' + '/* rtl:end:ignore */', '.foo { padding-left: 0 }.bar { direction: ltr }.baz { left: 0 }'));
56
+ test('that it ignores normal comments', () => run(expect, '/* some comment */ .foo { padding-left: 0 }', '/* some comment */ [dir=ltr] .foo { padding-left: 0 } [dir=rtl] .foo { padding-right: 0 }'));
57
+ test('Value based ignore comments are honored', () => run(expect, '.foo { margin-left: 12px; padding-left: 12px /* rtl:ignore */; }', '.foo { padding-left: 12px /* rtl:ignore */; }' + '[dir=ltr] .foo { margin-left: 12px; }' + '[dir=rtl] .foo { margin-right: 12px; }'));
58
+ test('/*! rtl:ignore */ should consider as a valid directive', () => run(expect, '/*! rtl:ignore */ .test { margin-left:0; padding-left:0 }', '.test { margin-left:0; padding-left:0 }'));
59
+ test('/*! rtl:begin:ignore */ and /*! rtl:end:ignore */ should consider as a valid directive', () => run(expect, '/*! rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '/*! rtl:end:ignore */' + '.bar { direction: ltr }', '.foo { padding-left: 0 }' + '[dir=ltr] .bar { direction: ltr }' + '[dir=rtl] .bar { direction: rtl }'));
60
+ test('Should add direction to flippable keyframes-animations', () => run(expect, '@keyframes bar { 100% { transform: rotate(360deg); } }', '@keyframes bar-ltr { 100% { transform: rotate(360deg); } }' + '@keyframes bar-rtl { 100% { transform: rotate(-360deg); } }'));
61
+ test('Should handle multiple keyframes-animations', () => run(expect, '.loader {animation: load6 1.7s infinite ease, spinner 1.7s infinite ease;}' + '@keyframes load6 { 100% { transform: rotate(1deg) } }' + '@keyframes spinner { 100% { transform: rotate(-1deg) } }', '[dir=ltr] .loader {animation: load6-ltr 1.7s infinite ease, spinner-ltr 1.7s infinite ease;}' + '[dir=rtl] .loader {animation: load6-rtl 1.7s infinite ease, spinner-rtl 1.7s infinite ease;}' + '@keyframes load6-ltr { 100% { transform: rotate(1deg) } }' + '@keyframes load6-rtl { 100% { transform: rotate(-1deg) } }' + '@keyframes spinner-ltr { 100% { transform: rotate(-1deg) } }' + '@keyframes spinner-rtl { 100% { transform: rotate(1deg) } }'));
62
+ test('Should ignore keyframes-animation prefixed with /* rtl:ignore */', () => run(expect, '/* rtl:ignore */ @keyframes bar { 100% { transform: rotate(360deg); } }', '@keyframes bar { 100% { transform: rotate(360deg); } }'));
63
+ test('/* rtl:begin:ignore */ starts ignore mode for both keyframes and rules', () => run(expect, '/* rtl:begin:ignore */ @keyframes bar { 100% { transform: rotate(360deg); } } .foo { left: 5px }', '@keyframes bar { 100% { transform: rotate(360deg); } } .foo { left: 5px }'));
64
+ test('/* rtl:end:ignore */ stops ignore mode for keyframes', () => run(expect, '/* rtl:begin:ignore */ @keyframes bar { 100% { transform: rotate(360deg); } } /* rtl:end:ignore */' + '.foo { left: 5px }', '@keyframes bar { 100% { transform: rotate(360deg); } }' + '[dir=ltr] .foo { left: 5px }' + '[dir=rtl] .foo { right: 5px }'));
65
+ test('Should create only LTR version', () => run(expect, 'a { font-size: 1em; text-align: left }' + '@keyframes bar { 100% { transform: rotate(360deg); } }', 'a { font-size: 1em }' + '[dir=ltr] a { text-align: left }' + '@keyframes bar-ltr { 100% { transform: rotate(360deg); } }', {
66
+ onlyDirection: 'ltr'
67
+ }));
68
+ test('Should create only RTL version', () => run(expect, 'a { font-size: 1em; text-align: left }' + '@keyframes bar { 100% { transform: rotate(360deg); } }', 'a { font-size: 1em }' + '[dir=rtl] a { text-align: right }' + '@keyframes bar-rtl { 100% { transform: rotate(-360deg); } }', {
69
+ onlyDirection: 'rtl'
70
+ }));
71
+ test('Value replacement directives are honored', () => run(expect, '.foo { font-weight: bold; flex-direction: row/* rtl:row-reverse */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { flex-direction: row/* rtl:row-reverse */; }[dir=rtl] .foo { flex-direction: row-reverse; }'));
72
+ test('Value prepend directives are honored', () => run(expect, '.foo { font-weight: bold; font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*rtl:prepend:"Droid Arabic Kufi",*/; }', '.foo { font-weight: bold; }[dir=ltr] .foo { font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*rtl:prepend:"Droid Arabic Kufi",*/; }[dir=rtl] .foo { font-family: "Droid Arabic Kufi", "Droid Sans", "Helvetica Neue", Arial, sans-serif; }'));
73
+ test('Value append directives are honored', () => run(expect, '.foo { font-weight: bold; transform: rotate(45deg)/* rtl:append: scaleX(-1) */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { transform: rotate(45deg)/* rtl:append: scaleX(-1) */; }[dir=rtl] .foo { transform: rotate(45deg) scaleX(-1); }'));
74
+ test('Value based ignore important comments are honored', () => run(expect, '.foo { margin-left: 12px; padding-left: 12px /*! rtl:ignore */; }', '.foo { padding-left: 12px /*! rtl:ignore */; }' + '[dir=ltr] .foo { margin-left: 12px; }' + '[dir=rtl] .foo { margin-right: 12px; }'));
75
+ test('Value replacement directives with important comments are honored', () => run(expect, '.foo { font-weight: bold; flex-direction: row/*! rtl:row-reverse */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { flex-direction: row/*! rtl:row-reverse */; }[dir=rtl] .foo { flex-direction: row-reverse; }'));
76
+ test('Value prepend directives with important comments are honored', () => run(expect, '.foo { font-weight: bold; font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*!rtl:prepend:"Droid Arabic Kufi",*/; }', '.foo { font-weight: bold; }[dir=ltr] .foo { font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*!rtl:prepend:"Droid Arabic Kufi",*/; }[dir=rtl] .foo { font-family: "Droid Arabic Kufi", "Droid Sans", "Helvetica Neue", Arial, sans-serif; }'));
77
+ test('Value append directives with important comments are honored', () => run(expect, '.foo { font-weight: bold; transform: rotate(45deg)/*! rtl:append: scaleX(-1) */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { transform: rotate(45deg)/*! rtl:append: scaleX(-1) */; }[dir=rtl] .foo { transform: rotate(45deg) scaleX(-1); }'));
78
+ test('Should keep comments', () => run(expect, '/* rtl:ignore */ a { text-align: left }', '/* rtl:ignore */ a { text-align: left }', {
79
+ removeComments: false
80
+ }));
81
+ test('Should respect custom prefix (attribute)', () => run(expect, 'a { text-align: left }', '[custom-dir-prefix=ltr] a { text-align: left }' + '[custom-dir-prefix=rtl] a { text-align: right }', {
82
+ prefix: 'custom-dir-prefix'
83
+ }));
84
+ test('Should respect custom prefix (class)', () => run(expect, 'a { text-align: left }', '.custom-dir-prefix-ltr a { text-align: left }' + '.custom-dir-prefix-rtl a { text-align: right }', {
85
+ prefix: 'custom-dir-prefix',
86
+ prefixType: 'class'
87
+ }));
88
+ test('Should not swap "left" and "right" subparts of selectors', () => run(expect, '.arrowLeft { margin-right: -3px }', '[dir=ltr] .arrowLeft { margin-right: -3px }' + '[dir=rtl] .arrowLeft { margin-left: -3px }'));
89
+ test('Should respect multiline values', () => run(expect, `.multiline {
90
+ background: rgba(0, 0, 0, 0, .5),
91
+ linear-gradient(to right, transparent, #000);
92
+ }`, `[dir=ltr] .multiline {
93
+ background: rgba(0, 0, 0, 0, .5),
94
+ linear-gradient(to right, transparent, #000);
95
+ }` + `[dir=rtl] .multiline {
96
+ background: rgba(0, 0, 0, 0, .5),
97
+ linear-gradient(to left, transparent, #000);
98
+ }`));
99
+ test('rtl:as: directive', () => run(expect, ':root { --padding /* rtl:as:padding */: 1px 2px 3px 4px }', '[dir=ltr]:root { --padding /* rtl:as:padding */: 1px 2px 3px 4px }' + '[dir=rtl]:root { --padding /* rtl:as:padding */: 1px 4px 3px 2px }'));
100
+ test('rtl aliases', () => run(expect, ':root { --padding: 1px 2px 3px 4px }', '[dir=ltr]:root { --padding: 1px 2px 3px 4px }' + '[dir=rtl]:root { --padding: 1px 4px 3px 2px }', {
101
+ aliases: {
102
+ '--padding': 'padding'
103
+ }
104
+ }));
105
+ test('should ignore blacklist properties', () => run(expect, '.test {padding-left: 1rem;padding: 1rem 2rem 3rem 4rem}', '.test {padding: 1rem 2rem 3rem 4rem}' + '[dir=ltr] .test {padding-left: 1rem}' + '[dir=rtl] .test {padding-right: 1rem}', {
106
+ blacklist: ['padding']
107
+ }));
108
+ test('should process whitelist properties only', () => run(expect, '.test {padding-left: 1rem;padding: 1rem 2rem 3rem 4rem}', '.test {padding-left: 1rem}' + '[dir=ltr] .test {padding: 1rem 2rem 3rem 4rem}' + '[dir=rtl] .test {padding: 1rem 4rem 3rem 2rem}', {
109
+ whitelist: ['padding']
110
+ }));
111
+ /* ignored test cases */
112
+ // it('should ignore ignored @import', () =>
113
+ // run(
114
+ // expect,
115
+ // '/* rtl:begin:ignore */' +
116
+ // `@import "${__dirname}/../test-import.css";` +
117
+ // '/* rtl:end:ignore */',
118
+ // '.test-import { padding-left: 1rem }'
119
+ // ));
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _postcss = _interopRequireDefault(require("postcss"));
4
+
5
+ var _getSpecificPostCssPlugin = require("../getSpecificPostCssPlugin");
6
+
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
9
+ /* eslint-disable no-use-before-define */
10
+ // import { checkIsPatternsMatchFilename } from '../filterPluginsAllowedForSpecficFile';
11
+ describe('postcss-rtl plugin basic requirement tests', () => {
12
+ it('is creating rtl css code for for margin-left', () => {
13
+ const cssInputStr = '.main{margin-left:20px}';
14
+ const cssOutputStr = '[dir=ltr] .main{margin-left:20px}[dir=rtl] .main{margin-right:20px}';
15
+ const result = runRTLPostCssPluginForCssString(cssInputStr);
16
+ expect(result.css).toEqual(cssOutputStr);
17
+ });
18
+ it('is creating rtl css code for for margin-right', cb => {
19
+ const cssInputStr = '.main{margin-right:20px}';
20
+ const cssOutputStr = '[dir=ltr] .main{margin-right:20px}[dir=rtl] .main{margin-left:20px}'; // console.log(postcss);
21
+
22
+ runRTLPostCssPluginForCssString(cssInputStr).then(res => {
23
+ expect(res.css).toEqual(cssOutputStr);
24
+ cb();
25
+ });
26
+ });
27
+ });
28
+
29
+ function runRTLPostCssPluginForCssString(cssInputStr) {
30
+ return (0, _postcss.default)([(0, _getSpecificPostCssPlugin.configPostCssRtl)()]).process(cssInputStr, {
31
+ from: '',
32
+ to: ''
33
+ });
34
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ // eslint-disable-next-line no-unused-vars
9
+ const EmptyPlugin = (opts = {}) => ({
10
+ postcssPlugin: 'postcss-empty',
11
+
12
+ // eslint-disable-next-line no-unused-vars
13
+ Once(root, {
14
+ result
15
+ }) {}
16
+
17
+ });
18
+
19
+ EmptyPlugin.postcss = true;
20
+ var _default = EmptyPlugin;
21
+ exports.default = _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HOVER_NOTATION = void 0;
7
+
8
+ /* eslint-disable no-use-before-define */
9
+ const HOVER_NOTATION = ':hover';
10
+ exports.HOVER_NOTATION = HOVER_NOTATION;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.handleIgnores = handleIgnores;
7
+
8
+ var _typeCheckUtils = require("./typeCheckUtils");
9
+
10
+ const hoverIgnoreQuery = 'Hover:ignore';
11
+ const activeIgnoreQuery = 'Active:ignore';
12
+ const hoverActiveIgnoreQuery = 'HoverActive:ignore';
13
+
14
+ function handleIgnore() {
15
+ let isIgnored = false;
16
+ return {
17
+ isIgnored: () => isIgnored,
18
+ update: isGoingTobeIgnored => {
19
+ isIgnored = isGoingTobeIgnored;
20
+ },
21
+ reset: () => {
22
+ isIgnored = false;
23
+ }
24
+ };
25
+ } // eslint-disable-next-line no-unused-vars
26
+
27
+
28
+ function handleIgnores(options) {
29
+ const hoverHandler = handleIgnore();
30
+ const activeHandler = handleIgnore();
31
+
32
+ function generateReturnValue() {
33
+ return {
34
+ hoverIgnored: hoverHandler.isIgnored(),
35
+ activeIgnored: activeHandler.isIgnored()
36
+ };
37
+ }
38
+
39
+ const ignoreCommentMap = {
40
+ [hoverIgnoreQuery]: () => {
41
+ hoverHandler.update(true);
42
+ },
43
+ [activeIgnoreQuery]: () => {
44
+ activeHandler.update(true);
45
+ },
46
+ [hoverActiveIgnoreQuery]: () => {
47
+ hoverHandler.update(true);
48
+ activeHandler.update(true);
49
+ }
50
+ };
51
+ return node => {
52
+ if ((0, _typeCheckUtils.isComment)(node)) {
53
+ const commentText = node.text.trim();
54
+ ignoreCommentMap[commentText] && ignoreCommentMap[commentText](); // NOTE: we return here because this is just comment we can skip it.
55
+
56
+ return generateReturnValue();
57
+ } // NOTE: we get the here. But return after resetting for next. Because these comment Only works for once.
58
+ // Even If we support multiple line Skip we must do it in reset or separate method.
59
+
60
+
61
+ const returnValue = generateReturnValue();
62
+ hoverHandler.reset();
63
+ activeHandler.reset();
64
+ return returnValue;
65
+ };
66
+ }
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _handleIgnores = require("./handleIgnores");
9
+
10
+ var _typeCheckUtils = require("./typeCheckUtils");
11
+
12
+ var _isPreviouslyProcessed = require("./isPreviouslyProcessed");
13
+
14
+ var _insertBefore = require("./insertBefore");
15
+
16
+ var _separateHoveredSelectorAndNormalSelector = require("./separateHoveredSelectorAndNormalSelector");
17
+
18
+ var _replaceUtils = require("./replaceUtils");
19
+
20
+ var _specialCases = require("./specialCases");
21
+
22
+ var _default = config => {
23
+ const hoverMedQuerySuffix = config.hover;
24
+ const activeMedQuerySuffix = config.active;
25
+ return {
26
+ postcssPlugin: 'postcss-mobile-hover',
27
+ Once: function Once(root, params) {
28
+ const getIgnoreStatus = (0, _handleIgnores.handleIgnores)(); // eslint-disable-next-line no-use-before-define
29
+
30
+ const mediaRuleCreatorMap = getMediaRuleMap(params, hoverMedQuerySuffix, activeMedQuerySuffix);
31
+ root.walk(node => {
32
+ const ignoreStatus = getIgnoreStatus(node);
33
+
34
+ if ((0, _typeCheckUtils.isRule)(node) === false) {
35
+ return;
36
+ }
37
+
38
+ if ((0, _typeCheckUtils.isAtRule)(node.parent) && !(0, _typeCheckUtils.isMediaQuery)(node.parent)) {
39
+ return;
40
+ } // NOTE: after previous return we expect rule that are only normal rule or rules that inside media query
41
+
42
+
43
+ const rule = node;
44
+
45
+ if ((0, _isPreviouslyProcessed.isPreviouslyProcessed)(rule, {
46
+ hoverMedQuerySuffix,
47
+ activeMedQuerySuffix
48
+ })) {
49
+ return;
50
+ }
51
+
52
+ const {
53
+ hoveredSelectors,
54
+ normalSelectors
55
+ } = (0, _separateHoveredSelectorAndNormalSelector.separateHoveredSelectorAndNormalSelector)(rule.selector); // NOTE: this if will remove rule if the rule has no normal selectors. and return So be aware.
56
+
57
+ if (hoveredSelectors.length === 0) {
58
+ // || isRuleHasHover(rule) === false
59
+ return;
60
+ }
61
+
62
+ let newHoverMediaQuery = null;
63
+ let newActiveMediaQuery = null;
64
+ let prefix = '';
65
+
66
+ if ((0, _typeCheckUtils.isAtRule)(rule.parent)) {
67
+ prefix = rule.parent.params;
68
+ } else {
69
+ // NOTE: for usual rules we don't need prefix, So use prefix as empty string
70
+ prefix = '';
71
+ }
72
+
73
+ if (!ignoreStatus.hoverIgnored) {
74
+ newHoverMediaQuery = mediaRuleCreatorMap.hoverRule({
75
+ rule,
76
+ hoveredSelectors,
77
+ prefix
78
+ }, params);
79
+ }
80
+
81
+ if (!ignoreStatus.activeIgnored) {
82
+ newActiveMediaQuery = mediaRuleCreatorMap.activeRule({
83
+ rule,
84
+ hoveredSelectors,
85
+ prefix
86
+ }, params);
87
+ }
88
+
89
+ (0, _insertBefore.insertNearBy)(rule, newHoverMediaQuery);
90
+ (0, _insertBefore.insertNearBy)(rule, newActiveMediaQuery);
91
+ (0, _specialCases.hackForComposes)(rule, hoveredSelectors, params);
92
+ (0, _specialCases.removeRuleIfNoNormalSelectors)(normalSelectors, rule);
93
+ });
94
+ }
95
+ };
96
+ };
97
+
98
+ exports.default = _default;
99
+
100
+ function getMediaRuleMap(params, hoverMedQuerySuffix, activeMedQuerySuffix) {
101
+ const {
102
+ AtRule
103
+ } = params;
104
+ return {
105
+ hoverRule({
106
+ rule,
107
+ hoveredSelectors,
108
+ prefix
109
+ }) {
110
+ const newMediaQuery = new AtRule({
111
+ name: 'media',
112
+ params: (0, _isPreviouslyProcessed.concatMediaParams)(prefix, hoverMedQuerySuffix)
113
+ });
114
+ const clonedRule = rule.clone();
115
+ clonedRule.selector = hoveredSelectors.join(',');
116
+ newMediaQuery.append(clonedRule);
117
+ return newMediaQuery;
118
+ },
119
+
120
+ activeRule({
121
+ rule,
122
+ hoveredSelectors,
123
+ prefix
124
+ }) {
125
+ const newMediaQuery = new AtRule({
126
+ name: 'media',
127
+ params: (0, _isPreviouslyProcessed.concatMediaParams)(prefix, activeMedQuerySuffix)
128
+ });
129
+ const clonedRule = rule.clone();
130
+ clonedRule.selector = hoveredSelectors.map(_replaceUtils.replaceHoverToActiveInSelector).join(',');
131
+ newMediaQuery.append(clonedRule);
132
+ return newMediaQuery;
133
+ }
134
+
135
+ };
136
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.insertBefore = insertBefore;
7
+ exports.insertNearBy = insertNearBy;
8
+
9
+ var _typeCheckUtils = require("./typeCheckUtils");
10
+
11
+ function insertBefore(node, newNode) {
12
+ newNode && node.parent.insertBefore(node, newNode);
13
+ return newNode;
14
+ } // function insertAfter(node, newNode) {
15
+ // newNode && node.parent.insertAfter(node, newNode);
16
+ // return newNode;
17
+ // }
18
+
19
+
20
+ function insertNearBy(node, newNode) {
21
+ if (!newNode) {
22
+ return newNode;
23
+ } // we use insertBefore Because we wouldn't end up recursive (repeated) check and creation
24
+
25
+
26
+ if ((0, _typeCheckUtils.isParentAtRule)(node) && (0, _typeCheckUtils.isAtRule)(newNode)) {
27
+ return insertNearBy(node.parent, newNode);
28
+ }
29
+
30
+ return insertBefore(node, newNode); // return insertAfter(node, newNode);
31
+ // return newNode;
32
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.concatMediaParams = concatMediaParams;
7
+ exports.isPreviouslyProcessed = isPreviouslyProcessed;
8
+
9
+ var _typeCheckUtils = require("./typeCheckUtils");
10
+
11
+ function concatMediaParams(prefix, suffix) {
12
+ return prefix ? `${prefix} and ${suffix}` : `${suffix}`;
13
+ }
14
+
15
+ function isPreviouslyProcessed(rule, {
16
+ hoverMedQuerySuffix,
17
+ activeMedQuerySuffix
18
+ }) {
19
+ return (0, _typeCheckUtils.isParentAtRule)(rule) && ((0, _typeCheckUtils.isParentAtRuleContainsParam)(rule, hoverMedQuerySuffix) || (0, _typeCheckUtils.isParentAtRuleContainsParam)(rule, activeMedQuerySuffix));
20
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.replaceHoverToActiveInSelector = exports.removeHoverFromSelector = void 0;
7
+
8
+ var _constants = require("./constants");
9
+
10
+ // function isRuleHasHover(rule) {
11
+ // return isSelectorHasHover(rule.selector);
12
+ // }
13
+ function generateReplacer(baseStr, replaceStr) {
14
+ return (inputStr = '') => inputStr.replaceAll(baseStr, replaceStr);
15
+ }
16
+
17
+ const removeHoverFromSelector = generateReplacer(_constants.HOVER_NOTATION, '');
18
+ exports.removeHoverFromSelector = removeHoverFromSelector;
19
+ const replaceHoverToActiveInSelector = generateReplacer(_constants.HOVER_NOTATION, ':active');
20
+ exports.replaceHoverToActiveInSelector = replaceHoverToActiveInSelector;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.separateHoveredSelectorAndNormalSelector = separateHoveredSelectorAndNormalSelector;
7
+
8
+ var _typeCheckUtils = require("./typeCheckUtils");
9
+
10
+ function separateHoveredSelectorAndNormalSelector(fullselector = '') {
11
+ const hoveredSelectors = [];
12
+ const normalSelectors = [];
13
+ fullselector.split(/\s*,\s*/).forEach(selector => {
14
+ if ((0, _typeCheckUtils.isSelectorHasHover)(selector)) {
15
+ hoveredSelectors.push(selector);
16
+ } else {
17
+ normalSelectors.push(selector);
18
+ }
19
+ });
20
+ return {
21
+ hoveredSelectors,
22
+ normalSelectors
23
+ };
24
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hackForComposes = hackForComposes;
7
+ exports.removeRuleIfNoNormalSelectors = removeRuleIfNoNormalSelectors;
8
+
9
+ var _insertBefore = require("./insertBefore");
10
+
11
+ var _replaceUtils = require("./replaceUtils");
12
+
13
+ function hackForComposes(rule, hoveredSelectors, params) {
14
+ const {
15
+ Rule
16
+ } = params;
17
+
18
+ if (hoveredSelectors.length === 0) {
19
+ return;
20
+ } // NOTE: we create Empty Rule with hovered selectors that :hover removed from hover selector
21
+ // Reason: when composes looking for selector it most be at least empty rule other wise composes will throw error.
22
+
23
+
24
+ (0, _insertBefore.insertBefore)(rule, new Rule({
25
+ selector: hoveredSelectors.map(_replaceUtils.removeHoverFromSelector).join(',')
26
+ }));
27
+ }
28
+ /**
29
+ * NOTE: this function will remove rule if the rule has no normal selectors.
30
+ * @param {Rule} rule
31
+ * @returns
32
+ */
33
+
34
+
35
+ function removeRuleIfNoNormalSelectors(normalSelectors, rule) {
36
+ if (normalSelectors.length) {
37
+ // NOTE: removed hovered selectors
38
+ // eslint-disable-next-line no-param-reassign
39
+ rule.selector = normalSelectors.join(',');
40
+ } else {
41
+ rule.remove();
42
+ }
43
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isAtRule = isAtRule;
7
+ exports.isAtRuleContainsParam = isAtRuleContainsParam;
8
+ exports.isComment = isComment;
9
+ exports.isMediaQuery = isMediaQuery;
10
+ exports.isParentAtRule = isParentAtRule;
11
+ exports.isParentAtRuleContainsParam = isParentAtRuleContainsParam;
12
+ exports.isRule = isRule;
13
+ exports.isRuleNotInsideAtRule = isRuleNotInsideAtRule;
14
+ exports.isSelectorHasHover = isSelectorHasHover;
15
+
16
+ var _constants = require("./constants");
17
+
18
+ function isComment(node) {
19
+ return node.type === 'comment';
20
+ }
21
+
22
+ function isRule(node) {
23
+ return node.type === 'rule';
24
+ }
25
+
26
+ function isMediaQuery(node) {
27
+ return node.name === 'media';
28
+ }
29
+
30
+ function isAtRule(node) {
31
+ return node.type === 'atrule';
32
+ }
33
+
34
+ function isAtRuleContainsParam(atRule, content) {
35
+ return atRule.params.includes(content);
36
+ }
37
+
38
+ function isParentAtRuleContainsParam(rule, content) {
39
+ return isAtRuleContainsParam(rule.parent, content);
40
+ }
41
+
42
+ function isParentAtRule(rule) {
43
+ return isAtRule(rule.parent);
44
+ }
45
+
46
+ function isRuleNotInsideAtRule(node) {
47
+ return isRule(node) && node && !isAtRule(node.parent);
48
+ }
49
+
50
+ function isSelectorHasHover(selector) {
51
+ return selector.indexOf(_constants.HOVER_NOTATION) !== -1;
52
+ }