tailwind-styled-v4 5.0.10 → 5.0.11

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.
Files changed (93) hide show
  1. package/README.md +245 -373
  2. package/dist/analyzer.js +75 -22
  3. package/dist/analyzer.js.map +1 -1
  4. package/dist/analyzer.mjs +74 -21
  5. package/dist/analyzer.mjs.map +1 -1
  6. package/dist/animate.js +4 -2
  7. package/dist/animate.js.map +1 -1
  8. package/dist/animate.mjs +4 -2
  9. package/dist/animate.mjs.map +1 -1
  10. package/dist/atomic.js +20 -5
  11. package/dist/atomic.js.map +1 -1
  12. package/dist/atomic.mjs +20 -5
  13. package/dist/atomic.mjs.map +1 -1
  14. package/dist/cli.js +174 -67
  15. package/dist/cli.js.map +1 -1
  16. package/dist/cli.mjs +171 -64
  17. package/dist/cli.mjs.map +1 -1
  18. package/dist/compiler.d.mts +7 -1
  19. package/dist/compiler.d.ts +7 -1
  20. package/dist/compiler.js +53 -27
  21. package/dist/compiler.js.map +1 -1
  22. package/dist/compiler.mjs +53 -27
  23. package/dist/compiler.mjs.map +1 -1
  24. package/dist/devtools.js.map +1 -1
  25. package/dist/devtools.mjs.map +1 -1
  26. package/dist/engine.js +159 -61
  27. package/dist/engine.js.map +1 -1
  28. package/dist/engine.mjs +159 -61
  29. package/dist/engine.mjs.map +1 -1
  30. package/dist/index.browser.mjs +1512 -0
  31. package/dist/index.browser.mjs.map +1 -0
  32. package/dist/index.d.mts +94 -12
  33. package/dist/index.d.ts +94 -12
  34. package/dist/index.js +436 -106
  35. package/dist/index.js.map +1 -1
  36. package/dist/index.mjs +436 -106
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/next.js +1946 -47
  39. package/dist/next.js.map +1 -1
  40. package/dist/next.mjs +1929 -44
  41. package/dist/next.mjs.map +1 -1
  42. package/dist/plugin-api.js.map +1 -1
  43. package/dist/plugin-api.mjs.map +1 -1
  44. package/dist/plugin-registry.js +23 -10
  45. package/dist/plugin-registry.js.map +1 -1
  46. package/dist/plugin-registry.mjs +23 -11
  47. package/dist/plugin-registry.mjs.map +1 -1
  48. package/dist/plugin.js.map +1 -1
  49. package/dist/plugin.mjs.map +1 -1
  50. package/dist/rspack.js.map +1 -1
  51. package/dist/rspack.mjs.map +1 -1
  52. package/dist/scanner.js +72 -19
  53. package/dist/scanner.js.map +1 -1
  54. package/dist/scanner.mjs +71 -18
  55. package/dist/scanner.mjs.map +1 -1
  56. package/dist/shared.js +32 -15
  57. package/dist/shared.js.map +1 -1
  58. package/dist/shared.mjs +32 -15
  59. package/dist/shared.mjs.map +1 -1
  60. package/dist/svelte.js +38 -12
  61. package/dist/svelte.js.map +1 -1
  62. package/dist/svelte.mjs +38 -12
  63. package/dist/svelte.mjs.map +1 -1
  64. package/dist/syntax.js +17 -5
  65. package/dist/syntax.js.map +1 -1
  66. package/dist/syntax.mjs +17 -5
  67. package/dist/syntax.mjs.map +1 -1
  68. package/dist/theme.js +4 -2
  69. package/dist/theme.js.map +1 -1
  70. package/dist/theme.mjs +4 -2
  71. package/dist/theme.mjs.map +1 -1
  72. package/dist/turbopackLoader.js +87 -33
  73. package/dist/turbopackLoader.js.map +1 -1
  74. package/dist/turbopackLoader.mjs +87 -33
  75. package/dist/turbopackLoader.mjs.map +1 -1
  76. package/dist/tw.js +174 -67
  77. package/dist/tw.js.map +1 -1
  78. package/dist/tw.mjs +171 -64
  79. package/dist/tw.mjs.map +1 -1
  80. package/dist/vite.js +145 -63
  81. package/dist/vite.js.map +1 -1
  82. package/dist/vite.mjs +145 -63
  83. package/dist/vite.mjs.map +1 -1
  84. package/dist/vue.js +38 -12
  85. package/dist/vue.js.map +1 -1
  86. package/dist/vue.mjs +38 -12
  87. package/dist/vue.mjs.map +1 -1
  88. package/dist/webpackLoader.js +20 -5
  89. package/dist/webpackLoader.js.map +1 -1
  90. package/dist/webpackLoader.mjs +20 -5
  91. package/dist/webpackLoader.mjs.map +1 -1
  92. package/native/tailwind-styled-native.node +0 -0
  93. package/package.json +29 -24
package/dist/analyzer.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('crypto');
4
- var fs3 = require('fs');
4
+ var fs4 = require('fs');
5
5
  var path5 = require('path');
6
6
  var url = require('url');
7
7
  var module$1 = require('module');
@@ -12,7 +12,7 @@ var zod = require('zod');
12
12
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
13
13
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
14
 
15
- var fs3__default = /*#__PURE__*/_interopDefault(fs3);
15
+ var fs4__default = /*#__PURE__*/_interopDefault(fs4);
16
16
  var path5__default = /*#__PURE__*/_interopDefault(path5);
17
17
 
18
18
  /* tailwind-styled-v4 v5.0.4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
@@ -77,7 +77,7 @@ function loadNativeBinding(options) {
77
77
  for (const candidate of candidates) {
78
78
  const candidatePath = path5__default.default.resolve(runtimeDir, candidate);
79
79
  try {
80
- if (!fs3__default.default.existsSync(candidatePath) && !fs3__default.default.existsSync(candidatePath + ".node")) {
80
+ if (!fs4__default.default.existsSync(candidatePath) && !fs4__default.default.existsSync(candidatePath + ".node")) {
81
81
  continue;
82
82
  }
83
83
  const mod = requireNativeModule(candidatePath);
@@ -109,9 +109,9 @@ function resolveNativeBindingCandidates(options) {
109
109
  }
110
110
  }
111
111
  if (!includeDefaultCandidates) return candidates;
112
- if (fs3__default.default.existsSync(runtimeDir)) {
112
+ if (fs4__default.default.existsSync(runtimeDir)) {
113
113
  try {
114
- for (const entry of fs3__default.default.readdirSync(runtimeDir)) {
114
+ for (const entry of fs4__default.default.readdirSync(runtimeDir)) {
115
115
  if (entry.endsWith(".node")) candidates.push(entry);
116
116
  }
117
117
  } catch {
@@ -122,11 +122,13 @@ function resolveNativeBindingCandidates(options) {
122
122
  for (const bin of BINARY_NAMES) {
123
123
  candidates.push(path5__default.default.resolve(runtimeDir, `${bin}.node`));
124
124
  candidates.push(path5__default.default.resolve(runtimeDir, `${bin}.${napiPlatform}.node`));
125
+ candidates.push(path5__default.default.resolve(runtimeDir, "..", "native", `${bin}.node`));
126
+ candidates.push(path5__default.default.resolve(runtimeDir, "..", "native", `${bin}.${napiPlatform}.node`));
127
+ candidates.push(path5__default.default.resolve(process.cwd(), "native", `${bin}.node`));
128
+ candidates.push(path5__default.default.resolve(process.cwd(), "native", `${bin}.${napiPlatform}.node`));
125
129
  candidates.push(path5__default.default.resolve(runtimeDir, "..", "..", "..", "..", "native", `${bin}.node`));
126
130
  candidates.push(path5__default.default.resolve(runtimeDir, "..", "..", "..", "..", "native", `${bin}.${napiPlatform}.node`));
127
131
  candidates.push(path5__default.default.resolve(runtimeDir, "..", "..", "..", "native", `${bin}.node`));
128
- candidates.push(path5__default.default.resolve(process.cwd(), "native", `${bin}.node`));
129
- candidates.push(path5__default.default.resolve(process.cwd(), "native", `${bin}.${napiPlatform}.node`));
130
132
  }
131
133
  return Array.from(new Set(candidates));
132
134
  }
@@ -209,8 +211,10 @@ __export(native_bridge_exports, {
209
211
  extractClassesNative: () => extractClassesNative,
210
212
  generateSubComponentTypesNative: () => generateSubComponentTypesNative,
211
213
  hasNativeScannerBinding: () => hasNativeScannerBinding,
214
+ hasNativeWatchBinding: () => hasNativeWatchBinding,
212
215
  hashContentNative: () => hashContentNative,
213
216
  isRustCacheAvailable: () => isRustCacheAvailable,
217
+ pollWatchEventsNative: () => pollWatchEventsNative,
214
218
  pruneStaleEntriesNative: () => pruneStaleEntriesNative,
215
219
  rebuildWorkspaceResultNative: () => rebuildWorkspaceResultNative,
216
220
  resetScannerBridgeCache: () => resetScannerBridgeCache,
@@ -220,7 +224,9 @@ __export(native_bridge_exports, {
220
224
  scanCacheStats: () => scanCacheStats,
221
225
  scanFileNative: () => scanFileNative,
222
226
  scanFilesBatchNative: () => scanFilesBatchNative,
223
- scanWorkspaceNative: () => scanWorkspaceNative
227
+ scanWorkspaceNative: () => scanWorkspaceNative,
228
+ startWatchNative: () => startWatchNative,
229
+ stopWatchNative: () => stopWatchNative
224
230
  });
225
231
  function getDirname() {
226
232
  if (typeof __dirname !== "undefined") {
@@ -397,6 +403,41 @@ function computeCacheStatsNative(filesClasses, sizes, top) {
397
403
  if (!binding.computeCacheStats) return null;
398
404
  return binding.computeCacheStats(filesClasses, sizes, top ?? null);
399
405
  }
406
+ function startWatchNative(rootDir) {
407
+ try {
408
+ const binding = scannerGetBinding();
409
+ if (!binding.startWatch) return null;
410
+ return binding.startWatch(rootDir);
411
+ } catch {
412
+ return null;
413
+ }
414
+ }
415
+ function pollWatchEventsNative(handleId) {
416
+ try {
417
+ const binding = scannerGetBinding();
418
+ if (!binding.pollWatchEvents) return [];
419
+ return binding.pollWatchEvents(handleId);
420
+ } catch {
421
+ return [];
422
+ }
423
+ }
424
+ function stopWatchNative(handleId) {
425
+ try {
426
+ const binding = scannerGetBinding();
427
+ if (!binding.stopWatch) return false;
428
+ return binding.stopWatch(handleId);
429
+ } catch {
430
+ return false;
431
+ }
432
+ }
433
+ function hasNativeWatchBinding() {
434
+ try {
435
+ const binding = scannerGetBinding();
436
+ return !!(binding.startWatch && binding.pollWatchEvents && binding.stopWatch);
437
+ } catch {
438
+ return false;
439
+ }
440
+ }
400
441
  var log, isValidScannerBinding, createScannerBridgeLoader, scannerBridgeLoader, scannerGetBinding, resetScannerBridgeCache;
401
442
  var init_native_bridge = __esm({
402
443
  "packages/domain/scanner/src/native-bridge.ts"() {
@@ -486,6 +527,7 @@ function defaultCachePath(rootDir, cacheDir) {
486
527
  }
487
528
  function readCache(rootDir, cacheDir) {
488
529
  const cachePath = defaultCachePath(rootDir, cacheDir);
530
+ fs4__default.default.mkdirSync(path5__default.default.dirname(cachePath), { recursive: true });
489
531
  const result = cacheReadNative(cachePath);
490
532
  if (!result) return [];
491
533
  return result.entries.map((e) => ({
@@ -500,6 +542,7 @@ function readCache(rootDir, cacheDir) {
500
542
  }
501
543
  function writeCache(rootDir, entries, cacheDir) {
502
544
  const cachePath = defaultCachePath(rootDir, cacheDir);
545
+ fs4__default.default.mkdirSync(path5__default.default.dirname(cachePath), { recursive: true });
503
546
  const success = cacheWriteNative(cachePath, entries);
504
547
  if (!success) {
505
548
  throw new Error(
@@ -530,7 +573,7 @@ function collectFiles(rootDir, extensions, ignoreDirs) {
530
573
  function walk(dir) {
531
574
  let entries;
532
575
  try {
533
- entries = fs3__default.default.readdirSync(dir, { withFileTypes: true });
576
+ entries = fs4__default.default.readdirSync(dir, { withFileTypes: true });
534
577
  } catch {
535
578
  return;
536
579
  }
@@ -730,7 +773,7 @@ function resolveScannerWorkerModulePath() {
730
773
  path5__default.default.resolve(runtimeDir, "worker.ts")
731
774
  ];
732
775
  for (const candidate of candidates) {
733
- if (fs3__default.default.existsSync(candidate)) return candidate;
776
+ if (fs4__default.default.existsSync(candidate)) return candidate;
734
777
  }
735
778
  return null;
736
779
  }
@@ -787,7 +830,7 @@ function collectCandidates(rootDir, ignoreDirectories, extensionSet) {
787
830
  if (!currentDir) continue;
788
831
  const entries = (() => {
789
832
  try {
790
- return fs3__default.default.readdirSync(currentDir, { withFileTypes: true });
833
+ return fs4__default.default.readdirSync(currentDir, { withFileTypes: true });
791
834
  } catch {
792
835
  return [];
793
836
  }
@@ -886,7 +929,7 @@ function scanWorkspace(rootDir, options = {}) {
886
929
  for (const filePath of candidates) {
887
930
  const stat = (() => {
888
931
  try {
889
- return fs3__default.default.statSync(filePath);
932
+ return fs4__default.default.statSync(filePath);
890
933
  } catch {
891
934
  return null;
892
935
  }
@@ -912,7 +955,7 @@ function scanWorkspace(rootDir, options = {}) {
912
955
  for (const { filePath, stat, size, cached } of ranked) {
913
956
  const content = (() => {
914
957
  try {
915
- return fs3__default.default.readFileSync(filePath, "utf8");
958
+ return fs4__default.default.readFileSync(filePath, "utf8");
916
959
  } catch {
917
960
  return null;
918
961
  }
@@ -1017,21 +1060,31 @@ var init_src2 = __esm({
1017
1060
  if (_state.binding !== void 0) return _state.binding;
1018
1061
  const runtimeDir = getRuntimeDir();
1019
1062
  const req = module$1.createRequire(path5__default.default.join(runtimeDir, "noop.cjs"));
1063
+ const _platform = process.platform;
1064
+ const _arch = process.arch;
1065
+ const _platformArch = `${_platform}-${_arch}`;
1066
+ const _platformArchGnu = _platformArch === "linux-x64" ? "linux-x64-gnu" : _platformArch === "linux-arm64" ? "linux-arm64-gnu" : _platformArch;
1020
1067
  const candidates = [
1021
1068
  // ── binaryName baru: tailwind-styled-native (napi-rs naming) ──
1022
1069
  // cwd = repo root saat run dari root, atau package dir saat workspaces
1023
1070
  path5__default.default.resolve(process.cwd(), "native", "tailwind-styled-native.node"),
1024
- path5__default.default.resolve(process.cwd(), "native", `tailwind-styled-native.${process.platform}-${process.arch}.node`),
1025
- path5__default.default.resolve(process.cwd(), "native", `tailwind-styled-native.${process.platform}-${process.arch}-gnu.node`),
1026
- // runtimeDir = dist/ → naik 4 level ke repo root
1071
+ path5__default.default.resolve(process.cwd(), "native", `tailwind-styled-native.${_platformArch}.node`),
1072
+ path5__default.default.resolve(process.cwd(), "native", `tailwind-styled-native.${_platformArchGnu}.node`),
1073
+ // runtimeDir = dist/ → naik 1 level ke package root (npm install case)
1074
+ // e.g. node_modules/tailwind-styled-v4/dist/ → node_modules/tailwind-styled-v4/native/
1075
+ path5__default.default.resolve(runtimeDir, "..", "native", "tailwind-styled-native.node"),
1076
+ path5__default.default.resolve(runtimeDir, "..", "native", `tailwind-styled-native.${_platformArch}.node`),
1077
+ path5__default.default.resolve(runtimeDir, "..", "native", `tailwind-styled-native.${_platformArchGnu}.node`),
1078
+ // runtimeDir = dist/ → naik 4 level ke repo root (monorepo dev case)
1027
1079
  path5__default.default.resolve(runtimeDir, "..", "..", "..", "..", "native", "tailwind-styled-native.node"),
1028
- path5__default.default.resolve(runtimeDir, "..", "..", "..", "..", "native", `tailwind-styled-native.${process.platform}-${process.arch}-gnu.node`),
1080
+ path5__default.default.resolve(runtimeDir, "..", "..", "..", "..", "native", `tailwind-styled-native.${_platformArchGnu}.node`),
1029
1081
  // 3 level fallback (jika package di-nest lebih dangkal)
1030
1082
  path5__default.default.resolve(runtimeDir, "..", "..", "..", "native", "tailwind-styled-native.node"),
1031
- path5__default.default.resolve(runtimeDir, "..", "..", "..", "native", `tailwind-styled-native.${process.platform}-${process.arch}-gnu.node`),
1083
+ path5__default.default.resolve(runtimeDir, "..", "..", "..", "native", `tailwind-styled-native.${_platformArchGnu}.node`),
1032
1084
  // ── binaryName lama: tailwind_styled_parser (backward compat) ──
1033
1085
  path5__default.default.resolve(process.cwd(), "native/tailwind_styled_parser.node"),
1034
1086
  path5__default.default.resolve(process.cwd(), "native/build/Release/tailwind_styled_parser.node"),
1087
+ path5__default.default.resolve(runtimeDir, "..", "native", "tailwind_styled_parser.node"),
1035
1088
  path5__default.default.resolve(runtimeDir, "..", "..", "..", "..", "native", "tailwind_styled_parser.node"),
1036
1089
  path5__default.default.resolve(runtimeDir, "..", "..", "..", "native", "tailwind_styled_parser.node"),
1037
1090
  path5__default.default.resolve(
@@ -1046,7 +1099,7 @@ var init_src2 = __esm({
1046
1099
  )
1047
1100
  ];
1048
1101
  for (const fullPath of candidates) {
1049
- if (!fs3__default.default.existsSync(fullPath)) continue;
1102
+ if (!fs4__default.default.existsSync(fullPath)) continue;
1050
1103
  try {
1051
1104
  const required = req(fullPath);
1052
1105
  if (required && (typeof required.extractClassesFromSource === "function" || typeof required.parseClasses === "function" || typeof required.parse_classes === "function")) {
@@ -1100,7 +1153,7 @@ function isRecord(value) {
1100
1153
  }
1101
1154
  async function pathExists(filePath) {
1102
1155
  try {
1103
- await fs3__default.default.promises.access(filePath, fs3__default.default.constants.F_OK);
1156
+ await fs4__default.default.promises.access(filePath, fs4__default.default.constants.F_OK);
1104
1157
  return true;
1105
1158
  } catch {
1106
1159
  return false;
@@ -1424,7 +1477,7 @@ var collectCustomUtilities = (config) => {
1424
1477
  return out;
1425
1478
  };
1426
1479
  var collectSafelistFromSource = async (configPath) => {
1427
- const source = await fs3__default.default.promises.readFile(configPath, "utf8");
1480
+ const source = await fs4__default.default.promises.readFile(configPath, "utf8");
1428
1481
  const { extractClassesNative: extractClassesNative2 } = await Promise.resolve().then(() => (init_src2(), src_exports));
1429
1482
  const allTokens = extractClassesNative2(source);
1430
1483
  const hasSafelist = source.includes("safelist");
@@ -1451,7 +1504,7 @@ var loadTailwindConfig = async (root, semanticOption) => {
1451
1504
  customUtilities: /* @__PURE__ */ new Set()
1452
1505
  };
1453
1506
  }
1454
- const configStat = await fs3__default.default.promises.stat(configPath).catch(() => null);
1507
+ const configStat = await fs4__default.default.promises.stat(configPath).catch(() => null);
1455
1508
  if (configStat) {
1456
1509
  const cached = tailwindConfigCache.get(configPath);
1457
1510
  if (cached && cached.mtimeMs === configStat.mtimeMs && cached.size === configStat.size) {