tamagui-loader 1.0.0-alpha.2 → 1.0.0-alpha.23

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.
@@ -0,0 +1,14 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
3
+ var __export = (target, all) => {
4
+ __markAsModule(target);
5
+ for (var name in all)
6
+ __defProp(target, name, { get: all[name], enumerable: true });
7
+ };
8
+ __export(exports, {
9
+ default: () => src_default
10
+ });
11
+ process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || "web";
12
+ process.env.TAMAGUI_COMPILE_PROCESS = "1";
13
+ var src_default = require("./loader").loader;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || 'web'\nprocess.env.TAMAGUI_COMPILE_PROCESS = '1'\n\nexport default require('./loader').loader\n"],
5
+ "mappings": ";;;;;;;AAAA;AAAA;AAAA;AAAA,QAAQ,IAAI,iBAAiB,QAAQ,IAAI,kBAAkB;AAC3D,QAAQ,IAAI,0BAA0B;AAEtC,IAAO,cAAQ,QAAQ,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,111 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
22
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
23
+ var __export = (target, all) => {
24
+ __markAsModule(target);
25
+ for (var name in all)
26
+ __defProp(target, name, { get: all[name], enumerable: true });
27
+ };
28
+ var __reExport = (target, module2, desc) => {
29
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
30
+ for (let key of __getOwnPropNames(module2))
31
+ if (!__hasOwnProp.call(target, key) && key !== "default")
32
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
33
+ }
34
+ return target;
35
+ };
36
+ var __toModule = (module2) => {
37
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
38
+ };
39
+ __export(exports, {
40
+ loader: () => loader
41
+ });
42
+ var import_static = __toModule(require("@tamagui/static"));
43
+ var import_loader_utils = __toModule(require("loader-utils"));
44
+ Error.stackTraceLimit = Infinity;
45
+ const extractor = (0, import_static.createExtractor)();
46
+ const stylesByFile = new Map();
47
+ const stylePathToFilePath = new Map();
48
+ let index = 0;
49
+ let hasLogged = false;
50
+ let hasPatched = false;
51
+ process.env.TAMAGUI_TARGET = "web";
52
+ function loader(source) {
53
+ this.cacheable();
54
+ const callback = this.async();
55
+ if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
56
+ (0, import_static.patchReactNativeWeb)();
57
+ hasPatched = true;
58
+ }
59
+ try {
60
+ const threaded = this.emitFile === void 0;
61
+ const options = __spreadValues({}, (0, import_loader_utils.getOptions)(this));
62
+ if (options.disableExtraction && (options.disableDebugAttr || process.env.NODE_ENV !== "development")) {
63
+ if (!hasLogged) {
64
+ console.log("\u{1F95A} Tamagui disableDebug & disableExtraction set, no parsing running");
65
+ hasLogged = true;
66
+ }
67
+ return callback(null, source);
68
+ }
69
+ const sourcePath = `${this.resourcePath}`;
70
+ const startsWithComment = source[0] === "/" && source[1] === "/";
71
+ const shouldPrintDebug = !!process.env.DEBUG && (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true) || startsWithComment && (source.startsWith("// debug") || source.startsWith("//! debug"));
72
+ if (options.cssPath || options.cssData) {
73
+ const out = options.cssData ? Buffer.from(options.cssData, "base64").toString("utf-8") : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath);
74
+ if (!out) {
75
+ console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`);
76
+ }
77
+ return callback(null, out);
78
+ }
79
+ if (startsWithComment && (source.startsWith("// tamagui-ignore") || source.startsWith("//! tamagui-ignore"))) {
80
+ return callback(null, source);
81
+ }
82
+ const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
83
+ const extracted = (0, import_static.extractToClassNames)({
84
+ loader: this,
85
+ extractor,
86
+ source,
87
+ threaded,
88
+ sourcePath,
89
+ cssPath,
90
+ options,
91
+ shouldPrintDebug
92
+ });
93
+ if (!extracted) {
94
+ return callback(null, source);
95
+ }
96
+ if (!threaded) {
97
+ if (extracted.stylesPath) {
98
+ stylePathToFilePath.set(extracted.stylesPath, sourcePath);
99
+ }
100
+ if (extracted.styles) {
101
+ stylesByFile.set(sourcePath, extracted.styles);
102
+ }
103
+ }
104
+ callback(null, extracted.js, extracted.map);
105
+ } catch (err) {
106
+ console.error("ERROR", err);
107
+ return callback(null, source);
108
+ }
109
+ }
110
+ __name(loader, "loader");
111
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/loader.ts"],
4
+ "sourcesContent": ["import { extname } from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { getOptions } from 'loader-utils'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nconst stylesByFile = new Map<string, string>()\nconst stylePathToFilePath = new Map<string, string>()\n\nlet index = 0\nlet hasLogged = false\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: any, source: string) {\n this.cacheable()\n const callback = 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 = { ...getOptions(this) }\n\n if (\n options.disableExtraction &&\n (options.disableDebugAttr || process.env.NODE_ENV !== 'development')\n ) {\n if (!hasLogged) {\n console.log('\uD83E\uDD5A Tamagui disableDebug & disableExtraction set, no parsing running')\n hasLogged = true\n }\n return callback(null, source)\n }\n\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n const shouldPrintDebug =\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 outputted css\n if (options.cssPath || options.cssData) {\n const out = options.cssData\n ? Buffer.from(options.cssData, 'base64').toString('utf-8')\n : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath)\n if (!out) {\n console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`)\n }\n return callback(null, out)\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n const extracted = extractToClassNames({\n // @ts-ignore\n loader: this,\n extractor,\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return callback(null, source)\n }\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n if (extracted.styles) {\n stylesByFile.set(sourcePath, extracted.styles)\n }\n }\n\n callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return callback(null, source)\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAEA,oBAKO;AACP,0BAA2B;AAE3B,MAAM,kBAAkB;AACxB,MAAM,YAAY;AAElB,MAAM,eAAe,IAAI;AACzB,MAAM,sBAAsB,IAAI;AAEhC,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI,aAAa;AAEjB,QAAQ,IAAI,iBAAiB;AAEtB,gBAA2B,QAAgB;AAChD,OAAK;AACL,QAAM,WAAW,KAAK;AAEtB,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD;AACA,iBAAa;AAAA;AAGf,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,mBAAK,oCAAW;AAEhD,QACE,QAAQ,qBACP,SAAQ,oBAAoB,QAAQ,IAAI,aAAa,gBACtD;AACA,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI;AACZ,oBAAY;AAAA;AAEd,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAC7D,UAAM,mBACH,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,cAAc,SAEzE,qBAAsB,QAAO,WAAW,eAAe,OAAO,WAAW;AAG5E,QAAI,QAAQ,WAAW,QAAQ,SAAS;AACtC,YAAM,MAAM,QAAQ,UAChB,OAAO,KAAK,QAAQ,SAAS,UAAU,SAAS,WAChD,aAAa,IAAI,oBAAoB,IAAI,eAAe;AAC5D,UAAI,CAAC,KAAK;AACR,gBAAQ,KAAK,gBAAgB,aAAa,QAAQ;AAAA;AAEpD,aAAO,SAAS,MAAM;AAAA;AAIxB,QACE,qBACC,QAAO,WAAW,wBAAwB,OAAO,WAAW,wBAC7D;AACA,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AACzE,UAAM,YAAY,uCAAoB;AAAA,MAEpC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAGF,QAAI,CAAC,WAAW;AACd,aAAO,SAAS,MAAM;AAAA;AAGxB,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY;AAAA;AAEhD,UAAI,UAAU,QAAQ;AACpB,qBAAa,IAAI,YAAY,UAAU;AAAA;AAAA;AAI3C,aAAS,MAAM,UAAU,IAAI,UAAU;AAAA,WAChC,KAAP;AACA,YAAQ,MAAM,SAAS;AACvB,WAAO,SAAS,MAAM;AAAA;AAAA;AAhFV;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || "web";
2
+ process.env.TAMAGUI_COMPILE_PROCESS = "1";
3
+ var src_default = require("./loader").loader;
4
+ export {
5
+ src_default as default
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || 'web'\nprocess.env.TAMAGUI_COMPILE_PROCESS = '1'\n\nexport default require('./loader').loader\n"],
5
+ "mappings": "AAAA,QAAQ,IAAI,iBAAiB,QAAQ,IAAI,kBAAkB;AAC3D,QAAQ,IAAI,0BAA0B;AAEtC,IAAO,cAAQ,QAAQ,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,79 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import {
4
+ createExtractor,
5
+ extractToClassNames,
6
+ patchReactNativeWeb
7
+ } from "@tamagui/static";
8
+ import { getOptions } from "loader-utils";
9
+ Error.stackTraceLimit = Infinity;
10
+ const extractor = createExtractor();
11
+ const stylesByFile = new Map();
12
+ const stylePathToFilePath = new Map();
13
+ let index = 0;
14
+ let hasLogged = false;
15
+ let hasPatched = false;
16
+ process.env.TAMAGUI_TARGET = "web";
17
+ function loader(source) {
18
+ this.cacheable();
19
+ const callback = this.async();
20
+ if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
21
+ patchReactNativeWeb();
22
+ hasPatched = true;
23
+ }
24
+ try {
25
+ const threaded = this.emitFile === void 0;
26
+ const options = { ...getOptions(this) };
27
+ if (options.disableExtraction && (options.disableDebugAttr || process.env.NODE_ENV !== "development")) {
28
+ if (!hasLogged) {
29
+ console.log("\u{1F95A} Tamagui disableDebug & disableExtraction set, no parsing running");
30
+ hasLogged = true;
31
+ }
32
+ return callback(null, source);
33
+ }
34
+ const sourcePath = `${this.resourcePath}`;
35
+ const startsWithComment = source[0] === "/" && source[1] === "/";
36
+ const shouldPrintDebug = !!process.env.DEBUG && (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true) || startsWithComment && (source.startsWith("// debug") || source.startsWith("//! debug"));
37
+ if (options.cssPath || options.cssData) {
38
+ const out = options.cssData ? Buffer.from(options.cssData, "base64").toString("utf-8") : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath);
39
+ if (!out) {
40
+ console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`);
41
+ }
42
+ return callback(null, out);
43
+ }
44
+ if (startsWithComment && (source.startsWith("// tamagui-ignore") || source.startsWith("//! tamagui-ignore"))) {
45
+ return callback(null, source);
46
+ }
47
+ const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
48
+ const extracted = extractToClassNames({
49
+ loader: this,
50
+ extractor,
51
+ source,
52
+ threaded,
53
+ sourcePath,
54
+ cssPath,
55
+ options,
56
+ shouldPrintDebug
57
+ });
58
+ if (!extracted) {
59
+ return callback(null, source);
60
+ }
61
+ if (!threaded) {
62
+ if (extracted.stylesPath) {
63
+ stylePathToFilePath.set(extracted.stylesPath, sourcePath);
64
+ }
65
+ if (extracted.styles) {
66
+ stylesByFile.set(sourcePath, extracted.styles);
67
+ }
68
+ }
69
+ callback(null, extracted.js, extracted.map);
70
+ } catch (err) {
71
+ console.error("ERROR", err);
72
+ return callback(null, source);
73
+ }
74
+ }
75
+ __name(loader, "loader");
76
+ export {
77
+ loader
78
+ };
79
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/loader.ts"],
4
+ "sourcesContent": ["import { extname } from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { getOptions } from 'loader-utils'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nconst stylesByFile = new Map<string, string>()\nconst stylePathToFilePath = new Map<string, string>()\n\nlet index = 0\nlet hasLogged = false\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: any, source: string) {\n this.cacheable()\n const callback = 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 = { ...getOptions(this) }\n\n if (\n options.disableExtraction &&\n (options.disableDebugAttr || process.env.NODE_ENV !== 'development')\n ) {\n if (!hasLogged) {\n console.log('\uD83E\uDD5A Tamagui disableDebug & disableExtraction set, no parsing running')\n hasLogged = true\n }\n return callback(null, source)\n }\n\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n const shouldPrintDebug =\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 outputted css\n if (options.cssPath || options.cssData) {\n const out = options.cssData\n ? Buffer.from(options.cssData, 'base64').toString('utf-8')\n : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath)\n if (!out) {\n console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`)\n }\n return callback(null, out)\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n const extracted = extractToClassNames({\n // @ts-ignore\n loader: this,\n extractor,\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return callback(null, source)\n }\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n if (extracted.styles) {\n stylesByFile.set(sourcePath, extracted.styles)\n }\n }\n\n callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return callback(null, source)\n }\n}\n"],
5
+ "mappings": ";;AAEA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA,MAAM,kBAAkB;AACxB,MAAM,YAAY;AAElB,MAAM,eAAe,IAAI;AACzB,MAAM,sBAAsB,IAAI;AAEhC,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI,aAAa;AAEjB,QAAQ,IAAI,iBAAiB;AAEtB,gBAA2B,QAAgB;AAChD,OAAK;AACL,QAAM,WAAW,KAAK;AAEtB,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD;AACA,iBAAa;AAAA;AAGf,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,KAAK,WAAW;AAEhD,QACE,QAAQ,qBACP,SAAQ,oBAAoB,QAAQ,IAAI,aAAa,gBACtD;AACA,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI;AACZ,oBAAY;AAAA;AAEd,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAC7D,UAAM,mBACH,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,cAAc,SAEzE,qBAAsB,QAAO,WAAW,eAAe,OAAO,WAAW;AAG5E,QAAI,QAAQ,WAAW,QAAQ,SAAS;AACtC,YAAM,MAAM,QAAQ,UAChB,OAAO,KAAK,QAAQ,SAAS,UAAU,SAAS,WAChD,aAAa,IAAI,oBAAoB,IAAI,eAAe;AAC5D,UAAI,CAAC,KAAK;AACR,gBAAQ,KAAK,gBAAgB,aAAa,QAAQ;AAAA;AAEpD,aAAO,SAAS,MAAM;AAAA;AAIxB,QACE,qBACC,QAAO,WAAW,wBAAwB,OAAO,WAAW,wBAC7D;AACA,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AACzE,UAAM,YAAY,oBAAoB;AAAA,MAEpC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAGF,QAAI,CAAC,WAAW;AACd,aAAO,SAAS,MAAM;AAAA;AAGxB,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY;AAAA;AAEhD,UAAI,UAAU,QAAQ;AACpB,qBAAa,IAAI,YAAY,UAAU;AAAA;AAAA;AAI3C,aAAS,MAAM,UAAU,IAAI,UAAU;AAAA,WAChC,KAAP;AACA,YAAQ,MAAM,SAAS;AACvB,WAAO,SAAS,MAAM;AAAA;AAAA;AAhFV;",
6
+ "names": []
7
+ }
package/dist/index.cjs CHANGED
@@ -48,15 +48,16 @@ __export(loader_exports, {
48
48
  function loader(source) {
49
49
  this.cacheable();
50
50
  const callback = this.async();
51
- if (!process.env.TAMAGUI_DISABLE_RNW_PATCH) {
51
+ if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
52
52
  (0, import_static.patchReactNativeWeb)();
53
+ hasPatched = true;
53
54
  }
54
55
  try {
55
56
  const threaded = this.emitFile === void 0;
56
57
  const options = __spreadValues({}, (0, import_loader_utils.getOptions)(this));
57
- if (options.disableExtraction) {
58
+ if (options.disableExtraction && (options.disableDebugAttr || process.env.NODE_ENV !== "development")) {
58
59
  if (!hasLogged) {
59
- console.log("\u{1F95A} Tamagui disableExtraction set: no CSS or optimizations will be run");
60
+ console.log("\u{1F95A} Tamagui disableDebug & disableExtraction set, no parsing running");
60
61
  hasLogged = true;
61
62
  }
62
63
  return callback(null, source);
@@ -71,8 +72,7 @@ function loader(source) {
71
72
  }
72
73
  return callback(null, out);
73
74
  }
74
- const isTamaguiInternalView = sourcePath.includes("/tamagui/");
75
- if (!isTamaguiInternalView && ((0, import_path.extname)(sourcePath) !== ".tsx" || startsWithComment && (source.startsWith("// tamagui-ignore") || source.startsWith("//! tamagui-ignore")))) {
75
+ if (startsWithComment && (source.startsWith("// tamagui-ignore") || source.startsWith("//! tamagui-ignore"))) {
76
76
  return callback(null, source);
77
77
  }
78
78
  const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
@@ -103,10 +103,9 @@ function loader(source) {
103
103
  return callback(null, source);
104
104
  }
105
105
  }
106
- var import_path, import_static, import_loader_utils, extractor, stylesByFile, stylePathToFilePath, index, hasLogged;
106
+ var import_static, import_loader_utils, extractor, stylesByFile, stylePathToFilePath, index, hasLogged, hasPatched;
107
107
  var init_loader = __esm({
108
108
  "src/loader.ts"() {
109
- import_path = __toModule(require("path"));
110
109
  import_static = __toModule(require("@tamagui/static"));
111
110
  import_loader_utils = __toModule(require("loader-utils"));
112
111
  Error.stackTraceLimit = Infinity;
@@ -115,6 +114,7 @@ var init_loader = __esm({
115
114
  stylePathToFilePath = new Map();
116
115
  index = 0;
117
116
  hasLogged = false;
117
+ hasPatched = false;
118
118
  process.env.TAMAGUI_TARGET = "web";
119
119
  __name(loader, "loader");
120
120
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/loader.ts", "../src/index.ts"],
4
- "sourcesContent": ["import { extname } from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { getOptions } from 'loader-utils'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nconst stylesByFile = new Map<string, string>()\nconst stylePathToFilePath = new Map<string, string>()\n\nlet index = 0\nlet hasLogged = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: any, source: string) {\n this.cacheable()\n const callback = this.async()\n\n if (!process.env.TAMAGUI_DISABLE_RNW_PATCH) {\n patchReactNativeWeb()\n }\n\n try {\n const threaded = this.emitFile === undefined\n const options: TamaguiOptions = { ...getOptions(this) }\n\n if (options.disableExtraction) {\n if (!hasLogged) {\n console.log('\uD83E\uDD5A Tamagui disableExtraction set: no CSS or optimizations will be run')\n hasLogged = true\n }\n return callback(null, source)\n }\n\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n const shouldPrintDebug =\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 outputted css\n if (options.cssPath || options.cssData) {\n const out = options.cssData\n ? Buffer.from(options.cssData, 'base64').toString('utf-8')\n : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath)\n if (!out) {\n console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`)\n }\n return callback(null, out)\n }\n\n // check if should ignore\n const isTamaguiInternalView = sourcePath.includes('/tamagui/')\n\n if (\n !isTamaguiInternalView &&\n (extname(sourcePath) !== '.tsx' ||\n (startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))))\n ) {\n return callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n const extracted = extractToClassNames({\n // @ts-ignore\n loader: this,\n extractor,\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return callback(null, source)\n }\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n if (extracted.styles) {\n stylesByFile.set(sourcePath, extracted.styles)\n }\n }\n\n callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return callback(null, source)\n }\n}\n", "process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || 'web'\nprocess.env.TAMAGUI_COMPILE_PROCESS = '1'\n\nexport default require('./loader').loader\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAqBO,gBAA2B,QAAgB;AAChD,OAAK;AACL,QAAM,WAAW,KAAK;AAEtB,MAAI,CAAC,QAAQ,IAAI,2BAA2B;AAC1C;AAAA;AAGF,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,mBAAK,oCAAW;AAEhD,QAAI,QAAQ,mBAAmB;AAC7B,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI;AACZ,oBAAY;AAAA;AAEd,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAC7D,UAAM,mBACH,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,cAAc,SAEzE,qBAAsB,QAAO,WAAW,eAAe,OAAO,WAAW;AAG5E,QAAI,QAAQ,WAAW,QAAQ,SAAS;AACtC,YAAM,MAAM,QAAQ,UAChB,OAAO,KAAK,QAAQ,SAAS,UAAU,SAAS,WAChD,aAAa,IAAI,oBAAoB,IAAI,eAAe;AAC5D,UAAI,CAAC,KAAK;AACR,gBAAQ,KAAK,gBAAgB,aAAa,QAAQ;AAAA;AAEpD,aAAO,SAAS,MAAM;AAAA;AAIxB,UAAM,wBAAwB,WAAW,SAAS;AAElD,QACE,CAAC,yBACA,0BAAQ,gBAAgB,UACtB,qBACE,QAAO,WAAW,wBAAwB,OAAO,WAAW,yBACjE;AACA,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AACzE,UAAM,YAAY,uCAAoB;AAAA,MAEpC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAGF,QAAI,CAAC,WAAW;AACd,aAAO,SAAS,MAAM;AAAA;AAGxB,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY;AAAA;AAEhD,UAAI,UAAU,QAAQ;AACpB,qBAAa,IAAI,YAAY,UAAU;AAAA;AAAA;AAI3C,aAAS,MAAM,UAAU,IAAI,UAAU;AAAA,WAChC,KAAP;AACA,YAAQ,MAAM,SAAS;AACvB,WAAO,SAAS,MAAM;AAAA;AAAA;AArG1B,iBAEA,eAMA,qBAGM,WAEA,cACA,qBAEF,OACA;AAjBJ;AAAA;AAAA,kBAAwB;AAExB,oBAKO;AACP,0BAA2B;AAE3B,UAAM,kBAAkB;AACxB,IAAM,YAAY;AAElB,IAAM,eAAe,IAAI;AACzB,IAAM,sBAAsB,IAAI;AAEhC,IAAI,QAAQ;AACZ,IAAI,YAAY;AAEhB,YAAQ,IAAI,iBAAiB;AAEb;AAAA;AAAA;;;ACrBhB;AAAA;AAAA;AAAA,QAAQ,IAAI,iBAAiB,QAAQ,IAAI,kBAAkB;AAC3D,QAAQ,IAAI,0BAA0B;AAEtC,IAAO,cAAQ,gCAAoB;",
4
+ "sourcesContent": ["import { extname } from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { getOptions } from 'loader-utils'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nconst stylesByFile = new Map<string, string>()\nconst stylePathToFilePath = new Map<string, string>()\n\nlet index = 0\nlet hasLogged = false\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: any, source: string) {\n this.cacheable()\n const callback = 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 = { ...getOptions(this) }\n\n if (\n options.disableExtraction &&\n (options.disableDebugAttr || process.env.NODE_ENV !== 'development')\n ) {\n if (!hasLogged) {\n console.log('\uD83E\uDD5A Tamagui disableDebug & disableExtraction set, no parsing running')\n hasLogged = true\n }\n return callback(null, source)\n }\n\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n const shouldPrintDebug =\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 outputted css\n if (options.cssPath || options.cssData) {\n const out = options.cssData\n ? Buffer.from(options.cssData, 'base64').toString('utf-8')\n : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath)\n if (!out) {\n console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`)\n }\n return callback(null, out)\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n const extracted = extractToClassNames({\n // @ts-ignore\n loader: this,\n extractor,\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return callback(null, source)\n }\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n if (extracted.styles) {\n stylesByFile.set(sourcePath, extracted.styles)\n }\n }\n\n callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return callback(null, source)\n }\n}\n", "process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || 'web'\nprocess.env.TAMAGUI_COMPILE_PROCESS = '1'\n\nexport default require('./loader').loader\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAsBO,gBAA2B,QAAgB;AAChD,OAAK;AACL,QAAM,WAAW,KAAK;AAEtB,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD;AACA,iBAAa;AAAA;AAGf,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,mBAAK,oCAAW;AAEhD,QACE,QAAQ,qBACP,SAAQ,oBAAoB,QAAQ,IAAI,aAAa,gBACtD;AACA,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI;AACZ,oBAAY;AAAA;AAEd,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAC7D,UAAM,mBACH,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,cAAc,SAEzE,qBAAsB,QAAO,WAAW,eAAe,OAAO,WAAW;AAG5E,QAAI,QAAQ,WAAW,QAAQ,SAAS;AACtC,YAAM,MAAM,QAAQ,UAChB,OAAO,KAAK,QAAQ,SAAS,UAAU,SAAS,WAChD,aAAa,IAAI,oBAAoB,IAAI,eAAe;AAC5D,UAAI,CAAC,KAAK;AACR,gBAAQ,KAAK,gBAAgB,aAAa,QAAQ;AAAA;AAEpD,aAAO,SAAS,MAAM;AAAA;AAIxB,QACE,qBACC,QAAO,WAAW,wBAAwB,OAAO,WAAW,wBAC7D;AACA,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AACzE,UAAM,YAAY,uCAAoB;AAAA,MAEpC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAGF,QAAI,CAAC,WAAW;AACd,aAAO,SAAS,MAAM;AAAA;AAGxB,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY;AAAA;AAEhD,UAAI,UAAU,QAAQ;AACpB,qBAAa,IAAI,YAAY,UAAU;AAAA;AAAA;AAI3C,aAAS,MAAM,UAAU,IAAI,UAAU;AAAA,WAChC,KAAP;AACA,YAAQ,MAAM,SAAS;AACvB,WAAO,SAAS,MAAM;AAAA;AAAA;AAtG1B,IAEA,eAMA,qBAGM,WAEA,cACA,qBAEF,OACA,WACA;AAlBJ;AAAA;AAEA,oBAKO;AACP,0BAA2B;AAE3B,UAAM,kBAAkB;AACxB,IAAM,YAAY;AAElB,IAAM,eAAe,IAAI;AACzB,IAAM,sBAAsB,IAAI;AAEhC,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI,aAAa;AAEjB,YAAQ,IAAI,iBAAiB;AAEb;AAAA;AAAA;;;ACtBhB;AAAA;AAAA;AAAA,QAAQ,IAAI,iBAAiB,QAAQ,IAAI,kBAAkB;AAC3D,QAAQ,IAAI,0BAA0B;AAEtC,IAAO,cAAQ,gCAAoB;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,6 @@
1
+ process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || "web";
2
+ process.env.TAMAGUI_COMPILE_PROCESS = "1";
3
+ var src_default = require("./loader").loader;
4
+ export {
5
+ src_default as default
6
+ };
@@ -0,0 +1,78 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import {
4
+ createExtractor,
5
+ extractToClassNames,
6
+ patchReactNativeWeb
7
+ } from "@tamagui/static";
8
+ import { getOptions } from "loader-utils";
9
+ Error.stackTraceLimit = Infinity;
10
+ const extractor = createExtractor();
11
+ const stylesByFile = new Map();
12
+ const stylePathToFilePath = new Map();
13
+ let index = 0;
14
+ let hasLogged = false;
15
+ let hasPatched = false;
16
+ process.env.TAMAGUI_TARGET = "web";
17
+ function loader(source) {
18
+ this.cacheable();
19
+ const callback = this.async();
20
+ if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
21
+ patchReactNativeWeb();
22
+ hasPatched = true;
23
+ }
24
+ try {
25
+ const threaded = this.emitFile === void 0;
26
+ const options = { ...getOptions(this) };
27
+ if (options.disableExtraction && (options.disableDebugAttr || process.env.NODE_ENV !== "development")) {
28
+ if (!hasLogged) {
29
+ console.log("\u{1F95A} Tamagui disableDebug & disableExtraction set, no parsing running");
30
+ hasLogged = true;
31
+ }
32
+ return callback(null, source);
33
+ }
34
+ const sourcePath = `${this.resourcePath}`;
35
+ const startsWithComment = source[0] === "/" && source[1] === "/";
36
+ const shouldPrintDebug = !!process.env.DEBUG && (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true) || startsWithComment && (source.startsWith("// debug") || source.startsWith("//! debug"));
37
+ if (options.cssPath || options.cssData) {
38
+ const out = options.cssData ? Buffer.from(options.cssData, "base64").toString("utf-8") : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath);
39
+ if (!out) {
40
+ console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`);
41
+ }
42
+ return callback(null, out);
43
+ }
44
+ if (startsWithComment && (source.startsWith("// tamagui-ignore") || source.startsWith("//! tamagui-ignore"))) {
45
+ return callback(null, source);
46
+ }
47
+ const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
48
+ const extracted = extractToClassNames({
49
+ loader: this,
50
+ extractor,
51
+ source,
52
+ threaded,
53
+ sourcePath,
54
+ cssPath,
55
+ options,
56
+ shouldPrintDebug
57
+ });
58
+ if (!extracted) {
59
+ return callback(null, source);
60
+ }
61
+ if (!threaded) {
62
+ if (extracted.stylesPath) {
63
+ stylePathToFilePath.set(extracted.stylesPath, sourcePath);
64
+ }
65
+ if (extracted.styles) {
66
+ stylesByFile.set(sourcePath, extracted.styles);
67
+ }
68
+ }
69
+ callback(null, extracted.js, extracted.map);
70
+ } catch (err) {
71
+ console.error("ERROR", err);
72
+ return callback(null, source);
73
+ }
74
+ }
75
+ __name(loader, "loader");
76
+ export {
77
+ loader
78
+ };
package/dist/loader.js CHANGED
@@ -1,6 +1,5 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { extname } from "path";
4
3
  import {
5
4
  createExtractor,
6
5
  extractToClassNames,
@@ -13,19 +12,21 @@ const stylesByFile = new Map();
13
12
  const stylePathToFilePath = new Map();
14
13
  let index = 0;
15
14
  let hasLogged = false;
15
+ let hasPatched = false;
16
16
  process.env.TAMAGUI_TARGET = "web";
17
17
  function loader(source) {
18
18
  this.cacheable();
19
19
  const callback = this.async();
20
- if (!process.env.TAMAGUI_DISABLE_RNW_PATCH) {
20
+ if (!process.env.TAMAGUI_DISABLE_RNW_PATCH && !hasPatched) {
21
21
  patchReactNativeWeb();
22
+ hasPatched = true;
22
23
  }
23
24
  try {
24
25
  const threaded = this.emitFile === void 0;
25
26
  const options = { ...getOptions(this) };
26
- if (options.disableExtraction) {
27
+ if (options.disableExtraction && (options.disableDebugAttr || process.env.NODE_ENV !== "development")) {
27
28
  if (!hasLogged) {
28
- console.log("\u{1F95A} Tamagui disableExtraction set: no CSS or optimizations will be run");
29
+ console.log("\u{1F95A} Tamagui disableDebug & disableExtraction set, no parsing running");
29
30
  hasLogged = true;
30
31
  }
31
32
  return callback(null, source);
@@ -40,8 +41,7 @@ function loader(source) {
40
41
  }
41
42
  return callback(null, out);
42
43
  }
43
- const isTamaguiInternalView = sourcePath.includes("/tamagui/");
44
- if (!isTamaguiInternalView && (extname(sourcePath) !== ".tsx" || startsWithComment && (source.startsWith("// tamagui-ignore") || source.startsWith("//! tamagui-ignore")))) {
44
+ if (startsWithComment && (source.startsWith("// tamagui-ignore") || source.startsWith("//! tamagui-ignore"))) {
45
45
  return callback(null, source);
46
46
  }
47
47
  const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/loader.ts"],
4
- "sourcesContent": ["import { extname } from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { getOptions } from 'loader-utils'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nconst stylesByFile = new Map<string, string>()\nconst stylePathToFilePath = new Map<string, string>()\n\nlet index = 0\nlet hasLogged = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: any, source: string) {\n this.cacheable()\n const callback = this.async()\n\n if (!process.env.TAMAGUI_DISABLE_RNW_PATCH) {\n patchReactNativeWeb()\n }\n\n try {\n const threaded = this.emitFile === undefined\n const options: TamaguiOptions = { ...getOptions(this) }\n\n if (options.disableExtraction) {\n if (!hasLogged) {\n console.log('\uD83E\uDD5A Tamagui disableExtraction set: no CSS or optimizations will be run')\n hasLogged = true\n }\n return callback(null, source)\n }\n\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n const shouldPrintDebug =\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 outputted css\n if (options.cssPath || options.cssData) {\n const out = options.cssData\n ? Buffer.from(options.cssData, 'base64').toString('utf-8')\n : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath)\n if (!out) {\n console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`)\n }\n return callback(null, out)\n }\n\n // check if should ignore\n const isTamaguiInternalView = sourcePath.includes('/tamagui/')\n\n if (\n !isTamaguiInternalView &&\n (extname(sourcePath) !== '.tsx' ||\n (startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))))\n ) {\n return callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n const extracted = extractToClassNames({\n // @ts-ignore\n loader: this,\n extractor,\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return callback(null, source)\n }\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n if (extracted.styles) {\n stylesByFile.set(sourcePath, extracted.styles)\n }\n }\n\n callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return callback(null, source)\n }\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA,MAAM,kBAAkB;AACxB,MAAM,YAAY;AAElB,MAAM,eAAe,IAAI;AACzB,MAAM,sBAAsB,IAAI;AAEhC,IAAI,QAAQ;AACZ,IAAI,YAAY;AAEhB,QAAQ,IAAI,iBAAiB;AAEtB,gBAA2B,QAAgB;AAChD,OAAK;AACL,QAAM,WAAW,KAAK;AAEtB,MAAI,CAAC,QAAQ,IAAI,2BAA2B;AAC1C;AAAA;AAGF,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,KAAK,WAAW;AAEhD,QAAI,QAAQ,mBAAmB;AAC7B,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI;AACZ,oBAAY;AAAA;AAEd,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAC7D,UAAM,mBACH,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,cAAc,SAEzE,qBAAsB,QAAO,WAAW,eAAe,OAAO,WAAW;AAG5E,QAAI,QAAQ,WAAW,QAAQ,SAAS;AACtC,YAAM,MAAM,QAAQ,UAChB,OAAO,KAAK,QAAQ,SAAS,UAAU,SAAS,WAChD,aAAa,IAAI,oBAAoB,IAAI,eAAe;AAC5D,UAAI,CAAC,KAAK;AACR,gBAAQ,KAAK,gBAAgB,aAAa,QAAQ;AAAA;AAEpD,aAAO,SAAS,MAAM;AAAA;AAIxB,UAAM,wBAAwB,WAAW,SAAS;AAElD,QACE,CAAC,yBACA,SAAQ,gBAAgB,UACtB,qBACE,QAAO,WAAW,wBAAwB,OAAO,WAAW,yBACjE;AACA,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AACzE,UAAM,YAAY,oBAAoB;AAAA,MAEpC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAGF,QAAI,CAAC,WAAW;AACd,aAAO,SAAS,MAAM;AAAA;AAGxB,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY;AAAA;AAEhD,UAAI,UAAU,QAAQ;AACpB,qBAAa,IAAI,YAAY,UAAU;AAAA;AAAA;AAI3C,aAAS,MAAM,UAAU,IAAI,UAAU;AAAA,WAChC,KAAP;AACA,YAAQ,MAAM,SAAS;AACvB,WAAO,SAAS,MAAM;AAAA;AAAA;AAhFV;",
4
+ "sourcesContent": ["import { extname } from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n patchReactNativeWeb,\n} from '@tamagui/static'\nimport { getOptions } from 'loader-utils'\n\nError.stackTraceLimit = Infinity\nconst extractor = createExtractor()\n\nconst stylesByFile = new Map<string, string>()\nconst stylePathToFilePath = new Map<string, string>()\n\nlet index = 0\nlet hasLogged = false\nlet hasPatched = false\n\nprocess.env.TAMAGUI_TARGET = 'web'\n\nexport function loader(this: any, source: string) {\n this.cacheable()\n const callback = 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 = { ...getOptions(this) }\n\n if (\n options.disableExtraction &&\n (options.disableDebugAttr || process.env.NODE_ENV !== 'development')\n ) {\n if (!hasLogged) {\n console.log('\uD83E\uDD5A Tamagui disableDebug & disableExtraction set, no parsing running')\n hasLogged = true\n }\n return callback(null, source)\n }\n\n const sourcePath = `${this.resourcePath}`\n const startsWithComment = source[0] === '/' && source[1] === '/'\n const shouldPrintDebug =\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 outputted css\n if (options.cssPath || options.cssData) {\n const out = options.cssData\n ? Buffer.from(options.cssData, 'base64').toString('utf-8')\n : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath)\n if (!out) {\n console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`)\n }\n return callback(null, out)\n }\n\n // check if should ignore\n if (\n startsWithComment &&\n (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))\n ) {\n return callback(null, source)\n }\n\n const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`\n const extracted = extractToClassNames({\n // @ts-ignore\n loader: this,\n extractor,\n source,\n threaded,\n sourcePath,\n cssPath,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return callback(null, source)\n }\n\n if (!threaded) {\n if (extracted.stylesPath) {\n stylePathToFilePath.set(extracted.stylesPath, sourcePath)\n }\n if (extracted.styles) {\n stylesByFile.set(sourcePath, extracted.styles)\n }\n }\n\n callback(null, extracted.js, extracted.map)\n } catch (err) {\n console.error('ERROR', err)\n return callback(null, source)\n }\n}\n"],
5
+ "mappings": ";;AAEA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA,MAAM,kBAAkB;AACxB,MAAM,YAAY;AAElB,MAAM,eAAe,IAAI;AACzB,MAAM,sBAAsB,IAAI;AAEhC,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI,aAAa;AAEjB,QAAQ,IAAI,iBAAiB;AAEtB,gBAA2B,QAAgB;AAChD,OAAK;AACL,QAAM,WAAW,KAAK;AAEtB,MAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,YAAY;AACzD;AACA,iBAAa;AAAA;AAGf,MAAI;AACF,UAAM,WAAW,KAAK,aAAa;AACnC,UAAM,UAA0B,KAAK,WAAW;AAEhD,QACE,QAAQ,qBACP,SAAQ,oBAAoB,QAAQ,IAAI,aAAa,gBACtD;AACA,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI;AACZ,oBAAY;AAAA;AAEd,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,aAAa,GAAG,KAAK;AAC3B,UAAM,oBAAoB,OAAO,OAAO,OAAO,OAAO,OAAO;AAC7D,UAAM,mBACH,CAAC,CAAC,QAAQ,IAAI,SACZ,SAAQ,IAAI,aAAa,WAAW,SAAS,QAAQ,IAAI,cAAc,SAEzE,qBAAsB,QAAO,WAAW,eAAe,OAAO,WAAW;AAG5E,QAAI,QAAQ,WAAW,QAAQ,SAAS;AACtC,YAAM,MAAM,QAAQ,UAChB,OAAO,KAAK,QAAQ,SAAS,UAAU,SAAS,WAChD,aAAa,IAAI,oBAAoB,IAAI,eAAe;AAC5D,UAAI,CAAC,KAAK;AACR,gBAAQ,KAAK,gBAAgB,aAAa,QAAQ;AAAA;AAEpD,aAAO,SAAS,MAAM;AAAA;AAIxB,QACE,qBACC,QAAO,WAAW,wBAAwB,OAAO,WAAW,wBAC7D;AACA,aAAO,SAAS,MAAM;AAAA;AAGxB,UAAM,UAAU,WAAW,GAAG,0BAA0B,GAAG,cAAc;AACzE,UAAM,YAAY,oBAAoB;AAAA,MAEpC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAGF,QAAI,CAAC,WAAW;AACd,aAAO,SAAS,MAAM;AAAA;AAGxB,QAAI,CAAC,UAAU;AACb,UAAI,UAAU,YAAY;AACxB,4BAAoB,IAAI,UAAU,YAAY;AAAA;AAEhD,UAAI,UAAU,QAAQ;AACpB,qBAAa,IAAI,YAAY,UAAU;AAAA;AAAA;AAI3C,aAAS,MAAM,UAAU,IAAI,UAAU;AAAA,WAChC,KAAP;AACA,YAAQ,MAAM,SAAS;AACvB,WAAO,SAAS,MAAM;AAAA;AAAA;AAhFV;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
1
  {
2
2
  "name": "tamagui-loader",
3
- "version": "1.0.0-alpha.2",
4
- "source": "src/index.ts",
5
- "main": "dist/index.cjs",
6
- "module": "dist/index.js",
7
- "typings": "types.d.ts",
3
+ "version": "1.0.0-alpha.23",
4
+ "typings": "types",
5
+ "main": "dist/cjs",
6
+ "module": "dist/esm",
7
+ "module:jsx": "dist/jsx",
8
8
  "files": [
9
- "dist",
10
- "src"
9
+ "types",
10
+ "dist"
11
11
  ],
12
12
  "scripts": {
13
13
  "build": "tamagui-build",
14
14
  "watch": "tamagui-build --watch"
15
15
  },
16
16
  "dependencies": {
17
- "@tamagui/static": "^1.0.0-alpha.2",
17
+ "@tamagui/static": "^1.0.0-alpha.23",
18
18
  "fs-extra": "^9.1.0",
19
19
  "loader-utils": "^2.0.0",
20
20
  "lodash": "^4.17.21"
21
21
  },
22
22
  "devDependencies": {
23
- "@tamagui/build": "^1.0.0-alpha.2"
23
+ "@tamagui/build": "^1.0.0-alpha.22"
24
24
  },
25
25
  "publishConfig": {
26
26
  "access": "public"
27
27
  },
28
- "gitHead": "a9f30fdf4ebd448961a6e133741cd4b903185559"
28
+ "gitHead": "69fb1d82868a6525fee6b0750cb2113d88ffea79"
29
29
  }
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,wBAAyC"}
@@ -0,0 +1,2 @@
1
+ export declare function loader(this: any, source: string): any;
2
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAsBA,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,OAkF/C"}
package/src/index.ts DELETED
@@ -1,4 +0,0 @@
1
- process.env.TAMAGUI_TARGET = process.env.TAMAGUI_TARGET || 'web'
2
- process.env.TAMAGUI_COMPILE_PROCESS = '1'
3
-
4
- export default require('./loader').loader
package/src/loader.ts DELETED
@@ -1,104 +0,0 @@
1
- import { extname } from 'path'
2
-
3
- import {
4
- TamaguiOptions,
5
- createExtractor,
6
- extractToClassNames,
7
- patchReactNativeWeb,
8
- } from '@tamagui/static'
9
- import { getOptions } from 'loader-utils'
10
-
11
- Error.stackTraceLimit = Infinity
12
- const extractor = createExtractor()
13
-
14
- const stylesByFile = new Map<string, string>()
15
- const stylePathToFilePath = new Map<string, string>()
16
-
17
- let index = 0
18
- let hasLogged = false
19
-
20
- process.env.TAMAGUI_TARGET = 'web'
21
-
22
- export function loader(this: any, source: string) {
23
- this.cacheable()
24
- const callback = this.async()
25
-
26
- if (!process.env.TAMAGUI_DISABLE_RNW_PATCH) {
27
- patchReactNativeWeb()
28
- }
29
-
30
- try {
31
- const threaded = this.emitFile === undefined
32
- const options: TamaguiOptions = { ...getOptions(this) }
33
-
34
- if (options.disableExtraction) {
35
- if (!hasLogged) {
36
- console.log('🥚 Tamagui disableExtraction set: no CSS or optimizations will be run')
37
- hasLogged = true
38
- }
39
- return callback(null, source)
40
- }
41
-
42
- const sourcePath = `${this.resourcePath}`
43
- const startsWithComment = source[0] === '/' && source[1] === '/'
44
- const shouldPrintDebug =
45
- (!!process.env.DEBUG &&
46
- (process.env.DEBUG_FILE ? sourcePath.includes(process.env.DEBUG_FILE) : true)) ||
47
- // supports esbuild style //! comments
48
- (startsWithComment && (source.startsWith('// debug') || source.startsWith('//! debug')))
49
-
50
- // if outputted css
51
- if (options.cssPath || options.cssData) {
52
- const out = options.cssData
53
- ? Buffer.from(options.cssData, 'base64').toString('utf-8')
54
- : stylesByFile.get(stylePathToFilePath.get(sourcePath) ?? sourcePath)
55
- if (!out) {
56
- console.warn(`no styles... ${stylesByFile.keys} ${sourcePath}`)
57
- }
58
- return callback(null, out)
59
- }
60
-
61
- // check if should ignore
62
- const isTamaguiInternalView = sourcePath.includes('/tamagui/')
63
-
64
- if (
65
- !isTamaguiInternalView &&
66
- (extname(sourcePath) !== '.tsx' ||
67
- (startsWithComment &&
68
- (source.startsWith('// tamagui-ignore') || source.startsWith('//! tamagui-ignore'))))
69
- ) {
70
- return callback(null, source)
71
- }
72
-
73
- const cssPath = threaded ? `${sourcePath}.module.css` : `${sourcePath}.${index++}.module.css`
74
- const extracted = extractToClassNames({
75
- // @ts-ignore
76
- loader: this,
77
- extractor,
78
- source,
79
- threaded,
80
- sourcePath,
81
- cssPath,
82
- options,
83
- shouldPrintDebug,
84
- })
85
-
86
- if (!extracted) {
87
- return callback(null, source)
88
- }
89
-
90
- if (!threaded) {
91
- if (extracted.stylesPath) {
92
- stylePathToFilePath.set(extracted.stylesPath, sourcePath)
93
- }
94
- if (extracted.styles) {
95
- stylesByFile.set(sourcePath, extracted.styles)
96
- }
97
- }
98
-
99
- callback(null, extracted.js, extracted.map)
100
- } catch (err) {
101
- console.error('ERROR', err)
102
- return callback(null, source)
103
- }
104
- }