@tamagui/static 2.7.7 → 3.0.0-beta.1093.1
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.
- package/dist/cjs/check-dep-versions.cjs +354 -0
- package/dist/cjs/checkDeps.cjs +301 -0
- package/dist/cjs/compiler.cjs +349 -0
- package/dist/cjs/compilerHost.cjs +2285 -0
- package/dist/cjs/componentDiscovery.cjs +94 -0
- package/dist/cjs/constants.cjs +32 -0
- package/dist/cjs/domStructuralPass.cjs +121 -0
- package/dist/cjs/exports.cjs +44 -0
- package/dist/cjs/extractor/addLocalExports.cjs +63 -0
- package/dist/cjs/extractor/bundle.cjs +229 -0
- package/dist/cjs/extractor/bundleConfig.cjs +769 -0
- package/dist/cjs/extractor/concatClassName.cjs +120 -0
- package/dist/cjs/extractor/detectModuleFormat.cjs +53 -0
- package/dist/cjs/extractor/esbuildAliasPlugin.cjs +46 -0
- package/dist/cjs/extractor/esbuildTsconfigPaths.cjs +91 -0
- package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +42 -0
- package/dist/cjs/extractor/loadTamagui.cjs +394 -0
- package/dist/cjs/extractor/regenerateConfig.cjs +160 -0
- package/dist/cjs/extractor/watchTamaguiConfig.cjs +63 -0
- package/dist/cjs/getPragmaOptions.cjs +66 -0
- package/dist/cjs/helpers/memoize.cjs +41 -0
- package/dist/cjs/helpers/requireTamaguiCore.cjs +39 -0
- package/dist/cjs/index.cjs +33 -0
- package/dist/cjs/registerRequire.cjs +219 -0
- package/dist/cjs/server.cjs +65 -0
- package/dist/cjs/staticEvaluationIgnoredModules.cjs +85 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/zero/artifact.cjs +144 -0
- package/dist/cjs/zero/graph.cjs +208 -0
- package/dist/cjs/zero/identity.cjs +60 -0
- package/dist/cjs/zero/index.cjs +33 -0
- package/dist/cjs/zero/islands.cjs +234 -0
- package/dist/cjs/zero/options.cjs +162 -0
- package/dist/cjs/zero/ownership.cjs +78 -0
- package/dist/cjs/zero/theme.cjs +337 -0
- package/dist/cjs/zero/transform.cjs +207 -0
- package/dist/esm/check-dep-versions.mjs +329 -0
- package/dist/esm/check-dep-versions.mjs.map +1 -0
- package/dist/esm/checkDeps.mjs +279 -0
- package/dist/esm/checkDeps.mjs.map +1 -0
- package/dist/esm/compiler.mjs +319 -0
- package/dist/esm/compiler.mjs.map +1 -0
- package/dist/esm/compilerHost.mjs +2263 -0
- package/dist/esm/compilerHost.mjs.map +1 -0
- package/dist/esm/componentDiscovery.mjs +69 -0
- package/dist/esm/componentDiscovery.mjs.map +1 -0
- package/dist/esm/constants.mjs +7 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/domStructuralPass.mjs +102 -0
- package/dist/esm/domStructuralPass.mjs.map +1 -0
- package/dist/esm/exports.mjs +29 -0
- package/dist/esm/extractor/addLocalExports.mjs +44 -0
- package/dist/esm/extractor/addLocalExports.mjs.map +1 -0
- package/dist/esm/extractor/bundle.mjs +199 -0
- package/dist/esm/extractor/bundle.mjs.map +1 -0
- package/dist/esm/extractor/bundleConfig.mjs +728 -0
- package/dist/esm/extractor/bundleConfig.mjs.map +1 -0
- package/dist/esm/extractor/concatClassName.mjs +100 -0
- package/dist/esm/extractor/concatClassName.mjs.map +1 -0
- package/dist/esm/extractor/detectModuleFormat.mjs +31 -0
- package/dist/esm/extractor/detectModuleFormat.mjs.map +1 -0
- package/dist/esm/extractor/esbuildAliasPlugin.mjs +26 -0
- package/dist/esm/extractor/esbuildAliasPlugin.mjs.map +1 -0
- package/dist/esm/extractor/esbuildTsconfigPaths.mjs +63 -0
- package/dist/esm/extractor/esbuildTsconfigPaths.mjs.map +1 -0
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs +23 -0
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs.map +1 -0
- package/dist/esm/extractor/loadTamagui.mjs +357 -0
- package/dist/esm/extractor/loadTamagui.mjs.map +1 -0
- package/dist/esm/extractor/regenerateConfig.mjs +131 -0
- package/dist/esm/extractor/regenerateConfig.mjs.map +1 -0
- package/dist/esm/extractor/watchTamaguiConfig.mjs +43 -0
- package/dist/esm/extractor/watchTamaguiConfig.mjs.map +1 -0
- package/dist/esm/getPragmaOptions.mjs +46 -0
- package/dist/esm/getPragmaOptions.mjs.map +1 -0
- package/dist/esm/helpers/memoize.mjs +21 -0
- package/dist/esm/helpers/memoize.mjs.map +1 -0
- package/dist/esm/helpers/requireTamaguiCore.mjs +19 -0
- package/dist/esm/helpers/requireTamaguiCore.mjs.map +1 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/registerRequire.mjs +195 -0
- package/dist/esm/registerRequire.mjs.map +1 -0
- package/dist/esm/server.mjs +40 -0
- package/dist/esm/server.mjs.map +1 -0
- package/dist/esm/setup.mjs +0 -0
- package/dist/esm/staticEvaluationIgnoredModules.mjs +61 -0
- package/dist/esm/staticEvaluationIgnoredModules.mjs.map +1 -0
- package/dist/esm/types.mjs +0 -0
- package/dist/esm/zero/artifact.mjs +119 -0
- package/dist/esm/zero/artifact.mjs.map +1 -0
- package/dist/esm/zero/graph.mjs +170 -0
- package/dist/esm/zero/graph.mjs.map +1 -0
- package/dist/esm/zero/identity.mjs +36 -0
- package/dist/esm/zero/identity.mjs.map +1 -0
- package/dist/esm/zero/index.mjs +19 -0
- package/dist/esm/zero/islands.mjs +200 -0
- package/dist/esm/zero/islands.mjs.map +1 -0
- package/dist/esm/zero/options.mjs +129 -0
- package/dist/esm/zero/options.mjs.map +1 -0
- package/dist/esm/zero/ownership.mjs +48 -0
- package/dist/esm/zero/ownership.mjs.map +1 -0
- package/dist/esm/zero/theme.mjs +313 -0
- package/dist/esm/zero/theme.mjs.map +1 -0
- package/dist/esm/zero/transform.mjs +182 -0
- package/dist/esm/zero/transform.mjs.map +1 -0
- package/package.json +38 -47
- package/src/check-dep-versions.ts +2 -2
- package/src/checkDeps.ts +3 -2
- package/src/compiler.ts +506 -0
- package/src/compilerHost.ts +3752 -0
- package/src/componentDiscovery.ts +105 -0
- package/src/constants.ts +0 -5
- package/src/domStructuralPass.ts +190 -0
- package/src/exports.ts +5 -6
- package/src/extractor/addLocalExports.ts +49 -0
- package/src/extractor/bundle.ts +38 -40
- package/src/extractor/bundleConfig.ts +368 -187
- package/src/extractor/concatClassName.ts +21 -24
- package/src/extractor/getTamaguiConfigPathFromOptionsConfig.ts +13 -5
- package/src/extractor/loadTamagui.ts +196 -143
- package/src/extractor/regenerateConfig.ts +65 -13
- package/src/extractor/watchTamaguiConfig.ts +6 -1
- package/src/helpers/requireTamaguiCore.ts +6 -1
- package/src/registerRequire.ts +94 -132
- package/src/staticEvaluationIgnoredModules.ts +74 -0
- package/src/types.ts +2 -107
- package/src/zero/artifact.ts +142 -0
- package/src/zero/graph.ts +359 -0
- package/src/zero/identity.ts +73 -0
- package/src/zero/index.ts +9 -0
- package/src/zero/islands.ts +265 -0
- package/src/zero/options.ts +239 -0
- package/src/zero/ownership.ts +113 -0
- package/src/zero/theme.ts +526 -0
- package/src/zero/transform.ts +329 -0
- package/types/check-dep-versions.d.ts.map +1 -1
- package/types/checkDeps.d.ts.map +1 -1
- package/types/compiler.d.ts +134 -0
- package/types/compiler.d.ts.map +1 -0
- package/types/compilerHost.d.ts +38 -0
- package/types/compilerHost.d.ts.map +1 -0
- package/types/componentDiscovery.d.ts +27 -0
- package/types/componentDiscovery.d.ts.map +1 -0
- package/types/constants.d.ts +0 -1
- package/types/constants.d.ts.map +1 -1
- package/types/domStructuralPass.d.ts +3 -0
- package/types/domStructuralPass.d.ts.map +1 -0
- package/types/exports.d.ts +5 -6
- package/types/exports.d.ts.map +1 -1
- package/types/extractor/addLocalExports.d.ts +3 -0
- package/types/extractor/addLocalExports.d.ts.map +1 -0
- package/types/extractor/bundle.d.ts +66 -65
- package/types/extractor/bundle.d.ts.map +1 -1
- package/types/extractor/bundleConfig.d.ts +26 -4
- package/types/extractor/bundleConfig.d.ts.map +1 -1
- package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -1
- package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts +1 -1
- package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts.map +1 -1
- package/types/extractor/loadTamagui.d.ts +26 -3
- package/types/extractor/loadTamagui.d.ts.map +1 -1
- package/types/extractor/regenerateConfig.d.ts +1 -1
- package/types/extractor/regenerateConfig.d.ts.map +1 -1
- package/types/extractor/watchTamaguiConfig.d.ts.map +1 -1
- package/types/getPragmaOptions.d.ts +1 -1
- package/types/helpers/memoize.d.ts +1 -1
- package/types/helpers/memoize.d.ts.map +1 -1
- package/types/helpers/requireTamaguiCore.d.ts.map +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/registerRequire.d.ts +2 -2
- package/types/registerRequire.d.ts.map +1 -1
- package/types/staticEvaluationIgnoredModules.d.ts +9 -0
- package/types/staticEvaluationIgnoredModules.d.ts.map +1 -0
- package/types/types.d.ts +2 -90
- package/types/types.d.ts.map +1 -1
- package/types/zero/artifact.d.ts +44 -0
- package/types/zero/artifact.d.ts.map +1 -0
- package/types/zero/graph.d.ts +139 -0
- package/types/zero/graph.d.ts.map +1 -0
- package/types/zero/identity.d.ts +33 -0
- package/types/zero/identity.d.ts.map +1 -0
- package/types/zero/index.d.ts +10 -0
- package/types/zero/index.d.ts.map +1 -0
- package/types/zero/islands.d.ts +56 -0
- package/types/zero/islands.d.ts.map +1 -0
- package/types/zero/options.d.ts +58 -0
- package/types/zero/options.d.ts.map +1 -0
- package/types/zero/ownership.d.ts +51 -0
- package/types/zero/ownership.d.ts.map +1 -0
- package/types/zero/theme.d.ts +85 -0
- package/types/zero/theme.d.ts.map +1 -0
- package/types/zero/transform.d.ts +53 -0
- package/types/zero/transform.d.ts.map +1 -0
- package/dist/check-dep-versions.cjs +0 -372
- package/dist/checkDeps.cjs +0 -271
- package/dist/constants.cjs +0 -51
- package/dist/exports.cjs +0 -48
- package/dist/extractor/accessSafe.cjs +0 -48
- package/dist/extractor/babelParse.cjs +0 -56
- package/dist/extractor/buildClassName.cjs +0 -86
- package/dist/extractor/bundle.cjs +0 -234
- package/dist/extractor/bundleConfig.cjs +0 -729
- package/dist/extractor/concatClassName.cjs +0 -129
- package/dist/extractor/createEvaluator.cjs +0 -88
- package/dist/extractor/createExtractor.cjs +0 -1968
- package/dist/extractor/createLogger.cjs +0 -50
- package/dist/extractor/detectModuleFormat.cjs +0 -55
- package/dist/extractor/ensureImportingConcat.cjs +0 -54
- package/dist/extractor/errors.cjs +0 -28
- package/dist/extractor/esbuildAliasPlugin.cjs +0 -56
- package/dist/extractor/esbuildTsconfigPaths.cjs +0 -108
- package/dist/extractor/evaluateAstNode.cjs +0 -128
- package/dist/extractor/extractHelpers.cjs +0 -182
- package/dist/extractor/extractMediaStyle.cjs +0 -169
- package/dist/extractor/extractToClassNames.cjs +0 -475
- package/dist/extractor/extractToNative.cjs +0 -369
- package/dist/extractor/findTopmostFunction.cjs +0 -43
- package/dist/extractor/generatedUid.cjs +0 -58
- package/dist/extractor/getPrefixLogs.cjs +0 -31
- package/dist/extractor/getPropValueFromAttributes.cjs +0 -85
- package/dist/extractor/getSourceModule.cjs +0 -100
- package/dist/extractor/getStaticBindingsForScope.cjs +0 -213
- package/dist/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +0 -41
- package/dist/extractor/hasTopLevelAwait.cjs +0 -62
- package/dist/extractor/hoistClassNames.cjs +0 -76
- package/dist/extractor/literalToAst.cjs +0 -109
- package/dist/extractor/loadFile.cjs +0 -17
- package/dist/extractor/loadTamagui.cjs +0 -373
- package/dist/extractor/logLines.cjs +0 -43
- package/dist/extractor/normalizeTernaries.cjs +0 -100
- package/dist/extractor/propsToFontFamilyCache.cjs +0 -42
- package/dist/extractor/regenerateConfig.cjs +0 -178
- package/dist/extractor/removeUnusedHooks.cjs +0 -108
- package/dist/extractor/timer.cjs +0 -52
- package/dist/extractor/validHTMLAttributes.cjs +0 -79
- package/dist/extractor/watchTamaguiConfig.cjs +0 -70
- package/dist/getPragmaOptions.cjs +0 -73
- package/dist/helpers/memoize.cjs +0 -45
- package/dist/helpers/requireTamaguiCore.cjs +0 -40
- package/dist/index.cjs +0 -42
- package/dist/registerRequire.cjs +0 -209
- package/dist/server.cjs +0 -82
- package/dist/types.cjs +0 -18
- package/dist/worker.cjs +0 -111
- package/src/extractor/accessSafe.ts +0 -22
- package/src/extractor/babelParse.ts +0 -38
- package/src/extractor/buildClassName.ts +0 -76
- package/src/extractor/createEvaluator.ts +0 -82
- package/src/extractor/createExtractor.ts +0 -2970
- package/src/extractor/createLogger.ts +0 -41
- package/src/extractor/ensureImportingConcat.ts +0 -36
- package/src/extractor/errors.ts +0 -1
- package/src/extractor/evaluateAstNode.ts +0 -136
- package/src/extractor/extractHelpers.ts +0 -211
- package/src/extractor/extractMediaStyle.ts +0 -194
- package/src/extractor/extractToClassNames.ts +0 -733
- package/src/extractor/extractToNative.ts +0 -506
- package/src/extractor/findTopmostFunction.ts +0 -24
- package/src/extractor/generatedUid.ts +0 -41
- package/src/extractor/getPrefixLogs.ts +0 -9
- package/src/extractor/getPropValueFromAttributes.ts +0 -95
- package/src/extractor/getSourceModule.ts +0 -96
- package/src/extractor/getStaticBindingsForScope.ts +0 -237
- package/src/extractor/hasTopLevelAwait.ts +0 -28
- package/src/extractor/hoistClassNames.ts +0 -52
- package/src/extractor/literalToAst.ts +0 -85
- package/src/extractor/loadFile.ts +0 -17
- package/src/extractor/logLines.ts +0 -16
- package/src/extractor/normalizeTernaries.ts +0 -89
- package/src/extractor/propsToFontFamilyCache.ts +0 -18
- package/src/extractor/removeUnusedHooks.ts +0 -83
- package/src/extractor/timer.ts +0 -25
- package/src/extractor/validHTMLAttributes.ts +0 -52
- package/src/worker.ts +0 -142
- package/types/extractor/accessSafe.d.ts +0 -3
- package/types/extractor/accessSafe.d.ts.map +0 -1
- package/types/extractor/babelParse.d.ts +0 -5
- package/types/extractor/babelParse.d.ts.map +0 -1
- package/types/extractor/buildClassName.d.ts +0 -7
- package/types/extractor/buildClassName.d.ts.map +0 -1
- package/types/extractor/createEvaluator.d.ts +0 -12
- package/types/extractor/createEvaluator.d.ts.map +0 -1
- package/types/extractor/createExtractor.d.ts +0 -32
- package/types/extractor/createExtractor.d.ts.map +0 -1
- package/types/extractor/createLogger.d.ts +0 -3
- package/types/extractor/createLogger.d.ts.map +0 -1
- package/types/extractor/ensureImportingConcat.d.ts +0 -4
- package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
- package/types/extractor/errors.d.ts +0 -3
- package/types/extractor/errors.d.ts.map +0 -1
- package/types/extractor/evaluateAstNode.d.ts +0 -3
- package/types/extractor/evaluateAstNode.d.ts.map +0 -1
- package/types/extractor/extractHelpers.d.ts +0 -28
- package/types/extractor/extractHelpers.d.ts.map +0 -1
- package/types/extractor/extractMediaStyle.d.ts +0 -11
- package/types/extractor/extractMediaStyle.d.ts.map +0 -1
- package/types/extractor/extractToClassNames.d.ts +0 -25
- package/types/extractor/extractToClassNames.d.ts.map +0 -1
- package/types/extractor/extractToNative.d.ts +0 -13
- package/types/extractor/extractToNative.d.ts.map +0 -1
- package/types/extractor/findTopmostFunction.d.ts +0 -4
- package/types/extractor/findTopmostFunction.d.ts.map +0 -1
- package/types/extractor/generatedUid.d.ts +0 -5
- package/types/extractor/generatedUid.d.ts.map +0 -1
- package/types/extractor/getPrefixLogs.d.ts +0 -3
- package/types/extractor/getPrefixLogs.d.ts.map +0 -1
- package/types/extractor/getPropValueFromAttributes.d.ts +0 -19
- package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
- package/types/extractor/getSourceModule.d.ts +0 -16
- package/types/extractor/getSourceModule.d.ts.map +0 -1
- package/types/extractor/getStaticBindingsForScope.d.ts +0 -5
- package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
- package/types/extractor/hasTopLevelAwait.d.ts +0 -2
- package/types/extractor/hasTopLevelAwait.d.ts.map +0 -1
- package/types/extractor/hoistClassNames.d.ts +0 -6
- package/types/extractor/hoistClassNames.d.ts.map +0 -1
- package/types/extractor/literalToAst.d.ts +0 -4
- package/types/extractor/literalToAst.d.ts.map +0 -1
- package/types/extractor/loadFile.d.ts +0 -1
- package/types/extractor/loadFile.d.ts.map +0 -1
- package/types/extractor/logLines.d.ts +0 -2
- package/types/extractor/logLines.d.ts.map +0 -1
- package/types/extractor/normalizeTernaries.d.ts +0 -5
- package/types/extractor/normalizeTernaries.d.ts.map +0 -1
- package/types/extractor/propsToFontFamilyCache.d.ts +0 -4
- package/types/extractor/propsToFontFamilyCache.d.ts.map +0 -1
- package/types/extractor/removeUnusedHooks.d.ts +0 -3
- package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
- package/types/extractor/timer.d.ts +0 -5
- package/types/extractor/timer.d.ts.map +0 -1
- package/types/extractor/validHTMLAttributes.d.ts +0 -52
- package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
- package/types/worker.d.ts +0 -46
- package/types/worker.d.ts.map +0 -1
- /package/dist/{setup.cjs → cjs/setup.cjs} +0 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
var transform_exports = {};
|
|
28
|
+
__export(transform_exports, { transformZeroModule: () => transformZeroModule });
|
|
29
|
+
module.exports = __toCommonJS(transform_exports);
|
|
30
|
+
var import_compiler_core = require("@tamagui/compiler-core");
|
|
31
|
+
var import_node_crypto = require("node:crypto");
|
|
32
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
33
|
+
var import_theme = require("./theme.cjs");
|
|
34
|
+
function identifierNameOf(node) {
|
|
35
|
+
return node && node.type === "Identifier" && typeof node.name === "string" ? node.name : null;
|
|
36
|
+
}
|
|
37
|
+
function jsxNameOf(element) {
|
|
38
|
+
const opening = (0, import_compiler_core.childNode)(element, "openingElement");
|
|
39
|
+
if (!opening) return null;
|
|
40
|
+
const name = (0, import_compiler_core.childNode)(opening, "name");
|
|
41
|
+
return name && name.type === "JSXIdentifier" && typeof name.name === "string" ? name.name : null;
|
|
42
|
+
}
|
|
43
|
+
function transformZeroModule(input) {
|
|
44
|
+
const { id, source, config } = input;
|
|
45
|
+
const moduleId = (0, import_compiler_core.resolvedModuleId)(id);
|
|
46
|
+
const program = (0, import_compiler_core.parseModuleAst)(source, id);
|
|
47
|
+
const violations = (0, import_compiler_core.zeroViolationsFromPlan)(input.plan);
|
|
48
|
+
const edits = [];
|
|
49
|
+
const bridges = /* @__PURE__ */ new Map();
|
|
50
|
+
const bridgeCSS = /* @__PURE__ */ new Map();
|
|
51
|
+
let themeLocal = null;
|
|
52
|
+
let themeUpdateLocal = null;
|
|
53
|
+
const islandLocals = /* @__PURE__ */ new Map();
|
|
54
|
+
for (const statement of (0, import_compiler_core.childNodes)(program, "body")) {
|
|
55
|
+
if (statement.type !== "ImportDeclaration") continue;
|
|
56
|
+
const sourceNode = (0, import_compiler_core.childNode)(statement, "source");
|
|
57
|
+
const specifier = sourceNode && typeof sourceNode.value === "string" ? sourceNode.value : null;
|
|
58
|
+
if (!specifier) continue;
|
|
59
|
+
const island = input.resolveIslandLoader(specifier);
|
|
60
|
+
for (const importSpecifier of (0, import_compiler_core.childNodes)(statement, "specifiers")) {
|
|
61
|
+
const local = identifierNameOf((0, import_compiler_core.childNode)(importSpecifier, "local"));
|
|
62
|
+
if (!local) continue;
|
|
63
|
+
if (island) {
|
|
64
|
+
islandLocals.set(local, island.islandId);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (!input.isTamaguiSpecifier(specifier)) continue;
|
|
68
|
+
const imported = (0, import_compiler_core.childNode)(importSpecifier, "imported");
|
|
69
|
+
if (imported && imported.name === "Theme") themeLocal = local;
|
|
70
|
+
if (imported && imported.name === "ThemeUpdate") themeUpdateLocal = local;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const parents = /* @__PURE__ */ new Map();
|
|
74
|
+
const elements = [];
|
|
75
|
+
(0, import_compiler_core.walkAst)(program, (node, parent) => {
|
|
76
|
+
if (parent) parents.set(node, parent);
|
|
77
|
+
if (node.type === "JSXElement") elements.push(node);
|
|
78
|
+
});
|
|
79
|
+
const themeElements = elements.filter((element) => {
|
|
80
|
+
const name = jsxNameOf(element);
|
|
81
|
+
return name === themeLocal || name === themeUpdateLocal;
|
|
82
|
+
});
|
|
83
|
+
const themeNodes = /* @__PURE__ */ new Map();
|
|
84
|
+
for (const element of themeElements) {
|
|
85
|
+
const read = (0, import_theme.readStaticTheme)(element, id, source, config, jsxNameOf(element) === themeUpdateLocal ? "ThemeUpdate" : "Theme");
|
|
86
|
+
for (const [identifier, rules] of read.css) bridgeCSS.set(identifier, rules);
|
|
87
|
+
violations.push(...read.violations);
|
|
88
|
+
if (read.node) themeNodes.set(element, read.node);
|
|
89
|
+
}
|
|
90
|
+
const themeChainOf = (element) => {
|
|
91
|
+
const chain = [];
|
|
92
|
+
let cursor = element;
|
|
93
|
+
while (cursor) {
|
|
94
|
+
const node = themeNodes.get(cursor);
|
|
95
|
+
if (node) chain.unshift(node);
|
|
96
|
+
cursor = parents.get(cursor);
|
|
97
|
+
}
|
|
98
|
+
return chain;
|
|
99
|
+
};
|
|
100
|
+
const rootThemeName = Object.keys(config.themes)[0] ?? "light";
|
|
101
|
+
for (const element of themeElements) {
|
|
102
|
+
const node = themeNodes.get(element);
|
|
103
|
+
if (!node) continue;
|
|
104
|
+
const lowered = (0, import_theme.lowerStaticTheme)(node, themeChainOf(element), rootThemeName, config, id);
|
|
105
|
+
violations.push(...lowered.violations);
|
|
106
|
+
edits.push(...lowered.edits);
|
|
107
|
+
}
|
|
108
|
+
const mounts = elements.filter((element) => {
|
|
109
|
+
const name = jsxNameOf(element);
|
|
110
|
+
return !!name && islandLocals.has(name);
|
|
111
|
+
}).sort((left, right) => left.start - right.start);
|
|
112
|
+
const moduleBridgePrefix = (0, import_node_crypto.createHash)("sha256").update(import_node_path.default.relative(input.root, id).replace(/\\/g, "/")).digest("hex").slice(0, 8);
|
|
113
|
+
const loweredRanges = input.plan.edits.filter((edit) => edit.end > edit.start);
|
|
114
|
+
const isOpaqueAncestor = (element) => {
|
|
115
|
+
if (themeNodes.has(element)) return false;
|
|
116
|
+
const name = jsxNameOf(element);
|
|
117
|
+
if (!name || islandLocals.has(name)) return false;
|
|
118
|
+
if (name[0] !== name[0].toUpperCase()) return false;
|
|
119
|
+
const nameNode = (0, import_compiler_core.childNode)((0, import_compiler_core.childNode)(element, "openingElement"), "name");
|
|
120
|
+
return !loweredRanges.some((edit) => edit.start <= nameNode.start && edit.end >= nameNode.end);
|
|
121
|
+
};
|
|
122
|
+
mounts.forEach((element, index) => {
|
|
123
|
+
const islandId = islandLocals.get(jsxNameOf(element));
|
|
124
|
+
let opaque = null;
|
|
125
|
+
for (let cursor = parents.get(element); cursor; cursor = parents.get(cursor)) {
|
|
126
|
+
if (cursor.type === "JSXElement" && isOpaqueAncestor(cursor)) opaque = cursor;
|
|
127
|
+
}
|
|
128
|
+
if (opaque) {
|
|
129
|
+
violations.push({
|
|
130
|
+
rule: 4,
|
|
131
|
+
code: "local/unsupported-target",
|
|
132
|
+
span: {
|
|
133
|
+
id: moduleId,
|
|
134
|
+
start: element.start,
|
|
135
|
+
end: element.end
|
|
136
|
+
},
|
|
137
|
+
component: islandId,
|
|
138
|
+
message: (0, import_compiler_core.zeroIslandThemeMessage)(islandId)
|
|
139
|
+
});
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const chain = themeChainOf(element);
|
|
143
|
+
const layers = chain.map((node) => node.layer).filter((layer) => !!layer);
|
|
144
|
+
const branches = (0, import_theme.resolveThemeChain)(chain, rootThemeName, config);
|
|
145
|
+
const descriptors = branches.map((branch, branchIndex) => ({
|
|
146
|
+
test: branch.test,
|
|
147
|
+
bridge: {
|
|
148
|
+
id: branches.length === 1 ? `b${moduleBridgePrefix}_${index}` : `b${moduleBridgePrefix}_${index}_${branchIndex}`,
|
|
149
|
+
name: branch.name,
|
|
150
|
+
layers
|
|
151
|
+
}
|
|
152
|
+
}));
|
|
153
|
+
const list = bridges.get(islandId) ?? [];
|
|
154
|
+
for (const descriptor of descriptors) list.push(descriptor.bridge);
|
|
155
|
+
bridges.set(islandId, list);
|
|
156
|
+
const fold = (value) => (0, import_theme.foldBranches)(descriptors.map((descriptor) => ({
|
|
157
|
+
test: descriptor.test,
|
|
158
|
+
value: value(descriptor.bridge)
|
|
159
|
+
})));
|
|
160
|
+
const opening = (0, import_compiler_core.childNode)(element, "openingElement");
|
|
161
|
+
const nameNode = (0, import_compiler_core.childNode)(opening, "name");
|
|
162
|
+
edits.push({
|
|
163
|
+
start: nameNode.end,
|
|
164
|
+
end: nameNode.end,
|
|
165
|
+
content: ` data-tamagui-bridge={${fold((bridge) => JSON.stringify(bridge.id))}} __tamaguiBridge={${fold((bridge) => JSON.stringify(bridge))}}`,
|
|
166
|
+
origin: {
|
|
167
|
+
id: moduleId,
|
|
168
|
+
start: nameNode.start,
|
|
169
|
+
end: nameNode.end
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
const erasure = violations.length ? null : (0, import_compiler_core.planZeroErasure)({
|
|
174
|
+
id: moduleId,
|
|
175
|
+
source,
|
|
176
|
+
loweredEdits: [...input.plan.edits, ...edits],
|
|
177
|
+
isTamaguiSpecifier: input.isTamaguiSpecifier,
|
|
178
|
+
islandIdFor: input.resolveIslandModule
|
|
179
|
+
});
|
|
180
|
+
if (erasure) {
|
|
181
|
+
edits.push(...erasure.edits);
|
|
182
|
+
violations.push(...erasure.violations);
|
|
183
|
+
}
|
|
184
|
+
const output = input.mode === "report" ? (0, import_compiler_core.applyLoweredModule)(source, moduleId, input.plan) : violations.length ? {
|
|
185
|
+
changed: false,
|
|
186
|
+
code: source,
|
|
187
|
+
map: null
|
|
188
|
+
} : (0, import_compiler_core.applyLoweredModule)(source, moduleId, {
|
|
189
|
+
id: moduleId,
|
|
190
|
+
sourceHash: input.plan.sourceHash,
|
|
191
|
+
edits: [...input.plan.edits, ...edits]
|
|
192
|
+
});
|
|
193
|
+
return {
|
|
194
|
+
output,
|
|
195
|
+
edits: input.mode === "report" ? [] : edits,
|
|
196
|
+
bridges: input.mode === "report" ? /* @__PURE__ */ new Map() : bridges,
|
|
197
|
+
bridgeCSS: input.mode === "report" ? /* @__PURE__ */ new Map() : bridgeCSS,
|
|
198
|
+
violations,
|
|
199
|
+
erased: {
|
|
200
|
+
modules: erasure?.removedModules ?? [],
|
|
201
|
+
bindings: erasure?.removedBindings ?? [],
|
|
202
|
+
styledDefinitions: erasure?.erasedStyledDefinitions ?? [],
|
|
203
|
+
exports: erasure?.erasedExports ?? []
|
|
204
|
+
},
|
|
205
|
+
rewrittenAnimatedNumberHooks: erasure?.rewrittenAnimatedNumberHooks ?? []
|
|
206
|
+
};
|
|
207
|
+
}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import FastGlob from "fast-glob";
|
|
2
|
+
import { load } from "js-yaml";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { join, relative } from "node:path";
|
|
5
|
+
|
|
6
|
+
function calculateVersionsForEachDependency(packages, depType = DEFAULT_DEP_TYPES) {
|
|
7
|
+
const dependenciesToVersionsSeen = /* @__PURE__ */ new Map();
|
|
8
|
+
for (const package_ of packages) {
|
|
9
|
+
recordDependencyVersionsForPackageJson(dependenciesToVersionsSeen, package_, depType);
|
|
10
|
+
}
|
|
11
|
+
return dependenciesToVersionsSeen;
|
|
12
|
+
}
|
|
13
|
+
function recordDependencyVersionsForPackageJson(dependenciesToVersionsSeen, package_, depType) {
|
|
14
|
+
if (package_.packageJson.name && package_.packageJson.version) {
|
|
15
|
+
recordDependencyVersion(dependenciesToVersionsSeen, package_.packageJson.name, package_.packageJson.version, package_, true);
|
|
16
|
+
}
|
|
17
|
+
if (depType.includes("dependencies") && package_.packageJson.dependencies) {
|
|
18
|
+
for (const [dependency, dependencyVersion] of Object.entries(package_.packageJson.dependencies)) {
|
|
19
|
+
if (dependencyVersion) {
|
|
20
|
+
recordDependencyVersion(dependenciesToVersionsSeen, dependency, dependencyVersion, package_);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (depType.includes("devDependencies") && package_.packageJson.devDependencies) {
|
|
25
|
+
for (const [dependency, dependencyVersion] of Object.entries(package_.packageJson.devDependencies)) {
|
|
26
|
+
if (dependencyVersion) {
|
|
27
|
+
recordDependencyVersion(dependenciesToVersionsSeen, dependency, dependencyVersion, package_);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (depType.includes("optionalDependencies") && package_.packageJson.optionalDependencies) {
|
|
32
|
+
for (const [dependency, dependencyVersion] of Object.entries(package_.packageJson.optionalDependencies)) {
|
|
33
|
+
if (dependencyVersion) {
|
|
34
|
+
recordDependencyVersion(dependenciesToVersionsSeen, dependency, dependencyVersion, package_);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (depType.includes("peerDependencies") && package_.packageJson.peerDependencies) {
|
|
39
|
+
for (const [dependency, dependencyVersion] of Object.entries(package_.packageJson.peerDependencies)) {
|
|
40
|
+
if (dependencyVersion) {
|
|
41
|
+
recordDependencyVersion(dependenciesToVersionsSeen, dependency, dependencyVersion, package_);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (depType.includes("resolutions") && package_.packageJson.resolutions) {
|
|
46
|
+
for (const [dependency, dependencyVersion] of Object.entries(package_.packageJson.resolutions)) {
|
|
47
|
+
if (dependencyVersion) {
|
|
48
|
+
recordDependencyVersion(dependenciesToVersionsSeen, dependency, dependencyVersion, package_);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function recordDependencyVersion(dependenciesToVersionsSeen, dependency, version, package_, isLocalPackageVersion = false) {
|
|
54
|
+
if (!dependenciesToVersionsSeen.has(dependency)) {
|
|
55
|
+
dependenciesToVersionsSeen.set(dependency, []);
|
|
56
|
+
}
|
|
57
|
+
const list = dependenciesToVersionsSeen.get(dependency);
|
|
58
|
+
if (list) {
|
|
59
|
+
list.push({
|
|
60
|
+
package: package_,
|
|
61
|
+
version,
|
|
62
|
+
isLocalPackageVersion
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function calculateDependenciesAndVersions(dependencyVersions) {
|
|
67
|
+
return [...dependencyVersions.entries()].sort((a, b) => a[0].localeCompare(b[0])).flatMap(([dependency, versionObjectsForDep]) => {
|
|
68
|
+
if (!versionObjectsForDep) {
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
let versions = versionObjectsForDep.filter((versionObject) => !versionObject.isLocalPackageVersion).map((versionObject) => versionObject.version);
|
|
72
|
+
const localPackageVersions = versionObjectsForDep.filter((versionObject) => versionObject.isLocalPackageVersion).map((versionObject) => versionObject.version);
|
|
73
|
+
const allVersionsHaveWorkspacePrefix = versions.every((version) => version.startsWith("workspace:"));
|
|
74
|
+
const hasIncompatibilityWithLocalPackageVersion = versions.some((version) => localPackageVersions[0] !== version);
|
|
75
|
+
if (localPackageVersions.length === 1 && !allVersionsHaveWorkspacePrefix && hasIncompatibilityWithLocalPackageVersion) {
|
|
76
|
+
versions = [...versions, ...localPackageVersions];
|
|
77
|
+
}
|
|
78
|
+
const uniqueVersions = [...new Set(versions)];
|
|
79
|
+
const uniqueVersionsWithInfo = versionsObjectsWithSortedPackages(uniqueVersions, versionObjectsForDep);
|
|
80
|
+
return {
|
|
81
|
+
dependency,
|
|
82
|
+
versions: uniqueVersionsWithInfo
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function versionsObjectsWithSortedPackages(versions, versionObjects) {
|
|
87
|
+
return versions.map((version) => {
|
|
88
|
+
const matchingVersionObjects = versionObjects.filter((versionObject) => versionObject.version === version);
|
|
89
|
+
return {
|
|
90
|
+
version,
|
|
91
|
+
packages: matchingVersionObjects.map((object) => object.package).sort((a, b) => Package.comparator(a, b))
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const HARDCODED_IGNORED_DEPENDENCIES = /* @__PURE__ */ new Set(["//"]);
|
|
96
|
+
function filterOutIgnoredDependencies(mismatchingVersions, ignoredDependencies, includedDependencyPatterns) {
|
|
97
|
+
for (const ignoreDependency of ignoredDependencies) {
|
|
98
|
+
if (!mismatchingVersions.some((mismatchingVersion) => mismatchingVersion.dependency === ignoreDependency)) {
|
|
99
|
+
throw new Error(`Specified option '--ignore-dep ${ignoreDependency}', but no version mismatches detected for this dependency.`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (ignoredDependencies.length > 0 || includedDependencyPatterns.length > 0 || mismatchingVersions.some((mismatchingVersion) => HARDCODED_IGNORED_DEPENDENCIES.has(mismatchingVersion.dependency))) {
|
|
103
|
+
return mismatchingVersions.filter((mismatchingVersion) => !ignoredDependencies.includes(mismatchingVersion.dependency) && includedDependencyPatterns.some((ignoreDependencyPattern) => mismatchingVersion.dependency.match(ignoreDependencyPattern)) && !HARDCODED_IGNORED_DEPENDENCIES.has(mismatchingVersion.dependency));
|
|
104
|
+
}
|
|
105
|
+
return mismatchingVersions;
|
|
106
|
+
}
|
|
107
|
+
function getPackages(root, ignorePackages, ignorePackagePatterns, ignorePaths, ignorePathPatterns) {
|
|
108
|
+
if (!Package.exists(root)) {
|
|
109
|
+
throw new Error("No package.json found at provided path.");
|
|
110
|
+
}
|
|
111
|
+
const packages = accumulatePackages(root, ["."]);
|
|
112
|
+
for (const ignoredPackage of ignorePackages) {
|
|
113
|
+
if (!Package.some(packages, (package_) => package_.name === ignoredPackage)) {
|
|
114
|
+
throw new Error(`Specified option '--ignore-package ${ignoredPackage}', but no such package detected in workspace.`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
for (const ignoredPackagePattern of ignorePackagePatterns) {
|
|
118
|
+
if (!Package.some(packages, (package_) => ignoredPackagePattern.test(package_.name))) {
|
|
119
|
+
throw new Error(`Specified option '--ignore-package-pattern ${String(ignoredPackagePattern)}', but no matching packages detected in workspace.`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
for (const ignoredPath of ignorePaths) {
|
|
123
|
+
if (!Package.some(packages, (package_) => package_.pathRelative.includes(ignoredPath))) {
|
|
124
|
+
throw new Error(`Specified option '--ignore-path ${ignoredPath}', but no matching paths detected in workspace.`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const ignoredPathPattern of ignorePathPatterns) {
|
|
128
|
+
if (!Package.some(packages, (package_) => ignoredPathPattern.test(package_.pathRelative))) {
|
|
129
|
+
throw new Error(`Specified option '--ignore-path-pattern ${String(ignoredPathPattern)}', but no matching paths detected in workspace.`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (ignorePackages.length > 0 || ignorePackagePatterns.length > 0 || ignorePaths.length > 0 || ignorePathPatterns.length > 0) {
|
|
133
|
+
return packages.filter((package_) => !ignorePackages.includes(package_.name) && !ignorePackagePatterns.some((ignorePackagePattern) => package_.name.match(ignorePackagePattern)) && !ignorePaths.some((ignorePath) => package_.pathRelative.includes(ignorePath)) && !ignorePathPatterns.some((ignorePathPattern) => package_.pathRelative.match(ignorePathPattern)));
|
|
134
|
+
}
|
|
135
|
+
return packages;
|
|
136
|
+
}
|
|
137
|
+
function expandWorkspaces(root, workspacePatterns) {
|
|
138
|
+
return workspacePatterns.flatMap((workspace) => {
|
|
139
|
+
if (!workspace.includes("*")) {
|
|
140
|
+
return [workspace];
|
|
141
|
+
}
|
|
142
|
+
return FastGlob.globSync(workspace, {
|
|
143
|
+
onlyDirectories: true,
|
|
144
|
+
cwd: root,
|
|
145
|
+
ignore: ["**/node_modules"]
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function accumulatePackages(root, paths) {
|
|
150
|
+
const results = [];
|
|
151
|
+
for (const relativePath of paths) {
|
|
152
|
+
const path = join(root, relativePath);
|
|
153
|
+
if (Package.exists(path)) {
|
|
154
|
+
const package_ = new Package(path, root);
|
|
155
|
+
results.push(package_, ...accumulatePackages(path, expandWorkspaces(path, package_.workspacePatterns)));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return results;
|
|
159
|
+
}
|
|
160
|
+
var Package = class {
|
|
161
|
+
/** Absolute path to package */
|
|
162
|
+
path;
|
|
163
|
+
/** Absolute path to workspace.*/
|
|
164
|
+
pathWorkspace;
|
|
165
|
+
/** Absolute path to package.json. */
|
|
166
|
+
pathPackageJson;
|
|
167
|
+
packageJson;
|
|
168
|
+
packageJsonEndsInNewline;
|
|
169
|
+
pnpmWorkspacePackages;
|
|
170
|
+
constructor(path, pathWorkspace) {
|
|
171
|
+
this.path = path;
|
|
172
|
+
this.pathWorkspace = pathWorkspace;
|
|
173
|
+
this.pathPackageJson = join(path, "package.json");
|
|
174
|
+
const packageJsonContents = readFileSync(this.pathPackageJson, "utf8");
|
|
175
|
+
this.packageJsonEndsInNewline = packageJsonContents.endsWith("\n");
|
|
176
|
+
this.packageJson = JSON.parse(packageJsonContents);
|
|
177
|
+
const pnpmWorkspacePath = join(path, "pnpm-workspace.yaml");
|
|
178
|
+
if (existsSync(pnpmWorkspacePath)) {
|
|
179
|
+
const pnpmWorkspaceContents = readFileSync(pnpmWorkspacePath, "utf8");
|
|
180
|
+
const pnpmWorkspaceYaml = load(pnpmWorkspaceContents);
|
|
181
|
+
this.pnpmWorkspacePackages = pnpmWorkspaceYaml.packages;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
get name() {
|
|
185
|
+
if (this.workspacePatterns.length > 0 && !this.packageJson.name) {
|
|
186
|
+
return "(Root)";
|
|
187
|
+
}
|
|
188
|
+
if (!this.packageJson.name) {
|
|
189
|
+
throw new Error(`${this.pathPackageJson} missing \`name\``);
|
|
190
|
+
}
|
|
191
|
+
return this.packageJson.name;
|
|
192
|
+
}
|
|
193
|
+
/** Relative to workspace root. */
|
|
194
|
+
get pathRelative() {
|
|
195
|
+
return relative(this.pathWorkspace, this.path);
|
|
196
|
+
}
|
|
197
|
+
get workspacePatterns() {
|
|
198
|
+
if (this.packageJson.workspaces) {
|
|
199
|
+
if (Array.isArray(this.packageJson.workspaces)) {
|
|
200
|
+
return this.packageJson.workspaces;
|
|
201
|
+
} else if (this.packageJson.workspaces.packages) {
|
|
202
|
+
if (!Array.isArray(this.packageJson.workspaces.packages)) {
|
|
203
|
+
throw new TypeError("package.json `workspaces.packages` is not a string array.");
|
|
204
|
+
}
|
|
205
|
+
return this.packageJson.workspaces.packages;
|
|
206
|
+
} else {
|
|
207
|
+
throw new TypeError("package.json `workspaces` is not a string array.");
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (this.pnpmWorkspacePackages) {
|
|
211
|
+
if (!Array.isArray(this.pnpmWorkspacePackages)) {
|
|
212
|
+
throw new TypeError("pnpm-workspace.yaml `packages` is not a string array.");
|
|
213
|
+
}
|
|
214
|
+
return this.pnpmWorkspacePackages;
|
|
215
|
+
}
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
static exists(path) {
|
|
219
|
+
const packageJsonPath = join(path, "package.json");
|
|
220
|
+
return existsSync(packageJsonPath);
|
|
221
|
+
}
|
|
222
|
+
static some(packages, callback) {
|
|
223
|
+
return packages.some((package_) => callback(package_));
|
|
224
|
+
}
|
|
225
|
+
static comparator(package1, package2) {
|
|
226
|
+
return package1.name.localeCompare(package2.name);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
var DEPENDENCY_TYPE = /* @__PURE__ */ ((DEPENDENCY_TYPE2) => {
|
|
230
|
+
DEPENDENCY_TYPE2["dependencies"] = "dependencies";
|
|
231
|
+
DEPENDENCY_TYPE2["devDependencies"] = "devDependencies";
|
|
232
|
+
DEPENDENCY_TYPE2["optionalDependencies"] = "optionalDependencies";
|
|
233
|
+
DEPENDENCY_TYPE2["peerDependencies"] = "peerDependencies";
|
|
234
|
+
DEPENDENCY_TYPE2["resolutions"] = "resolutions";
|
|
235
|
+
return DEPENDENCY_TYPE2;
|
|
236
|
+
})(DEPENDENCY_TYPE || {});
|
|
237
|
+
const DEFAULT_DEP_TYPES = [
|
|
238
|
+
"dependencies",
|
|
239
|
+
"devDependencies",
|
|
240
|
+
"optionalDependencies",
|
|
241
|
+
"resolutions"
|
|
242
|
+
];
|
|
243
|
+
function check(path) {
|
|
244
|
+
const options = { includeDepPattern: [
|
|
245
|
+
"tamagui",
|
|
246
|
+
"react-native-web-lite",
|
|
247
|
+
"react-native-web-internals"
|
|
248
|
+
] };
|
|
249
|
+
if (options && options.depType && options.depType.some((dt) => !Object.keys(DEPENDENCY_TYPE).includes(dt))) {
|
|
250
|
+
throw new Error(`Invalid depType provided. Choices are: ${Object.keys(DEPENDENCY_TYPE).join(", ")}.`);
|
|
251
|
+
}
|
|
252
|
+
const optionsWithDefaults = {
|
|
253
|
+
fix: false,
|
|
254
|
+
ignoreDep: [],
|
|
255
|
+
includeDepPattern: [],
|
|
256
|
+
ignorePackage: [],
|
|
257
|
+
ignorePackagePattern: [],
|
|
258
|
+
ignorePath: [],
|
|
259
|
+
ignorePathPattern: [],
|
|
260
|
+
...options,
|
|
261
|
+
depType: options && options.depType && options.depType.length > 0 ? options.depType : DEFAULT_DEP_TYPES
|
|
262
|
+
};
|
|
263
|
+
const packages = getPackages(path, optionsWithDefaults.ignorePackage, optionsWithDefaults.ignorePackagePattern.map((s) => new RegExp(s)), optionsWithDefaults.ignorePath, optionsWithDefaults.ignorePathPattern.map((s) => new RegExp(s)));
|
|
264
|
+
const dependencies = calculateVersionsForEachDependency(packages, optionsWithDefaults.depType.map((dt) => DEPENDENCY_TYPE[dt]));
|
|
265
|
+
const dependenciesAndVersions = calculateDependenciesAndVersions(dependencies);
|
|
266
|
+
const dependenciesAndVersionsWithMismatches = dependenciesAndVersions.filter(({ versions }) => versions.length > 1);
|
|
267
|
+
const dependenciesAndVersionsWithoutIgnored = filterOutIgnoredDependencies(dependenciesAndVersions, optionsWithDefaults.ignoreDep, optionsWithDefaults.includeDepPattern.map((s) => new RegExp(s)));
|
|
268
|
+
const dependenciesAndVersionsMismatchesWithoutIgnored = filterOutIgnoredDependencies(dependenciesAndVersionsWithMismatches, optionsWithDefaults.ignoreDep, optionsWithDefaults.includeDepPattern.map((s) => new RegExp(s)));
|
|
269
|
+
return { dependencies: Object.fromEntries(dependenciesAndVersionsWithoutIgnored.map(({ dependency, versions }) => {
|
|
270
|
+
return [dependency, {
|
|
271
|
+
isMismatching: dependenciesAndVersionsMismatchesWithoutIgnored.some((dep) => dep.dependency === dependency),
|
|
272
|
+
versions
|
|
273
|
+
}];
|
|
274
|
+
})) };
|
|
275
|
+
}
|
|
276
|
+
var CDVC = class {
|
|
277
|
+
/** An object mapping each dependency in the workspace to information including the versions found of it. */
|
|
278
|
+
dependencies;
|
|
279
|
+
/**
|
|
280
|
+
* @param path - path to the workspace root
|
|
281
|
+
* @param options
|
|
282
|
+
* @param options.fix - Whether to autofix inconsistencies (using latest version present)
|
|
283
|
+
* @param options.ignoreDep - Dependency(s) to ignore mismatches for
|
|
284
|
+
* @param options.includeDepPattern - RegExp(s) of dependency names to ignore mismatches for
|
|
285
|
+
* @param options.ignorePackage - Workspace package(s) to ignore mismatches for
|
|
286
|
+
* @param options.ignorePackagePattern - RegExp(s) of package names to ignore mismatches for
|
|
287
|
+
* @param options.ignorePath - Workspace-relative path(s) of packages to ignore mismatches for
|
|
288
|
+
* @param options.ignorePathPattern - RegExp(s) of workspace-relative path of packages to ignore mismatches for
|
|
289
|
+
*/
|
|
290
|
+
constructor(path) {
|
|
291
|
+
const { dependencies } = check(path);
|
|
292
|
+
this.dependencies = dependencies;
|
|
293
|
+
}
|
|
294
|
+
toMismatchSummary() {
|
|
295
|
+
return dependenciesToMismatchSummary(this.dependencies);
|
|
296
|
+
}
|
|
297
|
+
getDependencies() {
|
|
298
|
+
return Object.keys(this.dependencies).map((dependency) => this.getDependency(dependency));
|
|
299
|
+
}
|
|
300
|
+
getDependency(name) {
|
|
301
|
+
return {
|
|
302
|
+
name,
|
|
303
|
+
isMismatching: this.dependencies[name].isMismatching,
|
|
304
|
+
versions: this.dependencies[name].versions.map((version) => ({
|
|
305
|
+
version: version.version,
|
|
306
|
+
packages: version.packages.map((package_) => ({ pathRelative: package_.pathRelative }))
|
|
307
|
+
}))
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
get hasMismatchingDependencies() {
|
|
311
|
+
return Object.values(this.dependencies).some((dep) => dep.isMismatching);
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
function dependenciesToMismatchSummary(dependencies) {
|
|
315
|
+
const mismatchingDependencyVersions = Object.entries(dependencies).filter(([, value]) => value.isMismatching).map(([dependency, value]) => ({
|
|
316
|
+
dependency,
|
|
317
|
+
versions: value.versions
|
|
318
|
+
}));
|
|
319
|
+
if (mismatchingDependencyVersions.length === 0) {
|
|
320
|
+
return "";
|
|
321
|
+
}
|
|
322
|
+
const tables = mismatchingDependencyVersions.map((object) => {
|
|
323
|
+
return `${object.dependency} - ${object.versions.map((v) => `${v.version}`).join(", ")}`;
|
|
324
|
+
}).join("");
|
|
325
|
+
return [`Found ${mismatchingDependencyVersions.length} ${mismatchingDependencyVersions.length === 1 ? "dependency" : "dependencies"} with mismatching versions across the workspace.`, tables].join("\n");
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export { CDVC };
|
|
329
|
+
//# sourceMappingURL=check-dep-versions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-dep-versions.js","names":[],"sources":["esm/check-dep-versions.js"],"sourcesContent":["import FastGlob from \"fast-glob\";\nimport { load } from \"js-yaml\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join, relative } from \"node:path\";\nfunction calculateVersionsForEachDependency(packages, depType = DEFAULT_DEP_TYPES) {\n const dependenciesToVersionsSeen = /* @__PURE__ */ new Map();\n for (const package_ of packages) {\n recordDependencyVersionsForPackageJson(dependenciesToVersionsSeen, package_, depType);\n }\n return dependenciesToVersionsSeen;\n}\nfunction recordDependencyVersionsForPackageJson(dependenciesToVersionsSeen, package_, depType) {\n if (package_.packageJson.name && package_.packageJson.version) {\n recordDependencyVersion(\n dependenciesToVersionsSeen,\n package_.packageJson.name,\n package_.packageJson.version,\n package_,\n true\n );\n }\n if (depType.includes(\"dependencies\" /* dependencies */) && package_.packageJson.dependencies) {\n for (const [dependency, dependencyVersion] of Object.entries(\n package_.packageJson.dependencies\n )) {\n if (dependencyVersion) {\n recordDependencyVersion(\n dependenciesToVersionsSeen,\n dependency,\n dependencyVersion,\n package_\n );\n }\n }\n }\n if (depType.includes(\"devDependencies\" /* devDependencies */) && package_.packageJson.devDependencies) {\n for (const [dependency, dependencyVersion] of Object.entries(\n package_.packageJson.devDependencies\n )) {\n if (dependencyVersion) {\n recordDependencyVersion(\n dependenciesToVersionsSeen,\n dependency,\n dependencyVersion,\n package_\n );\n }\n }\n }\n if (depType.includes(\"optionalDependencies\" /* optionalDependencies */) && package_.packageJson.optionalDependencies) {\n for (const [dependency, dependencyVersion] of Object.entries(\n package_.packageJson.optionalDependencies\n )) {\n if (dependencyVersion) {\n recordDependencyVersion(\n dependenciesToVersionsSeen,\n dependency,\n dependencyVersion,\n package_\n );\n }\n }\n }\n if (depType.includes(\"peerDependencies\" /* peerDependencies */) && package_.packageJson.peerDependencies) {\n for (const [dependency, dependencyVersion] of Object.entries(\n package_.packageJson.peerDependencies\n )) {\n if (dependencyVersion) {\n recordDependencyVersion(\n dependenciesToVersionsSeen,\n dependency,\n dependencyVersion,\n package_\n );\n }\n }\n }\n if (depType.includes(\"resolutions\" /* resolutions */) && package_.packageJson.resolutions) {\n for (const [dependency, dependencyVersion] of Object.entries(\n package_.packageJson.resolutions\n )) {\n if (dependencyVersion) {\n recordDependencyVersion(\n dependenciesToVersionsSeen,\n dependency,\n dependencyVersion,\n package_\n );\n }\n }\n }\n}\nfunction recordDependencyVersion(dependenciesToVersionsSeen, dependency, version, package_, isLocalPackageVersion = false) {\n if (!dependenciesToVersionsSeen.has(dependency)) {\n dependenciesToVersionsSeen.set(dependency, []);\n }\n const list = dependenciesToVersionsSeen.get(dependency);\n if (list) {\n list.push({ package: package_, version, isLocalPackageVersion });\n }\n}\nfunction calculateDependenciesAndVersions(dependencyVersions) {\n return [...dependencyVersions.entries()].sort((a, b) => a[0].localeCompare(b[0])).flatMap(([dependency, versionObjectsForDep]) => {\n if (!versionObjectsForDep) {\n return [];\n }\n let versions = versionObjectsForDep.filter((versionObject) => !versionObject.isLocalPackageVersion).map((versionObject) => versionObject.version);\n const localPackageVersions = versionObjectsForDep.filter((versionObject) => versionObject.isLocalPackageVersion).map((versionObject) => versionObject.version);\n const allVersionsHaveWorkspacePrefix = versions.every(\n (version) => version.startsWith(\"workspace:\")\n );\n const hasIncompatibilityWithLocalPackageVersion = versions.some(\n (version) => localPackageVersions[0] !== version\n );\n if (localPackageVersions.length === 1 && !allVersionsHaveWorkspacePrefix && hasIncompatibilityWithLocalPackageVersion) {\n versions = [...versions, ...localPackageVersions];\n }\n const uniqueVersions = [...new Set(versions)];\n const uniqueVersionsWithInfo = versionsObjectsWithSortedPackages(\n uniqueVersions,\n versionObjectsForDep\n );\n return {\n dependency,\n versions: uniqueVersionsWithInfo\n };\n });\n}\nfunction versionsObjectsWithSortedPackages(versions, versionObjects) {\n return versions.map((version) => {\n const matchingVersionObjects = versionObjects.filter(\n (versionObject) => versionObject.version === version\n );\n return {\n version,\n packages: matchingVersionObjects.map((object) => object.package).sort((a, b) => Package.comparator(a, b))\n };\n });\n}\nconst HARDCODED_IGNORED_DEPENDENCIES = /* @__PURE__ */ new Set([\n \"//\"\n // May be used to add comments to package.json files.\n]);\nfunction filterOutIgnoredDependencies(mismatchingVersions, ignoredDependencies, includedDependencyPatterns) {\n for (const ignoreDependency of ignoredDependencies) {\n if (!mismatchingVersions.some(\n (mismatchingVersion) => mismatchingVersion.dependency === ignoreDependency\n )) {\n throw new Error(\n `Specified option '--ignore-dep ${ignoreDependency}', but no version mismatches detected for this dependency.`\n );\n }\n }\n if (ignoredDependencies.length > 0 || includedDependencyPatterns.length > 0 || mismatchingVersions.some(\n (mismatchingVersion) => HARDCODED_IGNORED_DEPENDENCIES.has(mismatchingVersion.dependency)\n )) {\n return mismatchingVersions.filter(\n (mismatchingVersion) => !ignoredDependencies.includes(mismatchingVersion.dependency) && includedDependencyPatterns.some(\n (ignoreDependencyPattern) => mismatchingVersion.dependency.match(ignoreDependencyPattern)\n ) && !HARDCODED_IGNORED_DEPENDENCIES.has(mismatchingVersion.dependency)\n );\n }\n return mismatchingVersions;\n}\nfunction getPackages(root, ignorePackages, ignorePackagePatterns, ignorePaths, ignorePathPatterns) {\n if (!Package.exists(root)) {\n throw new Error(\"No package.json found at provided path.\");\n }\n const packages = accumulatePackages(root, [\".\"]);\n for (const ignoredPackage of ignorePackages) {\n if (!Package.some(packages, (package_) => package_.name === ignoredPackage)) {\n throw new Error(\n `Specified option '--ignore-package ${ignoredPackage}', but no such package detected in workspace.`\n );\n }\n }\n for (const ignoredPackagePattern of ignorePackagePatterns) {\n if (\n // eslint-disable-next-line unicorn/no-array-method-this-argument,unicorn/no-array-callback-reference -- false positive\n !Package.some(packages, (package_) => ignoredPackagePattern.test(package_.name))\n ) {\n throw new Error(\n `Specified option '--ignore-package-pattern ${String(\n ignoredPackagePattern\n )}', but no matching packages detected in workspace.`\n );\n }\n }\n for (const ignoredPath of ignorePaths) {\n if (\n // eslint-disable-next-line unicorn/no-array-method-this-argument,unicorn/no-array-callback-reference -- false positive\n !Package.some(packages, (package_) => package_.pathRelative.includes(ignoredPath))\n ) {\n throw new Error(\n `Specified option '--ignore-path ${ignoredPath}', but no matching paths detected in workspace.`\n );\n }\n }\n for (const ignoredPathPattern of ignorePathPatterns) {\n if (\n // eslint-disable-next-line unicorn/no-array-method-this-argument,unicorn/no-array-callback-reference -- false positive\n !Package.some(\n packages,\n (package_) => ignoredPathPattern.test(package_.pathRelative)\n )\n ) {\n throw new Error(\n `Specified option '--ignore-path-pattern ${String(\n ignoredPathPattern\n )}', but no matching paths detected in workspace.`\n );\n }\n }\n if (ignorePackages.length > 0 || ignorePackagePatterns.length > 0 || ignorePaths.length > 0 || ignorePathPatterns.length > 0) {\n return packages.filter(\n (package_) => !ignorePackages.includes(package_.name) && !ignorePackagePatterns.some(\n (ignorePackagePattern) => package_.name.match(ignorePackagePattern)\n ) && !ignorePaths.some((ignorePath) => package_.pathRelative.includes(ignorePath)) && !ignorePathPatterns.some(\n (ignorePathPattern) => package_.pathRelative.match(ignorePathPattern)\n )\n );\n }\n return packages;\n}\nfunction expandWorkspaces(root, workspacePatterns) {\n return workspacePatterns.flatMap((workspace) => {\n if (!workspace.includes(\"*\")) {\n return [workspace];\n }\n return FastGlob.globSync(workspace, {\n onlyDirectories: true,\n cwd: root,\n ignore: [\"**/node_modules\"]\n });\n });\n}\nfunction accumulatePackages(root, paths) {\n const results = [];\n for (const relativePath of paths) {\n const path = join(root, relativePath);\n if (Package.exists(path)) {\n const package_ = new Package(path, root);\n results.push(\n // Add the current package.\n package_,\n ...accumulatePackages(path, expandWorkspaces(path, package_.workspacePatterns))\n );\n }\n }\n return results;\n}\nclass Package {\n /** Absolute path to package */\n path;\n /** Absolute path to workspace.*/\n pathWorkspace;\n /** Absolute path to package.json. */\n pathPackageJson;\n packageJson;\n packageJsonEndsInNewline;\n pnpmWorkspacePackages;\n constructor(path, pathWorkspace) {\n this.path = path;\n this.pathWorkspace = pathWorkspace;\n this.pathPackageJson = join(path, \"package.json\");\n const packageJsonContents = readFileSync(this.pathPackageJson, \"utf8\");\n this.packageJsonEndsInNewline = packageJsonContents.endsWith(\"\\n\");\n this.packageJson = JSON.parse(packageJsonContents);\n const pnpmWorkspacePath = join(path, \"pnpm-workspace.yaml\");\n if (existsSync(pnpmWorkspacePath)) {\n const pnpmWorkspaceContents = readFileSync(pnpmWorkspacePath, \"utf8\");\n const pnpmWorkspaceYaml = load(pnpmWorkspaceContents);\n this.pnpmWorkspacePackages = pnpmWorkspaceYaml.packages;\n }\n }\n get name() {\n if (this.workspacePatterns.length > 0 && !this.packageJson.name) {\n return \"(Root)\";\n }\n if (!this.packageJson.name) {\n throw new Error(`${this.pathPackageJson} missing \\`name\\``);\n }\n return this.packageJson.name;\n }\n /** Relative to workspace root. */\n get pathRelative() {\n return relative(this.pathWorkspace, this.path);\n }\n get workspacePatterns() {\n if (this.packageJson.workspaces) {\n if (Array.isArray(this.packageJson.workspaces)) {\n return this.packageJson.workspaces;\n } else if (this.packageJson.workspaces.packages) {\n if (!Array.isArray(this.packageJson.workspaces.packages)) {\n throw new TypeError(\"package.json `workspaces.packages` is not a string array.\");\n }\n return this.packageJson.workspaces.packages;\n } else {\n throw new TypeError(\"package.json `workspaces` is not a string array.\");\n }\n }\n if (this.pnpmWorkspacePackages) {\n if (!Array.isArray(this.pnpmWorkspacePackages)) {\n throw new TypeError(\"pnpm-workspace.yaml `packages` is not a string array.\");\n }\n return this.pnpmWorkspacePackages;\n }\n return [];\n }\n static exists(path) {\n const packageJsonPath = join(path, \"package.json\");\n return existsSync(packageJsonPath);\n }\n static some(packages, callback) {\n return packages.some((package_) => callback(package_));\n }\n static comparator(package1, package2) {\n return package1.name.localeCompare(package2.name);\n }\n}\nvar DEPENDENCY_TYPE = /* @__PURE__ */ ((DEPENDENCY_TYPE2) => {\n DEPENDENCY_TYPE2[\"dependencies\"] = \"dependencies\";\n DEPENDENCY_TYPE2[\"devDependencies\"] = \"devDependencies\";\n DEPENDENCY_TYPE2[\"optionalDependencies\"] = \"optionalDependencies\";\n DEPENDENCY_TYPE2[\"peerDependencies\"] = \"peerDependencies\";\n DEPENDENCY_TYPE2[\"resolutions\"] = \"resolutions\";\n return DEPENDENCY_TYPE2;\n})(DEPENDENCY_TYPE || {});\nconst DEFAULT_DEP_TYPES = [\n \"dependencies\" /* dependencies */,\n \"devDependencies\" /* devDependencies */,\n \"optionalDependencies\" /* optionalDependencies */,\n \"resolutions\" /* resolutions */\n // peerDependencies is not included by default, see discussion in: https://github.com/bmish/check-dependency-version-consistency/issues/402\n];\nfunction check(path) {\n const options = {\n includeDepPattern: [\"tamagui\", \"react-native-web-lite\", \"react-native-web-internals\"]\n };\n if (options && options.depType && options.depType.some((dt) => !Object.keys(DEPENDENCY_TYPE).includes(dt))) {\n throw new Error(\n `Invalid depType provided. Choices are: ${Object.keys(DEPENDENCY_TYPE).join(\", \")}.`\n );\n }\n const optionsWithDefaults = {\n fix: false,\n ignoreDep: [],\n includeDepPattern: [],\n ignorePackage: [],\n ignorePackagePattern: [],\n ignorePath: [],\n ignorePathPattern: [],\n ...options,\n // Fallback to default if no depType(s) provided.\n depType: options && options.depType && options.depType.length > 0 ? options.depType : DEFAULT_DEP_TYPES\n };\n const packages = getPackages(\n path,\n optionsWithDefaults.ignorePackage,\n optionsWithDefaults.ignorePackagePattern.map((s) => new RegExp(s)),\n optionsWithDefaults.ignorePath,\n optionsWithDefaults.ignorePathPattern.map((s) => new RegExp(s))\n );\n const dependencies = calculateVersionsForEachDependency(\n packages,\n optionsWithDefaults.depType.map((dt) => DEPENDENCY_TYPE[dt])\n // Convert string to enum.\n );\n const dependenciesAndVersions = calculateDependenciesAndVersions(dependencies);\n const dependenciesAndVersionsWithMismatches = dependenciesAndVersions.filter(\n ({ versions }) => versions.length > 1\n );\n const dependenciesAndVersionsWithoutIgnored = filterOutIgnoredDependencies(\n dependenciesAndVersions,\n optionsWithDefaults.ignoreDep,\n optionsWithDefaults.includeDepPattern.map((s) => new RegExp(s))\n );\n const dependenciesAndVersionsMismatchesWithoutIgnored = filterOutIgnoredDependencies(\n dependenciesAndVersionsWithMismatches,\n optionsWithDefaults.ignoreDep,\n optionsWithDefaults.includeDepPattern.map((s) => new RegExp(s))\n );\n return {\n // Information about all dependencies.\n dependencies: Object.fromEntries(\n dependenciesAndVersionsWithoutIgnored.map(({ dependency, versions }) => {\n return [\n dependency,\n {\n isMismatching: dependenciesAndVersionsMismatchesWithoutIgnored.some(\n (dep) => dep.dependency === dependency\n ),\n versions\n }\n ];\n })\n )\n };\n}\nclass CDVC {\n /** An object mapping each dependency in the workspace to information including the versions found of it. */\n dependencies;\n /**\n * @param path - path to the workspace root\n * @param options\n * @param options.fix - Whether to autofix inconsistencies (using latest version present)\n * @param options.ignoreDep - Dependency(s) to ignore mismatches for\n * @param options.includeDepPattern - RegExp(s) of dependency names to ignore mismatches for\n * @param options.ignorePackage - Workspace package(s) to ignore mismatches for\n * @param options.ignorePackagePattern - RegExp(s) of package names to ignore mismatches for\n * @param options.ignorePath - Workspace-relative path(s) of packages to ignore mismatches for\n * @param options.ignorePathPattern - RegExp(s) of workspace-relative path of packages to ignore mismatches for\n */\n constructor(path) {\n const { dependencies } = check(path);\n this.dependencies = dependencies;\n }\n toMismatchSummary() {\n return dependenciesToMismatchSummary(this.dependencies);\n }\n getDependencies() {\n return Object.keys(this.dependencies).map(\n (dependency) => this.getDependency(dependency)\n );\n }\n getDependency(name) {\n return {\n name,\n isMismatching: this.dependencies[name].isMismatching,\n versions: this.dependencies[name].versions.map((version) => ({\n version: version.version,\n packages: version.packages.map((package_) => ({\n pathRelative: package_.pathRelative\n }))\n }))\n };\n }\n get hasMismatchingDependencies() {\n return Object.values(this.dependencies).some((dep) => dep.isMismatching);\n }\n}\nfunction dependenciesToMismatchSummary(dependencies) {\n const mismatchingDependencyVersions = Object.entries(dependencies).filter(([, value]) => value.isMismatching).map(([dependency, value]) => ({ dependency, versions: value.versions }));\n if (mismatchingDependencyVersions.length === 0) {\n return \"\";\n }\n const tables = mismatchingDependencyVersions.map((object) => {\n return `${object.dependency} - ${object.versions.map((v) => `${v.version}`).join(\", \")}`;\n }).join(\"\");\n return [\n `Found ${mismatchingDependencyVersions.length} ${mismatchingDependencyVersions.length === 1 ? \"dependency\" : \"dependencies\"} with mismatching versions across the workspace.`,\n tables\n ].join(\"\\n\");\n}\nexport {\n CDVC\n};\n//# sourceMappingURL=check-dep-versions.js.map\n"],"mappings":"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"}
|