@tamagui/vite-plugin 1.123.13 → 1.123.15

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.
@@ -25,12 +25,16 @@ __export(extract_exports, {
25
25
  tamaguiExtractPlugin: () => tamaguiExtractPlugin
26
26
  });
27
27
  module.exports = __toCommonJS(extract_exports);
28
- var import_node_path = __toESM(require("node:path"), 1), import_vite = require("vite"), import_loadTamagui = require("./loadTamagui");
28
+ var import_node_path = __toESM(require("node:path"), 1), import_vite = require("vite"), import_loadTamagui = require("./loadTamagui"), import_node_crypto = require("node:crypto");
29
29
  function tamaguiExtractPlugin(optionsIn) {
30
30
  if (optionsIn?.disable)
31
31
  return {
32
32
  name: "tamagui-extract"
33
33
  };
34
+ const getHash = (input) => (0, import_node_crypto.createHash)("sha1").update(input).digest("base64"), clearCompilerCache = () => {
35
+ memoryCache = {}, cacheSize = 0;
36
+ };
37
+ let memoryCache = {}, cacheSize = 0;
34
38
  const cssMap = /* @__PURE__ */ new Map();
35
39
  let config, server;
36
40
  const virtualExt = ".tamagui.css", getAbsoluteVirtualFileId = (filePath) => filePath.startsWith(config.root) ? filePath : (0, import_vite.normalizePath)(import_node_path.default.join(config.root, filePath));
@@ -88,39 +92,50 @@ function tamaguiExtractPlugin(optionsIn) {
88
92
  const [validId] = id.split("?");
89
93
  return cssMap.get(validId);
90
94
  },
91
- async transform(code, id, ssrParam) {
92
- if (import_loadTamagui.disableStatic || isVite6Native(this.environment) || import_loadTamagui.tamaguiOptions?.disableServerOptimization && isVite6AndNotClient(this.environment))
93
- return;
94
- const [validId] = id.split("?");
95
- if (!validId.endsWith(".tsx"))
96
- return;
97
- const firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = import_loadTamagui.Static.getPragmaOptions({
98
- source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
99
- path: validId
100
- });
101
- if (shouldPrintDebug && (console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`), console.info(`
95
+ transform: {
96
+ order: "pre",
97
+ async handler(code, id) {
98
+ if (import_loadTamagui.disableStatic || isVite6Native(this.environment) || import_loadTamagui.tamaguiOptions?.disableServerOptimization && isVite6AndNotClient(this.environment))
99
+ return;
100
+ const [validId] = id.split("?");
101
+ if (!validId.endsWith(".tsx"))
102
+ return;
103
+ const firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = import_loadTamagui.Static.getPragmaOptions({
104
+ source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
105
+ path: validId
106
+ });
107
+ if (shouldPrintDebug && (console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`), console.info(`
102
108
 
103
109
  Original source:
104
110
  ${code}
105
111
 
106
112
  `)), shouldDisable)
107
- return;
108
- const extracted = await import_loadTamagui.Static.extractToClassNames({
109
- extractor: import_loadTamagui.extractor,
110
- source: code,
111
- sourcePath: validId,
112
- options: import_loadTamagui.tamaguiOptions,
113
- shouldPrintDebug
114
- });
115
- if (!extracted)
116
- return;
117
- const rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId);
118
- let source = extracted.js;
119
- return extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
120
- import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles)), {
121
- code: source.toString(),
122
- map: extracted.map
123
- };
113
+ return;
114
+ const cacheEnv = this.environment.name === "client" || this.environment.name === "ssr" ? (
115
+ // same cache key for ssr and web since they are the same
116
+ "web"
117
+ ) : this.environment.name, cacheKey = getHash(`${cacheEnv}${code}${id}`), cached = memoryCache[cacheKey];
118
+ if (cached)
119
+ return cached;
120
+ const extracted = await import_loadTamagui.Static.extractToClassNames({
121
+ extractor: import_loadTamagui.extractor,
122
+ source: code,
123
+ sourcePath: validId,
124
+ options: import_loadTamagui.tamaguiOptions,
125
+ shouldPrintDebug
126
+ });
127
+ if (!extracted)
128
+ return;
129
+ const rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId);
130
+ let source = extracted.js;
131
+ extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
132
+ import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles));
133
+ const codeOut = source.toString(), out = {
134
+ code: codeOut,
135
+ map: extracted.map
136
+ };
137
+ return cacheSize += codeOut.length, cacheSize > 262144e3 / 5 && clearCompilerCache(), memoryCache[cacheKey] = out, out;
138
+ }
124
139
  }
125
140
  };
126
141
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/extract.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["path", "module"]
6
6
  }
@@ -26,13 +26,17 @@ __export(extract_exports, {
26
26
  tamaguiExtractPlugin: () => tamaguiExtractPlugin
27
27
  });
28
28
  module.exports = __toCommonJS(extract_exports);
29
- var import_node_path = __toESM(require("node:path"), 1), import_vite = require("vite"), import_loadTamagui = require("./loadTamagui");
29
+ var import_node_path = __toESM(require("node:path"), 1), import_vite = require("vite"), import_loadTamagui = require("./loadTamagui"), import_node_crypto = require("node:crypto");
30
30
  function tamaguiExtractPlugin(optionsIn) {
31
31
  if (optionsIn != null && optionsIn.disable)
32
32
  return {
33
33
  name: "tamagui-extract"
34
34
  };
35
- var cssMap = /* @__PURE__ */ new Map(), config, server, virtualExt = ".tamagui.css", getAbsoluteVirtualFileId = function(filePath) {
35
+ var getHash = function(input) {
36
+ return (0, import_node_crypto.createHash)("sha1").update(input).digest("base64");
37
+ }, clearCompilerCache = function() {
38
+ memoryCache = {}, cacheSize = 0;
39
+ }, memoryCache = {}, cacheSize = 0, cssMap = /* @__PURE__ */ new Map(), config, server, virtualExt = ".tamagui.css", getAbsoluteVirtualFileId = function(filePath) {
36
40
  return filePath.startsWith(config.root) ? filePath : (0, import_vite.normalizePath)(import_node_path.default.join(config.root, filePath));
37
41
  };
38
42
  function isVite6AndNotClient(environment) {
@@ -106,38 +110,49 @@ function tamaguiExtractPlugin(optionsIn) {
106
110
  return cssMap.get(validId);
107
111
  }
108
112
  },
109
- async transform(code, id, ssrParam) {
110
- if (!import_loadTamagui.disableStatic && !isVite6Native(this.environment) && !(!(import_loadTamagui.tamaguiOptions === null || import_loadTamagui.tamaguiOptions === void 0) && import_loadTamagui.tamaguiOptions.disableServerOptimization && isVite6AndNotClient(this.environment))) {
111
- var [validId] = id.split("?");
112
- if (validId.endsWith(".tsx")) {
113
- var firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = import_loadTamagui.Static.getPragmaOptions({
114
- source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
115
- path: validId
116
- });
117
- if (shouldPrintDebug) {
118
- var _this_environment;
119
- console.trace(`Debugging file: ${id} in environment: ${(_this_environment = this.environment) === null || _this_environment === void 0 ? void 0 : _this_environment.name}`), console.info(`
113
+ transform: {
114
+ order: "pre",
115
+ async handler(code, id) {
116
+ if (!import_loadTamagui.disableStatic && !isVite6Native(this.environment) && !(!(import_loadTamagui.tamaguiOptions === null || import_loadTamagui.tamaguiOptions === void 0) && import_loadTamagui.tamaguiOptions.disableServerOptimization && isVite6AndNotClient(this.environment))) {
117
+ var [validId] = id.split("?");
118
+ if (validId.endsWith(".tsx")) {
119
+ var firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = import_loadTamagui.Static.getPragmaOptions({
120
+ source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
121
+ path: validId
122
+ });
123
+ if (shouldPrintDebug) {
124
+ var _this_environment;
125
+ console.trace(`Debugging file: ${id} in environment: ${(_this_environment = this.environment) === null || _this_environment === void 0 ? void 0 : _this_environment.name}`), console.info(`
120
126
 
121
127
  Original source:
122
128
  ${code}
123
129
 
124
130
  `);
125
- }
126
- if (!shouldDisable) {
127
- var extracted = await import_loadTamagui.Static.extractToClassNames({
128
- extractor: import_loadTamagui.extractor,
129
- source: code,
130
- sourcePath: validId,
131
- options: import_loadTamagui.tamaguiOptions,
132
- shouldPrintDebug
133
- });
134
- if (extracted) {
135
- var rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId), source = extracted.js;
136
- return extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
137
- import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles)), {
138
- code: source.toString(),
139
- map: extracted.map
140
- };
131
+ }
132
+ if (!shouldDisable) {
133
+ var cacheEnv = this.environment.name === "client" || this.environment.name === "ssr" ? (
134
+ // same cache key for ssr and web since they are the same
135
+ "web"
136
+ ) : this.environment.name, cacheKey = getHash(`${cacheEnv}${code}${id}`), cached = memoryCache[cacheKey];
137
+ if (cached)
138
+ return cached;
139
+ var extracted = await import_loadTamagui.Static.extractToClassNames({
140
+ extractor: import_loadTamagui.extractor,
141
+ source: code,
142
+ sourcePath: validId,
143
+ options: import_loadTamagui.tamaguiOptions,
144
+ shouldPrintDebug
145
+ });
146
+ if (extracted) {
147
+ var rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId), source = extracted.js;
148
+ extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
149
+ import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles));
150
+ var codeOut = source.toString(), out = {
151
+ code: codeOut,
152
+ map: extracted.map
153
+ };
154
+ return cacheSize += codeOut.length, cacheSize > 262144e3 / 5 && clearCompilerCache(), memoryCache[cacheKey] = out, out;
155
+ }
141
156
  }
142
157
  }
143
158
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Users/n8/tamagui/code/compiler/vite-plugin/src/extract.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAGA,uBAAiB,kCAEjB,cAAgD,iBAChD,qBAMO;AAEA,SAASA,qBAAqBC,WAAmC;AACtE,MAAIA,aAAAA,QAAAA,UAAWC;AACb,WAAO;MACLC,MAAM;IACR;AAGF,MAAMC,SAAS,oBAAIC,IAAAA,GAEfC,QACAC,QACEC,aAAa,gBAEbC,2BAA2B,SAACC,UAAAA;AAChC,WAAIA,SAASC,WAAWL,OAAOM,IAAI,IAC1BF,eAEFG,2BAAcC,iBAAAA,QAAKC,KAAKT,OAAOM,MAAMF,QAAAA,CAAAA;EAC9C;AAEA,WAASM,oBAAoBC,aAAyB;AACpD,YAAOA,eAAAA,OAAAA,SAAAA,YAAad,SAAQc,YAAYd,SAAS;EACnD;AAEA,WAASe,cAAcD,aAAyB;AAC9C,YACEA,eAAAA,OAAAA,SAAAA,YAAad,UAASc,YAAYd,SAAS,SAASc,YAAYd,SAAS;EAE7E;AAEA,WAASgB,iBAAiBC,YAAkB;AAC1C,QAAKb,QAEL;UAAM,EAAEc,YAAW,IAAKd,QAClBe,UAAUD,YAAYE,iBAAiBH,UAAAA;AAE7C,UAAIE,SAAS;YACN,4BAAA,IAAA,oBAAA,IAAA,iBAAA;;AAAL,mBAAK,YAAgBA,QAAAA,OAAAA,QAAAA,EAAAA,GAAhB,OAAA,EAAA,6BAAA,QAAA,UAAA,KAAA,GAAA,OAAA,4BAAA,IAAyB;AAAzB,gBAAME,UAAN,MAAA;AACHH,wBAAYF,iBAAiBK,OAAAA,GAG7BA,QAAOC,mBAAmBD,QAAOE,6BAA6BC,KAAKC,IAAG;UACxE;;AALK,8BAAA,IAAA,iBAAA;;;aAAA,6BAAA,UAAA,UAAA,QAAA,UAAA,OAAA;;gBAAA;oBAAA;;;MAMP;;EACF;AAEA,SAAO;IACLzB,MAAM;IACN0B,SAAS;IAETC,gBAAgBC,SAAO;AACrBxB,eAASwB;IACX;IAEA,MAAMC,aAAAA;AACJ,gBAAMC,2CAAuBhC,SAAAA;IAC/B;IAEAiC,WAAAA;AACEC,uCAAAA,QAAAA,iCAAAA,UAAAA,6BAAWC,kBAAiB;IAC9B;IAEA9B,OAAO+B,UAAQ;UACbA,WACAA;AADAA,OAAAA,YAAAA,UAASC,iBAATD,UAASC,eAAiB,CAAC,KAC3BD,yBAAAA,SAASC,cAAaC,YAAtBF,uBAAsBE,UAAY,CAAA,IAClCF,SAASC,aAAaC,QAAQC,KAAK,6BAAA;IACrC;IAEA,MAAMC,eAAeC,gBAAc;AACjCpC,eAASoC;IACX;IAEA,MAAMC,UAAUC,QAAM;AACpB,UAAI1B,eAAc,KAAKD,WAAW,KAKhC4B,0CAAAA,QAAAA,sCAAAA,WAAAA,kCAAgBC,6BAChB9B,oBAAoB,KAAKC,WAAW,IAMtC;YAAM,CAAC8B,SAASC,KAAAA,IAASJ,OAAOK,MAAM,GAAA;AAEtC,YAAKF,QAAQG,SAAS1C,UAAAA,GAMtB;cAAMY,aAAawB,OAAOjC,WAAWL,OAAOM,IAAI,IAC5CgC,SACAnC,yBAAyBsC,OAAAA;AAK7B,cAAI3C,OAAO+C,IAAI/B,UAAAA;AAEb,mBAAOA,cAAc4B,QAAQ,IAAIA,KAAAA,KAAU;;;IAE/C;;;;;;;;IAUA,MAAMI,KAAKC,IAAE;AACX,UAAIC,qCAIApC,eAAc,KAAKD,WAAW,KAIhC4B,0CAAAA,QAAAA,sCAAAA,WAAAA,kCAAgBC,6BAChB9B,oBAAoB,KAAKC,WAAW,IAItC;YAAM,CAAC8B,OAAAA,IAAWM,GAAGJ,MAAM,GAAA;AAC3B,eAAO7C,OAAOmD,IAAIR,OAAAA;;IACpB;IAEA,MAAMS,UAAUC,MAAMJ,IAAIK,UAAQ;AAChC,UAAIJ,qCAIApC,eAAc,KAAKD,WAAW,KAIhC4B,0CAAAA,QAAAA,sCAAAA,WAAAA,kCAAgBC,6BAChB9B,oBAAoB,KAAKC,WAAW,IAKtC;YAAM,CAAC8B,OAAAA,IAAWM,GAAGJ,MAAM,GAAA;AAC3B,YAAKF,QAAQG,SAAS,MAAA,GAItB;cAAMS,oBAAoBF,KAAKG,QAAQ,KAAA,GACjC,EAAEC,eAAeC,iBAAgB,IAAKC,0BAAQC,iBAAiB;YACnEpB,QAAQe,qBAAqB,IAAIF,KAAKQ,MAAMN,iBAAAA,IAAqB;YACjE7C,MAAMiC;UACR,CAAA;AAEA,cAAIe,kBAAkB;gBACmC;AAAvDI,oBAAQC,MAAM,mBAAmBd,EAAAA,qBAAsB,oBAAA,KAAKpC,iBAAW,QAAhB,sBAAA,SAAA,SAAA,kBAAkBd,IAAI,EAAE,GAC/E+D,QAAQE,KAAK;;;EAAyBX,IAAAA;;CAAU;UAClD;AAEA,cAAII,gBAIJ;gBAAMQ,YAAY,MAAMN,0BAAQO,oBAAoB;cAClDnC,WAAWA;cACXS,QAAQa;cACRc,YAAYxB;cACZyB,SAAS3B;cACTiB;YACF,CAAA;AAEA,gBAAKO,WAIL;kBAAMI,iBAAiB,GAAG1B,OAAAA,GAAUvC,UAAAA,IAC9BY,aAAaX,yBAAyBgE,cAAAA,GAExC7B,SAASyB,UAAUK;AAEvB,qBAAIL,UAAUM,WACZ,KAAKC,aAAaH,cAAAA,GAEdlE,UAAUH,OAAO+C,IAAI/B,UAAAA,KACvBD,iBAAiBsD,cAAAA,GAGnB7B,SAAS,GAAGA,MAAAA;UAAmB6B,cAAAA,MAC/BrE,OAAOyE,IAAIzD,YAAYiD,UAAUM,MAAM,IAGlC;gBACLlB,MAAMb,OAAOkC,SAAQ;gBACrBC,KAAKV,UAAUU;cACjB;;;;;IACF;EACF;AACF;",
5
- "names": ["tamaguiExtractPlugin", "optionsIn", "disable", "name", "cssMap", "Map", "config", "server", "virtualExt", "getAbsoluteVirtualFileId", "filePath", "startsWith", "root", "normalizePath", "path", "join", "isVite6AndNotClient", "environment", "isVite6Native", "invalidateModule", "absoluteId", "moduleGraph", "modules", "getModulesByFile", "module", "lastHMRTimestamp", "lastInvalidationTimestamp", "Date", "now", "enforce", "configureServer", "_server", "buildStart", "loadTamaguiBuildConfig", "buildEnd", "extractor", "cleanupBeforeExit", "userConf", "optimizeDeps", "include", "push", "configResolved", "resolvedConfig", "resolveId", "source", "tamaguiOptions", "disableServerOptimization", "validId", "query", "split", "endsWith", "has", "load", "id", "disableStatic", "get", "transform", "code", "ssrParam", "firstCommentIndex", "indexOf", "shouldDisable", "shouldPrintDebug", "Static", "getPragmaOptions", "slice", "console", "trace", "info", "extracted", "extractToClassNames", "sourcePath", "options", "rootRelativeId", "js", "styles", "addWatchFile", "set", "toString", "map"]
4
+ "mappings": "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",
5
+ "names": ["tamaguiExtractPlugin", "optionsIn", "disable", "name", "getHash", "input", "createHash", "update", "digest", "clearCompilerCache", "memoryCache", "cacheSize", "cssMap", "Map", "config", "server", "virtualExt", "getAbsoluteVirtualFileId", "filePath", "startsWith", "root", "normalizePath", "path", "join", "isVite6AndNotClient", "environment", "isVite6Native", "invalidateModule", "absoluteId", "moduleGraph", "modules", "getModulesByFile", "module", "lastHMRTimestamp", "lastInvalidationTimestamp", "Date", "now", "enforce", "configureServer", "_server", "buildStart", "loadTamaguiBuildConfig", "buildEnd", "extractor", "cleanupBeforeExit", "userConf", "optimizeDeps", "include", "push", "configResolved", "resolvedConfig", "resolveId", "source", "tamaguiOptions", "disableServerOptimization", "validId", "query", "split", "endsWith", "has", "load", "id", "disableStatic", "get", "transform", "order", "handler", "code", "firstCommentIndex", "indexOf", "shouldDisable", "shouldPrintDebug", "Static", "getPragmaOptions", "slice", "console", "trace", "info", "cacheEnv", "cacheKey", "cached", "extracted", "extractToClassNames", "sourcePath", "options", "rootRelativeId", "js", "styles", "addWatchFile", "set", "codeOut", "toString", "out", "map", "length"]
6
6
  }
@@ -7,11 +7,16 @@ import {
7
7
  loadTamaguiBuildConfig,
8
8
  tamaguiOptions
9
9
  } from "./loadTamagui";
10
+ import { createHash } from "node:crypto";
10
11
  function tamaguiExtractPlugin(optionsIn) {
11
12
  if (optionsIn?.disable)
12
13
  return {
13
14
  name: "tamagui-extract"
14
15
  };
16
+ const getHash = (input) => createHash("sha1").update(input).digest("base64"), clearCompilerCache = () => {
17
+ memoryCache = {}, cacheSize = 0;
18
+ };
19
+ let memoryCache = {}, cacheSize = 0;
15
20
  const cssMap = /* @__PURE__ */ new Map();
16
21
  let config, server;
17
22
  const virtualExt = ".tamagui.css", getAbsoluteVirtualFileId = (filePath) => filePath.startsWith(config.root) ? filePath : normalizePath(path.join(config.root, filePath));
@@ -69,39 +74,50 @@ function tamaguiExtractPlugin(optionsIn) {
69
74
  const [validId] = id.split("?");
70
75
  return cssMap.get(validId);
71
76
  },
72
- async transform(code, id, ssrParam) {
73
- if (disableStatic || isVite6Native(this.environment) || tamaguiOptions?.disableServerOptimization && isVite6AndNotClient(this.environment))
74
- return;
75
- const [validId] = id.split("?");
76
- if (!validId.endsWith(".tsx"))
77
- return;
78
- const firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = Static.getPragmaOptions({
79
- source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
80
- path: validId
81
- });
82
- if (shouldPrintDebug && (console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`), console.info(`
77
+ transform: {
78
+ order: "pre",
79
+ async handler(code, id) {
80
+ if (disableStatic || isVite6Native(this.environment) || tamaguiOptions?.disableServerOptimization && isVite6AndNotClient(this.environment))
81
+ return;
82
+ const [validId] = id.split("?");
83
+ if (!validId.endsWith(".tsx"))
84
+ return;
85
+ const firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = Static.getPragmaOptions({
86
+ source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
87
+ path: validId
88
+ });
89
+ if (shouldPrintDebug && (console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`), console.info(`
83
90
 
84
91
  Original source:
85
92
  ${code}
86
93
 
87
94
  `)), shouldDisable)
88
- return;
89
- const extracted = await Static.extractToClassNames({
90
- extractor,
91
- source: code,
92
- sourcePath: validId,
93
- options: tamaguiOptions,
94
- shouldPrintDebug
95
- });
96
- if (!extracted)
97
- return;
98
- const rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId);
99
- let source = extracted.js;
100
- return extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
101
- import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles)), {
102
- code: source.toString(),
103
- map: extracted.map
104
- };
95
+ return;
96
+ const cacheEnv = this.environment.name === "client" || this.environment.name === "ssr" ? (
97
+ // same cache key for ssr and web since they are the same
98
+ "web"
99
+ ) : this.environment.name, cacheKey = getHash(`${cacheEnv}${code}${id}`), cached = memoryCache[cacheKey];
100
+ if (cached)
101
+ return cached;
102
+ const extracted = await Static.extractToClassNames({
103
+ extractor,
104
+ source: code,
105
+ sourcePath: validId,
106
+ options: tamaguiOptions,
107
+ shouldPrintDebug
108
+ });
109
+ if (!extracted)
110
+ return;
111
+ const rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId);
112
+ let source = extracted.js;
113
+ extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
114
+ import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles));
115
+ const codeOut = source.toString(), out = {
116
+ code: codeOut,
117
+ map: extracted.map
118
+ };
119
+ return cacheSize += codeOut.length, cacheSize > 262144e3 / 5 && clearCompilerCache(), memoryCache[cacheKey] = out, out;
120
+ }
105
121
  }
106
122
  };
107
123
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/extract.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,10 +1,17 @@
1
1
  import path from "node:path";
2
2
  import { normalizePath } from "vite";
3
3
  import { Static, disableStatic, extractor, loadTamaguiBuildConfig, tamaguiOptions } from "./loadTamagui.mjs";
4
+ import { createHash } from "node:crypto";
4
5
  function tamaguiExtractPlugin(optionsIn) {
5
6
  if (optionsIn?.disable) return {
6
7
  name: "tamagui-extract"
7
8
  };
9
+ const getHash = input => createHash("sha1").update(input).digest("base64"),
10
+ clearCompilerCache = () => {
11
+ memoryCache = {}, cacheSize = 0;
12
+ };
13
+ let memoryCache = {},
14
+ cacheSize = 0;
8
15
  const cssMap = /* @__PURE__ */new Map();
9
16
  let config, server;
10
17
  const virtualExt = ".tamagui.css",
@@ -60,40 +67,52 @@ function tamaguiExtractPlugin(optionsIn) {
60
67
  const [validId] = id.split("?");
61
68
  return cssMap.get(validId);
62
69
  },
63
- async transform(code, id, ssrParam) {
64
- if (disableStatic || isVite6Native(this.environment) || tamaguiOptions?.disableServerOptimization && isVite6AndNotClient(this.environment)) return;
65
- const [validId] = id.split("?");
66
- if (!validId.endsWith(".tsx")) return;
67
- const firstCommentIndex = code.indexOf("// "),
68
- {
69
- shouldDisable,
70
- shouldPrintDebug
71
- } = Static.getPragmaOptions({
72
- source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
73
- path: validId
74
- });
75
- if (shouldPrintDebug && (console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`), console.info(`
70
+ transform: {
71
+ order: "pre",
72
+ async handler(code, id) {
73
+ if (disableStatic || isVite6Native(this.environment) || tamaguiOptions?.disableServerOptimization && isVite6AndNotClient(this.environment)) return;
74
+ const [validId] = id.split("?");
75
+ if (!validId.endsWith(".tsx")) return;
76
+ const firstCommentIndex = code.indexOf("// "),
77
+ {
78
+ shouldDisable,
79
+ shouldPrintDebug
80
+ } = Static.getPragmaOptions({
81
+ source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
82
+ path: validId
83
+ });
84
+ if (shouldPrintDebug && (console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`), console.info(`
76
85
 
77
86
  Original source:
78
87
  ${code}
79
88
 
80
89
  `)), shouldDisable) return;
81
- const extracted = await Static.extractToClassNames({
82
- extractor,
83
- source: code,
84
- sourcePath: validId,
85
- options: tamaguiOptions,
86
- shouldPrintDebug
87
- });
88
- if (!extracted) return;
89
- const rootRelativeId = `${validId}${virtualExt}`,
90
- absoluteId = getAbsoluteVirtualFileId(rootRelativeId);
91
- let source = extracted.js;
92
- return extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
93
- import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles)), {
94
- code: source.toString(),
95
- map: extracted.map
96
- };
90
+ const cacheEnv = this.environment.name === "client" || this.environment.name === "ssr" ?
91
+ // same cache key for ssr and web since they are the same
92
+ "web" : this.environment.name,
93
+ cacheKey = getHash(`${cacheEnv}${code}${id}`),
94
+ cached = memoryCache[cacheKey];
95
+ if (cached) return cached;
96
+ const extracted = await Static.extractToClassNames({
97
+ extractor,
98
+ source: code,
99
+ sourcePath: validId,
100
+ options: tamaguiOptions,
101
+ shouldPrintDebug
102
+ });
103
+ if (!extracted) return;
104
+ const rootRelativeId = `${validId}${virtualExt}`,
105
+ absoluteId = getAbsoluteVirtualFileId(rootRelativeId);
106
+ let source = extracted.js;
107
+ extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
108
+ import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles));
109
+ const codeOut = source.toString(),
110
+ out = {
111
+ code: codeOut,
112
+ map: extracted.map
113
+ };
114
+ return cacheSize += codeOut.length, cacheSize > 262144e3 / 5 && clearCompilerCache(), memoryCache[cacheKey] = out, out;
115
+ }
97
116
  }
98
117
  };
99
118
  }
@@ -1 +1 @@
1
- {"version":3,"names":["path","normalizePath","Static","disableStatic","extractor","loadTamaguiBuildConfig","tamaguiOptions","tamaguiExtractPlugin","optionsIn","disable","name","cssMap","Map","config","server","virtualExt","getAbsoluteVirtualFileId","filePath","startsWith","root","join","isVite6AndNotClient","environment","isVite6Native","invalidateModule","absoluteId","moduleGraph","modules","getModulesByFile","module","lastHMRTimestamp","lastInvalidationTimestamp","Date","now","enforce","configureServer","_server","buildStart","buildEnd","cleanupBeforeExit","userConf","optimizeDeps","include","push","configResolved","resolvedConfig","resolveId","source","disableServerOptimization","validId","query","split","endsWith","has","load","id","get","transform","code","ssrParam","firstCommentIndex","indexOf","shouldDisable","shouldPrintDebug","getPragmaOptions","slice","console","trace","info","extracted","extractToClassNames","sourcePath","options","rootRelativeId","js","styles","addWatchFile","set","toString","map"],"sources":["../../src/extract.ts"],"sourcesContent":[null],"mappings":"AAGA,OAAOA,IAAA,MAAU;AAEjB,SAASC,aAAA,QAAuC;AAChD,SACEC,MAAA,EACAC,aAAA,EACAC,SAAA,EACAC,sBAAA,EACAC,cAAA,QACK;AAEA,SAASC,qBAAqBC,SAAA,EAA6C;EAChF,IAAIA,SAAA,EAAWC,OAAA,EACb,OAAO;IACLC,IAAA,EAAM;EACR;EAGF,MAAMC,MAAA,GAAS,mBAAIC,GAAA,CAAoB;EAEvC,IAAIC,MAAA,EACAC,MAAA;EACJ,MAAMC,UAAA,GAAa;IAEbC,wBAAA,GAA4BC,QAAA,IAC5BA,QAAA,CAASC,UAAA,CAAWL,MAAA,CAAOM,IAAI,IAC1BF,QAAA,GAEFhB,aAAA,CAAcD,IAAA,CAAKoB,IAAA,CAAKP,MAAA,CAAOM,IAAA,EAAMF,QAAQ,CAAC;EAGvD,SAASI,oBAAoBC,WAAA,EAA2B;IACtD,OAAOA,WAAA,EAAaZ,IAAA,IAAQY,WAAA,CAAYZ,IAAA,KAAS;EACnD;EAEA,SAASa,cAAcD,WAAA,EAA2B;IAChD,OACEA,WAAA,EAAaZ,IAAA,KAASY,WAAA,CAAYZ,IAAA,KAAS,SAASY,WAAA,CAAYZ,IAAA,KAAS;EAE7E;EAEA,SAASc,iBAAiBC,UAAA,EAAoB;IAC5C,IAAI,CAACX,MAAA,EAAQ;IAEb,MAAM;QAAEY;MAAY,IAAIZ,MAAA;MAClBa,OAAA,GAAUD,WAAA,CAAYE,gBAAA,CAAiBH,UAAU;IAEvD,IAAIE,OAAA,EACF,WAAWE,MAAA,IAAUF,OAAA,EACnBD,WAAA,CAAYF,gBAAA,CAAiBK,MAAM,GAGnCA,MAAA,CAAOC,gBAAA,GAAmBD,MAAA,CAAOE,yBAAA,IAA6BC,IAAA,CAAKC,GAAA,CAAI;EAG7E;EAEA,OAAO;IACLvB,IAAA,EAAM;IACNwB,OAAA,EAAS;IAETC,gBAAgBC,OAAA,EAAS;MACvBtB,MAAA,GAASsB,OAAA;IACX;IAEA,MAAMC,WAAA,EAAa;MACjB,MAAMhC,sBAAA,CAAuBG,SAAS;IACxC;IAEA8B,SAAA,EAAW;MACTlC,SAAA,EAAWmC,iBAAA,CAAkB;IAC/B;IAEA1B,OAAO2B,QAAA,EAAU;MACfA,QAAA,CAASC,YAAA,KAAiB,CAAC,GAC3BD,QAAA,CAASC,YAAA,CAAaC,OAAA,KAAY,EAAC,EACnCF,QAAA,CAASC,YAAA,CAAaC,OAAA,CAAQC,IAAA,CAAK,6BAA6B;IAClE;IAEA,MAAMC,eAAeC,cAAA,EAAgB;MACnChC,MAAA,GAASgC,cAAA;IACX;IAEA,MAAMC,UAAUC,MAAA,EAAQ;MAKtB,IAJIxB,aAAA,CAAc,KAAKD,WAAW,KAKhChB,cAAA,EAAgB0C,yBAAA,IAChB3B,mBAAA,CAAoB,KAAKC,WAAW,GAGpC;MAGF,MAAM,CAAC2B,OAAA,EAASC,KAAK,IAAIH,MAAA,CAAOI,KAAA,CAAM,GAAG;MAEzC,IAAI,CAACF,OAAA,CAAQG,QAAA,CAASrC,UAAU,GAC9B;MAKF,MAAMU,UAAA,GAAasB,MAAA,CAAO7B,UAAA,CAAWL,MAAA,CAAOM,IAAI,IAC5C4B,MAAA,GACA/B,wBAAA,CAAyBiC,OAAO;MAKpC,IAAItC,MAAA,CAAO0C,GAAA,CAAI5B,UAAU,GAEvB,OAAOA,UAAA,IAAcyB,KAAA,GAAQ,IAAIA,KAAK,KAAK;IAE/C;IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAUA,MAAMI,KAAKC,EAAA,EAAI;MAQb,IAPIpD,aAAA,IAIAoB,aAAA,CAAc,KAAKD,WAAW,KAIhChB,cAAA,EAAgB0C,yBAAA,IAChB3B,mBAAA,CAAoB,KAAKC,WAAW,GAEpC;MAEF,MAAM,CAAC2B,OAAO,IAAIM,EAAA,CAAGJ,KAAA,CAAM,GAAG;MAC9B,OAAOxC,MAAA,CAAO6C,GAAA,CAAIP,OAAO;IAC3B;IAEA,MAAMQ,UAAUC,IAAA,EAAMH,EAAA,EAAII,QAAA,EAAU;MAQlC,IAPIxD,aAAA,IAIAoB,aAAA,CAAc,KAAKD,WAAW,KAIhChB,cAAA,EAAgB0C,yBAAA,IAChB3B,mBAAA,CAAoB,KAAKC,WAAW,GAEpC;MAGF,MAAM,CAAC2B,OAAO,IAAIM,EAAA,CAAGJ,KAAA,CAAM,GAAG;MAC9B,IAAI,CAACF,OAAA,CAAQG,QAAA,CAAS,MAAM,GAC1B;MAGF,MAAMQ,iBAAA,GAAoBF,IAAA,CAAKG,OAAA,CAAQ,KAAK;QACtC;UAAEC,aAAA;UAAeC;QAAiB,IAAI7D,MAAA,CAAQ8D,gBAAA,CAAiB;UACnEjB,MAAA,EAAQa,iBAAA,IAAqB,IAAIF,IAAA,CAAKO,KAAA,CAAML,iBAAiB,IAAI;UACjE5D,IAAA,EAAMiD;QACR,CAAC;MAOD,IALIc,gBAAA,KACFG,OAAA,CAAQC,KAAA,CAAM,mBAAmBZ,EAAE,oBAAoB,KAAKjC,WAAA,EAAaZ,IAAI,EAAE,GAC/EwD,OAAA,CAAQE,IAAA,CAAK;AAAA;AAAA;AAAA,EAAyBV,IAAI;AAAA;AAAA,CAAM,IAG9CI,aAAA,EACF;MAGF,MAAMO,SAAA,GAAY,MAAMnE,MAAA,CAAQoE,mBAAA,CAAoB;QAClDlE,SAAA;QACA2C,MAAA,EAAQW,IAAA;QACRa,UAAA,EAAYtB,OAAA;QACZuB,OAAA,EAASlE,cAAA;QACTyD;MACF,CAAC;MAED,IAAI,CAACM,SAAA,EACH;MAGF,MAAMI,cAAA,GAAiB,GAAGxB,OAAO,GAAGlC,UAAU;QACxCU,UAAA,GAAaT,wBAAA,CAAyByD,cAAc;MAE1D,IAAI1B,MAAA,GAASsB,SAAA,CAAUK,EAAA;MAEvB,OAAIL,SAAA,CAAUM,MAAA,KACZ,KAAKC,YAAA,CAAaH,cAAc,GAE5B3D,MAAA,IAAUH,MAAA,CAAO0C,GAAA,CAAI5B,UAAU,KACjCD,gBAAA,CAAiBiD,cAAc,GAGjC1B,MAAA,GAAS,GAAGA,MAAM;AAAA,UAAa0B,cAAc,MAC7C9D,MAAA,CAAOkE,GAAA,CAAIpD,UAAA,EAAY4C,SAAA,CAAUM,MAAM,IAGlC;QACLjB,IAAA,EAAMX,MAAA,CAAO+B,QAAA,CAAS;QACtBC,GAAA,EAAKV,SAAA,CAAUU;MACjB;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["path","normalizePath","Static","disableStatic","extractor","loadTamaguiBuildConfig","tamaguiOptions","createHash","tamaguiExtractPlugin","optionsIn","disable","name","getHash","input","update","digest","clearCompilerCache","memoryCache","cacheSize","cssMap","Map","config","server","virtualExt","getAbsoluteVirtualFileId","filePath","startsWith","root","join","isVite6AndNotClient","environment","isVite6Native","invalidateModule","absoluteId","moduleGraph","modules","getModulesByFile","module","lastHMRTimestamp","lastInvalidationTimestamp","Date","now","enforce","configureServer","_server","buildStart","buildEnd","cleanupBeforeExit","userConf","optimizeDeps","include","push","configResolved","resolvedConfig","resolveId","source","disableServerOptimization","validId","query","split","endsWith","has","load","id","get","transform","order","handler","code","firstCommentIndex","indexOf","shouldDisable","shouldPrintDebug","getPragmaOptions","slice","console","trace","info","cacheEnv","cacheKey","cached","extracted","extractToClassNames","sourcePath","options","rootRelativeId","js","styles","addWatchFile","set","codeOut","toString","out","map","length"],"sources":["../../src/extract.ts"],"sourcesContent":[null],"mappings":"AAGA,OAAOA,IAAA,MAAU;AAEjB,SAASC,aAAA,QAAuC;AAChD,SACEC,MAAA,EACAC,aAAA,EACAC,SAAA,EACAC,sBAAA,EACAC,cAAA,QACK;AAEP,SAASC,UAAA,QAAkB;AAEpB,SAASC,qBAAqBC,SAAA,EAA6C;EAChF,IAAIA,SAAA,EAAWC,OAAA,EACb,OAAO;IACLC,IAAA,EAAM;EACR;EAGF,MAAMC,OAAA,GAAWC,KAAA,IAAkBN,UAAA,CAAW,MAAM,EAAEO,MAAA,CAAOD,KAAK,EAAEE,MAAA,CAAO,QAAQ;IAE7EC,kBAAA,GAAqBA,CAAA,KAAM;MAC/BC,WAAA,GAAc,CAAC,GACfC,SAAA,GAAY;IACd;EAEA,IAAID,WAAA,GAAc,CAAC;IACfC,SAAA,GAAY;EAEhB,MAAMC,MAAA,GAAS,mBAAIC,GAAA,CAAoB;EAEvC,IAAIC,MAAA,EACAC,MAAA;EACJ,MAAMC,UAAA,GAAa;IAEbC,wBAAA,GAA4BC,QAAA,IAC5BA,QAAA,CAASC,UAAA,CAAWL,MAAA,CAAOM,IAAI,IAC1BF,QAAA,GAEFxB,aAAA,CAAcD,IAAA,CAAK4B,IAAA,CAAKP,MAAA,CAAOM,IAAA,EAAMF,QAAQ,CAAC;EAGvD,SAASI,oBAAoBC,WAAA,EAA2B;IACtD,OAAOA,WAAA,EAAanB,IAAA,IAAQmB,WAAA,CAAYnB,IAAA,KAAS;EACnD;EAEA,SAASoB,cAAcD,WAAA,EAA2B;IAChD,OACEA,WAAA,EAAanB,IAAA,KAASmB,WAAA,CAAYnB,IAAA,KAAS,SAASmB,WAAA,CAAYnB,IAAA,KAAS;EAE7E;EAEA,SAASqB,iBAAiBC,UAAA,EAAoB;IAC5C,IAAI,CAACX,MAAA,EAAQ;IAEb,MAAM;QAAEY;MAAY,IAAIZ,MAAA;MAClBa,OAAA,GAAUD,WAAA,CAAYE,gBAAA,CAAiBH,UAAU;IAEvD,IAAIE,OAAA,EACF,WAAWE,MAAA,IAAUF,OAAA,EACnBD,WAAA,CAAYF,gBAAA,CAAiBK,MAAM,GAGnCA,MAAA,CAAOC,gBAAA,GAAmBD,MAAA,CAAOE,yBAAA,IAA6BC,IAAA,CAAKC,GAAA,CAAI;EAG7E;EAEA,OAAO;IACL9B,IAAA,EAAM;IACN+B,OAAA,EAAS;IAETC,gBAAgBC,OAAA,EAAS;MACvBtB,MAAA,GAASsB,OAAA;IACX;IAEA,MAAMC,WAAA,EAAa;MACjB,MAAMxC,sBAAA,CAAuBI,SAAS;IACxC;IAEAqC,SAAA,EAAW;MACT1C,SAAA,EAAW2C,iBAAA,CAAkB;IAC/B;IAEA1B,OAAO2B,QAAA,EAAU;MACfA,QAAA,CAASC,YAAA,KAAiB,CAAC,GAC3BD,QAAA,CAASC,YAAA,CAAaC,OAAA,KAAY,EAAC,EACnCF,QAAA,CAASC,YAAA,CAAaC,OAAA,CAAQC,IAAA,CAAK,6BAA6B;IAClE;IAEA,MAAMC,eAAeC,cAAA,EAAgB;MACnChC,MAAA,GAASgC,cAAA;IACX;IAEA,MAAMC,UAAUC,MAAA,EAAQ;MAKtB,IAJIxB,aAAA,CAAc,KAAKD,WAAW,KAKhCxB,cAAA,EAAgBkD,yBAAA,IAChB3B,mBAAA,CAAoB,KAAKC,WAAW,GAGpC;MAGF,MAAM,CAAC2B,OAAA,EAASC,KAAK,IAAIH,MAAA,CAAOI,KAAA,CAAM,GAAG;MAEzC,IAAI,CAACF,OAAA,CAAQG,QAAA,CAASrC,UAAU,GAC9B;MAKF,MAAMU,UAAA,GAAasB,MAAA,CAAO7B,UAAA,CAAWL,MAAA,CAAOM,IAAI,IAC5C4B,MAAA,GACA/B,wBAAA,CAAyBiC,OAAO;MAKpC,IAAItC,MAAA,CAAO0C,GAAA,CAAI5B,UAAU,GAEvB,OAAOA,UAAA,IAAcyB,KAAA,GAAQ,IAAIA,KAAK,KAAK;IAE/C;IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAUA,MAAMI,KAAKC,EAAA,EAAI;MAUb,IATI5D,aAAA,IAKA4B,aAAA,CAAc,KAAKD,WAAW,KAKhCxB,cAAA,EAAgBkD,yBAAA,IAChB3B,mBAAA,CAAoB,KAAKC,WAAW,GAEpC;MAGF,MAAM,CAAC2B,OAAO,IAAIM,EAAA,CAAGJ,KAAA,CAAM,GAAG;MAC9B,OAAOxC,MAAA,CAAO6C,GAAA,CAAIP,OAAO;IAC3B;IAEAQ,SAAA,EAAW;MACTC,KAAA,EAAO;MACP,MAAMC,QAAQC,IAAA,EAAML,EAAA,EAAI;QAUtB,IATI5D,aAAA,IAKA4B,aAAA,CAAc,KAAKD,WAAW,KAKhCxB,cAAA,EAAgBkD,yBAAA,IAChB3B,mBAAA,CAAoB,KAAKC,WAAW,GAEpC;QAGF,MAAM,CAAC2B,OAAO,IAAIM,EAAA,CAAGJ,KAAA,CAAM,GAAG;QAC9B,IAAI,CAACF,OAAA,CAAQG,QAAA,CAAS,MAAM,GAC1B;QAGF,MAAMS,iBAAA,GAAoBD,IAAA,CAAKE,OAAA,CAAQ,KAAK;UACtC;YAAEC,aAAA;YAAeC;UAAiB,IAAItE,MAAA,CAAQuE,gBAAA,CAAiB;YACnElB,MAAA,EAAQc,iBAAA,IAAqB,IAAID,IAAA,CAAKM,KAAA,CAAML,iBAAiB,IAAI;YACjErE,IAAA,EAAMyD;UACR,CAAC;QAOD,IALIe,gBAAA,KACFG,OAAA,CAAQC,KAAA,CAAM,mBAAmBb,EAAE,oBAAoB,KAAKjC,WAAA,EAAanB,IAAI,EAAE,GAC/EgE,OAAA,CAAQE,IAAA,CAAK;AAAA;AAAA;AAAA,EAAyBT,IAAI;AAAA;AAAA,CAAM,IAG9CG,aAAA,EACF;QAGF,MAAMO,QAAA,GACJ,KAAKhD,WAAA,CAAYnB,IAAA,KAAS,YAAY,KAAKmB,WAAA,CAAYnB,IAAA,KAAS;UAAA;UAE5D,QACA,KAAKmB,WAAA,CAAYnB,IAAA;UACjBoE,QAAA,GAAWnE,OAAA,CAAQ,GAAGkE,QAAQ,GAAGV,IAAI,GAAGL,EAAE,EAAE;UAC5CiB,MAAA,GAAS/D,WAAA,CAAY8D,QAAQ;QACnC,IAAIC,MAAA,EACF,OAAOA,MAAA;QAGT,MAAMC,SAAA,GAAY,MAAM/E,MAAA,CAAQgF,mBAAA,CAAoB;UAClD9E,SAAA;UACAmD,MAAA,EAAQa,IAAA;UACRe,UAAA,EAAY1B,OAAA;UACZ2B,OAAA,EAAS9E,cAAA;UACTkE;QACF,CAAC;QAED,IAAI,CAACS,SAAA,EACH;QAGF,MAAMI,cAAA,GAAiB,GAAG5B,OAAO,GAAGlC,UAAU;UACxCU,UAAA,GAAaT,wBAAA,CAAyB6D,cAAc;QAE1D,IAAI9B,MAAA,GAAS0B,SAAA,CAAUK,EAAA;QAEnBL,SAAA,CAAUM,MAAA,KACZ,KAAKC,YAAA,CAAaH,cAAc,GAE5B/D,MAAA,IAAUH,MAAA,CAAO0C,GAAA,CAAI5B,UAAU,KACjCD,gBAAA,CAAiBqD,cAAc,GAGjC9B,MAAA,GAAS,GAAGA,MAAM;AAAA,UAAa8B,cAAc,MAC7ClE,MAAA,CAAOsE,GAAA,CAAIxD,UAAA,EAAYgD,SAAA,CAAUM,MAAM;QAGzC,MAAMG,OAAA,GAAUnC,MAAA,CAAOoC,QAAA,CAAS;UAC1BC,GAAA,GAAM;YACVxB,IAAA,EAAMsB,OAAA;YACNG,GAAA,EAAKZ,SAAA,CAAUY;UACjB;QAEA,OAAA3E,SAAA,IAAawE,OAAA,CAAQI,MAAA,EAEjB5E,SAAA,GAAY,WAAY,KAC1BF,kBAAA,CAAmB,GAErBC,WAAA,CAAY8D,QAAQ,IAAIa,GAAA,EAEjBA,GAAA;MACT;IACF;EACF;AACF","ignoreList":[]}
@@ -1,12 +1,17 @@
1
1
  import path from "node:path";
2
2
  import { normalizePath } from "vite";
3
3
  import { Static, disableStatic, extractor, loadTamaguiBuildConfig, tamaguiOptions } from "./loadTamagui";
4
+ import { createHash } from "node:crypto";
4
5
  function tamaguiExtractPlugin(optionsIn) {
5
6
  if (optionsIn?.disable)
6
7
  return {
7
8
  name: "tamagui-extract"
8
9
  };
9
- var cssMap = /* @__PURE__ */ new Map(), config, server, virtualExt = ".tamagui.css", getAbsoluteVirtualFileId = function(filePath) {
10
+ var getHash = function(input) {
11
+ return createHash("sha1").update(input).digest("base64");
12
+ }, clearCompilerCache = function() {
13
+ memoryCache = {}, cacheSize = 0;
14
+ }, memoryCache = {}, cacheSize = 0, cssMap = /* @__PURE__ */ new Map(), config, server, virtualExt = ".tamagui.css", getAbsoluteVirtualFileId = function(filePath) {
10
15
  return filePath.startsWith(config.root) ? filePath : normalizePath(path.join(config.root, filePath));
11
16
  };
12
17
  function isVite6AndNotClient(environment) {
@@ -80,38 +85,49 @@ function tamaguiExtractPlugin(optionsIn) {
80
85
  return cssMap.get(validId);
81
86
  }
82
87
  },
83
- async transform(code, id, ssrParam) {
84
- if (!disableStatic && !isVite6Native(this.environment) && !(!(tamaguiOptions === null || tamaguiOptions === void 0) && tamaguiOptions.disableServerOptimization && isVite6AndNotClient(this.environment))) {
85
- var [validId] = id.split("?");
86
- if (validId.endsWith(".tsx")) {
87
- var firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = Static.getPragmaOptions({
88
- source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
89
- path: validId
90
- });
91
- if (shouldPrintDebug) {
92
- var _this_environment;
93
- console.trace(`Debugging file: ${id} in environment: ${(_this_environment = this.environment) === null || _this_environment === void 0 ? void 0 : _this_environment.name}`), console.info(`
88
+ transform: {
89
+ order: "pre",
90
+ async handler(code, id) {
91
+ if (!disableStatic && !isVite6Native(this.environment) && !(!(tamaguiOptions === null || tamaguiOptions === void 0) && tamaguiOptions.disableServerOptimization && isVite6AndNotClient(this.environment))) {
92
+ var [validId] = id.split("?");
93
+ if (validId.endsWith(".tsx")) {
94
+ var firstCommentIndex = code.indexOf("// "), { shouldDisable, shouldPrintDebug } = Static.getPragmaOptions({
95
+ source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : "",
96
+ path: validId
97
+ });
98
+ if (shouldPrintDebug) {
99
+ var _this_environment;
100
+ console.trace(`Debugging file: ${id} in environment: ${(_this_environment = this.environment) === null || _this_environment === void 0 ? void 0 : _this_environment.name}`), console.info(`
94
101
 
95
102
  Original source:
96
103
  ${code}
97
104
 
98
105
  `);
99
- }
100
- if (!shouldDisable) {
101
- var extracted = await Static.extractToClassNames({
102
- extractor,
103
- source: code,
104
- sourcePath: validId,
105
- options: tamaguiOptions,
106
- shouldPrintDebug
107
- });
108
- if (extracted) {
109
- var rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId), source = extracted.js;
110
- return extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
111
- import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles)), {
112
- code: source.toString(),
113
- map: extracted.map
114
- };
106
+ }
107
+ if (!shouldDisable) {
108
+ var cacheEnv = this.environment.name === "client" || this.environment.name === "ssr" ? (
109
+ // same cache key for ssr and web since they are the same
110
+ "web"
111
+ ) : this.environment.name, cacheKey = getHash(`${cacheEnv}${code}${id}`), cached = memoryCache[cacheKey];
112
+ if (cached)
113
+ return cached;
114
+ var extracted = await Static.extractToClassNames({
115
+ extractor,
116
+ source: code,
117
+ sourcePath: validId,
118
+ options: tamaguiOptions,
119
+ shouldPrintDebug
120
+ });
121
+ if (extracted) {
122
+ var rootRelativeId = `${validId}${virtualExt}`, absoluteId = getAbsoluteVirtualFileId(rootRelativeId), source = extracted.js;
123
+ extracted.styles && (this.addWatchFile(rootRelativeId), server && cssMap.has(absoluteId) && invalidateModule(rootRelativeId), source = `${source}
124
+ import "${rootRelativeId}";`, cssMap.set(absoluteId, extracted.styles));
125
+ var codeOut = source.toString(), out = {
126
+ code: codeOut,
127
+ map: extracted.map
128
+ };
129
+ return cacheSize += codeOut.length, cacheSize > 262144e3 / 5 && clearCompilerCache(), memoryCache[cacheKey] = out, out;
130
+ }
115
131
  }
116
132
  }
117
133
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Users/n8/tamagui/code/compiler/vite-plugin/src/extract.ts"],
4
- "mappings": "AAGA,OAAOA,UAAU;AAEjB,SAASC,qBAAuC;AAChD,SACEC,QACAC,eACAC,WACAC,wBACAC,sBACK;AAEA,SAASC,qBAAqBC,WAAmC;AACtE,MAAIA,WAAWC;AACb,WAAO;MACLC,MAAM;IACR;AAGF,MAAMC,SAAS,oBAAIC,IAAAA,GAEfC,QACAC,QACEC,aAAa,gBAEbC,2BAA2B,SAACC,UAAAA;AAChC,WAAIA,SAASC,WAAWL,OAAOM,IAAI,IAC1BF,WAEFhB,cAAcD,KAAKoB,KAAKP,OAAOM,MAAMF,QAAAA,CAAAA;EAC9C;AAEA,WAASI,oBAAoBC,aAAyB;AACpD,WAAOA,aAAaZ,QAAQY,YAAYZ,SAAS;EACnD;AAEA,WAASa,cAAcD,aAAyB;AAC9C,WACEA,aAAaZ,SAASY,YAAYZ,SAAS,SAASY,YAAYZ,SAAS;EAE7E;AAEA,WAASc,iBAAiBC,YAAkB;AAC1C,QAAKX,QAEL;UAAM,EAAEY,YAAW,IAAKZ,QAClBa,UAAUD,YAAYE,iBAAiBH,UAAAA;AAE7C,UAAIE,SAAS;YACN,4BAAA,IAAA,oBAAA,IAAA,iBAAA;;AAAL,mBAAK,YAAgBA,QAAAA,OAAAA,QAAAA,EAAAA,GAAhB,OAAA,EAAA,6BAAA,QAAA,UAAA,KAAA,GAAA,OAAA,4BAAA,IAAyB;AAAzB,gBAAME,SAAN,MAAA;AACHH,wBAAYF,iBAAiBK,MAAAA,GAG7BA,OAAOC,mBAAmBD,OAAOE,6BAA6BC,KAAKC,IAAG;UACxE;;AALK,8BAAA,IAAA,iBAAA;;;aAAA,6BAAA,UAAA,UAAA,QAAA,UAAA,OAAA;;gBAAA;oBAAA;;;MAMP;;EACF;AAEA,SAAO;IACLvB,MAAM;IACNwB,SAAS;IAETC,gBAAgBC,SAAO;AACrBtB,eAASsB;IACX;IAEA,MAAMC,aAAAA;AACJ,YAAMhC,uBAAuBG,SAAAA;IAC/B;IAEA8B,WAAAA;AACElC,oBAAAA,QAAAA,cAAAA,UAAAA,UAAWmC,kBAAiB;IAC9B;IAEA1B,OAAO2B,UAAQ;UACbA,WACAA;AADAA,OAAAA,YAAAA,UAASC,iBAATD,UAASC,eAAiB,CAAC,KAC3BD,yBAAAA,SAASC,cAAaC,YAAtBF,uBAAsBE,UAAY,CAAA,IAClCF,SAASC,aAAaC,QAAQC,KAAK,6BAAA;IACrC;IAEA,MAAMC,eAAeC,gBAAc;AACjChC,eAASgC;IACX;IAEA,MAAMC,UAAUC,QAAM;AACpB,UAAIxB,eAAc,KAAKD,WAAW,KAKhChB,uBAAAA,QAAAA,mBAAAA,WAAAA,eAAgB0C,6BAChB3B,oBAAoB,KAAKC,WAAW,IAMtC;YAAM,CAAC2B,SAASC,KAAAA,IAASH,OAAOI,MAAM,GAAA;AAEtC,YAAKF,QAAQG,SAASrC,UAAAA,GAMtB;cAAMU,aAAasB,OAAO7B,WAAWL,OAAOM,IAAI,IAC5C4B,SACA/B,yBAAyBiC,OAAAA;AAK7B,cAAItC,OAAO0C,IAAI5B,UAAAA;AAEb,mBAAOA,cAAcyB,QAAQ,IAAIA,KAAAA,KAAU;;;IAE/C;;;;;;;;IAUA,MAAMI,KAAKC,IAAE;AACX,UAAIpD,kBAIAoB,eAAc,KAAKD,WAAW,KAIhChB,uBAAAA,QAAAA,mBAAAA,WAAAA,eAAgB0C,6BAChB3B,oBAAoB,KAAKC,WAAW,IAItC;YAAM,CAAC2B,OAAAA,IAAWM,GAAGJ,MAAM,GAAA;AAC3B,eAAOxC,OAAO6C,IAAIP,OAAAA;;IACpB;IAEA,MAAMQ,UAAUC,MAAMH,IAAII,UAAQ;AAChC,UAAIxD,kBAIAoB,eAAc,KAAKD,WAAW,KAIhChB,uBAAAA,QAAAA,mBAAAA,WAAAA,eAAgB0C,6BAChB3B,oBAAoB,KAAKC,WAAW,IAKtC;YAAM,CAAC2B,OAAAA,IAAWM,GAAGJ,MAAM,GAAA;AAC3B,YAAKF,QAAQG,SAAS,MAAA,GAItB;cAAMQ,oBAAoBF,KAAKG,QAAQ,KAAA,GACjC,EAAEC,eAAeC,iBAAgB,IAAK7D,OAAQ8D,iBAAiB;YACnEjB,QAAQa,qBAAqB,IAAIF,KAAKO,MAAML,iBAAAA,IAAqB;YACjE5D,MAAMiD;UACR,CAAA;AAEA,cAAIc,kBAAkB;gBACmC;AAAvDG,oBAAQC,MAAM,mBAAmBZ,EAAAA,qBAAsB,oBAAA,KAAKjC,iBAAW,QAAhB,sBAAA,SAAA,SAAA,kBAAkBZ,IAAI,EAAE,GAC/EwD,QAAQE,KAAK;;;EAAyBV,IAAAA;;CAAU;UAClD;AAEA,cAAII,gBAIJ;gBAAMO,YAAY,MAAMnE,OAAQoE,oBAAoB;cAClDlE;cACA2C,QAAQW;cACRa,YAAYtB;cACZuB,SAASlE;cACTyD;YACF,CAAA;AAEA,gBAAKM,WAIL;kBAAMI,iBAAiB,GAAGxB,OAAAA,GAAUlC,UAAAA,IAC9BU,aAAaT,yBAAyByD,cAAAA,GAExC1B,SAASsB,UAAUK;AAEvB,qBAAIL,UAAUM,WACZ,KAAKC,aAAaH,cAAAA,GAEd3D,UAAUH,OAAO0C,IAAI5B,UAAAA,KACvBD,iBAAiBiD,cAAAA,GAGnB1B,SAAS,GAAGA,MAAAA;UAAmB0B,cAAAA,MAC/B9D,OAAOkE,IAAIpD,YAAY4C,UAAUM,MAAM,IAGlC;gBACLjB,MAAMX,OAAO+B,SAAQ;gBACrBC,KAAKV,UAAUU;cACjB;;;;;IACF;EACF;AACF;",
5
- "names": ["path", "normalizePath", "Static", "disableStatic", "extractor", "loadTamaguiBuildConfig", "tamaguiOptions", "tamaguiExtractPlugin", "optionsIn", "disable", "name", "cssMap", "Map", "config", "server", "virtualExt", "getAbsoluteVirtualFileId", "filePath", "startsWith", "root", "join", "isVite6AndNotClient", "environment", "isVite6Native", "invalidateModule", "absoluteId", "moduleGraph", "modules", "getModulesByFile", "module", "lastHMRTimestamp", "lastInvalidationTimestamp", "Date", "now", "enforce", "configureServer", "_server", "buildStart", "buildEnd", "cleanupBeforeExit", "userConf", "optimizeDeps", "include", "push", "configResolved", "resolvedConfig", "resolveId", "source", "disableServerOptimization", "validId", "query", "split", "endsWith", "has", "load", "id", "get", "transform", "code", "ssrParam", "firstCommentIndex", "indexOf", "shouldDisable", "shouldPrintDebug", "getPragmaOptions", "slice", "console", "trace", "info", "extracted", "extractToClassNames", "sourcePath", "options", "rootRelativeId", "js", "styles", "addWatchFile", "set", "toString", "map"]
4
+ "mappings": "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",
5
+ "names": ["path", "normalizePath", "Static", "disableStatic", "extractor", "loadTamaguiBuildConfig", "tamaguiOptions", "createHash", "tamaguiExtractPlugin", "optionsIn", "disable", "name", "getHash", "input", "update", "digest", "clearCompilerCache", "memoryCache", "cacheSize", "cssMap", "Map", "config", "server", "virtualExt", "getAbsoluteVirtualFileId", "filePath", "startsWith", "root", "join", "isVite6AndNotClient", "environment", "isVite6Native", "invalidateModule", "absoluteId", "moduleGraph", "modules", "getModulesByFile", "module", "lastHMRTimestamp", "lastInvalidationTimestamp", "Date", "now", "enforce", "configureServer", "_server", "buildStart", "buildEnd", "cleanupBeforeExit", "userConf", "optimizeDeps", "include", "push", "configResolved", "resolvedConfig", "resolveId", "source", "disableServerOptimization", "validId", "query", "split", "endsWith", "has", "load", "id", "get", "transform", "order", "handler", "code", "firstCommentIndex", "indexOf", "shouldDisable", "shouldPrintDebug", "getPragmaOptions", "slice", "console", "trace", "info", "cacheEnv", "cacheKey", "cached", "extracted", "extractToClassNames", "sourcePath", "options", "rootRelativeId", "js", "styles", "addWatchFile", "set", "codeOut", "toString", "out", "map", "length"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/vite-plugin",
3
- "version": "1.123.13",
3
+ "version": "1.123.15",
4
4
  "types": "./types/index.d.ts",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "type": "module",
@@ -36,18 +36,18 @@
36
36
  }
37
37
  },
38
38
  "dependencies": {
39
- "@tamagui/fake-react-native": "1.123.13",
40
- "@tamagui/proxy-worm": "1.123.13",
41
- "@tamagui/react-native-svg": "1.123.13",
42
- "@tamagui/react-native-web-lite": "1.123.13",
43
- "@tamagui/static": "1.123.13",
39
+ "@tamagui/fake-react-native": "1.123.15",
40
+ "@tamagui/proxy-worm": "1.123.15",
41
+ "@tamagui/react-native-svg": "1.123.15",
42
+ "@tamagui/react-native-web-lite": "1.123.15",
43
+ "@tamagui/static": "1.123.15",
44
44
  "esm-resolve": "^1.0.8",
45
45
  "fs-extra": "^11.2.0",
46
46
  "outdent": "^0.8.0",
47
47
  "react-native-web": "^0.19.0"
48
48
  },
49
49
  "devDependencies": {
50
- "@tamagui/build": "1.123.13",
50
+ "@tamagui/build": "1.123.15",
51
51
  "vite": "^6.0.6"
52
52
  },
53
53
  "publishConfig": {
package/src/extract.ts CHANGED
@@ -12,6 +12,8 @@ import {
12
12
  tamaguiOptions,
13
13
  } from './loadTamagui'
14
14
 
15
+ import { createHash } from 'node:crypto'
16
+
15
17
  export function tamaguiExtractPlugin(optionsIn?: Partial<TamaguiOptions>): Plugin {
16
18
  if (optionsIn?.disable) {
17
19
  return {
@@ -19,6 +21,16 @@ export function tamaguiExtractPlugin(optionsIn?: Partial<TamaguiOptions>): Plugi
19
21
  }
20
22
  }
21
23
 
24
+ const getHash = (input: string) => createHash('sha1').update(input).digest('base64')
25
+
26
+ const clearCompilerCache = () => {
27
+ memoryCache = {}
28
+ cacheSize = 0
29
+ }
30
+
31
+ let memoryCache = {}
32
+ let cacheSize = 0
33
+
22
34
  const cssMap = new Map<string, string>()
23
35
 
24
36
  let config: ResolvedConfig
@@ -131,86 +143,115 @@ export function tamaguiExtractPlugin(optionsIn?: Partial<TamaguiOptions>): Plugi
131
143
  // only optimize on client - server should produce identical styles anyway!
132
144
  return
133
145
  }
146
+
134
147
  if (isVite6Native(this.environment)) {
135
148
  return
136
149
  }
150
+
137
151
  if (
138
152
  tamaguiOptions?.disableServerOptimization &&
139
153
  isVite6AndNotClient(this.environment)
140
154
  ) {
141
155
  return
142
156
  }
157
+
143
158
  const [validId] = id.split('?')
144
159
  return cssMap.get(validId)
145
160
  },
146
161
 
147
- async transform(code, id, ssrParam) {
148
- if (disableStatic) {
149
- // only optimize on client - server should produce identical styles anyway!
150
- return
151
- }
152
- if (isVite6Native(this.environment)) {
153
- return
154
- }
155
- if (
156
- tamaguiOptions?.disableServerOptimization &&
157
- isVite6AndNotClient(this.environment)
158
- ) {
159
- return
160
- }
162
+ transform: {
163
+ order: 'pre',
164
+ async handler(code, id) {
165
+ if (disableStatic) {
166
+ // only optimize on client - server should produce identical styles anyway!
167
+ return
168
+ }
161
169
 
162
- const [validId] = id.split('?')
163
- if (!validId.endsWith('.tsx')) {
164
- return
165
- }
170
+ if (isVite6Native(this.environment)) {
171
+ return
172
+ }
166
173
 
167
- const firstCommentIndex = code.indexOf('// ')
168
- const { shouldDisable, shouldPrintDebug } = Static!.getPragmaOptions({
169
- source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : '',
170
- path: validId,
171
- })
174
+ if (
175
+ tamaguiOptions?.disableServerOptimization &&
176
+ isVite6AndNotClient(this.environment)
177
+ ) {
178
+ return
179
+ }
172
180
 
173
- if (shouldPrintDebug) {
174
- console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`)
175
- console.info(`\n\nOriginal source:\n${code}\n\n`)
176
- }
181
+ const [validId] = id.split('?')
182
+ if (!validId.endsWith('.tsx')) {
183
+ return
184
+ }
177
185
 
178
- if (shouldDisable) {
179
- return
180
- }
186
+ const firstCommentIndex = code.indexOf('// ')
187
+ const { shouldDisable, shouldPrintDebug } = Static!.getPragmaOptions({
188
+ source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : '',
189
+ path: validId,
190
+ })
181
191
 
182
- const extracted = await Static!.extractToClassNames({
183
- extractor: extractor!,
184
- source: code,
185
- sourcePath: validId,
186
- options: tamaguiOptions!,
187
- shouldPrintDebug,
188
- })
192
+ if (shouldPrintDebug) {
193
+ console.trace(`Debugging file: ${id} in environment: ${this.environment?.name}`)
194
+ console.info(`\n\nOriginal source:\n${code}\n\n`)
195
+ }
189
196
 
190
- if (!extracted) {
191
- return
192
- }
197
+ if (shouldDisable) {
198
+ return
199
+ }
193
200
 
194
- const rootRelativeId = `${validId}${virtualExt}`
195
- const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)
201
+ const cacheEnv =
202
+ this.environment.name === 'client' || this.environment.name === 'ssr'
203
+ ? // same cache key for ssr and web since they are the same
204
+ 'web'
205
+ : this.environment.name
206
+ const cacheKey = getHash(`${cacheEnv}${code}${id}`)
207
+ const cached = memoryCache[cacheKey]
208
+ if (cached) {
209
+ return cached
210
+ }
211
+
212
+ const extracted = await Static!.extractToClassNames({
213
+ extractor: extractor!,
214
+ source: code,
215
+ sourcePath: validId,
216
+ options: tamaguiOptions!,
217
+ shouldPrintDebug,
218
+ })
219
+
220
+ if (!extracted) {
221
+ return
222
+ }
223
+
224
+ const rootRelativeId = `${validId}${virtualExt}`
225
+ const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)
226
+
227
+ let source = extracted.js
196
228
 
197
- let source = extracted.js
229
+ if (extracted.styles) {
230
+ this.addWatchFile(rootRelativeId)
198
231
 
199
- if (extracted.styles) {
200
- this.addWatchFile(rootRelativeId)
232
+ if (server && cssMap.has(absoluteId)) {
233
+ invalidateModule(rootRelativeId)
234
+ }
201
235
 
202
- if (server && cssMap.has(absoluteId)) {
203
- invalidateModule(rootRelativeId)
236
+ source = `${source}\nimport "${rootRelativeId}";`
237
+ cssMap.set(absoluteId, extracted.styles)
204
238
  }
205
239
 
206
- source = `${source}\nimport "${rootRelativeId}";`
207
- cssMap.set(absoluteId, extracted.styles)
208
- }
240
+ const codeOut = source.toString()
241
+ const out = {
242
+ code: codeOut,
243
+ map: extracted.map,
244
+ }
209
245
 
210
- return {
211
- code: source.toString(),
212
- map: extracted.map,
213
- }
246
+ cacheSize += codeOut.length
247
+ // ~50Mb cache for recently compiler files
248
+ if (cacheSize > 26214400) {
249
+ clearCompilerCache()
250
+ }
251
+ memoryCache[cacheKey] = out
252
+
253
+ return out
254
+ },
214
255
  },
215
256
  }
216
257
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAA;AAUjE,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAyMhF"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAA;AAUjE,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CA6MhF"}