@tamagui/metro-plugin 3.0.0-beta.669.1 → 3.0.0-beta.728.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.
@@ -1 +1 @@
1
- {"version":3,"file":"metroResolver.js","names":[],"sources":["esm/metroResolver.js"],"sourcesContent":["import { existsSync, lstatSync, readFileSync, realpathSync, statSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, extname, isAbsolute, join, parse, relative, resolve } from \"node:path\";\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction findClosestPackage(path) {\n let directory = existsSync(path) && statSync(path).isDirectory() ? path : dirname(path);\n const root = parse(directory).root;\n while (true) {\n const packagePath = join(directory, \"package.json\");\n if (existsSync(packagePath)) {\n try {\n return {\n rootPath: directory,\n packageJson: JSON.parse(readFileSync(packagePath, \"utf8\")),\n packageRelativePath: relative(directory, path)\n };\n } catch {\n return null;\n }\n }\n if (directory === root || directory.endsWith(`${join(\"node_modules\")}`)) {\n return null;\n }\n directory = dirname(directory);\n }\n}\nfunction lookup(projectRoot, path) {\n const absolutePath = isAbsolute(path) ? path : resolve(projectRoot, path);\n try {\n const stat = lstatSync(absolutePath);\n const realPath = realpathSync(absolutePath);\n return {\n exists: true,\n type: stat.isDirectory() ? \"d\" : \"f\",\n realPath\n };\n } catch {\n return { exists: false };\n }\n}\nfunction moduleSpecifiersFromAst(ast) {\n const specifiers = /* @__PURE__ */ new Map();\n const seen = /* @__PURE__ */ new Set();\n function add(value, isESMImport) {\n if (typeof value !== \"string\") return;\n specifiers.set(value, (specifiers.get(value) ?? false) || isESMImport);\n }\n function visit(value) {\n if (!value || typeof value !== \"object\") return;\n if (seen.has(value)) return;\n seen.add(value);\n if (Array.isArray(value)) {\n for (const child of value) visit(child);\n return;\n }\n const node = value;\n if (node.type === \"ImportDeclaration\" || node.type === \"ExportAllDeclaration\" || node.type === \"ExportNamedDeclaration\") {\n add(node.source?.value, true);\n } else if (node.type === \"CallExpression\") {\n const first = node.arguments?.[0];\n if (node.callee?.type === \"Import\") {\n add(first?.value, true);\n } else if (node.callee?.type === \"Identifier\" && node.callee.name === \"require\") {\n add(first?.value, false);\n }\n }\n for (const [key, child] of Object.entries(node)) {\n if (key === \"loc\" || key === \"comments\" || key === \"tokens\") continue;\n visit(child);\n }\n }\n visit(ast);\n return [...specifiers].sort(([left], [right]) => compareCodeUnits(left, right)).map(([specifier, isESMImport]) => ({ specifier, isESMImport }));\n}\nfunction createMetroCompilerResolver(config) {\n const requireFromProject = createRequire(join(config.projectRoot, \"package.json\"));\n const resolverPackage = requireFromProject(\"metro-resolver/package.json\");\n if (!resolverPackage.version.startsWith(\"0.84.\")) {\n throw new Error(\n `@tamagui/metro-plugin requires the Metro 0.84 resolver contract, found ${resolverPackage.version}`\n );\n }\n const resolverModule = requireFromProject(\"metro-resolver\");\n const metroResolve = resolverModule.resolve;\n const createDefaultContextModule = requireFromProject(\n \"metro-resolver/private/createDefaultContext\"\n );\n const createDefaultContext = createDefaultContextModule.default ?? createDefaultContextModule;\n const resolver = config.resolver ?? {};\n const fileSystemLookup = (path) => lookup(config.projectRoot, path);\n const getPackage = (packagePath) => {\n try {\n return JSON.parse(readFileSync(packagePath, \"utf8\"));\n } catch {\n return null;\n }\n };\n return {\n version: resolverPackage.version,\n resolve(importer, dependency, platform) {\n const dependencyDescriptor = {\n name: dependency.specifier,\n data: {\n asyncType: null,\n isESMImport: dependency.isESMImport,\n key: dependency.specifier,\n locs: []\n }\n };\n const context = createDefaultContext(\n {\n allowHaste: false,\n assetExts: new Set(resolver.assetExts ?? []),\n customResolverOptions: {},\n dev: true,\n disableHierarchicalLookup: resolver.disableHierarchicalLookup ?? false,\n doesFileExist: (path) => fileSystemLookup(path).type === \"f\",\n extraNodeModules: resolver.extraNodeModules ?? null,\n fileSystemLookup,\n getPackage,\n getPackageForModule: findClosestPackage,\n isESMImport: dependency.isESMImport,\n mainFields: resolver.resolverMainFields ?? [\"react-native\", \"browser\", \"main\"],\n nodeModulesPaths: resolver.nodeModulesPaths ?? [],\n originModulePath: importer,\n preferNativePlatform: true,\n projectRoot: config.projectRoot,\n resolveAsset: () => null,\n resolveHasteModule: () => null,\n resolveHastePackage: () => null,\n resolveRequest: resolver.resolveRequest ?? null,\n sourceExts: resolver.sourceExts ?? [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\"],\n unstable_conditionNames: resolver.unstable_conditionNames ?? [],\n unstable_conditionsByPlatform: resolver.unstable_conditionsByPlatform ?? {},\n unstable_enablePackageExports: resolver.unstable_enablePackageExports ?? true,\n unstable_logWarning: (message) => config.resolver?.unstable_logWarning?.(message)\n },\n dependencyDescriptor\n );\n const result = metroResolve(context, dependency.specifier, platform);\n if (result.type === \"empty\") return null;\n if (result.type !== \"sourceFile\" || !result.filePath) return null;\n const resolvedId = realpathSync(result.filePath);\n return {\n specifier: dependency.specifier,\n resolvedId,\n external: resolvedId.includes(`${join(\"node_modules\")}`)\n };\n }\n };\n}\nfunction isCompilerSourceFile(path) {\n return [\".js\", \".jsx\", \".mjs\", \".cjs\", \".ts\", \".tsx\"].includes(extname(path));\n}\nexport {\n createMetroCompilerResolver,\n isCompilerSourceFile,\n moduleSpecifiersFromAst\n};\n//# sourceMappingURL=metroResolver.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"metroResolver.js","names":[],"sources":["esm/metroResolver.js"],"sourcesContent":["import { existsSync, lstatSync, readFileSync, realpathSync, statSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, extname, isAbsolute, join, parse, relative, resolve } from \"node:path\";\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction findClosestPackage(path) {\n let directory = existsSync(path) && statSync(path).isDirectory() ? path : dirname(path);\n const root = parse(directory).root;\n while (true) {\n const packagePath = join(directory, \"package.json\");\n if (existsSync(packagePath)) {\n try {\n return {\n rootPath: directory,\n packageJson: JSON.parse(readFileSync(packagePath, \"utf8\")),\n packageRelativePath: relative(directory, path)\n };\n } catch {\n return null;\n }\n }\n if (directory === root || directory.endsWith(`${join(\"node_modules\")}`)) {\n return null;\n }\n directory = dirname(directory);\n }\n}\nfunction lookup(projectRoot, path) {\n const absolutePath = isAbsolute(path) ? path : resolve(projectRoot, path);\n try {\n const stat = lstatSync(absolutePath);\n const realPath = realpathSync(absolutePath);\n return {\n exists: true,\n type: stat.isDirectory() ? \"d\" : \"f\",\n realPath\n };\n } catch {\n return { exists: false };\n }\n}\nfunction moduleSpecifiersFromAst(ast) {\n const specifiers = /* @__PURE__ */ new Map();\n const seen = /* @__PURE__ */ new Set();\n function add(value, isESMImport) {\n if (typeof value !== \"string\") return;\n specifiers.set(value, (specifiers.get(value) ?? false) || isESMImport);\n }\n function visit(value) {\n if (!value || typeof value !== \"object\") return;\n if (seen.has(value)) return;\n seen.add(value);\n if (Array.isArray(value)) {\n for (const child of value) visit(child);\n return;\n }\n const node = value;\n if (node.type === \"ImportDeclaration\" || node.type === \"ExportAllDeclaration\" || node.type === \"ExportNamedDeclaration\") {\n add(node.source?.value, true);\n } else if (node.type === \"CallExpression\") {\n const first = node.arguments?.[0];\n if (node.callee?.type === \"Import\") {\n add(first?.value, true);\n } else if (node.callee?.type === \"Identifier\" && node.callee.name === \"require\") {\n add(first?.value, false);\n }\n }\n for (const [key, child] of Object.entries(node)) {\n if (key === \"loc\" || key === \"comments\" || key === \"tokens\") continue;\n visit(child);\n }\n }\n visit(ast);\n return [...specifiers].sort(([left], [right]) => compareCodeUnits(left, right)).map(([specifier, isESMImport]) => ({ specifier, isESMImport }));\n}\nfunction createMetroCompilerResolver(config) {\n const requireFromProject = createRequire(join(config.projectRoot, \"package.json\"));\n const resolverPackage = requireFromProject(\"metro-resolver/package.json\");\n if (!resolverPackage.version.startsWith(\"0.84.\")) {\n throw new Error(\n `@tamagui/metro-plugin requires the Metro 0.84 resolver contract, found ${resolverPackage.version}`\n );\n }\n const resolverModule = requireFromProject(\"metro-resolver\");\n const metroResolve = resolverModule.resolve;\n const createDefaultContextModule = requireFromProject(\n \"metro-resolver/private/createDefaultContext\"\n );\n const createDefaultContext = createDefaultContextModule.default ?? createDefaultContextModule;\n const resolver = config.resolver ?? {};\n const fileSystemLookup = (path) => lookup(config.projectRoot, path);\n const getPackage = (packagePath) => {\n try {\n return JSON.parse(readFileSync(packagePath, \"utf8\"));\n } catch {\n return null;\n }\n };\n return {\n version: resolverPackage.version,\n resolve(importer, dependency, platform) {\n const dependencyDescriptor = {\n name: dependency.specifier,\n data: {\n asyncType: null,\n isESMImport: dependency.isESMImport,\n key: dependency.specifier,\n locs: []\n }\n };\n const context = createDefaultContext(\n {\n allowHaste: false,\n assetExts: new Set(resolver.assetExts ?? []),\n customResolverOptions: {},\n dev: true,\n disableHierarchicalLookup: resolver.disableHierarchicalLookup ?? false,\n doesFileExist: (path) => fileSystemLookup(path).type === \"f\",\n extraNodeModules: resolver.extraNodeModules ?? null,\n fileSystemLookup,\n getPackage,\n getPackageForModule: findClosestPackage,\n isESMImport: dependency.isESMImport,\n mainFields: resolver.resolverMainFields ?? [\"react-native\", \"browser\", \"main\"],\n nodeModulesPaths: resolver.nodeModulesPaths ?? [],\n originModulePath: importer,\n preferNativePlatform: true,\n projectRoot: config.projectRoot,\n resolveAsset: () => null,\n resolveHasteModule: () => null,\n resolveHastePackage: () => null,\n resolveRequest: resolver.resolveRequest ?? null,\n sourceExts: resolver.sourceExts ?? [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\"],\n unstable_conditionNames: resolver.unstable_conditionNames ?? [],\n unstable_conditionsByPlatform: resolver.unstable_conditionsByPlatform ?? {},\n unstable_enablePackageExports: resolver.unstable_enablePackageExports ?? true,\n unstable_logWarning: (message) => config.resolver?.unstable_logWarning?.(message)\n },\n dependencyDescriptor\n );\n const result = metroResolve(context, dependency.specifier, platform);\n if (result.type === \"empty\") return null;\n if (result.type !== \"sourceFile\" || !result.filePath) return null;\n const resolvedId = realpathSync(result.filePath);\n return {\n specifier: dependency.specifier,\n resolvedId,\n external: resolvedId.includes(`${join(\"node_modules\")}`)\n };\n }\n };\n}\nfunction isCompilerSourceFile(path) {\n return [\".js\", \".jsx\", \".mjs\", \".cjs\", \".ts\", \".tsx\"].includes(extname(path));\n}\nexport {\n createMetroCompilerResolver,\n isCompilerSourceFile,\n moduleSpecifiersFromAst\n};\n//# sourceMappingURL=metroResolver.js.map\n"],"mappings":"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"}
@@ -27,42 +27,20 @@ function createMetroCompilerTransformer(config) {
27
27
  return isCompilerSourceFile(moduleId) && !moduleId.includes(`${join("node_modules")}`) && existsSync(moduleId);
28
28
  }
29
29
  const runtimeLiteral = config.runtimeLiteral ?? "full";
30
- const inlineRuntimeLiterals = (platform, { types }) => {
31
- const enabledFeatures = {
32
- inlineThemeValues: "enabled",
33
- styleValueGrammar: "enabled",
34
- safeArea: "enabled"
35
- };
36
- const features = platform === "web" ? {
37
- ...enabledFeatures,
38
- ...config.webRuntimeFeatures
39
- } : enabledFeatures;
40
- const featureByName = {
41
- TAMAGUI_RUNTIME_INLINE_THEME_VALUES: features.inlineThemeValues,
42
- TAMAGUI_RUNTIME_STYLE_VALUE_GRAMMAR: features.styleValueGrammar,
43
- TAMAGUI_RUNTIME_SAFE_AREA: features.safeArea
44
- };
45
- return { visitor: { MemberExpression(nodePath) {
46
- const node = nodePath.node;
47
- if (node.computed || !types.isMemberExpression(node.object) || node.object.computed || !types.isIdentifier(node.object.object, { name: "process" }) || !types.isIdentifier(node.object.property, { name: "env" })) {
48
- return;
49
- }
50
- const name = types.isIdentifier(node.property) ? node.property.name : "";
51
- if (name === "TAMAGUI_RUNTIME") {
52
- nodePath.replaceWith(types.stringLiteral(runtimeLiteral));
53
- return;
54
- }
55
- const literal = featureByName[name];
56
- if (literal) nodePath.replaceWith(types.stringLiteral(literal));
57
- } } };
58
- };
30
+ const inlineRuntimeLiteral = ({ types }) => ({ visitor: { MemberExpression(nodePath) {
31
+ const node = nodePath.node;
32
+ if (node.computed || !types.isIdentifier(node.property, { name: "TAMAGUI_RUNTIME" }) || !types.isMemberExpression(node.object) || node.object.computed || !types.isIdentifier(node.object.object, { name: "process" }) || !types.isIdentifier(node.object.property, { name: "env" })) {
33
+ return;
34
+ }
35
+ nodePath.replaceWith(types.stringLiteral(runtimeLiteral));
36
+ } } });
59
37
  return {
60
38
  async transform(argsIn) {
61
- const platform = typeof argsIn.options.platform === "string" ? argsIn.options.platform : "default";
62
39
  const args = {
63
40
  ...argsIn,
64
- plugins: [...argsIn.plugins ?? [], (babel) => inlineRuntimeLiterals(platform, babel)]
41
+ plugins: [...argsIn.plugins ?? [], inlineRuntimeLiteral]
65
42
  };
43
+ const platform = typeof args.options.platform === "string" ? args.options.platform : "default";
66
44
  const cache = new MetroCompilerCache(join(config.cacheBaseRoot, platform));
67
45
  let tamagui = {
68
46
  cacheHit: false,
@@ -118,7 +96,7 @@ function createMetroCompilerTransformer(config) {
118
96
  };
119
97
  },
120
98
  getCacheKey() {
121
- return createHash("sha256").update(`tamagui-metro-compiler-v${METRO_COMPILER_CACHE_VERSION}`).update("\0").update(runtimeLiteral).update("\0").update(JSON.stringify(config.webRuntimeFeatures ?? {})).update("\0").update(userBabelCacheKey(config.originalBabelTransformerPath)).digest("hex");
99
+ return createHash("sha256").update(`tamagui-metro-compiler-v${METRO_COMPILER_CACHE_VERSION}`).update("\0").update(runtimeLiteral).update("\0").update(userBabelCacheKey(config.originalBabelTransformerPath)).digest("hex");
122
100
  }
123
101
  };
124
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transformer.js","names":[],"sources":["esm/transformer.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, realpathSync, renameSync, writeFileSync } from \"node:fs\";\nimport { isAbsolute, join, resolve } from \"node:path\";\nimport {\n compileWithUserBabel,\n userBabelCacheKey\n} from \"./babel\";\nimport {\n METRO_COMPILER_CACHE_VERSION,\n MetroCompilerCache,\n MetroCompilerCacheError\n} from \"./compilerCache\";\nimport {\n formatMetroCompilerDiagnostic,\n metroDiagnostic\n} from \"./diagnostics\";\nimport { isCompilerSourceFile } from \"./metroResolver\";\nimport { applyMetroCompilerPlan } from \"./lowering\";\nfunction createMetroCompilerTransformer(config) {\n const moduleIdCache = /* @__PURE__ */ new Map();\n const missWarned = /* @__PURE__ */ new Set();\n function cacheModuleId(filename) {\n let id = moduleIdCache.get(filename);\n if (!id) {\n const absolute = isAbsolute(filename) ? filename : resolve(config.projectRoot, filename);\n try {\n id = realpathSync(absolute);\n } catch {\n id = absolute;\n }\n moduleIdCache.set(filename, id);\n }\n return id;\n }\n function planEligible(moduleId) {\n return isCompilerSourceFile(moduleId) && !moduleId.includes(`${join(\"node_modules\")}`) && existsSync(moduleId);\n }\n const runtimeLiteral = config.runtimeLiteral ?? \"full\";\n const inlineRuntimeLiterals = (platform, { types }) => {\n const enabledFeatures = {\n inlineThemeValues: \"enabled\",\n styleValueGrammar: \"enabled\",\n safeArea: \"enabled\"\n };\n const features = platform === \"web\" ? { ...enabledFeatures, ...config.webRuntimeFeatures } : enabledFeatures;\n const featureByName = {\n TAMAGUI_RUNTIME_INLINE_THEME_VALUES: features.inlineThemeValues,\n TAMAGUI_RUNTIME_STYLE_VALUE_GRAMMAR: features.styleValueGrammar,\n TAMAGUI_RUNTIME_SAFE_AREA: features.safeArea\n };\n return {\n visitor: {\n MemberExpression(nodePath) {\n const node = nodePath.node;\n if (node.computed || !types.isMemberExpression(node.object) || node.object.computed || !types.isIdentifier(node.object.object, { name: \"process\" }) || !types.isIdentifier(node.object.property, { name: \"env\" })) {\n return;\n }\n const name = types.isIdentifier(node.property) ? node.property.name : \"\";\n if (name === \"TAMAGUI_RUNTIME\") {\n nodePath.replaceWith(types.stringLiteral(runtimeLiteral));\n return;\n }\n const literal = featureByName[name];\n if (literal) nodePath.replaceWith(types.stringLiteral(literal));\n }\n }\n };\n };\n return {\n async transform(argsIn) {\n const platform = typeof argsIn.options.platform === \"string\" ? argsIn.options.platform : \"default\";\n const args = {\n ...argsIn,\n plugins: [\n ...argsIn.plugins ?? [],\n (babel) => inlineRuntimeLiterals(platform, babel)\n ]\n };\n const cache = new MetroCompilerCache(join(config.cacheBaseRoot, platform));\n let tamagui = {\n cacheHit: false,\n diagnostics: []\n };\n const moduleId = cacheModuleId(args.filename);\n try {\n const entry = await cache.read(moduleId, args.src, (reason, detail) => {\n if (missWarned.has(moduleId) || !planEligible(moduleId)) return;\n missWarned.add(moduleId);\n const diagnostic = metroDiagnostic(\n \"metro/plan-miss\",\n `Lowering plan lookup missed for ${moduleId} (${reason}${detail ? `: ${detail}` : \"\"}); module ships unlowered`,\n { moduleId }\n );\n tamagui.diagnostics.push(diagnostic);\n console.warn(formatMetroCompilerDiagnostic(diagnostic, config.projectRoot));\n });\n if (entry) {\n try {\n const lowered = await applyMetroCompilerPlan(\n { ...args, filename: moduleId },\n entry.plan,\n config.originalBabelTransformerPath\n );\n return {\n ...lowered.compiled.result,\n metadata: {\n ...lowered.compiled.result.metadata,\n tamagui: {\n cacheHit: true,\n diagnostics: entry.diagnostics,\n lowering: lowered.lowering\n }\n }\n };\n } catch (error) {\n const diagnostic = metroDiagnostic(\n \"metro/cache-corrupt\",\n `Cached lowering plan for ${args.filename} could not be applied: ${error instanceof Error ? error.message : String(error)}`,\n { moduleId }\n );\n tamagui = {\n cacheHit: true,\n diagnostics: [...entry.diagnostics, diagnostic]\n };\n console.warn(formatMetroCompilerDiagnostic(diagnostic, config.projectRoot));\n }\n }\n } catch (error) {\n if (!(error instanceof MetroCompilerCacheError)) throw error;\n tamagui.diagnostics.push(error.diagnostic);\n console.warn(formatMetroCompilerDiagnostic(error.diagnostic, config.projectRoot));\n }\n const compiled = await compileWithUserBabel(\n config.originalBabelTransformerPath,\n args\n );\n return {\n ...compiled.result,\n metadata: {\n ...compiled.result.metadata,\n tamagui\n }\n };\n },\n getCacheKey() {\n return createHash(\"sha256\").update(`tamagui-metro-compiler-v${METRO_COMPILER_CACHE_VERSION}`).update(\"\\0\").update(runtimeLiteral).update(\"\\0\").update(JSON.stringify(config.webRuntimeFeatures ?? {})).update(\"\\0\").update(userBabelCacheKey(config.originalBabelTransformerPath)).digest(\"hex\");\n }\n };\n}\nfunction writeMetroCompilerTransformerBridge(transformerFactoryPath, config) {\n const serializedConfig = JSON.stringify(config);\n const bridgeHash = createHash(\"sha256\").update(transformerFactoryPath).update(\"\\0\").update(serializedConfig).digest(\"hex\");\n const directory = join(config.cacheBaseRoot, \"bridge\");\n const bridgePath = join(directory, `${bridgeHash}.cjs`);\n const temporaryPath = `${bridgePath}.${process.pid}.tmp`;\n const source = `'use strict'\nmodule.exports = require(${JSON.stringify(\n transformerFactoryPath\n )}).createMetroCompilerTransformer(${serializedConfig})\n`;\n mkdirSync(directory, { recursive: true });\n writeFileSync(temporaryPath, source, \"utf8\");\n renameSync(temporaryPath, bridgePath);\n return bridgePath;\n}\nexport {\n createMetroCompilerTransformer,\n writeMetroCompilerTransformerBridge\n};\n//# sourceMappingURL=transformer.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"transformer.js","names":[],"sources":["esm/transformer.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, realpathSync, renameSync, writeFileSync } from \"node:fs\";\nimport { isAbsolute, join, resolve } from \"node:path\";\nimport {\n compileWithUserBabel,\n userBabelCacheKey\n} from \"./babel\";\nimport {\n METRO_COMPILER_CACHE_VERSION,\n MetroCompilerCache,\n MetroCompilerCacheError\n} from \"./compilerCache\";\nimport {\n formatMetroCompilerDiagnostic,\n metroDiagnostic\n} from \"./diagnostics\";\nimport { isCompilerSourceFile } from \"./metroResolver\";\nimport { applyMetroCompilerPlan } from \"./lowering\";\nfunction createMetroCompilerTransformer(config) {\n const moduleIdCache = /* @__PURE__ */ new Map();\n const missWarned = /* @__PURE__ */ new Set();\n function cacheModuleId(filename) {\n let id = moduleIdCache.get(filename);\n if (!id) {\n const absolute = isAbsolute(filename) ? filename : resolve(config.projectRoot, filename);\n try {\n id = realpathSync(absolute);\n } catch {\n id = absolute;\n }\n moduleIdCache.set(filename, id);\n }\n return id;\n }\n function planEligible(moduleId) {\n return isCompilerSourceFile(moduleId) && !moduleId.includes(`${join(\"node_modules\")}`) && existsSync(moduleId);\n }\n const runtimeLiteral = config.runtimeLiteral ?? \"full\";\n const inlineRuntimeLiteral = ({ types }) => ({\n visitor: {\n MemberExpression(nodePath) {\n const node = nodePath.node;\n if (node.computed || !types.isIdentifier(node.property, { name: \"TAMAGUI_RUNTIME\" }) || !types.isMemberExpression(node.object) || node.object.computed || !types.isIdentifier(node.object.object, { name: \"process\" }) || !types.isIdentifier(node.object.property, { name: \"env\" })) {\n return;\n }\n nodePath.replaceWith(types.stringLiteral(runtimeLiteral));\n }\n }\n });\n return {\n async transform(argsIn) {\n const args = {\n ...argsIn,\n plugins: [...argsIn.plugins ?? [], inlineRuntimeLiteral]\n };\n const platform = typeof args.options.platform === \"string\" ? args.options.platform : \"default\";\n const cache = new MetroCompilerCache(join(config.cacheBaseRoot, platform));\n let tamagui = {\n cacheHit: false,\n diagnostics: []\n };\n const moduleId = cacheModuleId(args.filename);\n try {\n const entry = await cache.read(moduleId, args.src, (reason, detail) => {\n if (missWarned.has(moduleId) || !planEligible(moduleId)) return;\n missWarned.add(moduleId);\n const diagnostic = metroDiagnostic(\n \"metro/plan-miss\",\n `Lowering plan lookup missed for ${moduleId} (${reason}${detail ? `: ${detail}` : \"\"}); module ships unlowered`,\n { moduleId }\n );\n tamagui.diagnostics.push(diagnostic);\n console.warn(formatMetroCompilerDiagnostic(diagnostic, config.projectRoot));\n });\n if (entry) {\n try {\n const lowered = await applyMetroCompilerPlan(\n { ...args, filename: moduleId },\n entry.plan,\n config.originalBabelTransformerPath\n );\n return {\n ...lowered.compiled.result,\n metadata: {\n ...lowered.compiled.result.metadata,\n tamagui: {\n cacheHit: true,\n diagnostics: entry.diagnostics,\n lowering: lowered.lowering\n }\n }\n };\n } catch (error) {\n const diagnostic = metroDiagnostic(\n \"metro/cache-corrupt\",\n `Cached lowering plan for ${args.filename} could not be applied: ${error instanceof Error ? error.message : String(error)}`,\n { moduleId }\n );\n tamagui = {\n cacheHit: true,\n diagnostics: [...entry.diagnostics, diagnostic]\n };\n console.warn(formatMetroCompilerDiagnostic(diagnostic, config.projectRoot));\n }\n }\n } catch (error) {\n if (!(error instanceof MetroCompilerCacheError)) throw error;\n tamagui.diagnostics.push(error.diagnostic);\n console.warn(formatMetroCompilerDiagnostic(error.diagnostic, config.projectRoot));\n }\n const compiled = await compileWithUserBabel(\n config.originalBabelTransformerPath,\n args\n );\n return {\n ...compiled.result,\n metadata: {\n ...compiled.result.metadata,\n tamagui\n }\n };\n },\n getCacheKey() {\n return createHash(\"sha256\").update(`tamagui-metro-compiler-v${METRO_COMPILER_CACHE_VERSION}`).update(\"\\0\").update(runtimeLiteral).update(\"\\0\").update(userBabelCacheKey(config.originalBabelTransformerPath)).digest(\"hex\");\n }\n };\n}\nfunction writeMetroCompilerTransformerBridge(transformerFactoryPath, config) {\n const serializedConfig = JSON.stringify(config);\n const bridgeHash = createHash(\"sha256\").update(transformerFactoryPath).update(\"\\0\").update(serializedConfig).digest(\"hex\");\n const directory = join(config.cacheBaseRoot, \"bridge\");\n const bridgePath = join(directory, `${bridgeHash}.cjs`);\n const temporaryPath = `${bridgePath}.${process.pid}.tmp`;\n const source = `'use strict'\nmodule.exports = require(${JSON.stringify(\n transformerFactoryPath\n )}).createMetroCompilerTransformer(${serializedConfig})\n`;\n mkdirSync(directory, { recursive: true });\n writeFileSync(temporaryPath, source, \"utf8\");\n renameSync(temporaryPath, bridgePath);\n return bridgePath;\n}\nexport {\n createMetroCompilerTransformer,\n writeMetroCompilerTransformerBridge\n};\n//# sourceMappingURL=transformer.js.map\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zeroRuntime.js","names":[],"sources":["esm/zeroRuntime.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport Static from \"@tamagui/static\";\nconst ZERO_CSS_FILENAME = \"tamagui-zero.css\";\nconst ZERO_ISLAND_DIRNAME = \"tamagui-islands\";\nconst normalizePath = (value) => value.replace(/\\\\/g, \"/\");\nconst zeroModuleKey = (value) => normalizePath(value).replace(/\\.(?:js|jsx|ts|tsx|mjs|cjs)$/, \"\");\nfunction islandFragmentPath(outDir, islandId) {\n return path.join(outDir, ZERO_ISLAND_DIRNAME, `${islandId}.css`);\n}\nfunction islandBundleHashPath(outDir, islandId) {\n return path.join(outDir, ZERO_ISLAND_DIRNAME, `${islandId}.hash`);\n}\nfunction createMetroZeroController(options, root, islandBuild, publicDirName) {\n const resolved = Static.resolveZeroRuntimeSync(options, root);\n if (resolved.mode === \"off\") return null;\n Static.assertZeroIntegrationSupport(\"metro-web\", resolved);\n const cssHref = `/${ZERO_CSS_FILENAME}`;\n const artifact = new Static.ZeroCSSArtifact(resolved.cssPath);\n artifact.expectIslands(resolved.islands.map((island) => island.id));\n const configPath = path.isAbsolute(options.config || \"\") ? options.config : path.resolve(root, options.config || \"tamagui.config.ts\");\n for (const island of resolved.islands) {\n Static.writeIslandModules({\n island,\n integration: \"metro-web\",\n configPath,\n scriptUrl: `/${ZERO_ISLAND_DIRNAME}/${island.id}.js`,\n cssHref\n });\n }\n return {\n resolved,\n artifact,\n cssHref,\n root,\n publicDir: path.join(root, publicDirName),\n islandBuild,\n bridges: /* @__PURE__ */ new Map(),\n violations: [],\n transformed: /* @__PURE__ */ new Set(),\n erasedExports: /* @__PURE__ */ new Map(),\n isEnforcing: resolved.mode === \"enforce\",\n loaderIds: new Map(\n resolved.islands.map((island) => [zeroModuleKey(island.loader), island.id])\n ),\n islandModuleIds: new Map(\n resolved.islands.map((island) => [zeroModuleKey(island.module), island.id])\n ),\n configCSS: \"\",\n plansRestoredFromCache: false\n };\n}\nfunction writeIslandRuntimeShims(outDir) {\n const directory = path.join(outDir, \"runtime-shim\");\n mkdirSync(directory, { recursive: true });\n const shims = {};\n for (const [specifier, segments] of Object.entries(\n Static.ISLAND_EXTERNAL_GLOBAL_PATHS\n )) {\n const file = path.join(directory, `${specifier.replace(/[^a-zA-Z0-9]+/g, \"_\")}.js`);\n const source = `// generated by @tamagui/metro-plugin zero-runtime. do not edit.\nmodule.exports = globalThis.${segments.join(\n \".\"\n )}\n`;\n if (!existsSync(file) || readFileSync(file, \"utf8\") !== source) {\n writeFileSync(file, source);\n }\n shims[specifier] = file;\n }\n return shims;\n}\nfunction finalizeMetroZero(input) {\n const { controller } = input;\n const outDir = controller.resolved.outDir;\n if (controller.islandBuild) {\n const fragment = [...controller.artifact.islandCSS(controller.islandBuild)].join(\"\");\n const file = islandFragmentPath(outDir, controller.islandBuild);\n mkdirSync(path.dirname(file), { recursive: true });\n writeFileSync(file, fragment);\n writeFileSync(\n islandBundleHashPath(outDir, controller.islandBuild),\n createHash(\"sha256\").update(input.bundleCode).digest(\"hex\").slice(0, 16)\n );\n return { cssPath: file, hash: \"\", islandOutputHashes: {} };\n }\n controller.artifact.setConfigCSS(controller.configCSS);\n const islandOutputHashes = {};\n for (const island of controller.resolved.islands) {\n const fragment = islandFragmentPath(outDir, island.id);\n if (!existsSync(fragment)) {\n throw new Error(\n `[tamagui zero-runtime] island \"${island.id}\" has not been built. Build every declared island bundle before the zero entry so the one CSS artifact can be finalized.`\n );\n }\n controller.artifact.setIslandModuleCSS(\n island.id,\n island.module,\n readFileSync(fragment, \"utf8\")\n );\n const hashFile = islandBundleHashPath(outDir, island.id);\n islandOutputHashes[island.id] = existsSync(hashFile) ? readFileSync(hashFile, \"utf8\") : \"\";\n }\n const written = controller.artifact.write();\n if (!written.complete) {\n throw new Error(\n `[tamagui zero-runtime] cannot derive TAMAGUI_DID_OUTPUT_CSS: the generated CSS artifact is missing ${written.missing.join(\n \", \"\n )}`\n );\n }\n return { cssPath: written.path, hash: written.hash, islandOutputHashes };\n}\nexport {\n ZERO_CSS_FILENAME,\n ZERO_ISLAND_DIRNAME,\n createMetroZeroController,\n finalizeMetroZero,\n islandBundleHashPath,\n islandFragmentPath,\n writeIslandRuntimeShims,\n zeroModuleKey\n};\n//# sourceMappingURL=zeroRuntime.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"zeroRuntime.js","names":[],"sources":["esm/zeroRuntime.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport Static from \"@tamagui/static\";\nconst ZERO_CSS_FILENAME = \"tamagui-zero.css\";\nconst ZERO_ISLAND_DIRNAME = \"tamagui-islands\";\nconst normalizePath = (value) => value.replace(/\\\\/g, \"/\");\nconst zeroModuleKey = (value) => normalizePath(value).replace(/\\.(?:js|jsx|ts|tsx|mjs|cjs)$/, \"\");\nfunction islandFragmentPath(outDir, islandId) {\n return path.join(outDir, ZERO_ISLAND_DIRNAME, `${islandId}.css`);\n}\nfunction islandBundleHashPath(outDir, islandId) {\n return path.join(outDir, ZERO_ISLAND_DIRNAME, `${islandId}.hash`);\n}\nfunction createMetroZeroController(options, root, islandBuild, publicDirName) {\n const resolved = Static.resolveZeroRuntimeSync(options, root);\n if (resolved.mode === \"off\") return null;\n Static.assertZeroIntegrationSupport(\"metro-web\", resolved);\n const cssHref = `/${ZERO_CSS_FILENAME}`;\n const artifact = new Static.ZeroCSSArtifact(resolved.cssPath);\n artifact.expectIslands(resolved.islands.map((island) => island.id));\n const configPath = path.isAbsolute(options.config || \"\") ? options.config : path.resolve(root, options.config || \"tamagui.config.ts\");\n for (const island of resolved.islands) {\n Static.writeIslandModules({\n island,\n integration: \"metro-web\",\n configPath,\n scriptUrl: `/${ZERO_ISLAND_DIRNAME}/${island.id}.js`,\n cssHref\n });\n }\n return {\n resolved,\n artifact,\n cssHref,\n root,\n publicDir: path.join(root, publicDirName),\n islandBuild,\n bridges: /* @__PURE__ */ new Map(),\n violations: [],\n transformed: /* @__PURE__ */ new Set(),\n erasedExports: /* @__PURE__ */ new Map(),\n isEnforcing: resolved.mode === \"enforce\",\n loaderIds: new Map(\n resolved.islands.map((island) => [zeroModuleKey(island.loader), island.id])\n ),\n islandModuleIds: new Map(\n resolved.islands.map((island) => [zeroModuleKey(island.module), island.id])\n ),\n configCSS: \"\",\n plansRestoredFromCache: false\n };\n}\nfunction writeIslandRuntimeShims(outDir) {\n const directory = path.join(outDir, \"runtime-shim\");\n mkdirSync(directory, { recursive: true });\n const shims = {};\n for (const [specifier, segments] of Object.entries(\n Static.ISLAND_EXTERNAL_GLOBAL_PATHS\n )) {\n const file = path.join(directory, `${specifier.replace(/[^a-zA-Z0-9]+/g, \"_\")}.js`);\n const source = `// generated by @tamagui/metro-plugin zero-runtime. do not edit.\nmodule.exports = globalThis.${segments.join(\n \".\"\n )}\n`;\n if (!existsSync(file) || readFileSync(file, \"utf8\") !== source) {\n writeFileSync(file, source);\n }\n shims[specifier] = file;\n }\n return shims;\n}\nfunction finalizeMetroZero(input) {\n const { controller } = input;\n const outDir = controller.resolved.outDir;\n if (controller.islandBuild) {\n const fragment = [...controller.artifact.islandCSS(controller.islandBuild)].join(\"\");\n const file = islandFragmentPath(outDir, controller.islandBuild);\n mkdirSync(path.dirname(file), { recursive: true });\n writeFileSync(file, fragment);\n writeFileSync(\n islandBundleHashPath(outDir, controller.islandBuild),\n createHash(\"sha256\").update(input.bundleCode).digest(\"hex\").slice(0, 16)\n );\n return { cssPath: file, hash: \"\", islandOutputHashes: {} };\n }\n controller.artifact.setConfigCSS(controller.configCSS);\n const islandOutputHashes = {};\n for (const island of controller.resolved.islands) {\n const fragment = islandFragmentPath(outDir, island.id);\n if (!existsSync(fragment)) {\n throw new Error(\n `[tamagui zero-runtime] island \"${island.id}\" has not been built. Build every declared island bundle before the zero entry so the one CSS artifact can be finalized.`\n );\n }\n controller.artifact.setIslandModuleCSS(\n island.id,\n island.module,\n readFileSync(fragment, \"utf8\")\n );\n const hashFile = islandBundleHashPath(outDir, island.id);\n islandOutputHashes[island.id] = existsSync(hashFile) ? readFileSync(hashFile, \"utf8\") : \"\";\n }\n const written = controller.artifact.write();\n if (!written.complete) {\n throw new Error(\n `[tamagui zero-runtime] cannot derive TAMAGUI_DID_OUTPUT_CSS: the generated CSS artifact is missing ${written.missing.join(\n \", \"\n )}`\n );\n }\n return { cssPath: written.path, hash: written.hash, islandOutputHashes };\n}\nexport {\n ZERO_CSS_FILENAME,\n ZERO_ISLAND_DIRNAME,\n createMetroZeroController,\n finalizeMetroZero,\n islandBundleHashPath,\n islandFragmentPath,\n writeIslandRuntimeShims,\n zeroModuleKey\n};\n//# sourceMappingURL=zeroRuntime.js.map\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zeroSerializer.js","names":[],"sources":["esm/zeroSerializer.js"],"sourcesContent":["import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { gzipSync } from \"node:zlib\";\nimport Static from \"@tamagui/static\";\nimport {\n finalizeMetroZero,\n writeIslandRuntimeShims,\n ZERO_CSS_FILENAME\n} from \"./zeroRuntime\";\nconst requireFromPlugin = createRequire(\n typeof __filename === \"string\" ? __filename : import.meta.url\n);\nconst baseJSBundle = requireFromPlugin(\n \"metro/private/DeltaBundler/Serializers/baseJSBundle\"\n).default;\nconst bundleToString = requireFromPlugin(\"metro/private/lib/bundleToString\").default;\nfunction applyMetroZeroRuntime(metroConfig, zero) {\n if (zero.islandBuild) {\n const shims = writeIslandRuntimeShims(zero.resolved.outDir);\n const userResolveRequest = metroConfig.resolver?.resolveRequest;\n metroConfig.resolver = {\n ...metroConfig.resolver,\n resolveRequest(context, moduleName, platform) {\n const shim = shims[moduleName];\n if (shim) return { type: \"sourceFile\", filePath: shim };\n return userResolveRequest ? userResolveRequest(context, moduleName, platform) : context.resolveRequest(context, moduleName, platform);\n }\n };\n }\n const userSerializer = metroConfig.serializer?.customSerializer;\n metroConfig.serializer = {\n ...metroConfig.serializer,\n async customSerializer(entryPoint, preModules, graph, opts) {\n const receipt = checkGraph(zero, entryPoint, graph);\n const output = userSerializer ? await userSerializer(entryPoint, preModules, graph, opts) : bundleToString(baseJSBundle(entryPoint, preModules, graph, opts)).code;\n const finalized = finalizeMetroZero({\n controller: zero,\n bundleCode: typeof output === \"string\" ? output : \"\"\n });\n if (!zero.islandBuild) {\n mkdirSync(zero.publicDir, { recursive: true });\n const css = zero.artifact.css();\n const published = path.join(zero.publicDir, ZERO_CSS_FILENAME);\n writeFileSync(published, css);\n const publishFailure = Static.checkGlobalCSSArtifact({\n cssPath: published,\n expectedCSS: css,\n loadedModuleIds: [published],\n importHint: \"\"\n });\n if (publishFailure) throw new Error(publishFailure.message);\n receipt.cssArtifact = { path: zero.cssHref, hash: finalized.hash };\n receipt.gzip = {\n [ZERO_CSS_FILENAME]: gzipSync(Buffer.from(css), { level: 9 }).length,\n bundle: gzipSync(Buffer.from(typeof output === \"string\" ? output : \"\"), {\n level: 9\n }).length\n };\n const bridgeManifest = Static.canonicalizeBridgeManifest(\n Object.fromEntries(\n [...zero.bridges.entries()].sort(([left], [right]) => left < right ? -1 : 1)\n )\n );\n const identityInputs = {\n runtimeLiteral: \"zero\",\n target: \"web\",\n configGeneration: Static.hashBridgeManifest(zero.configCSS),\n cssHash: finalized.hash,\n compilerVersion: Static.ZERO_COMPILER_VERSION,\n islandEntries: zero.resolved.islands.map((island) => island.module),\n bridgeManifestHash: Static.hashBridgeManifest(bridgeManifest),\n islandOutputHashes: finalized.islandOutputHashes\n };\n receipt.identity = Static.hashZeroIdentity(identityInputs);\n receipt.plansRestoredFromCache = zero.plansRestoredFromCache;\n Static.writeZeroGraphReceipt(zero.resolved.outDir, \"metro-zero\", receipt);\n writeFileSync(\n path.join(zero.resolved.outDir, \"metro-zero.bridges.json\"),\n `${JSON.stringify(\n { identity: receipt.identity, identityInputs, bridges: bridgeManifest },\n null,\n 2\n )}\n`\n );\n if (receipt.forbidden.length) {\n throw new Error(Static.formatZeroGraphFailure(receipt));\n }\n console.info(\n ` \\u27A1 [tamagui zero-runtime] ${receipt.moduleCount} modules, 0 forbidden, css ${receipt.gzip[ZERO_CSS_FILENAME]} gzip, islands: ${zero.resolved.islands.map((island) => island.id).join(\", \") || \"none\"}`\n );\n }\n return output;\n }\n };\n}\nfunction checkGraph(zero, entryPoint, graph) {\n const modules = [];\n const importerEdges = /* @__PURE__ */ new Map();\n for (const [id, module] of graph.dependencies) {\n const importers = [...module.inverseDependencies ?? []];\n importerEdges.set(id, importers);\n modules.push({ id, importers });\n }\n const escape = Static.erasedExportEscape({\n integration: \"metro-web\",\n transformed: zero.transformed,\n erasedExports: zero.erasedExports,\n importersOf: importerEdges\n });\n if (escape) throw new Error(escape);\n const checked = Static.checkZeroGraph({\n entries: [entryPoint],\n modules,\n importerEdges,\n root: zero.resolved.root\n });\n return {\n integration: \"metro-web\",\n graph: zero.islandBuild ? \"island\" : \"zero\",\n entries: [entryPoint],\n moduleCount: modules.length,\n tamaguiModules: checked.tamaguiModules,\n forbidden: checked.forbidden,\n cssArtifact: null,\n identity: \"\"\n };\n}\nexport {\n applyMetroZeroRuntime\n};\n//# sourceMappingURL=zeroSerializer.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"zeroSerializer.js","names":[],"sources":["esm/zeroSerializer.js"],"sourcesContent":["import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { gzipSync } from \"node:zlib\";\nimport Static from \"@tamagui/static\";\nimport {\n finalizeMetroZero,\n writeIslandRuntimeShims,\n ZERO_CSS_FILENAME\n} from \"./zeroRuntime\";\nconst requireFromPlugin = createRequire(\n typeof __filename === \"string\" ? __filename : import.meta.url\n);\nconst baseJSBundle = requireFromPlugin(\n \"metro/private/DeltaBundler/Serializers/baseJSBundle\"\n).default;\nconst bundleToString = requireFromPlugin(\"metro/private/lib/bundleToString\").default;\nfunction applyMetroZeroRuntime(metroConfig, zero) {\n if (zero.islandBuild) {\n const shims = writeIslandRuntimeShims(zero.resolved.outDir);\n const userResolveRequest = metroConfig.resolver?.resolveRequest;\n metroConfig.resolver = {\n ...metroConfig.resolver,\n resolveRequest(context, moduleName, platform) {\n const shim = shims[moduleName];\n if (shim) return { type: \"sourceFile\", filePath: shim };\n return userResolveRequest ? userResolveRequest(context, moduleName, platform) : context.resolveRequest(context, moduleName, platform);\n }\n };\n }\n const userSerializer = metroConfig.serializer?.customSerializer;\n metroConfig.serializer = {\n ...metroConfig.serializer,\n async customSerializer(entryPoint, preModules, graph, opts) {\n const receipt = checkGraph(zero, entryPoint, graph);\n const output = userSerializer ? await userSerializer(entryPoint, preModules, graph, opts) : bundleToString(baseJSBundle(entryPoint, preModules, graph, opts)).code;\n const finalized = finalizeMetroZero({\n controller: zero,\n bundleCode: typeof output === \"string\" ? output : \"\"\n });\n if (!zero.islandBuild) {\n mkdirSync(zero.publicDir, { recursive: true });\n const css = zero.artifact.css();\n const published = path.join(zero.publicDir, ZERO_CSS_FILENAME);\n writeFileSync(published, css);\n const publishFailure = Static.checkGlobalCSSArtifact({\n cssPath: published,\n expectedCSS: css,\n loadedModuleIds: [published],\n importHint: \"\"\n });\n if (publishFailure) throw new Error(publishFailure.message);\n receipt.cssArtifact = { path: zero.cssHref, hash: finalized.hash };\n receipt.gzip = {\n [ZERO_CSS_FILENAME]: gzipSync(Buffer.from(css), { level: 9 }).length,\n bundle: gzipSync(Buffer.from(typeof output === \"string\" ? output : \"\"), {\n level: 9\n }).length\n };\n const bridgeManifest = Static.canonicalizeBridgeManifest(\n Object.fromEntries(\n [...zero.bridges.entries()].sort(([left], [right]) => left < right ? -1 : 1)\n )\n );\n const identityInputs = {\n runtimeLiteral: \"zero\",\n target: \"web\",\n configGeneration: Static.hashBridgeManifest(zero.configCSS),\n cssHash: finalized.hash,\n compilerVersion: Static.ZERO_COMPILER_VERSION,\n islandEntries: zero.resolved.islands.map((island) => island.module),\n bridgeManifestHash: Static.hashBridgeManifest(bridgeManifest),\n islandOutputHashes: finalized.islandOutputHashes\n };\n receipt.identity = Static.hashZeroIdentity(identityInputs);\n receipt.plansRestoredFromCache = zero.plansRestoredFromCache;\n Static.writeZeroGraphReceipt(zero.resolved.outDir, \"metro-zero\", receipt);\n writeFileSync(\n path.join(zero.resolved.outDir, \"metro-zero.bridges.json\"),\n `${JSON.stringify(\n { identity: receipt.identity, identityInputs, bridges: bridgeManifest },\n null,\n 2\n )}\n`\n );\n if (receipt.forbidden.length) {\n throw new Error(Static.formatZeroGraphFailure(receipt));\n }\n console.info(\n ` \\u27A1 [tamagui zero-runtime] ${receipt.moduleCount} modules, 0 forbidden, css ${receipt.gzip[ZERO_CSS_FILENAME]} gzip, islands: ${zero.resolved.islands.map((island) => island.id).join(\", \") || \"none\"}`\n );\n }\n return output;\n }\n };\n}\nfunction checkGraph(zero, entryPoint, graph) {\n const modules = [];\n const importerEdges = /* @__PURE__ */ new Map();\n for (const [id, module] of graph.dependencies) {\n const importers = [...module.inverseDependencies ?? []];\n importerEdges.set(id, importers);\n modules.push({ id, importers });\n }\n const escape = Static.erasedExportEscape({\n integration: \"metro-web\",\n transformed: zero.transformed,\n erasedExports: zero.erasedExports,\n importersOf: importerEdges\n });\n if (escape) throw new Error(escape);\n const checked = Static.checkZeroGraph({\n entries: [entryPoint],\n modules,\n importerEdges,\n root: zero.resolved.root\n });\n return {\n integration: \"metro-web\",\n graph: zero.islandBuild ? \"island\" : \"zero\",\n entries: [entryPoint],\n moduleCount: modules.length,\n tamaguiModules: checked.tamaguiModules,\n forbidden: checked.forbidden,\n cssArtifact: null,\n identity: \"\"\n };\n}\nexport {\n applyMetroZeroRuntime\n};\n//# sourceMappingURL=zeroSerializer.js.map\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/metro-plugin",
3
- "version": "3.0.0-beta.669.1",
3
+ "version": "3.0.0-beta.728.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "src/index.ts",
@@ -41,12 +41,12 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@jridgewell/trace-mapping": "0.3.31",
44
- "@tamagui/compiler-core": "3.0.0-beta.669.1",
45
- "@tamagui/static": "3.0.0-beta.669.1",
44
+ "@tamagui/compiler-core": "3.0.0-beta.728.1",
45
+ "@tamagui/static": "3.0.0-beta.728.1",
46
46
  "ignore": "^5.3.2"
47
47
  },
48
48
  "devDependencies": {
49
- "@tamagui/build": "3.0.0-beta.669.1",
49
+ "@tamagui/build": "3.0.0-beta.728.1",
50
50
  "metro": "0.84.4",
51
51
  "metro-resolver": "0.84.4"
52
52
  },
package/src/frontend.ts CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  ProjectGraph,
13
13
  contentHash,
14
14
  defaultPlanCacheRoot,
15
+ isTamaguiSpecifier,
15
16
  lowerModule,
16
17
  materializeModule,
17
18
  moduleClosureDigest,
@@ -1063,8 +1064,7 @@ export class MetroCompilerFrontend {
1063
1064
  source,
1064
1065
  plan,
1065
1066
  config,
1066
- isTamaguiSpecifier: (specifier) =>
1067
- specifier === 'tamagui' || specifier.startsWith('@tamagui/'),
1067
+ isTamaguiSpecifier,
1068
1068
  resolveIslandLoader: (specifier) => {
1069
1069
  const islandId = zero.loaderIds.get(zeroModuleKey(resolve(id, '..', specifier)))
1070
1070
  return islandId ? { islandId } : null
package/src/index.ts CHANGED
@@ -86,7 +86,6 @@ export function withTamagui(
86
86
  } = optionsIn || {}
87
87
 
88
88
  const options = loadTamaguiBuildConfigSync(tamaguiOptionsIn)
89
- const webRuntimeFeatures = Static.resolveWebRuntimeFeatureLiterals(options)
90
89
 
91
90
  // Ensure CSS files can be resolved
92
91
  metroConfig.resolver = {
@@ -148,7 +147,6 @@ export function withTamagui(
148
147
  projectRoot,
149
148
  // an integration-owned literal, never an ambient shell value
150
149
  runtimeLiteral: zero?.isEnforcing && !zero.islandBuild ? 'zero' : 'full',
151
- webRuntimeFeatures,
152
150
  }
153
151
  )
154
152
  const userGetTransformOptions = metroConfig.transformer.getTransformOptions
@@ -31,11 +31,6 @@ export interface MetroCompilerTransformerOptions {
31
31
  * inlined here so every guard is a constant.
32
32
  */
33
33
  runtimeLiteral?: 'full' | 'zero'
34
- webRuntimeFeatures?: {
35
- inlineThemeValues: 'enabled' | 'disabled'
36
- styleValueGrammar: 'enabled' | 'disabled'
37
- safeArea: 'enabled' | 'disabled'
38
- }
39
34
  }
40
35
 
41
36
  export interface MetroCompilerTransformMetadata {
@@ -80,60 +75,36 @@ export function createMetroCompilerTransformer(config: MetroCompilerTransformerO
80
75
  existsSync(moduleId)
81
76
  )
82
77
  }
83
- // Replaces only the integration-owned exact process.env member expressions.
78
+ // Replaces only the exact member expression `process.env.TAMAGUI_RUNTIME`.
84
79
  // Metro has no define mechanism, so this is the transform-level equivalent.
85
80
  const runtimeLiteral = config.runtimeLiteral ?? 'full'
86
- const inlineRuntimeLiterals = (platform: string, { types }: { types: any }) => {
87
- const enabledFeatures = {
88
- inlineThemeValues: 'enabled',
89
- styleValueGrammar: 'enabled',
90
- safeArea: 'enabled',
91
- } as const
92
- const features =
93
- platform === 'web'
94
- ? { ...enabledFeatures, ...config.webRuntimeFeatures }
95
- : enabledFeatures
96
- const featureByName: Record<string, string> = {
97
- TAMAGUI_RUNTIME_INLINE_THEME_VALUES: features.inlineThemeValues,
98
- TAMAGUI_RUNTIME_STYLE_VALUE_GRAMMAR: features.styleValueGrammar,
99
- TAMAGUI_RUNTIME_SAFE_AREA: features.safeArea,
100
- }
101
- return {
102
- visitor: {
103
- MemberExpression(nodePath: any) {
104
- const node = nodePath.node
105
- if (
106
- node.computed ||
107
- !types.isMemberExpression(node.object) ||
108
- node.object.computed ||
109
- !types.isIdentifier(node.object.object, { name: 'process' }) ||
110
- !types.isIdentifier(node.object.property, { name: 'env' })
111
- ) {
112
- return
113
- }
114
- const name = types.isIdentifier(node.property) ? node.property.name : ''
115
- if (name === 'TAMAGUI_RUNTIME') {
116
- nodePath.replaceWith(types.stringLiteral(runtimeLiteral))
117
- return
118
- }
119
- const literal = featureByName[name]
120
- if (literal) nodePath.replaceWith(types.stringLiteral(literal))
121
- },
81
+ const inlineRuntimeLiteral = ({ types }: { types: any }) => ({
82
+ visitor: {
83
+ MemberExpression(nodePath: any) {
84
+ const node = nodePath.node
85
+ if (
86
+ node.computed ||
87
+ !types.isIdentifier(node.property, { name: 'TAMAGUI_RUNTIME' }) ||
88
+ !types.isMemberExpression(node.object) ||
89
+ node.object.computed ||
90
+ !types.isIdentifier(node.object.object, { name: 'process' }) ||
91
+ !types.isIdentifier(node.object.property, { name: 'env' })
92
+ ) {
93
+ return
94
+ }
95
+ nodePath.replaceWith(types.stringLiteral(runtimeLiteral))
122
96
  },
123
- }
124
- }
97
+ },
98
+ })
125
99
 
126
100
  return {
127
101
  async transform(argsIn) {
128
- const platform =
129
- typeof argsIn.options.platform === 'string' ? argsIn.options.platform : 'default'
130
102
  const args = {
131
103
  ...argsIn,
132
- plugins: [
133
- ...(argsIn.plugins ?? []),
134
- (babel: { types: any }) => inlineRuntimeLiterals(platform, babel),
135
- ],
104
+ plugins: [...(argsIn.plugins ?? []), inlineRuntimeLiteral],
136
105
  }
106
+ const platform =
107
+ typeof args.options.platform === 'string' ? args.options.platform : 'default'
137
108
  const cache = new MetroCompilerCache(join(config.cacheBaseRoot, platform))
138
109
  let tamagui: MetroCompilerTransformMetadata = {
139
110
  cacheHit: false,
@@ -210,8 +181,6 @@ export function createMetroCompilerTransformer(config: MetroCompilerTransformerO
210
181
  .update('\0')
211
182
  .update(runtimeLiteral)
212
183
  .update('\0')
213
- .update(JSON.stringify(config.webRuntimeFeatures ?? {}))
214
- .update('\0')
215
184
  .update(userBabelCacheKey(config.originalBabelTransformerPath))
216
185
  .digest('hex')
217
186
  },