@zohodesk/react-cli 1.1.26 → 1.1.27-exp.2
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +4 -1
- package/lib/plugins/I18nSplitPlugin/utils/unicodeConversion.js +14 -0
- package/npm-shrinkwrap.json +1 -1
- package/package.json +1 -1
- package/packages/client_build_tool/lib/allCommandsConfigs.js +25 -0
- package/packages/client_build_tool/lib/commands/build/commandExecutor.js +17 -0
- package/packages/client_build_tool/lib/commands/build/config.js +12 -0
- package/packages/client_build_tool/lib/commands/build/optionsProcessor.js +35 -0
- package/packages/client_build_tool/lib/commands/build/preProcessor.js +12 -0
- package/packages/client_build_tool/lib/commands/buildEs/commandExecutor.js +33 -0
- package/packages/client_build_tool/lib/commands/buildEs/config.js +12 -0
- package/packages/client_build_tool/lib/commands/buildEs/preProcessor.js +17 -0
- package/packages/client_build_tool/lib/commands/buildLib/commandExecutor.js +33 -0
- package/packages/client_build_tool/lib/commands/buildLib/config.js +12 -0
- package/packages/client_build_tool/lib/commands/buildLib/preProcessor.js +17 -0
- package/packages/client_build_tool/lib/commands/mockserver/commandExecutor.js +43 -0
- package/packages/client_build_tool/lib/commands/mockserver/config.js +12 -0
- package/packages/client_build_tool/lib/commands/pre_process/commandExecutor.js +18 -0
- package/packages/client_build_tool/lib/commands/pre_process/config.js +12 -0
- package/packages/client_build_tool/lib/commands/start/commandExecutor.js +12 -0
- package/packages/client_build_tool/lib/commands/start/config.js +12 -0
- package/packages/client_build_tool/lib/commands/start/optionsProcessor.js +30 -0
- package/packages/client_build_tool/lib/commands/start/preProcessor.js +12 -0
- package/packages/client_build_tool/lib/commands/template/commandExecutor.js +28 -0
- package/packages/client_build_tool/lib/commands/template/config.js +12 -0
- package/packages/client_build_tool/lib/commands/version/commandExecutor.js +14 -0
- package/packages/client_build_tool/lib/commands/version/config.js +12 -0
- package/packages/client_build_tool/lib/commandsRouter.js +74 -0
- package/packages/client_build_tool/lib/index.js +12 -0
- package/packages/client_build_tool/lib/logger.js +34 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/otherTestCases.test.js +234 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingDifferentDataTypesToSchema.test.js +103 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingEmptyObjects.test.js +41 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertArray.test.js +68 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertNumber.test.js +68 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertObject.test.js +141 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertString.test.js +68 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertUndefinedAndNull.test.js +132 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertArray.test.js +71 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertNumber.test.js +71 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertObject.test.js +73 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertString.test.js +71 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertUndefinedAndNull.test.js +138 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/index.js +34 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isObject.js +10 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isValid.js +14 -0
- package/packages/client_build_tool/lib/schemas/cliArgsToObject.js +39 -0
- package/packages/client_build_tool/lib/schemas/defaultConfigValues.js +349 -0
- package/packages/client_build_tool/lib/schemas/defaultConfigValuesOnly.js +187 -0
- package/packages/client_build_tool/lib/schemas/deprecatedOptionsHandler.js +67 -0
- package/packages/client_build_tool/lib/schemas/getNpmVersion.js +22 -0
- package/packages/client_build_tool/lib/schemas/giveDefaultValue.js +18 -0
- package/packages/client_build_tool/lib/schemas/npmConfigToObject.js +35 -0
- package/packages/client_build_tool/lib/schemas/readOptions.js +54 -0
- package/packages/client_build_tool/lib/schemas/readOptionsForConfigFile.js +42 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Map.test.js +15 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/MathAndNumberMethod.test.js +30 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/ObjectAndModules.test.js +47 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Sets.test.js +18 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Symbol.test.js +25 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/arrowFunction.test.js +34 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/block-scoping.test.js +18 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/classes.test.js +55 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/defaultParameterValues.test.js +18 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/extraFeatures.test.js +82 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/forOf.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/promise.test.js +22 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadOperator.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadParams.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/stringAndArrayMethods.test.js +67 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/variables.test.js +21 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2016/array-includes.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2016/exponentationOperator.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/asyncAndawait.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-entries.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-getOwnproperties.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-values.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/stringMethods.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/asynchronous-iterator.test.js +19 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/object-rest-spread.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/promise-finally.test.js +26 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/regularExpressions.test.js +35 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/Json.stringify.test.js +21 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/arrayMethods.test.js +31 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/object-fromEntriesMethod.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/optionalCatchBinding.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/revisedFunctionToString.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/trim-startAndend-method.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/AssignmentOperator.test.js +27 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/Dynamic-Import.test.js +19 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/NullishOperator.test.js +15 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/bigInt.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/chainOperator.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/export-namespace-from.test.js +12 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/promiseAllSettledMathod.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/stringMatchMethod.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/NumericSeparator.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/logicalOperatorAssignments.test.js +25 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/promiseAny.test.js +16 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/stringReplaceMethod.test.js +16 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/Array-atMethod.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjectKeyCheck.test.js +27 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjecthasOwnMethod.test.js +19 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/RegexMatchIndices.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/String-atMethod.test.js +15 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/error.Cause.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/keysCheckinPrivateFields.test.js +27 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/privateMethodsAndFields.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/staticFieldsAndMethod.test.js +54 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/topLevelAwait.test.js +11 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/weakRef.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/utilities.js +28 -0
- package/packages/client_build_tool/lib/shared/babel/addDefaultPlugins.js +15 -0
- package/packages/client_build_tool/lib/shared/babel/babelWebConfig.js +54 -0
- package/packages/client_build_tool/lib/shared/babel/babel_plugins/removeAttributesPlugin.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/getBabelPlugin.js +37 -0
- package/packages/client_build_tool/lib/shared/babel/runBabelForJSFile.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/runBabelForTsFile.js +30 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/decidePublicPath.js +57 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/libAlias.js +31 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/modeUtils.js +39 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/nameTemplates.js +105 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/resourceBasedPublicPath.js +21 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/configCustomLoaders.js +10 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/cssLoaders.js +16 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/BundleIntegrityReport/index.js +83 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/index.js +119 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/webpackCustomJsUrlLoader.js +46 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CustomScriptLoadingPlugin.js +109 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +11 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +174 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +76 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +223 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/constants.js +29 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +24 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +76 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +39 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +68 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/pathCreator.js +23 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/readI18nValues.js +29 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +43 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +77 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/classesAndObject.test.js +56 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/conditionalOperation.test.js +154 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function.test.js +89 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function2.test.js +71 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/loop.test.js +112 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minifyBooleanValues.test.js +43 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minimizeVariableNames.test.js +45 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/promise.test.js +53 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeUnusedStrings.test.js +14 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/variableDeclaration.test.js +30 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +66 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/hashUtils.js +19 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/index.js +31 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +129 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +60 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/addFilesNamesToManifestJson.test.js +51 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/createInitialEntries.test.js +95 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/removeHashFromFileName.test.js +91 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +30 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +23 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +46 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RTLSplitPlugin.js +1 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +193 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +62 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +84 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +27 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RuntimeResourceCleanup/index.js +73 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/classHandling.js +20 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/index.js +82 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/selectorWeightPrefixAdder.js +51 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/windowsModification.js +16 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPlugin.js +114 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPluginUtils.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +68 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/addHashToFilePath.js +22 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/index.js +55 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifyCss1.test.js +74 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifycss.test.js +64 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/utilities.js +28 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/index.js.js +49 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +362 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/custom_attribute_plugin/index.js +80 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/classesAndObject.test.js +56 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/conditionalOperation.test.js +154 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function.test.js +89 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function2.test.js +71 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/loop.test.js +112 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minifyBooleanValues.test.js +43 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minimizeVariableNames.test.js +45 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/promise.test.js +53 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeUnusedStrings.test.js +14 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/variableDeclaration.test.js +30 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/defaultVendorPatternList.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/devtoolConfig.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/entryConfig.js +28 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/externals.js +17 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/getCSSLoaders.js +29 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/getFilenameFromModule.js +24 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/jsLoaders.js +17 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +12 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +56 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configHtmlTemplateLoader.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configWebWorkerLoader.js +21 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +86 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +65 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +21 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaders/miniCssFallBackLoader.js +7 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaders/workerLoader.js +133 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/optimizationConfig.js +56 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/outputConfig.js +38 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configBundleIntegrityReport.js +36 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +28 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +27 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +63 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCustomAttributesPlugin.js +20 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCustomScriptLoadingStrategyPlugin.js +76 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +51 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +56 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +41 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configIgnorePlugin.js +16 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +44 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configMiniCSSExtractPlugin.js +24 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +24 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +21 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configRtlCssPlugin.js +27 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configRuntimeResourceCleanup.js +31 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +40 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configTPHashMappingPlugin.js +32 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/plugins.js +58 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/resolvers.js +82 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/splitChunksConfig.js +116 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/statsConfig.js +30 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/tsLoaders.js +17 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/utils/__test__/getArrayWithDefaultWithCustomEqual.test.js +54 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/utils/__test__/updateArrayWithDefault.test.js +47 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/utils/index.js +31 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/utils/object-manipulation.js +87 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +34 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/webpackBuild.js +27 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/webpackConfig.js +58 -0
- package/packages/client_build_tool/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
- package/packages/client_build_tool/lib/shared/commands-utils/getCliPath.js +39 -0
- package/packages/client_build_tool/lib/shared/commands-utils/index.js +29 -0
- package/packages/client_build_tool/lib/shared/commands-utils/log.js +13 -0
- package/packages/client_build_tool/lib/shared/commands-utils/readArgsFormCommandLine.js +11 -0
- package/packages/client_build_tool/lib/shared/commands-utils/readOptionFormCommandLine.js +11 -0
- package/packages/client_build_tool/lib/shared/commands-utils/spawnSyncIO.js +38 -0
- package/packages/client_build_tool/lib/shared/constants.js +48 -0
- package/packages/client_build_tool/lib/shared/fileUtils/copyFile.js +38 -0
- package/packages/client_build_tool/lib/shared/fileUtils/directoryIterator.js +21 -0
- package/packages/client_build_tool/lib/shared/fileUtils/watchRun.js +112 -0
- package/packages/client_build_tool/lib/shared/postcss/__test__/ignoreTestCases.test.js +80 -0
- package/packages/client_build_tool/lib/shared/postcss/__test__/postcss-rtl-all-cases.test.js +119 -0
- package/packages/client_build_tool/lib/shared/postcss/__test__/postcssRtl.spec.js +34 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/RTLSplitPlugin.js +139 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +343 -0
- package/packages/client_build_tool/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
- package/packages/client_build_tool/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
- package/packages/client_build_tool/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
- package/packages/client_build_tool/lib/shared/postcss/runPostCssForCssFile.js +37 -0
- package/packages/client_build_tool/lib/shared/pre_process/runPreProcess.js +58 -0
- package/packages/client_build_tool/lib/shared/server/configWebpackDevMiddleware.js +41 -0
- package/packages/client_build_tool/lib/shared/server/corsHandling.js +30 -0
- package/packages/client_build_tool/lib/shared/server/getIp.js +30 -0
- package/packages/client_build_tool/lib/shared/server/getServerURL.js +36 -0
- package/packages/client_build_tool/lib/shared/server/httpsOptions.js +46 -0
- package/packages/client_build_tool/lib/shared/server/initExpressApp.js +19 -0
- package/packages/client_build_tool/lib/shared/server/initialHTMLHandling.js +99 -0
- package/packages/client_build_tool/lib/shared/server/mockApiHandler.js +60 -0
- package/packages/client_build_tool/lib/shared/server/mockServer.js +41 -0
- package/packages/client_build_tool/lib/shared/server/serveContextFiles.js +27 -0
- package/packages/client_build_tool/lib/shared/server/serverBywebpackDevMiddleware.js +35 -0
- package/packages/client_build_tool/lib/shared/server/startHttpServer.js +26 -0
- package/packages/client_build_tool/lib/shared/server/startHttpsServer.js +38 -0
- package/packages/client_build_tool/lib/shared/server/unwanted/addHttp2Server.js +41 -0
- package/packages/client_build_tool/lib/shared/server/unwanted/configWebpackDevMiddleware.js +44 -0
- package/packages/client_build_tool/lib/shared/server/unwanted/mockApiSupport.js +19 -0
- package/packages/client_build_tool/lib/shared/server/unwanted/websocketMockSetup.js +48 -0
- package/packages/client_build_tool/lib/shared/server/urlConcat.js +32 -0
- package/packages/client_build_tool/lib/shared/utils/requireLocalOrGlobal.js +81 -0
- package/packages/client_build_tool/lib/shared/utils/utils.js +1 -0
- package/packages/client_build_tool/lib/shared/utils/versionPrint.js +20 -0
- package/packages/client_build_tool/node_modules/history/CHANGES.md +395 -0
- package/packages/client_build_tool/node_modules/history/DOMUtils.js +3 -0
- package/packages/client_build_tool/node_modules/history/ExecutionEnvironment.js +3 -0
- package/packages/client_build_tool/node_modules/history/LICENSE +21 -0
- package/packages/client_build_tool/node_modules/history/LocationUtils.js +3 -0
- package/packages/client_build_tool/node_modules/history/PathUtils.js +3 -0
- package/packages/client_build_tool/node_modules/history/README.md +282 -0
- package/packages/client_build_tool/node_modules/history/cjs/history.js +933 -0
- package/packages/client_build_tool/node_modules/history/cjs/history.min.js +1 -0
- package/packages/client_build_tool/node_modules/history/createBrowserHistory.js +3 -0
- package/packages/client_build_tool/node_modules/history/createHashHistory.js +3 -0
- package/packages/client_build_tool/node_modules/history/createMemoryHistory.js +3 -0
- package/packages/client_build_tool/node_modules/history/createTransitionManager.js +3 -0
- package/packages/client_build_tool/node_modules/history/es/DOMUtils.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/ExecutionEnvironment.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/LocationUtils.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/PathUtils.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/createBrowserHistory.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/createHashHistory.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/createMemoryHistory.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/createTransitionManager.js +7 -0
- package/packages/client_build_tool/node_modules/history/es/warnAboutDeprecatedESMImport.js +35 -0
- package/packages/client_build_tool/node_modules/history/esm/history.js +904 -0
- package/packages/client_build_tool/node_modules/history/index.js +7 -0
- package/packages/client_build_tool/node_modules/history/package.json +120 -0
- package/packages/client_build_tool/node_modules/history/umd/history.js +1059 -0
- package/packages/client_build_tool/node_modules/history/umd/history.min.js +1 -0
- 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,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
|
+
}
|