@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,208 @@
|
|
|
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 graph_exports = {};
|
|
28
|
+
__export(graph_exports, {
|
|
29
|
+
checkZeroGraph: () => checkZeroGraph,
|
|
30
|
+
erasedExportEscape: () => erasedExportEscape,
|
|
31
|
+
formatZeroGraphFailure: () => formatZeroGraphFailure,
|
|
32
|
+
formatZeroViolations: () => formatZeroViolations,
|
|
33
|
+
isForbiddenZeroModuleId: () => isForbiddenZeroModuleId,
|
|
34
|
+
isTamaguiModuleId: () => isTamaguiModuleId,
|
|
35
|
+
offsetToLineColumn: () => offsetToLineColumn,
|
|
36
|
+
owningPackageOf: () => owningPackageOf,
|
|
37
|
+
owningPackageOfDir: () => owningPackageOfDir,
|
|
38
|
+
sortZeroViolations: () => sortZeroViolations,
|
|
39
|
+
writeZeroGraphReceipt: () => writeZeroGraphReceipt,
|
|
40
|
+
writeZeroViolationReport: () => writeZeroViolationReport
|
|
41
|
+
});
|
|
42
|
+
module.exports = __toCommonJS(graph_exports);
|
|
43
|
+
var import_compiler_core = require("@tamagui/compiler-core");
|
|
44
|
+
var import_node_fs = require("node:fs");
|
|
45
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
46
|
+
const ALLOWED_ZERO_MODULE = /animated-number/;
|
|
47
|
+
const owningPackageCache = /* @__PURE__ */ new Map();
|
|
48
|
+
function owningPackageOf(id) {
|
|
49
|
+
const clean = id.split(/[?#]/, 1)[0];
|
|
50
|
+
if (!clean || clean.startsWith("\0") || !import_node_path.default.isAbsolute(clean)) return null;
|
|
51
|
+
return owningPackageOfDir(import_node_path.default.dirname(clean));
|
|
52
|
+
}
|
|
53
|
+
function owningPackageOfDir(from) {
|
|
54
|
+
if (!from || !import_node_path.default.isAbsolute(from)) return null;
|
|
55
|
+
let dir = from;
|
|
56
|
+
const visited = [];
|
|
57
|
+
while (true) {
|
|
58
|
+
const cached = owningPackageCache.get(dir);
|
|
59
|
+
if (cached !== void 0) {
|
|
60
|
+
for (const seen of visited) owningPackageCache.set(seen, cached);
|
|
61
|
+
return cached;
|
|
62
|
+
}
|
|
63
|
+
visited.push(dir);
|
|
64
|
+
const manifest = import_node_path.default.join(dir, "package.json");
|
|
65
|
+
if ((0, import_node_fs.existsSync)(manifest)) {
|
|
66
|
+
let owner = null;
|
|
67
|
+
try {
|
|
68
|
+
owner = {
|
|
69
|
+
name: JSON.parse((0, import_node_fs.readFileSync)(manifest, "utf8")).name ?? null,
|
|
70
|
+
manifest
|
|
71
|
+
};
|
|
72
|
+
} catch {
|
|
73
|
+
owner = {
|
|
74
|
+
name: null,
|
|
75
|
+
manifest
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
for (const seen of visited) owningPackageCache.set(seen, owner);
|
|
79
|
+
return owner;
|
|
80
|
+
}
|
|
81
|
+
const parent = import_node_path.default.dirname(dir);
|
|
82
|
+
if (parent === dir) {
|
|
83
|
+
for (const seen of visited) owningPackageCache.set(seen, null);
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
dir = parent;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function isTamaguiModuleId(id, ownManifest) {
|
|
90
|
+
const owner = owningPackageOf(id);
|
|
91
|
+
if (!owner?.name) return false;
|
|
92
|
+
if (ownManifest && owner.manifest === ownManifest) return false;
|
|
93
|
+
return owner.name === "tamagui" || owner.name.startsWith("@tamagui/");
|
|
94
|
+
}
|
|
95
|
+
function isForbiddenZeroModuleId(id, ownManifest) {
|
|
96
|
+
if (!isTamaguiModuleId(id, ownManifest)) return false;
|
|
97
|
+
return !ALLOWED_ZERO_MODULE.test(id);
|
|
98
|
+
}
|
|
99
|
+
function shortestChain(target, entries, importersOf) {
|
|
100
|
+
const entrySet = new Set(entries);
|
|
101
|
+
const seen = /* @__PURE__ */ new Set([target]);
|
|
102
|
+
const queue = [[target]];
|
|
103
|
+
let longest = [target];
|
|
104
|
+
while (queue.length) {
|
|
105
|
+
const chain = queue.shift();
|
|
106
|
+
const head = chain[0];
|
|
107
|
+
if (entrySet.has(head)) return chain;
|
|
108
|
+
if (chain.length > longest.length) longest = chain;
|
|
109
|
+
for (const importer of importersOf.get(head) ?? []) {
|
|
110
|
+
if (seen.has(importer)) continue;
|
|
111
|
+
seen.add(importer);
|
|
112
|
+
queue.push([importer, ...chain]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return longest;
|
|
116
|
+
}
|
|
117
|
+
function checkZeroGraph(input) {
|
|
118
|
+
const importersOf = new Map(input.importerEdges);
|
|
119
|
+
for (const module2 of input.modules) {
|
|
120
|
+
if (!importersOf.has(module2.id)) importersOf.set(module2.id, module2.importers ?? []);
|
|
121
|
+
}
|
|
122
|
+
const ownManifest = input.root ? owningPackageOfDir(input.root)?.manifest ?? null : null;
|
|
123
|
+
const tamaguiModules = input.modules.map((module2) => module2.id).filter((id) => isTamaguiModuleId(id, ownManifest)).sort();
|
|
124
|
+
const forbidden = tamaguiModules.filter((id) => isForbiddenZeroModuleId(id, ownManifest)).map((id) => ({
|
|
125
|
+
id,
|
|
126
|
+
chain: shortestChain(id, input.entries, importersOf),
|
|
127
|
+
owner: owningPackageOf(id)?.name ?? ""
|
|
128
|
+
}));
|
|
129
|
+
return {
|
|
130
|
+
tamaguiModules,
|
|
131
|
+
forbidden
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function formatZeroGraphFailure(receipt) {
|
|
135
|
+
const lines = [`[tamagui zero-runtime] ${receipt.integration} zero entry graph contains ${receipt.forbidden.length} forbidden Tamagui module(s)`, ""];
|
|
136
|
+
for (const entry of receipt.forbidden) {
|
|
137
|
+
lines.push(entry.owner ? `${entry.id} (package ${entry.owner})` : entry.id);
|
|
138
|
+
lines.push(entry.chain.length > 1 ? ` ${entry.chain.join("\n -> ")}` : ` (this bundler exposed no importer edges for that module)`);
|
|
139
|
+
}
|
|
140
|
+
lines.push("");
|
|
141
|
+
lines.push(import_compiler_core.ZERO_FAILURE_FOOTER);
|
|
142
|
+
return lines.join("\n");
|
|
143
|
+
}
|
|
144
|
+
function writeZeroGraphReceipt(outDir, name, receipt) {
|
|
145
|
+
(0, import_node_fs.mkdirSync)(outDir, { recursive: true });
|
|
146
|
+
const file = import_node_path.default.join(outDir, `${name}.graph.json`);
|
|
147
|
+
(0, import_node_fs.writeFileSync)(file, `${JSON.stringify(receipt, null, 2)}
|
|
148
|
+
`);
|
|
149
|
+
return file;
|
|
150
|
+
}
|
|
151
|
+
function sortZeroViolations(sites) {
|
|
152
|
+
return [...sites].sort((left, right) => (left.file < right.file ? -1 : left.file > right.file ? 1 : 0) || left.line - right.line || left.column - right.column || left.rule - right.rule || (left.message < right.message ? -1 : left.message > right.message ? 1 : 0));
|
|
153
|
+
}
|
|
154
|
+
function formatZeroViolations(sites) {
|
|
155
|
+
const sorted = sortZeroViolations(sites);
|
|
156
|
+
const lines = [`[tamagui zero-runtime] build failed with ${sorted.length} violations`, ""];
|
|
157
|
+
for (const site of sorted) {
|
|
158
|
+
lines.push(`Rule ${site.rule} ${site.code}`);
|
|
159
|
+
lines.push(`${site.file}:${site.line}:${site.column}${site.component ? ` ${site.component}` : ""}`);
|
|
160
|
+
lines.push(` ${site.message}`);
|
|
161
|
+
lines.push("");
|
|
162
|
+
}
|
|
163
|
+
lines.push(import_compiler_core.ZERO_FAILURE_FOOTER);
|
|
164
|
+
return lines.join("\n");
|
|
165
|
+
}
|
|
166
|
+
function writeZeroViolationReport(outDir, name, report) {
|
|
167
|
+
(0, import_node_fs.mkdirSync)(outDir, { recursive: true });
|
|
168
|
+
const file = import_node_path.default.join(outDir, `${name}.violations.json`);
|
|
169
|
+
(0, import_node_fs.writeFileSync)(file, `${JSON.stringify({
|
|
170
|
+
integration: report.integration,
|
|
171
|
+
mode: report.mode,
|
|
172
|
+
count: report.violations.length,
|
|
173
|
+
violations: sortZeroViolations(report.violations)
|
|
174
|
+
}, null, 2)}
|
|
175
|
+
`);
|
|
176
|
+
return file;
|
|
177
|
+
}
|
|
178
|
+
function erasedExportEscape(input) {
|
|
179
|
+
for (const [moduleId, names] of input.erasedExports) {
|
|
180
|
+
if (names.length === 0) continue;
|
|
181
|
+
if (!input.importersOf.has(moduleId)) {
|
|
182
|
+
return `[tamagui zero-runtime] ${input.integration} erased the exported definition(s) ${names.join(", ")} from ${moduleId}, and then could not find that module in its own graph, so nothing proved the erasure was safe.
|
|
183
|
+
|
|
184
|
+
${import_compiler_core.ZERO_FAILURE_FOOTER}`;
|
|
185
|
+
}
|
|
186
|
+
const untransformed = (input.importersOf.get(moduleId) ?? []).filter((importer) => !input.transformed.has(importer));
|
|
187
|
+
if (untransformed.length === 0) continue;
|
|
188
|
+
return `[tamagui zero-runtime] ${input.integration} erased the exported definition(s) ${names.join(", ")} from ${moduleId}, but ${untransformed.length} importer(s) in this entry graph were never zero-transformed and may still reference them:
|
|
189
|
+
${untransformed.join("\n ")}
|
|
190
|
+
|
|
191
|
+
${import_compiler_core.ZERO_FAILURE_FOOTER}`;
|
|
192
|
+
}
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
function offsetToLineColumn(source, offset) {
|
|
196
|
+
let line = 1;
|
|
197
|
+
let lineStart = 0;
|
|
198
|
+
for (let index = 0; index < offset && index < source.length; index++) {
|
|
199
|
+
if (source.charCodeAt(index) === 10) {
|
|
200
|
+
line++;
|
|
201
|
+
lineStart = index + 1;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
line,
|
|
206
|
+
column: offset - lineStart + 1
|
|
207
|
+
};
|
|
208
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var identity_exports = {};
|
|
22
|
+
__export(identity_exports, {
|
|
23
|
+
ZERO_COMPILER_VERSION: () => ZERO_COMPILER_VERSION,
|
|
24
|
+
canonicalizeBridgeManifest: () => canonicalizeBridgeManifest,
|
|
25
|
+
hashBridgeManifest: () => hashBridgeManifest,
|
|
26
|
+
hashZeroIdentity: () => hashZeroIdentity
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(identity_exports);
|
|
29
|
+
var import_compiler_core = require("@tamagui/compiler-core");
|
|
30
|
+
var import_node_crypto = require("node:crypto");
|
|
31
|
+
const ZERO_COMPILER_VERSION = `zero-1/plan-${import_compiler_core.LOWERED_MODULE_PLAN_VERSION}`;
|
|
32
|
+
function hashZeroIdentity(identity) {
|
|
33
|
+
const canonical = {
|
|
34
|
+
runtimeLiteral: identity.runtimeLiteral,
|
|
35
|
+
target: identity.target,
|
|
36
|
+
configGeneration: identity.configGeneration,
|
|
37
|
+
cssHash: identity.cssHash,
|
|
38
|
+
compilerVersion: identity.compilerVersion,
|
|
39
|
+
islandEntries: [...identity.islandEntries].sort(),
|
|
40
|
+
bridgeManifestHash: identity.bridgeManifestHash,
|
|
41
|
+
islandOutputHashes: Object.fromEntries(Object.entries(identity.islandOutputHashes).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0))
|
|
42
|
+
};
|
|
43
|
+
return (0, import_node_crypto.createHash)("sha256").update(JSON.stringify(canonical)).digest("hex").slice(0, 24);
|
|
44
|
+
}
|
|
45
|
+
function canonicalizeBridgeManifest(manifest) {
|
|
46
|
+
if (Array.isArray(manifest)) {
|
|
47
|
+
return manifest.map((entry) => canonicalizeBridgeManifest(entry));
|
|
48
|
+
}
|
|
49
|
+
if (manifest && typeof manifest === "object") {
|
|
50
|
+
const sorted = {};
|
|
51
|
+
for (const key of Object.keys(manifest).sort()) {
|
|
52
|
+
sorted[key] = canonicalizeBridgeManifest(manifest[key]);
|
|
53
|
+
}
|
|
54
|
+
return sorted;
|
|
55
|
+
}
|
|
56
|
+
return manifest;
|
|
57
|
+
}
|
|
58
|
+
function hashBridgeManifest(manifest) {
|
|
59
|
+
return (0, import_node_crypto.createHash)("sha256").update(JSON.stringify(canonicalizeBridgeManifest(manifest))).digest("hex").slice(0, 16);
|
|
60
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
var zero_exports = {};
|
|
23
|
+
__export(zero_exports, { isTamaguiSpecifier: () => import_compiler_core.isTamaguiSpecifier });
|
|
24
|
+
module.exports = __toCommonJS(zero_exports);
|
|
25
|
+
var import_compiler_core = require("@tamagui/compiler-core");
|
|
26
|
+
__reExport(zero_exports, require("./artifact.cjs"), module.exports);
|
|
27
|
+
__reExport(zero_exports, require("./graph.cjs"), module.exports);
|
|
28
|
+
__reExport(zero_exports, require("./identity.cjs"), module.exports);
|
|
29
|
+
__reExport(zero_exports, require("./islands.cjs"), module.exports);
|
|
30
|
+
__reExport(zero_exports, require("./options.cjs"), module.exports);
|
|
31
|
+
__reExport(zero_exports, require("./ownership.cjs"), module.exports);
|
|
32
|
+
__reExport(zero_exports, require("./theme.cjs"), module.exports);
|
|
33
|
+
__reExport(zero_exports, require("./transform.cjs"), module.exports);
|
|
@@ -0,0 +1,234 @@
|
|
|
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 islands_exports = {};
|
|
28
|
+
__export(islands_exports, {
|
|
29
|
+
ISLAND_EXTERNAL_GLOBALS: () => ISLAND_EXTERNAL_GLOBALS,
|
|
30
|
+
ISLAND_EXTERNAL_GLOBAL_PATHS: () => ISLAND_EXTERNAL_GLOBAL_PATHS,
|
|
31
|
+
ISLAND_REGISTRY_KEY: () => ISLAND_REGISTRY_KEY,
|
|
32
|
+
ISLAND_RUNTIME_KEY: () => ISLAND_RUNTIME_KEY,
|
|
33
|
+
generateIslandEntrySource: () => generateIslandEntrySource,
|
|
34
|
+
generateIslandLoaderSource: () => generateIslandLoaderSource,
|
|
35
|
+
mergeIslandBridges: () => mergeIslandBridges,
|
|
36
|
+
writeIslandModules: () => writeIslandModules
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(islands_exports);
|
|
39
|
+
var import_node_fs = require("node:fs");
|
|
40
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
41
|
+
const ISLAND_RUNTIME_KEY = "__tamagui_island_runtime__";
|
|
42
|
+
const ISLAND_REGISTRY_KEY = "__tamagui_islands__";
|
|
43
|
+
function writeIfChanged(file, content) {
|
|
44
|
+
(0, import_node_fs.mkdirSync)(import_node_path.default.dirname(file), { recursive: true });
|
|
45
|
+
let existing = null;
|
|
46
|
+
try {
|
|
47
|
+
existing = (0, import_node_fs.readFileSync)(file, "utf8");
|
|
48
|
+
} catch {
|
|
49
|
+
existing = null;
|
|
50
|
+
}
|
|
51
|
+
if (existing !== content) (0, import_node_fs.writeFileSync)(file, content);
|
|
52
|
+
}
|
|
53
|
+
function importPath(from, to) {
|
|
54
|
+
const relative = import_node_path.default.relative(import_node_path.default.dirname(from), to).replace(/\\/g, "/");
|
|
55
|
+
return relative.startsWith(".") ? relative : `./${relative}`;
|
|
56
|
+
}
|
|
57
|
+
function generateIslandLoaderSource(input) {
|
|
58
|
+
return `// generated by @tamagui/static zero-runtime. do not edit.
|
|
59
|
+
import * as React from 'react'
|
|
60
|
+
import * as ReactDOM from 'react-dom'
|
|
61
|
+
import * as JSXRuntime from 'react/jsx-runtime'
|
|
62
|
+
|
|
63
|
+
const ISLAND_ID = ${JSON.stringify(input.island.id)}
|
|
64
|
+
const ISLAND_SRC = ${JSON.stringify(input.scriptUrl)}
|
|
65
|
+
const CSS_HREF = ${JSON.stringify(input.cssHref)}
|
|
66
|
+
const INTEGRATION = ${JSON.stringify(input.integration)}
|
|
67
|
+
|
|
68
|
+
function sharedRuntime() {
|
|
69
|
+
const scope = globalThis
|
|
70
|
+
if (!scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}]) {
|
|
71
|
+
scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}] = {
|
|
72
|
+
react: React,
|
|
73
|
+
reactDom: ReactDOM,
|
|
74
|
+
jsxRuntime: JSXRuntime,
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) {
|
|
78
|
+
scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}
|
|
79
|
+
}
|
|
80
|
+
return scope
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// The one accepted runtime recovery in zero-runtime mode, and it is loud on
|
|
84
|
+
// purpose. "Unimported" is not decidable at build time for a published zero
|
|
85
|
+
// artifact on Next or Metro, so the loader still guarantees the island has its
|
|
86
|
+
// styles; on a correct build this never runs.
|
|
87
|
+
function ensureZeroStylesheet() {
|
|
88
|
+
const links = document.querySelectorAll('link[rel="stylesheet"]')
|
|
89
|
+
for (let index = 0; index < links.length; index++) {
|
|
90
|
+
const href = links[index].getAttribute('href') || ''
|
|
91
|
+
if (href === CSS_HREF || href.split('?')[0].endsWith(CSS_HREF)) return
|
|
92
|
+
}
|
|
93
|
+
console.error(
|
|
94
|
+
'[tamagui zero-runtime] the page did not link the generated CSS artifact ' +
|
|
95
|
+
CSS_HREF +
|
|
96
|
+
', so island "' +
|
|
97
|
+
ISLAND_ID +
|
|
98
|
+
'" (' +
|
|
99
|
+
INTEGRATION +
|
|
100
|
+
') is loading it at runtime. On a correct build this never happens: the ' +
|
|
101
|
+
'artifact is generated by the build and must be linked by the document ' +
|
|
102
|
+
'that mounts the island. Fix the document, not this recovery.'
|
|
103
|
+
)
|
|
104
|
+
const link = document.createElement('link')
|
|
105
|
+
link.rel = 'stylesheet'
|
|
106
|
+
link.href = CSS_HREF
|
|
107
|
+
link.setAttribute('data-tamagui-zero-css', '1')
|
|
108
|
+
document.head.appendChild(link)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let pending = null
|
|
112
|
+
|
|
113
|
+
function loadIsland() {
|
|
114
|
+
const scope = sharedRuntime()
|
|
115
|
+
const registered = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]
|
|
116
|
+
if (registered) return Promise.resolve(registered)
|
|
117
|
+
if (!pending) {
|
|
118
|
+
pending = new Promise((resolve, reject) => {
|
|
119
|
+
ensureZeroStylesheet()
|
|
120
|
+
const script = document.createElement('script')
|
|
121
|
+
script.src = ISLAND_SRC
|
|
122
|
+
script.async = true
|
|
123
|
+
script.onload = () => {
|
|
124
|
+
const mod = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]
|
|
125
|
+
if (mod) resolve(mod)
|
|
126
|
+
else reject(new Error('tamagui island ' + ISLAND_ID + ' did not register'))
|
|
127
|
+
}
|
|
128
|
+
script.onerror = () => reject(new Error('tamagui island ' + ISLAND_ID + ' failed to load ' + ISLAND_SRC))
|
|
129
|
+
document.head.appendChild(script)
|
|
130
|
+
})
|
|
131
|
+
}
|
|
132
|
+
return pending
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export default function TamaguiIsland(props) {
|
|
136
|
+
const bridgeId = props['data-tamagui-bridge'] || 'root'
|
|
137
|
+
const [Loaded, setLoaded] = React.useState(null)
|
|
138
|
+
|
|
139
|
+
React.useEffect(() => {
|
|
140
|
+
let cancelled = false
|
|
141
|
+
loadIsland().then((mod) => {
|
|
142
|
+
if (!cancelled) setLoaded(() => mod.Island)
|
|
143
|
+
})
|
|
144
|
+
return () => {
|
|
145
|
+
cancelled = true
|
|
146
|
+
}
|
|
147
|
+
}, [])
|
|
148
|
+
|
|
149
|
+
if (!Loaded) {
|
|
150
|
+
return React.createElement('div', {
|
|
151
|
+
'data-tamagui-island': ISLAND_ID,
|
|
152
|
+
'data-tamagui-bridge': bridgeId,
|
|
153
|
+
})
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const forwarded = {}
|
|
157
|
+
for (const key in props) forwarded[key] = props[key]
|
|
158
|
+
forwarded['data-tamagui-island'] = ISLAND_ID
|
|
159
|
+
return React.createElement(Loaded, forwarded)
|
|
160
|
+
}
|
|
161
|
+
`;
|
|
162
|
+
}
|
|
163
|
+
function generateIslandEntrySource(input) {
|
|
164
|
+
const entry = input.island.entry;
|
|
165
|
+
return `// generated by @tamagui/static zero-runtime. do not edit.
|
|
166
|
+
import * as React from 'react'
|
|
167
|
+
import { TamaguiProvider, Theme } from 'tamagui'
|
|
168
|
+
import { createThemeUpdateState } from '@tamagui/web/theme-update'
|
|
169
|
+
import config from ${JSON.stringify(importPath(entry, input.configPath))}
|
|
170
|
+
import IslandRoot from ${JSON.stringify(importPath(entry, input.island.module))}
|
|
171
|
+
|
|
172
|
+
export function Island(props) {
|
|
173
|
+
const bridge = props.__tamaguiBridge
|
|
174
|
+
const inner = {}
|
|
175
|
+
for (const key in props) {
|
|
176
|
+
if (key !== '__tamaguiBridge') inner[key] = props[key]
|
|
177
|
+
}
|
|
178
|
+
let node = React.createElement(IslandRoot, inner)
|
|
179
|
+
const layers = (bridge && bridge.layers) || []
|
|
180
|
+
for (let index = layers.length - 1; index >= 0; index--) {
|
|
181
|
+
node = React.createElement(
|
|
182
|
+
Theme,
|
|
183
|
+
{
|
|
184
|
+
_themeUpdate: createThemeUpdateState(
|
|
185
|
+
layers[index].inlineValues,
|
|
186
|
+
layers[index].inlineClassName
|
|
187
|
+
),
|
|
188
|
+
forceClassName: true,
|
|
189
|
+
},
|
|
190
|
+
node
|
|
191
|
+
)
|
|
192
|
+
}
|
|
193
|
+
// isSubtreeRoot: the island shares a document with a zero page that already
|
|
194
|
+
// has its own compiled theme spans, so its provider must not write a theme
|
|
195
|
+
// class onto html or body and must carry its own theme on its own node.
|
|
196
|
+
return React.createElement(
|
|
197
|
+
TamaguiProvider,
|
|
198
|
+
{
|
|
199
|
+
config,
|
|
200
|
+
defaultTheme: (bridge && bridge.name) || 'light',
|
|
201
|
+
disableInjectCSS: true,
|
|
202
|
+
isSubtreeRoot: true,
|
|
203
|
+
},
|
|
204
|
+
node
|
|
205
|
+
)
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const scope = globalThis
|
|
209
|
+
if (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}
|
|
210
|
+
scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][${JSON.stringify(input.island.id)}] = { Island }
|
|
211
|
+
`;
|
|
212
|
+
}
|
|
213
|
+
function writeIslandModules(input) {
|
|
214
|
+
writeIfChanged(input.island.loader, generateIslandLoaderSource(input));
|
|
215
|
+
writeIfChanged(input.island.entry, generateIslandEntrySource(input));
|
|
216
|
+
}
|
|
217
|
+
const ISLAND_EXTERNAL_GLOBAL_PATHS = {
|
|
218
|
+
react: [ISLAND_RUNTIME_KEY, "react"],
|
|
219
|
+
"react-dom": [ISLAND_RUNTIME_KEY, "reactDom"],
|
|
220
|
+
"react/jsx-runtime": [ISLAND_RUNTIME_KEY, "jsxRuntime"]
|
|
221
|
+
};
|
|
222
|
+
const ISLAND_EXTERNAL_GLOBALS = Object.fromEntries(Object.entries(ISLAND_EXTERNAL_GLOBAL_PATHS).map(([name, segments]) => [name, `globalThis.${segments.join(".")}`]));
|
|
223
|
+
function mergeIslandBridges(target, incoming) {
|
|
224
|
+
for (const [islandId, bridges] of incoming) {
|
|
225
|
+
const list = target.get(islandId) ?? [];
|
|
226
|
+
for (const bridge of bridges) {
|
|
227
|
+
const index = list.findIndex((existing) => existing.id === bridge.id);
|
|
228
|
+
if (index >= 0) list[index] = bridge;
|
|
229
|
+
else list.push(bridge);
|
|
230
|
+
}
|
|
231
|
+
list.sort((left, right) => left.id < right.id ? -1 : left.id > right.id ? 1 : 0);
|
|
232
|
+
target.set(islandId, list);
|
|
233
|
+
}
|
|
234
|
+
}
|