tamagui-loader 1.0.1-beta.68 → 1.0.1-beta.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/css.js CHANGED
@@ -39,7 +39,7 @@ __export(css_exports, {
39
39
  module.exports = __toCommonJS(css_exports);
40
40
  const extractedInfoByFile = /* @__PURE__ */ new Map();
41
41
  const stylePathToFilePath = /* @__PURE__ */ new Map();
42
- function loader(source) {
42
+ function loader() {
43
43
  this.async();
44
44
  const options = __spreadValues({}, this.getOptions());
45
45
  const sourcePath = `${this.resourcePath}`;
@@ -54,7 +54,7 @@ function loader(source) {
54
54
  } else if (options.cssData) {
55
55
  out = Buffer.from(options.cssData, "base64").toString("utf-8");
56
56
  }
57
- if (options.cssData || options.cssPath) {
57
+ if (out) {
58
58
  return this.callback(null, out || "");
59
59
  }
60
60
  this.callback({ message: `No CSS found`, name: "missing_css" });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/css.ts"],
4
- "sourcesContent": ["import { ExtractedResponse, TamaguiOptions } from '@tamagui/static'\nimport { LoaderContext } from 'webpack'\n\nexport const extractedInfoByFile = new Map<string, ExtractedResponse>()\nexport const stylePathToFilePath = new Map<string, string>()\n\nexport default function loader(this: LoaderContext<any>, source: string) {\n this.async()\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n let out = ''\n if (options.cssPath) {\n // get in memory info\n const pathKey = stylePathToFilePath.get(sourcePath) ?? sourcePath\n const info = extractedInfoByFile.get(pathKey)\n // clear memory\n stylePathToFilePath.delete(sourcePath)\n extractedInfoByFile.delete(pathKey)\n const out = info?.styles\n return this.callback(null, out || '')\n } else if (options.cssData) {\n // get output CSS\n out = Buffer.from(options.cssData, 'base64').toString('utf-8')\n }\n if (options.cssData || options.cssPath) {\n // use original JS sourcemap\n return this.callback(null, out || '')\n }\n this.callback({ message: `No CSS found`, name: 'missing_css' })\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,sBAAsB,oBAAI,IAA+B;AAC/D,MAAM,sBAAsB,oBAAI,IAAoB;AAE5C,gBAA0C,QAAgB;AACvE,OAAK,MAAM;AACX,QAAM,UAA0B,mBAAK,KAAK,WAAW;AACrD,QAAM,aAAa,GAAG,KAAK;AAC3B,MAAI,MAAM;AACV,MAAI,QAAQ,SAAS;AAEnB,UAAM,UAAU,oBAAoB,IAAI,UAAU,KAAK;AACvD,UAAM,OAAO,oBAAoB,IAAI,OAAO;AAE5C,wBAAoB,OAAO,UAAU;AACrC,wBAAoB,OAAO,OAAO;AAClC,UAAM,OAAM,6BAAM;AAClB,WAAO,KAAK,SAAS,MAAM,QAAO,EAAE;AAAA,EACtC,WAAW,QAAQ,SAAS;AAE1B,UAAM,OAAO,KAAK,QAAQ,SAAS,QAAQ,EAAE,SAAS,OAAO;AAAA,EAC/D;AACA,MAAI,QAAQ,WAAW,QAAQ,SAAS;AAEtC,WAAO,KAAK,SAAS,MAAM,OAAO,EAAE;AAAA,EACtC;AACA,OAAK,SAAS,EAAE,SAAS,gBAAgB,MAAM,cAAc,CAAC;AAChE;AAvBwB;",
4
+ "sourcesContent": ["import { ExtractedResponse, TamaguiOptions } from '@tamagui/static'\nimport { LoaderContext } from 'webpack'\n\nexport const extractedInfoByFile = new Map<string, ExtractedResponse>()\nexport const stylePathToFilePath = new Map<string, string>()\n\nexport default function loader(this: LoaderContext<any>) {\n this.async()\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n let out = ''\n if (options.cssPath) {\n // get in memory info\n const pathKey = stylePathToFilePath.get(sourcePath) ?? sourcePath\n const info = extractedInfoByFile.get(pathKey)\n // clear memory\n stylePathToFilePath.delete(sourcePath)\n extractedInfoByFile.delete(pathKey)\n const out = info?.styles\n return this.callback(null, out || '')\n } else if (options.cssData) {\n // get output CSS\n out = Buffer.from(options.cssData, 'base64').toString('utf-8')\n }\n if (out) {\n // use original JS sourcemap\n return this.callback(null, out || '')\n }\n this.callback({ message: `No CSS found`, name: 'missing_css' })\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,sBAAsB,oBAAI,IAA+B;AAC/D,MAAM,sBAAsB,oBAAI,IAAoB;AAE5C,kBAA0C;AACvD,OAAK,MAAM;AACX,QAAM,UAA0B,mBAAK,KAAK,WAAW;AACrD,QAAM,aAAa,GAAG,KAAK;AAC3B,MAAI,MAAM;AACV,MAAI,QAAQ,SAAS;AAEnB,UAAM,UAAU,oBAAoB,IAAI,UAAU,KAAK;AACvD,UAAM,OAAO,oBAAoB,IAAI,OAAO;AAE5C,wBAAoB,OAAO,UAAU;AACrC,wBAAoB,OAAO,OAAO;AAClC,UAAM,OAAM,6BAAM;AAClB,WAAO,KAAK,SAAS,MAAM,QAAO,EAAE;AAAA,EACtC,WAAW,QAAQ,SAAS;AAE1B,UAAM,OAAO,KAAK,QAAQ,SAAS,QAAQ,EAAE,SAAS,OAAO;AAAA,EAC/D;AACA,MAAI,KAAK;AAEP,WAAO,KAAK,SAAS,MAAM,OAAO,EAAE;AAAA,EACtC;AACA,OAAK,SAAS,EAAE,SAAS,gBAAgB,MAAM,cAAc,CAAC;AAChE;AAvBwB;",
6
6
  "names": []
7
7
  }
@@ -40,14 +40,16 @@ __export(loader_exports, {
40
40
  module.exports = __toCommonJS(loader_exports);
41
41
  var import_static = require("@tamagui/static");
42
42
  var import_css = require("./css");
43
+ const CSS_LOADER_PATH = require.resolve("./css");
43
44
  Error.stackTraceLimit = Infinity;
44
45
  const extractor = (0, import_static.createExtractor)();
45
46
  let index = 0;
46
47
  let hasPatched = false;
47
48
  process.env.TAMAGUI_TARGET = "web";
48
- function loader(source) {
49
- this.cacheable();
49
+ const loader = /* @__PURE__ */ __name(function loader2(sourceIn) {
50
+ this.cacheable(true);
50
51
  this.async();
52
+ const source = sourceIn.toString();
51
53
  if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
52
54
  (0, import_static.patchReactNativeWeb)();
53
55
  hasPatched = true;
@@ -66,19 +68,23 @@ function loader(source) {
66
68
  }
67
69
  const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
68
70
  const extracted = (0, import_static.extractToClassNames)({
69
- loader: this,
70
71
  extractor,
71
- cssLoaderPath: require.resolve("./css"),
72
72
  source,
73
- threaded,
74
73
  sourcePath,
75
- cssPath,
76
74
  options,
77
75
  shouldPrintDebug
78
76
  });
79
77
  if (!extracted) {
80
78
  return this.callback(null, source);
81
79
  }
80
+ if (extracted.styles) {
81
+ const cssQuery = threaded ? `cssData=${Buffer.from(extracted.styles).toString("base64")}` : `cssPath=${cssPath}`;
82
+ const remReq = this.remainingRequest;
83
+ const importPath = `${cssPath}!=!${CSS_LOADER_PATH}?${cssQuery}!${remReq}`;
84
+ extracted.js = `${extracted.js}
85
+
86
+ require(${JSON.stringify(importPath)})`;
87
+ }
82
88
  import_css.extractedInfoByFile.set(sourcePath, extracted);
83
89
  if (!threaded) {
84
90
  if (extracted.stylesPath) {
@@ -90,8 +96,7 @@ function loader(source) {
90
96
  console.error("ERROR", err);
91
97
  return this.callback(null, source);
92
98
  }
93
- }
94
- __name(loader, "loader");
99
+ }, "loader");
95
100
  // Annotate the CommonJS export names for ESM import in node:
96
101
  0 && (module.exports = {
97
102
  loader
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/loader.ts"],
4
- "sourcesContent": ["import {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { LoaderContext } from 'webpack'\n\nimport { extractedInfoByFile, stylePathToFilePath } from './css'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nlet index = 0\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: LoaderContext<any>, source: string) {\n this.cacheable()\n this.async()\n\n if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {\n patchReactNativeWeb()\n hasPatched = true\n }\n\n try {\n const threaded = this.emitFile === undefined\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n\n let shouldPrintDebug: boolean | 'verbose' =\n (!!process.env.DEBUG &&\n (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true)) ||\n // supports esbuild style //! comments\n (startsWithComment && (source.startsWith('// debug') || source.startsWith('//! debug')))\n\n if (shouldPrintDebug && source.startsWith('// debug-verbose')) {\n shouldPrintDebug = 'verbose'\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return this.callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n\n const extracted = extractToClassNames({\n loader: this,\n extractor,\n cssLoaderPath: require.resolve('./css'),\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return this.callback(null, source)\n }\n\n extractedInfoByFile.set(sourcePath, extracted)\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n }\n\n this.callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return this.callback(null, source)\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKO;AAGP,iBAAyD;AAEzD,MAAM,kBAAkB;AACxB,MAAM,YAAY,mCAAgB;AAElC,IAAI,QAAQ;AACZ,IAAI,aAAa;AAEjB,QAAQ,IAAI,iBAAiB;AAEtB,gBAA0C,QAAgB;AAC/D,OAAK,UAAU;AACf,OAAK,MAAM;AAEX,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD,2CAAoB;AACpB,iBAAa;AAAA,EACf;AAEA,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,mBAAK,KAAK,WAAW;AACrD,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAE7D,QAAI,mBACD,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,UAAU,IAAI,SAEzE,qBAAsB,QAAO,WAAW,UAAU,KAAK,OAAO,WAAW,WAAW;AAEvF,QAAI,oBAAoB,OAAO,WAAW,kBAAkB,GAAG;AAC7D,yBAAmB;AAAA,IACrB;AAGA,QACE,qBACC,QAAO,WAAW,mBAAmB,KAAK,OAAO,WAAW,oBAAoB,IACjF;AACA,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAEA,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AAEzE,UAAM,YAAY,uCAAoB;AAAA,MACpC,QAAQ;AAAA,MACR;AAAA,MACA,eAA+B;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI,CAAC,WAAW;AACd,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAEA,mCAAoB,IAAI,YAAY,SAAS;AAE7C,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,uCAAoB,IAAI,UAAU,YAAY,UAAU;AAAA,MAC1D;AAAA,IACF;AAEA,SAAK,SAAS,MAAM,UAAU,IAAI,UAAU,GAAG;AAAA,EACjD,SAAS,KAAP;AACA,YAAQ,MAAM,SAAS,GAAG;AAC1B,WAAO,KAAK,SAAS,MAAM,MAAM;AAAA,EACnC;AACF;AAhEgB;",
4
+ "sourcesContent": ["import {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport type { LoaderContext, RawLoaderDefinitionFunction } from 'webpack'\n\nimport { extractedInfoByFile, stylePathToFilePath } from './css'\n\n// pass loader as path\nconst CSS_LOADER_PATH = require.resolve('./css')\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nlet index = 0\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport const loader: RawLoaderDefinitionFunction<TamaguiOptions> = function loader(this, sourceIn) {\n this.cacheable(true)\n this.async()\n const source = sourceIn.toString()\n\n if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {\n patchReactNativeWeb()\n hasPatched = true\n }\n\n try {\n const threaded = this.emitFile === undefined\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n\n let shouldPrintDebug: boolean | 'verbose' =\n (!!process.env.DEBUG &&\n (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true)) ||\n // supports esbuild style //! comments\n (startsWithComment && (source.startsWith('// debug') || source.startsWith('//! debug')))\n\n if (shouldPrintDebug && source.startsWith('// debug-verbose')) {\n shouldPrintDebug = 'verbose'\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return this.callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n\n // cssLoaderPath: CSS_LOADER_PATH,\n // threaded,\n // cssPath,\n\n const extracted = extractToClassNames({\n extractor,\n source,\n sourcePath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return this.callback(null, source)\n }\n\n // add import to css\n if (extracted.styles) {\n const cssQuery = threaded\n ? `cssData=${Buffer.from(extracted.styles).toString('base64')}`\n : `cssPath=${cssPath}`\n const remReq = this.remainingRequest\n const importPath = `${cssPath}!=!${CSS_LOADER_PATH}?${cssQuery}!${remReq}`\n extracted.js = `${extracted.js}\\n\\nrequire(${JSON.stringify(importPath)})`\n }\n\n extractedInfoByFile.set(sourcePath, extracted)\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n }\n\n this.callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return this.callback(null, source)\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKO;AAGP,iBAAyD;AAGzD,MAAM,kBAAkC;AAExC,MAAM,kBAAkB;AACxB,MAAM,YAAY,mCAAgB;AAElC,IAAI,QAAQ;AACZ,IAAI,aAAa;AAEjB,QAAQ,IAAI,iBAAiB;AAEtB,MAAM,SAAsD,wCAAsB,UAAU;AACjG,OAAK,UAAU,IAAI;AACnB,OAAK,MAAM;AACX,QAAM,SAAS,SAAS,SAAS;AAEjC,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD,2CAAoB;AACpB,iBAAa;AAAA,EACf;AAEA,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,mBAAK,KAAK,WAAW;AACrD,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAE7D,QAAI,mBACD,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,UAAU,IAAI,SAEzE,qBAAsB,QAAO,WAAW,UAAU,KAAK,OAAO,WAAW,WAAW;AAEvF,QAAI,oBAAoB,OAAO,WAAW,kBAAkB,GAAG;AAC7D,yBAAmB;AAAA,IACrB;AAGA,QACE,qBACC,QAAO,WAAW,mBAAmB,KAAK,OAAO,WAAW,oBAAoB,IACjF;AACA,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAEA,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AAMzE,UAAM,YAAY,uCAAoB;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI,CAAC,WAAW;AACd,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAGA,QAAI,UAAU,QAAQ;AACpB,YAAM,WAAW,WACb,WAAW,OAAO,KAAK,UAAU,MAAM,EAAE,SAAS,QAAQ,MAC1D,WAAW;AACf,YAAM,SAAS,KAAK;AACpB,YAAM,aAAa,GAAG,aAAa,mBAAmB,YAAY;AAClE,gBAAU,KAAK,GAAG,UAAU;AAAA;AAAA,UAAiB,KAAK,UAAU,UAAU;AAAA,IACxE;AAEA,mCAAoB,IAAI,YAAY,SAAS;AAE7C,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,uCAAoB,IAAI,UAAU,YAAY,UAAU;AAAA,MAC1D;AAAA,IACF;AAEA,SAAK,SAAS,MAAM,UAAU,IAAI,UAAU,GAAG;AAAA,EACjD,SAAS,KAAP;AACA,YAAQ,MAAM,SAAS,GAAG;AAC1B,WAAO,KAAK,SAAS,MAAM,MAAM;AAAA,EACnC;AACF,GA3EmE;",
6
6
  "names": []
7
7
  }
package/dist/esm/css.js CHANGED
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  const extractedInfoByFile = /* @__PURE__ */ new Map();
4
4
  const stylePathToFilePath = /* @__PURE__ */ new Map();
5
- function loader(source) {
5
+ function loader() {
6
6
  var _a;
7
7
  this.async();
8
8
  const options = { ...this.getOptions() };
@@ -18,7 +18,7 @@ function loader(source) {
18
18
  } else if (options.cssData) {
19
19
  out = Buffer.from(options.cssData, "base64").toString("utf-8");
20
20
  }
21
- if (options.cssData || options.cssPath) {
21
+ if (out) {
22
22
  return this.callback(null, out || "");
23
23
  }
24
24
  this.callback({ message: `No CSS found`, name: "missing_css" });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/css.ts"],
4
- "sourcesContent": ["import { ExtractedResponse, TamaguiOptions } from '@tamagui/static'\nimport { LoaderContext } from 'webpack'\n\nexport const extractedInfoByFile = new Map<string, ExtractedResponse>()\nexport const stylePathToFilePath = new Map<string, string>()\n\nexport default function loader(this: LoaderContext<any>, source: string) {\n this.async()\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n let out = ''\n if (options.cssPath) {\n // get in memory info\n const pathKey = stylePathToFilePath.get(sourcePath) ?? sourcePath\n const info = extractedInfoByFile.get(pathKey)\n // clear memory\n stylePathToFilePath.delete(sourcePath)\n extractedInfoByFile.delete(pathKey)\n const out = info?.styles\n return this.callback(null, out || '')\n } else if (options.cssData) {\n // get output CSS\n out = Buffer.from(options.cssData, 'base64').toString('utf-8')\n }\n if (options.cssData || options.cssPath) {\n // use original JS sourcemap\n return this.callback(null, out || '')\n }\n this.callback({ message: `No CSS found`, name: 'missing_css' })\n}\n"],
5
- "mappings": ";;AAGO,MAAM,sBAAsB,oBAAI,IAA+B;AAC/D,MAAM,sBAAsB,oBAAI,IAAoB;AAE5C,gBAA0C,QAAgB;AANzE;AAOE,OAAK,MAAM;AACX,QAAM,UAA0B,EAAE,GAAG,KAAK,WAAW,EAAE;AACvD,QAAM,aAAa,GAAG,KAAK;AAC3B,MAAI,MAAM;AACV,MAAI,QAAQ,SAAS;AAEnB,UAAM,UAAU,0BAAoB,IAAI,UAAU,MAAlC,YAAuC;AACvD,UAAM,OAAO,oBAAoB,IAAI,OAAO;AAE5C,wBAAoB,OAAO,UAAU;AACrC,wBAAoB,OAAO,OAAO;AAClC,UAAM,OAAM,6BAAM;AAClB,WAAO,KAAK,SAAS,MAAM,QAAO,EAAE;AAAA,EACtC,WAAW,QAAQ,SAAS;AAE1B,UAAM,OAAO,KAAK,QAAQ,SAAS,QAAQ,EAAE,SAAS,OAAO;AAAA,EAC/D;AACA,MAAI,QAAQ,WAAW,QAAQ,SAAS;AAEtC,WAAO,KAAK,SAAS,MAAM,OAAO,EAAE;AAAA,EACtC;AACA,OAAK,SAAS,EAAE,SAAS,gBAAgB,MAAM,cAAc,CAAC;AAChE;AAvBwB;",
4
+ "sourcesContent": ["import { ExtractedResponse, TamaguiOptions } from '@tamagui/static'\nimport { LoaderContext } from 'webpack'\n\nexport const extractedInfoByFile = new Map<string, ExtractedResponse>()\nexport const stylePathToFilePath = new Map<string, string>()\n\nexport default function loader(this: LoaderContext<any>) {\n this.async()\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n let out = ''\n if (options.cssPath) {\n // get in memory info\n const pathKey = stylePathToFilePath.get(sourcePath) ?? sourcePath\n const info = extractedInfoByFile.get(pathKey)\n // clear memory\n stylePathToFilePath.delete(sourcePath)\n extractedInfoByFile.delete(pathKey)\n const out = info?.styles\n return this.callback(null, out || '')\n } else if (options.cssData) {\n // get output CSS\n out = Buffer.from(options.cssData, 'base64').toString('utf-8')\n }\n if (out) {\n // use original JS sourcemap\n return this.callback(null, out || '')\n }\n this.callback({ message: `No CSS found`, name: 'missing_css' })\n}\n"],
5
+ "mappings": ";;AAGO,MAAM,sBAAsB,oBAAI,IAA+B;AAC/D,MAAM,sBAAsB,oBAAI,IAAoB;AAE5C,kBAA0C;AANzD;AAOE,OAAK,MAAM;AACX,QAAM,UAA0B,EAAE,GAAG,KAAK,WAAW,EAAE;AACvD,QAAM,aAAa,GAAG,KAAK;AAC3B,MAAI,MAAM;AACV,MAAI,QAAQ,SAAS;AAEnB,UAAM,UAAU,0BAAoB,IAAI,UAAU,MAAlC,YAAuC;AACvD,UAAM,OAAO,oBAAoB,IAAI,OAAO;AAE5C,wBAAoB,OAAO,UAAU;AACrC,wBAAoB,OAAO,OAAO;AAClC,UAAM,OAAM,6BAAM;AAClB,WAAO,KAAK,SAAS,MAAM,QAAO,EAAE;AAAA,EACtC,WAAW,QAAQ,SAAS;AAE1B,UAAM,OAAO,KAAK,QAAQ,SAAS,QAAQ,EAAE,SAAS,OAAO;AAAA,EAC/D;AACA,MAAI,KAAK;AAEP,WAAO,KAAK,SAAS,MAAM,OAAO,EAAE;AAAA,EACtC;AACA,OAAK,SAAS,EAAE,SAAS,gBAAgB,MAAM,cAAc,CAAC;AAChE;AAvBwB;",
6
6
  "names": []
7
7
  }
@@ -6,14 +6,16 @@ import {
6
6
  patchReactNativeWeb
7
7
  } from "@tamagui/static";
8
8
  import { extractedInfoByFile, stylePathToFilePath } from "./css";
9
+ const CSS_LOADER_PATH = require.resolve("./css");
9
10
  Error.stackTraceLimit = Infinity;
10
11
  const extractor = createExtractor();
11
12
  let index = 0;
12
13
  let hasPatched = false;
13
14
  process.env.TAMAGUI_TARGET = "web";
14
- function loader(source) {
15
- this.cacheable();
15
+ const loader = /* @__PURE__ */ __name(function loader2(sourceIn) {
16
+ this.cacheable(true);
16
17
  this.async();
18
+ const source = sourceIn.toString();
17
19
  if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
18
20
  patchReactNativeWeb();
19
21
  hasPatched = true;
@@ -32,19 +34,23 @@ function loader(source) {
32
34
  }
33
35
  const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
34
36
  const extracted = extractToClassNames({
35
- loader: this,
36
37
  extractor,
37
- cssLoaderPath: require.resolve("./css"),
38
38
  source,
39
- threaded,
40
39
  sourcePath,
41
- cssPath,
42
40
  options,
43
41
  shouldPrintDebug
44
42
  });
45
43
  if (!extracted) {
46
44
  return this.callback(null, source);
47
45
  }
46
+ if (extracted.styles) {
47
+ const cssQuery = threaded ? `cssData=${Buffer.from(extracted.styles).toString("base64")}` : `cssPath=${cssPath}`;
48
+ const remReq = this.remainingRequest;
49
+ const importPath = `${cssPath}!=!${CSS_LOADER_PATH}?${cssQuery}!${remReq}`;
50
+ extracted.js = `${extracted.js}
51
+
52
+ require(${JSON.stringify(importPath)})`;
53
+ }
48
54
  extractedInfoByFile.set(sourcePath, extracted);
49
55
  if (!threaded) {
50
56
  if (extracted.stylesPath) {
@@ -56,8 +62,7 @@ function loader(source) {
56
62
  console.error("ERROR", err);
57
63
  return this.callback(null, source);
58
64
  }
59
- }
60
- __name(loader, "loader");
65
+ }, "loader");
61
66
  export {
62
67
  loader
63
68
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/loader.ts"],
4
- "sourcesContent": ["import {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { LoaderContext } from 'webpack'\n\nimport { extractedInfoByFile, stylePathToFilePath } from './css'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nlet index = 0\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: LoaderContext<any>, source: string) {\n this.cacheable()\n this.async()\n\n if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {\n patchReactNativeWeb()\n hasPatched = true\n }\n\n try {\n const threaded = this.emitFile === undefined\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n\n let shouldPrintDebug: boolean | 'verbose' =\n (!!process.env.DEBUG &&\n (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true)) ||\n // supports esbuild style //! comments\n (startsWithComment && (source.startsWith('// debug') || source.startsWith('//! debug')))\n\n if (shouldPrintDebug && source.startsWith('// debug-verbose')) {\n shouldPrintDebug = 'verbose'\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return this.callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n\n const extracted = extractToClassNames({\n loader: this,\n extractor,\n cssLoaderPath: require.resolve('./css'),\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return this.callback(null, source)\n }\n\n extractedInfoByFile.set(sourcePath, extracted)\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n }\n\n this.callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return this.callback(null, source)\n }\n}\n"],
5
- "mappings": ";;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAEA,MAAM,kBAAkB;AACxB,MAAM,YAAY,gBAAgB;AAElC,IAAI,QAAQ;AACZ,IAAI,aAAa;AAEjB,QAAQ,IAAI,iBAAiB;AAEtB,gBAA0C,QAAgB;AAC/D,OAAK,UAAU;AACf,OAAK,MAAM;AAEX,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD,wBAAoB;AACpB,iBAAa;AAAA,EACf;AAEA,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,EAAE,GAAG,KAAK,WAAW,EAAE;AACvD,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAE7D,QAAI,mBACD,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,UAAU,IAAI,SAEzE,qBAAsB,QAAO,WAAW,UAAU,KAAK,OAAO,WAAW,WAAW;AAEvF,QAAI,oBAAoB,OAAO,WAAW,kBAAkB,GAAG;AAC7D,yBAAmB;AAAA,IACrB;AAGA,QACE,qBACC,QAAO,WAAW,mBAAmB,KAAK,OAAO,WAAW,oBAAoB,IACjF;AACA,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAEA,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AAEzE,UAAM,YAAY,oBAAoB;AAAA,MACpC,QAAQ;AAAA,MACR;AAAA,MACA,eAA+B;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI,CAAC,WAAW;AACd,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAEA,wBAAoB,IAAI,YAAY,SAAS;AAE7C,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY,UAAU;AAAA,MAC1D;AAAA,IACF;AAEA,SAAK,SAAS,MAAM,UAAU,IAAI,UAAU,GAAG;AAAA,EACjD,SAAS,KAAP;AACA,YAAQ,MAAM,SAAS,GAAG;AAC1B,WAAO,KAAK,SAAS,MAAM,MAAM;AAAA,EACnC;AACF;AAhEgB;",
4
+ "sourcesContent": ["import {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport type { LoaderContext, RawLoaderDefinitionFunction } from 'webpack'\n\nimport { extractedInfoByFile, stylePathToFilePath } from './css'\n\n// pass loader as path\nconst CSS_LOADER_PATH = require.resolve('./css')\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nlet index = 0\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport const loader: RawLoaderDefinitionFunction<TamaguiOptions> = function loader(this, sourceIn) {\n this.cacheable(true)\n this.async()\n const source = sourceIn.toString()\n\n if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {\n patchReactNativeWeb()\n hasPatched = true\n }\n\n try {\n const threaded = this.emitFile === undefined\n const options: TamaguiOptions = { ...this.getOptions() }\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n\n let shouldPrintDebug: boolean | 'verbose' =\n (!!process.env.DEBUG &&\n (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true)) ||\n // supports esbuild style //! comments\n (startsWithComment && (source.startsWith('// debug') || source.startsWith('//! debug')))\n\n if (shouldPrintDebug && source.startsWith('// debug-verbose')) {\n shouldPrintDebug = 'verbose'\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return this.callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n\n // cssLoaderPath: CSS_LOADER_PATH,\n // threaded,\n // cssPath,\n\n const extracted = extractToClassNames({\n extractor,\n source,\n sourcePath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return this.callback(null, source)\n }\n\n // add import to css\n if (extracted.styles) {\n const cssQuery = threaded\n ? `cssData=${Buffer.from(extracted.styles).toString('base64')}`\n : `cssPath=${cssPath}`\n const remReq = this.remainingRequest\n const importPath = `${cssPath}!=!${CSS_LOADER_PATH}?${cssQuery}!${remReq}`\n extracted.js = `${extracted.js}\\n\\nrequire(${JSON.stringify(importPath)})`\n }\n\n extractedInfoByFile.set(sourcePath, extracted)\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n }\n\n this.callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return this.callback(null, source)\n }\n}\n"],
5
+ "mappings": ";;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAGA,MAAM,kBAAkC;AAExC,MAAM,kBAAkB;AACxB,MAAM,YAAY,gBAAgB;AAElC,IAAI,QAAQ;AACZ,IAAI,aAAa;AAEjB,QAAQ,IAAI,iBAAiB;AAEtB,MAAM,SAAsD,wCAAsB,UAAU;AACjG,OAAK,UAAU,IAAI;AACnB,OAAK,MAAM;AACX,QAAM,SAAS,SAAS,SAAS;AAEjC,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD,wBAAoB;AACpB,iBAAa;AAAA,EACf;AAEA,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,EAAE,GAAG,KAAK,WAAW,EAAE;AACvD,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAE7D,QAAI,mBACD,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,UAAU,IAAI,SAEzE,qBAAsB,QAAO,WAAW,UAAU,KAAK,OAAO,WAAW,WAAW;AAEvF,QAAI,oBAAoB,OAAO,WAAW,kBAAkB,GAAG;AAC7D,yBAAmB;AAAA,IACrB;AAGA,QACE,qBACC,QAAO,WAAW,mBAAmB,KAAK,OAAO,WAAW,oBAAoB,IACjF;AACA,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAEA,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AAMzE,UAAM,YAAY,oBAAoB;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI,CAAC,WAAW;AACd,aAAO,KAAK,SAAS,MAAM,MAAM;AAAA,IACnC;AAGA,QAAI,UAAU,QAAQ;AACpB,YAAM,WAAW,WACb,WAAW,OAAO,KAAK,UAAU,MAAM,EAAE,SAAS,QAAQ,MAC1D,WAAW;AACf,YAAM,SAAS,KAAK;AACpB,YAAM,aAAa,GAAG,aAAa,mBAAmB,YAAY;AAClE,gBAAU,KAAK,GAAG,UAAU;AAAA;AAAA,UAAiB,KAAK,UAAU,UAAU;AAAA,IACxE;AAEA,wBAAoB,IAAI,YAAY,SAAS;AAE7C,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY,UAAU;AAAA,MAC1D;AAAA,IACF;AAEA,SAAK,SAAS,MAAM,UAAU,IAAI,UAAU,GAAG;AAAA,EACjD,SAAS,KAAP;AACA,YAAQ,MAAM,SAAS,GAAG;AAC1B,WAAO,KAAK,SAAS,MAAM,MAAM;AAAA,EACnC;AACF,GA3EmE;",
6
6
  "names": []
7
7
  }
package/dist/jsx/css.js CHANGED
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  const extractedInfoByFile = /* @__PURE__ */ new Map();
4
4
  const stylePathToFilePath = /* @__PURE__ */ new Map();
5
- function loader(source) {
5
+ function loader() {
6
6
  var _a;
7
7
  this.async();
8
8
  const options = { ...this.getOptions() };
@@ -18,7 +18,7 @@ function loader(source) {
18
18
  } else if (options.cssData) {
19
19
  out = Buffer.from(options.cssData, "base64").toString("utf-8");
20
20
  }
21
- if (options.cssData || options.cssPath) {
21
+ if (out) {
22
22
  return this.callback(null, out || "");
23
23
  }
24
24
  this.callback({ message: `No CSS found`, name: "missing_css" });
@@ -6,14 +6,16 @@ import {
6
6
  patchReactNativeWeb
7
7
  } from "@tamagui/static";
8
8
  import { extractedInfoByFile, stylePathToFilePath } from "./css";
9
+ const CSS_LOADER_PATH = require.resolve("./css");
9
10
  Error.stackTraceLimit = Infinity;
10
11
  const extractor = createExtractor();
11
12
  let index = 0;
12
13
  let hasPatched = false;
13
14
  process.env.TAMAGUI_TARGET = "web";
14
- function loader(source) {
15
- this.cacheable();
15
+ const loader = /* @__PURE__ */ __name(function loader2(sourceIn) {
16
+ this.cacheable(true);
16
17
  this.async();
18
+ const source = sourceIn.toString();
17
19
  if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
18
20
  patchReactNativeWeb();
19
21
  hasPatched = true;
@@ -32,19 +34,23 @@ function loader(source) {
32
34
  }
33
35
  const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
34
36
  const extracted = extractToClassNames({
35
- loader: this,
36
37
  extractor,
37
- cssLoaderPath: require.resolve("./css"),
38
38
  source,
39
- threaded,
40
39
  sourcePath,
41
- cssPath,
42
40
  options,
43
41
  shouldPrintDebug
44
42
  });
45
43
  if (!extracted) {
46
44
  return this.callback(null, source);
47
45
  }
46
+ if (extracted.styles) {
47
+ const cssQuery = threaded ? `cssData=${Buffer.from(extracted.styles).toString("base64")}` : `cssPath=${cssPath}`;
48
+ const remReq = this.remainingRequest;
49
+ const importPath = `${cssPath}!=!${CSS_LOADER_PATH}?${cssQuery}!${remReq}`;
50
+ extracted.js = `${extracted.js}
51
+
52
+ require(${JSON.stringify(importPath)})`;
53
+ }
48
54
  extractedInfoByFile.set(sourcePath, extracted);
49
55
  if (!threaded) {
50
56
  if (extracted.stylesPath) {
@@ -56,8 +62,7 @@ function loader(source) {
56
62
  console.error("ERROR", err);
57
63
  return this.callback(null, source);
58
64
  }
59
- }
60
- __name(loader, "loader");
65
+ }, "loader");
61
66
  export {
62
67
  loader
63
68
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tamagui-loader",
3
- "version": "1.0.1-beta.68",
3
+ "version": "1.0.1-beta.71",
4
4
  "types": "./types/index.d.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -17,12 +17,12 @@
17
17
  "clean:build": "tamagui-build clean:build"
18
18
  },
19
19
  "dependencies": {
20
- "@tamagui/static": "^1.0.1-beta.68",
20
+ "@tamagui/static": "^1.0.1-beta.71",
21
21
  "fs-extra": "^9.1.0",
22
22
  "lodash": "^4.17.21"
23
23
  },
24
24
  "devDependencies": {
25
- "@tamagui/build": "^1.0.1-beta.68"
25
+ "@tamagui/build": "^1.0.1-beta.71"
26
26
  },
27
27
  "publishConfig": {
28
28
  "access": "public"
package/src/css.ts CHANGED
@@ -4,7 +4,7 @@ import { LoaderContext } from 'webpack'
4
4
  export const extractedInfoByFile = new Map<string, ExtractedResponse>()
5
5
  export const stylePathToFilePath = new Map<string, string>()
6
6
 
7
- export default function loader(this: LoaderContext<any>, source: string) {
7
+ export default function loader(this: LoaderContext<any>) {
8
8
  this.async()
9
9
  const options: TamaguiOptions = { ...this.getOptions() }
10
10
  const sourcePath = `${this.resourcePath}`
@@ -22,7 +22,7 @@ export default function loader(this: LoaderContext<any>, source: string) {
22
22
  // get output CSS
23
23
  out = Buffer.from(options.cssData, 'base64').toString('utf-8')
24
24
  }
25
- if (options.cssData || options.cssPath) {
25
+ if (out) {
26
26
  // use original JS sourcemap
27
27
  return this.callback(null, out || '')
28
28
  }
package/src/loader.ts CHANGED
@@ -4,10 +4,13 @@ import {
4
4
  extractToClassNames,
5
5
  patchReactNativeWeb,
6
6
  } from '@tamagui/static'
7
- import { LoaderContext } from 'webpack'
7
+ import type { LoaderContext, RawLoaderDefinitionFunction } from 'webpack'
8
8
 
9
9
  import { extractedInfoByFile, stylePathToFilePath } from './css'
10
10
 
11
+ // pass loader as path
12
+ const CSS_LOADER_PATH = require.resolve('./css')
13
+
11
14
  Error.stackTraceLimit = Infinity
12
15
  const extractor = createExtractor()
13
16
 
@@ -16,9 +19,10 @@ let hasPatched = false
16
19
 
17
20
  process.env.TAMAGUI_TARGET = 'web'
18
21
 
19
- export function loader(this: LoaderContext<any>, source: string) {
20
- this.cacheable()
22
+ export const loader: RawLoaderDefinitionFunction<TamaguiOptions> = function loader(this, sourceIn) {
23
+ this.cacheable(true)
21
24
  this.async()
25
+ const source = sourceIn.toString()
22
26
 
23
27
  if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
24
28
  patchReactNativeWeb()
@@ -51,14 +55,14 @@ export function loader(this: LoaderContext<any>, source: string) {
51
55
 
52
56
  const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`
53
57
 
58
+ // cssLoaderPath: CSS_LOADER_PATH,
59
+ // threaded,
60
+ // cssPath,
61
+
54
62
  const extracted = extractToClassNames({
55
- loader: this,
56
63
  extractor,
57
- cssLoaderPath: require.resolve('./css'),
58
64
  source,
59
- threaded,
60
65
  sourcePath,
61
- cssPath,
62
66
  options,
63
67
  shouldPrintDebug,
64
68
  })
@@ -67,6 +71,16 @@ export function loader(this: LoaderContext<any>, source: string) {
67
71
  return this.callback(null, source)
68
72
  }
69
73
 
74
+ // add import to css
75
+ if (extracted.styles) {
76
+ const cssQuery = threaded
77
+ ? `cssData=${Buffer.from(extracted.styles).toString('base64')}`
78
+ : `cssPath=${cssPath}`
79
+ const remReq = this.remainingRequest
80
+ const importPath = `${cssPath}!=!${CSS_LOADER_PATH}?${cssQuery}!${remReq}`
81
+ extracted.js = `${extracted.js}\n\nrequire(${JSON.stringify(importPath)})`
82
+ }
83
+
70
84
  extractedInfoByFile.set(sourcePath, extracted)
71
85
 
72
86
  if (!threaded) {
package/types/css.d.ts CHANGED
@@ -2,5 +2,5 @@ import { ExtractedResponse } from '@tamagui/static';
2
2
  import { LoaderContext } from 'webpack';
3
3
  export declare const extractedInfoByFile: Map<string, ExtractedResponse>;
4
4
  export declare const stylePathToFilePath: Map<string, string>;
5
- export default function loader(this: LoaderContext<any>, source: string): void;
5
+ export default function loader(this: LoaderContext<any>): void;
6
6
  //# sourceMappingURL=css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,mBAAmB,gCAAuC,CAAA;AACvE,eAAO,MAAM,mBAAmB,qBAA4B,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,QAuBtE"}
1
+ {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,mBAAmB,gCAAuC,CAAA;AACvE,eAAO,MAAM,mBAAmB,qBAA4B,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,QAuBtD"}
package/types/index.d.ts CHANGED
File without changes
File without changes
package/types/loader.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- import { LoaderContext } from 'webpack';
2
- export declare function loader(this: LoaderContext<any>, source: string): void;
1
+ import { TamaguiOptions } from '@tamagui/static';
2
+ import type { RawLoaderDefinitionFunction } from 'webpack';
3
+ export declare const loader: RawLoaderDefinitionFunction<TamaguiOptions>;
3
4
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAYvC,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,QAgE9D"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAiB,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAezE,eAAO,MAAM,MAAM,EAAE,2BAA2B,CAAC,cAAc,CA2E9D,CAAA"}