@zohodesk/react-cli 1.1.27 → 1.1.28-exp.2

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 (355) hide show
  1. package/README.md +18 -0
  2. package/lib/configs/jest.config.js +1 -1
  3. package/lib/configs/libAlias.js +2 -2
  4. package/lib/configs/resolvers.js +2 -2
  5. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +2 -5
  6. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +4 -1
  7. package/lib/plugins/I18nSplitPlugin/utils/unicodeConversion.js +6 -8
  8. package/lib/schemas/index.js +1 -0
  9. package/lib/utils/copyTimezones.js +1 -0
  10. package/npm-shrinkwrap.json +330 -24
  11. package/package.json +2 -2
  12. package/packages/client_build_tool/lib/allCommandsConfigs.js +25 -0
  13. package/packages/client_build_tool/lib/commands/build/commandExecutor.js +17 -0
  14. package/packages/client_build_tool/lib/commands/build/config.js +12 -0
  15. package/packages/client_build_tool/lib/commands/build/optionsProcessor.js +35 -0
  16. package/packages/client_build_tool/lib/commands/build/preProcessor.js +12 -0
  17. package/packages/client_build_tool/lib/commands/buildEs/commandExecutor.js +33 -0
  18. package/packages/client_build_tool/lib/commands/buildEs/config.js +12 -0
  19. package/packages/client_build_tool/lib/commands/buildEs/preProcessor.js +17 -0
  20. package/packages/client_build_tool/lib/commands/buildLib/commandExecutor.js +33 -0
  21. package/packages/client_build_tool/lib/commands/buildLib/config.js +12 -0
  22. package/packages/client_build_tool/lib/commands/buildLib/preProcessor.js +17 -0
  23. package/packages/client_build_tool/lib/commands/mockserver/commandExecutor.js +43 -0
  24. package/packages/client_build_tool/lib/commands/mockserver/config.js +12 -0
  25. package/packages/client_build_tool/lib/commands/pre_process/commandExecutor.js +18 -0
  26. package/packages/client_build_tool/lib/commands/pre_process/config.js +12 -0
  27. package/packages/client_build_tool/lib/commands/start/commandExecutor.js +12 -0
  28. package/packages/client_build_tool/lib/commands/start/config.js +12 -0
  29. package/packages/client_build_tool/lib/commands/start/optionsProcessor.js +30 -0
  30. package/packages/client_build_tool/lib/commands/start/preProcessor.js +12 -0
  31. package/packages/client_build_tool/lib/commands/template/commandExecutor.js +28 -0
  32. package/packages/client_build_tool/lib/commands/template/config.js +12 -0
  33. package/packages/client_build_tool/lib/commands/version/commandExecutor.js +14 -0
  34. package/packages/client_build_tool/lib/commands/version/config.js +12 -0
  35. package/packages/client_build_tool/lib/commandsRouter.js +74 -0
  36. package/packages/client_build_tool/lib/index.js +12 -0
  37. package/packages/client_build_tool/lib/logger.js +34 -0
  38. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/otherTestCases.test.js +234 -0
  39. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingDifferentDataTypesToSchema.test.js +103 -0
  40. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingEmptyObjects.test.js +41 -0
  41. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertArray.test.js +68 -0
  42. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertNumber.test.js +68 -0
  43. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertObject.test.js +141 -0
  44. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertString.test.js +68 -0
  45. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertUndefinedAndNull.test.js +132 -0
  46. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertArray.test.js +71 -0
  47. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertNumber.test.js +71 -0
  48. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertObject.test.js +73 -0
  49. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertString.test.js +71 -0
  50. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertUndefinedAndNull.test.js +138 -0
  51. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/index.js +34 -0
  52. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isObject.js +10 -0
  53. package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isValid.js +14 -0
  54. package/packages/client_build_tool/lib/schemas/cliArgsToObject.js +39 -0
  55. package/packages/client_build_tool/lib/schemas/defaultConfigValues.js +349 -0
  56. package/packages/client_build_tool/lib/schemas/defaultConfigValuesOnly.js +187 -0
  57. package/packages/client_build_tool/lib/schemas/deprecatedOptionsHandler.js +67 -0
  58. package/packages/client_build_tool/lib/schemas/getNpmVersion.js +22 -0
  59. package/packages/client_build_tool/lib/schemas/giveDefaultValue.js +18 -0
  60. package/packages/client_build_tool/lib/schemas/npmConfigToObject.js +35 -0
  61. package/packages/client_build_tool/lib/schemas/readOptions.js +54 -0
  62. package/packages/client_build_tool/lib/schemas/readOptionsForConfigFile.js +42 -0
  63. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Map.test.js +15 -0
  64. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/MathAndNumberMethod.test.js +30 -0
  65. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/ObjectAndModules.test.js +47 -0
  66. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Sets.test.js +18 -0
  67. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Symbol.test.js +25 -0
  68. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/arrowFunction.test.js +34 -0
  69. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/block-scoping.test.js +18 -0
  70. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/classes.test.js +55 -0
  71. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/defaultParameterValues.test.js +18 -0
  72. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/extraFeatures.test.js +82 -0
  73. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/forOf.test.js +20 -0
  74. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/promise.test.js +22 -0
  75. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadOperator.test.js +20 -0
  76. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadParams.test.js +24 -0
  77. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/stringAndArrayMethods.test.js +67 -0
  78. package/packages/client_build_tool/lib/shared/babel/__test__/es2015/variables.test.js +21 -0
  79. package/packages/client_build_tool/lib/shared/babel/__test__/es2016/array-includes.test.js +13 -0
  80. package/packages/client_build_tool/lib/shared/babel/__test__/es2016/exponentationOperator.test.js +20 -0
  81. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/asyncAndawait.test.js +23 -0
  82. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-entries.test.js +24 -0
  83. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-getOwnproperties.test.js +24 -0
  84. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-values.test.js +24 -0
  85. package/packages/client_build_tool/lib/shared/babel/__test__/es2017/stringMethods.test.js +20 -0
  86. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/asynchronous-iterator.test.js +19 -0
  87. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/object-rest-spread.test.js +24 -0
  88. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/promise-finally.test.js +26 -0
  89. package/packages/client_build_tool/lib/shared/babel/__test__/es2018/regularExpressions.test.js +35 -0
  90. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/Json.stringify.test.js +21 -0
  91. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/arrayMethods.test.js +31 -0
  92. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/object-fromEntriesMethod.test.js +13 -0
  93. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/optionalCatchBinding.test.js +23 -0
  94. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/revisedFunctionToString.test.js +17 -0
  95. package/packages/client_build_tool/lib/shared/babel/__test__/es2019/trim-startAndend-method.test.js +20 -0
  96. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/AssignmentOperator.test.js +27 -0
  97. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/Dynamic-Import.test.js +19 -0
  98. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/NullishOperator.test.js +15 -0
  99. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/bigInt.test.js +13 -0
  100. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/chainOperator.test.js +17 -0
  101. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/export-namespace-from.test.js +12 -0
  102. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/promiseAllSettledMathod.test.js +17 -0
  103. package/packages/client_build_tool/lib/shared/babel/__test__/es2020/stringMatchMethod.test.js +13 -0
  104. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/NumericSeparator.test.js +23 -0
  105. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/logicalOperatorAssignments.test.js +25 -0
  106. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/promiseAny.test.js +16 -0
  107. package/packages/client_build_tool/lib/shared/babel/__test__/es2021/stringReplaceMethod.test.js +16 -0
  108. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/Array-atMethod.test.js +13 -0
  109. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjectKeyCheck.test.js +27 -0
  110. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjecthasOwnMethod.test.js +19 -0
  111. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/RegexMatchIndices.test.js +20 -0
  112. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/String-atMethod.test.js +15 -0
  113. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/error.Cause.test.js +23 -0
  114. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/keysCheckinPrivateFields.test.js +27 -0
  115. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/privateMethodsAndFields.test.js +23 -0
  116. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/staticFieldsAndMethod.test.js +54 -0
  117. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/topLevelAwait.test.js +11 -0
  118. package/packages/client_build_tool/lib/shared/babel/__test__/es2022/weakRef.test.js +17 -0
  119. package/packages/client_build_tool/lib/shared/babel/__test__/utilities.js +28 -0
  120. package/packages/client_build_tool/lib/shared/babel/addDefaultPlugins.js +15 -0
  121. package/packages/client_build_tool/lib/shared/babel/babelWebConfig.js +54 -0
  122. package/packages/client_build_tool/lib/shared/babel/babel_plugins/removeAttributesPlugin.js +23 -0
  123. package/packages/client_build_tool/lib/shared/babel/getBabelPlugin.js +37 -0
  124. package/packages/client_build_tool/lib/shared/babel/runBabelForJSFile.js +24 -0
  125. package/packages/client_build_tool/lib/shared/babel/runBabelForTsFile.js +30 -0
  126. package/packages/client_build_tool/lib/shared/bundler/webpack/common/decidePublicPath.js +57 -0
  127. package/packages/client_build_tool/lib/shared/bundler/webpack/common/libAlias.js +31 -0
  128. package/packages/client_build_tool/lib/shared/bundler/webpack/common/modeUtils.js +39 -0
  129. package/packages/client_build_tool/lib/shared/bundler/webpack/common/nameTemplates.js +105 -0
  130. package/packages/client_build_tool/lib/shared/bundler/webpack/common/resourceBasedPublicPath.js +21 -0
  131. package/packages/client_build_tool/lib/shared/bundler/webpack/configCustomLoaders.js +10 -0
  132. package/packages/client_build_tool/lib/shared/bundler/webpack/cssLoaders.js +16 -0
  133. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/BundleIntegrityReport/index.js +83 -0
  134. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/index.js +119 -0
  135. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/webpackCustomJsUrlLoader.js +46 -0
  136. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CustomScriptLoadingPlugin.js +109 -0
  137. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
  138. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +11 -0
  139. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +174 -0
  140. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +76 -0
  141. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +223 -0
  142. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -0
  143. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
  144. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
  145. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -0
  146. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/constants.js +29 -0
  147. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +24 -0
  148. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +76 -0
  149. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +39 -0
  150. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
  151. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +68 -0
  152. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/pathCreator.js +23 -0
  153. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/readI18nValues.js +29 -0
  154. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +43 -0
  155. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +77 -0
  156. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/classesAndObject.test.js +56 -0
  157. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/conditionalOperation.test.js +154 -0
  158. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function.test.js +89 -0
  159. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function2.test.js +71 -0
  160. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/loop.test.js +112 -0
  161. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minifyBooleanValues.test.js +43 -0
  162. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minimizeVariableNames.test.js +45 -0
  163. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/promise.test.js +53 -0
  164. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
  165. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeUnusedStrings.test.js +14 -0
  166. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/variableDeclaration.test.js +30 -0
  167. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +66 -0
  168. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
  169. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/hashUtils.js +19 -0
  170. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/index.js +31 -0
  171. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +129 -0
  172. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +60 -0
  173. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/addFilesNamesToManifestJson.test.js +51 -0
  174. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/createInitialEntries.test.js +95 -0
  175. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/removeHashFromFileName.test.js +91 -0
  176. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +30 -0
  177. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +23 -0
  178. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
  179. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
  180. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +46 -0
  181. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
  182. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RTLSplitPlugin.js +1 -0
  183. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +193 -0
  184. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +62 -0
  185. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +84 -0
  186. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -0
  187. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +27 -0
  188. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RuntimeResourceCleanup/index.js +73 -0
  189. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/classHandling.js +20 -0
  190. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/index.js +78 -0
  191. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/selectorWeightPrefixAdder.js +51 -0
  192. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/windowsModification.js +16 -0
  193. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPlugin.js +114 -0
  194. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPluginUtils.js +13 -0
  195. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +68 -0
  196. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/addHashToFilePath.js +22 -0
  197. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/index.js +55 -0
  198. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifyCss1.test.js +74 -0
  199. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifycss.test.js +64 -0
  200. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/utilities.js +28 -0
  201. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/index.js.js +49 -0
  202. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
  203. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +362 -0
  204. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/custom_attribute_plugin/index.js +80 -0
  205. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
  206. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
  207. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
  208. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/classesAndObject.test.js +56 -0
  209. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/conditionalOperation.test.js +154 -0
  210. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function.test.js +89 -0
  211. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function2.test.js +71 -0
  212. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/loop.test.js +112 -0
  213. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minifyBooleanValues.test.js +43 -0
  214. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minimizeVariableNames.test.js +45 -0
  215. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/promise.test.js +53 -0
  216. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
  217. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeUnusedStrings.test.js +14 -0
  218. package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/variableDeclaration.test.js +30 -0
  219. package/packages/client_build_tool/lib/shared/bundler/webpack/defaultVendorPatternList.js +13 -0
  220. package/packages/client_build_tool/lib/shared/bundler/webpack/devtoolConfig.js +13 -0
  221. package/packages/client_build_tool/lib/shared/bundler/webpack/entryConfig.js +28 -0
  222. package/packages/client_build_tool/lib/shared/bundler/webpack/externals.js +17 -0
  223. package/packages/client_build_tool/lib/shared/bundler/webpack/getCSSLoaders.js +29 -0
  224. package/packages/client_build_tool/lib/shared/bundler/webpack/getFilenameFromModule.js +24 -0
  225. package/packages/client_build_tool/lib/shared/bundler/webpack/jsLoaders.js +17 -0
  226. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +12 -0
  227. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +18 -0
  228. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +56 -0
  229. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configHtmlTemplateLoader.js +18 -0
  230. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
  231. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configWebWorkerLoader.js +21 -0
  232. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +86 -0
  233. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +65 -0
  234. package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +21 -0
  235. package/packages/client_build_tool/lib/shared/bundler/webpack/loaders/miniCssFallBackLoader.js +7 -0
  236. package/packages/client_build_tool/lib/shared/bundler/webpack/loaders/workerLoader.js +133 -0
  237. package/packages/client_build_tool/lib/shared/bundler/webpack/optimizationConfig.js +56 -0
  238. package/packages/client_build_tool/lib/shared/bundler/webpack/outputConfig.js +38 -0
  239. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
  240. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configBundleIntegrityReport.js +36 -0
  241. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +28 -0
  242. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +27 -0
  243. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +63 -0
  244. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCustomAttributesPlugin.js +20 -0
  245. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCustomScriptLoadingStrategyPlugin.js +76 -0
  246. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
  247. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +51 -0
  248. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +56 -0
  249. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +41 -0
  250. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configIgnorePlugin.js +16 -0
  251. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +44 -0
  252. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configMiniCSSExtractPlugin.js +24 -0
  253. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +24 -0
  254. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +21 -0
  255. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configRtlCssPlugin.js +27 -0
  256. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configRuntimeResourceCleanup.js +31 -0
  257. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
  258. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +40 -0
  259. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
  260. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configTPHashMappingPlugin.js +32 -0
  261. package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
  262. package/packages/client_build_tool/lib/shared/bundler/webpack/plugins.js +58 -0
  263. package/packages/client_build_tool/lib/shared/bundler/webpack/resolvers.js +82 -0
  264. package/packages/client_build_tool/lib/shared/bundler/webpack/splitChunksConfig.js +116 -0
  265. package/packages/client_build_tool/lib/shared/bundler/webpack/statsConfig.js +30 -0
  266. package/packages/client_build_tool/lib/shared/bundler/webpack/tsLoaders.js +17 -0
  267. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/__test__/getArrayWithDefaultWithCustomEqual.test.js +54 -0
  268. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/__test__/updateArrayWithDefault.test.js +47 -0
  269. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/index.js +31 -0
  270. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/object-manipulation.js +87 -0
  271. package/packages/client_build_tool/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +34 -0
  272. package/packages/client_build_tool/lib/shared/bundler/webpack/webpackBuild.js +27 -0
  273. package/packages/client_build_tool/lib/shared/bundler/webpack/webpackConfig.js +58 -0
  274. package/packages/client_build_tool/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
  275. package/packages/client_build_tool/lib/shared/commands-utils/getCliPath.js +39 -0
  276. package/packages/client_build_tool/lib/shared/commands-utils/index.js +29 -0
  277. package/packages/client_build_tool/lib/shared/commands-utils/log.js +13 -0
  278. package/packages/client_build_tool/lib/shared/commands-utils/readArgsFormCommandLine.js +11 -0
  279. package/packages/client_build_tool/lib/shared/commands-utils/readOptionFormCommandLine.js +11 -0
  280. package/packages/client_build_tool/lib/shared/commands-utils/spawnSyncIO.js +38 -0
  281. package/packages/client_build_tool/lib/shared/constants.js +48 -0
  282. package/packages/client_build_tool/lib/shared/fileUtils/copyFile.js +38 -0
  283. package/packages/client_build_tool/lib/shared/fileUtils/directoryIterator.js +21 -0
  284. package/packages/client_build_tool/lib/shared/fileUtils/watchRun.js +112 -0
  285. package/packages/client_build_tool/lib/shared/postcss/__test__/ignoreTestCases.test.js +80 -0
  286. package/packages/client_build_tool/lib/shared/postcss/__test__/postcss-rtl-all-cases.test.js +119 -0
  287. package/packages/client_build_tool/lib/shared/postcss/__test__/postcssRtl.spec.js +34 -0
  288. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
  289. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
  290. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
  291. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
  292. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
  293. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
  294. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
  295. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
  296. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
  297. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
  298. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/RTLSplitPlugin.js +139 -0
  299. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
  300. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
  301. package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +347 -0
  302. package/packages/client_build_tool/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
  303. package/packages/client_build_tool/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
  304. package/packages/client_build_tool/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
  305. package/packages/client_build_tool/lib/shared/postcss/runPostCssForCssFile.js +37 -0
  306. package/packages/client_build_tool/lib/shared/pre_process/runPreProcess.js +58 -0
  307. package/packages/client_build_tool/lib/shared/server/configWebpackDevMiddleware.js +41 -0
  308. package/packages/client_build_tool/lib/shared/server/corsHandling.js +30 -0
  309. package/packages/client_build_tool/lib/shared/server/getIp.js +30 -0
  310. package/packages/client_build_tool/lib/shared/server/getServerURL.js +36 -0
  311. package/packages/client_build_tool/lib/shared/server/httpsOptions.js +46 -0
  312. package/packages/client_build_tool/lib/shared/server/initExpressApp.js +19 -0
  313. package/packages/client_build_tool/lib/shared/server/initialHTMLHandling.js +99 -0
  314. package/packages/client_build_tool/lib/shared/server/mockApiHandler.js +60 -0
  315. package/packages/client_build_tool/lib/shared/server/mockServer.js +41 -0
  316. package/packages/client_build_tool/lib/shared/server/serveContextFiles.js +27 -0
  317. package/packages/client_build_tool/lib/shared/server/serverBywebpackDevMiddleware.js +35 -0
  318. package/packages/client_build_tool/lib/shared/server/startHttpServer.js +26 -0
  319. package/packages/client_build_tool/lib/shared/server/startHttpsServer.js +38 -0
  320. package/packages/client_build_tool/lib/shared/server/unwanted/addHttp2Server.js +41 -0
  321. package/packages/client_build_tool/lib/shared/server/unwanted/configWebpackDevMiddleware.js +44 -0
  322. package/packages/client_build_tool/lib/shared/server/unwanted/mockApiSupport.js +19 -0
  323. package/packages/client_build_tool/lib/shared/server/unwanted/websocketMockSetup.js +48 -0
  324. package/packages/client_build_tool/lib/shared/server/urlConcat.js +32 -0
  325. package/packages/client_build_tool/lib/shared/utils/requireLocalOrGlobal.js +81 -0
  326. package/packages/client_build_tool/lib/shared/utils/utils.js +1 -0
  327. package/packages/client_build_tool/lib/shared/utils/versionPrint.js +20 -0
  328. package/packages/client_build_tool/node_modules/history/CHANGES.md +395 -0
  329. package/packages/client_build_tool/node_modules/history/DOMUtils.js +3 -0
  330. package/packages/client_build_tool/node_modules/history/ExecutionEnvironment.js +3 -0
  331. package/packages/client_build_tool/node_modules/history/LICENSE +21 -0
  332. package/packages/client_build_tool/node_modules/history/LocationUtils.js +3 -0
  333. package/packages/client_build_tool/node_modules/history/PathUtils.js +3 -0
  334. package/packages/client_build_tool/node_modules/history/README.md +282 -0
  335. package/packages/client_build_tool/node_modules/history/cjs/history.js +933 -0
  336. package/packages/client_build_tool/node_modules/history/cjs/history.min.js +1 -0
  337. package/packages/client_build_tool/node_modules/history/createBrowserHistory.js +3 -0
  338. package/packages/client_build_tool/node_modules/history/createHashHistory.js +3 -0
  339. package/packages/client_build_tool/node_modules/history/createMemoryHistory.js +3 -0
  340. package/packages/client_build_tool/node_modules/history/createTransitionManager.js +3 -0
  341. package/packages/client_build_tool/node_modules/history/es/DOMUtils.js +7 -0
  342. package/packages/client_build_tool/node_modules/history/es/ExecutionEnvironment.js +7 -0
  343. package/packages/client_build_tool/node_modules/history/es/LocationUtils.js +7 -0
  344. package/packages/client_build_tool/node_modules/history/es/PathUtils.js +7 -0
  345. package/packages/client_build_tool/node_modules/history/es/createBrowserHistory.js +7 -0
  346. package/packages/client_build_tool/node_modules/history/es/createHashHistory.js +7 -0
  347. package/packages/client_build_tool/node_modules/history/es/createMemoryHistory.js +7 -0
  348. package/packages/client_build_tool/node_modules/history/es/createTransitionManager.js +7 -0
  349. package/packages/client_build_tool/node_modules/history/es/warnAboutDeprecatedESMImport.js +35 -0
  350. package/packages/client_build_tool/node_modules/history/esm/history.js +904 -0
  351. package/packages/client_build_tool/node_modules/history/index.js +7 -0
  352. package/packages/client_build_tool/node_modules/history/package.json +120 -0
  353. package/packages/client_build_tool/node_modules/history/umd/history.js +1059 -0
  354. package/packages/client_build_tool/node_modules/history/umd/history.min.js +1 -0
  355. 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
+ }