nuxt-og-image 6.7.6 → 6.7.7

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 (32) hide show
  1. package/LICENSE.md +6 -0
  2. package/dist/chunks/decode.mjs +1087 -0
  3. package/dist/chunks/tw4.mjs +1 -1
  4. package/dist/chunks/uno.mjs +2 -2
  5. package/dist/module.d.ts +1 -1
  6. package/dist/module.json +1 -1
  7. package/dist/module.mjs +1 -1
  8. package/dist/runtime/server/og-image/bindings/font-assets/dev-prerender.js +5 -6
  9. package/dist/runtime/server/og-image/bindings/font-assets/node.d.ts +1 -1
  10. package/dist/runtime/server/og-image/bindings/font-assets/node.js +2 -3
  11. package/dist/runtime/server/og-image/browser/screenshot.js +2 -1
  12. package/dist/runtime/server/og-image/font-source.d.ts +3 -12
  13. package/dist/runtime/server/og-image/font-source.js +1 -4
  14. package/dist/runtime/server/og-image/fonts.d.ts +0 -7
  15. package/dist/runtime/server/og-image/fonts.js +1 -1
  16. package/dist/runtime/server/og-image/takumi/renderer.js +2 -2
  17. package/dist/runtime/server/routes/resolve.js +2 -1
  18. package/dist/runtime/server/util/fetchLocalAsset.d.ts +1 -1
  19. package/dist/runtime/server/util/fetchLocalAsset.js +2 -1
  20. package/dist/runtime/types.d.ts +1 -1
  21. package/dist/shared/{nuxt-og-image.BIbfn5xQ.mjs → nuxt-og-image.BMHzg1Vz.mjs} +227 -76
  22. package/package.json +21 -22
  23. package/dist/chunks/tw4.cjs +0 -493
  24. package/dist/chunks/uno.cjs +0 -249
  25. package/dist/cli.cjs +0 -1345
  26. package/dist/cli.d.cts +0 -1
  27. package/dist/content.cjs +0 -21
  28. package/dist/content.d.cts +0 -16
  29. package/dist/module.cjs +0 -39
  30. package/dist/module.d.cts +0 -219
  31. package/dist/shared/nuxt-og-image.CMYbz66P.cjs +0 -193
  32. package/dist/shared/nuxt-og-image.CdpC3njh.cjs +0 -5898
@@ -1,493 +0,0 @@
1
- 'use strict';
2
-
3
- const promises = require('node:fs/promises');
4
- const node_url = require('node:url');
5
- const exsolve = require('exsolve');
6
- const pathe = require('pathe');
7
- const module$1 = require('../shared/nuxt-og-image.CdpC3njh.cjs');
8
- require('node:crypto');
9
- require('node:fs');
10
- require('@nuxt/kit');
11
- require('defu');
12
- require('fnv1a-64');
13
- require('nuxt-site-config/kit');
14
- require('nuxtseo-shared/kit');
15
- require('pkg-types');
16
- require('std-env');
17
- require('oxc-walker');
18
- require('../../dist/runtime/logger.js');
19
- require('chrome-launcher');
20
- require('nypm');
21
- require('nuxtseo-shared/devtools');
22
- require('unstorage');
23
- require('unstorage/drivers/fs-lite');
24
- require('../../dist/runtime/server/og-image/utils/css.js');
25
- require('magic-string');
26
- require('strip-literal');
27
- require('ufo');
28
- require('unplugin');
29
- require('@vue/compiler-sfc');
30
- require('ofetch');
31
- require('ultrahtml');
32
- require('../../dist/runtime/server/og-image/core/transforms/emojis/emoji-utils.js');
33
- require('../shared/nuxt-og-image.CMYbz66P.cjs');
34
- require('magicast');
35
- require('magicast/helpers');
36
-
37
- const RE_GRADIENT_STOP_PREFIX = /^(from|via|to)-/;
38
- const RE_COLOR_SHADE = /^(.+)-(\d+)$/;
39
- const RE_CSS_COLOR_VALUE = /color:([^;}]+)/;
40
- const RE_TO_DIRECTION = /^to-(?:[tblr]|tl|tr|bl|br)$/;
41
- const RE_FONT_VAR = /--font-([\w-]+)\s*:/g;
42
- let compile;
43
- let twColors;
44
- async function loadTw4Deps() {
45
- if (!compile) {
46
- const [, tailwindModule, colorsModule] = await Promise.all([
47
- module$1.loadLightningCss(),
48
- import('tailwindcss'),
49
- import('tailwindcss/colors')
50
- ]);
51
- compile = tailwindModule.compile;
52
- twColors = colorsModule.default || colorsModule;
53
- }
54
- }
55
- function createModuleLoader(baseDir) {
56
- return async (id, base) => {
57
- const resolved = exsolve.resolveModulePath(id, {
58
- from: base || baseDir,
59
- try: true,
60
- suffixes: ["", "/index"],
61
- extensions: [".js", ".mjs", ".cjs"]
62
- });
63
- if (resolved) {
64
- const module2 = await import(node_url.pathToFileURL(resolved).href).then((m) => m.default || m);
65
- return { path: resolved, base: pathe.dirname(resolved), module: module2 };
66
- }
67
- const relativePath = pathe.join(base || baseDir, id);
68
- const module = await import(node_url.pathToFileURL(relativePath).href).then((m) => m.default || m).catch(() => ({}));
69
- return { path: relativePath, base: pathe.dirname(relativePath), module };
70
- };
71
- }
72
- function createStylesheetLoader(baseDir) {
73
- return async (id, base) => {
74
- if (id === "tailwindcss") {
75
- const twPath = exsolve.resolveModulePath("tailwindcss/index.css", { from: baseDir, try: true });
76
- if (twPath) {
77
- const content = await promises.readFile(twPath, "utf-8").catch(() => "");
78
- if (content)
79
- return { path: twPath, base: pathe.dirname(twPath), content };
80
- }
81
- return {
82
- path: "virtual:tailwindcss",
83
- base,
84
- content: "@layer theme, base, components, utilities;\n@layer utilities { @tailwind utilities; }"
85
- };
86
- }
87
- if (id.startsWith("./") || id.startsWith("../")) {
88
- const resolved2 = pathe.join(base || baseDir, id);
89
- const content = await promises.readFile(resolved2, "utf-8").catch(() => "");
90
- return { path: resolved2, base: pathe.dirname(resolved2), content };
91
- }
92
- const resolved = exsolve.resolveModulePath(id, {
93
- from: base || baseDir,
94
- conditions: ["style"],
95
- try: true,
96
- suffixes: ["", "/index"],
97
- extensions: [".css", ".js", ".mjs"]
98
- });
99
- if (resolved) {
100
- const content = await promises.readFile(resolved, "utf-8").catch(() => "");
101
- return { path: resolved, base: pathe.dirname(resolved), content };
102
- }
103
- return { path: id, base, content: "" };
104
- };
105
- }
106
- function buildNuxtUiVars(vars, nuxtUiColors, theme) {
107
- const colors = twColors;
108
- const shades = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
109
- for (const [semantic, colorName] of Object.entries(nuxtUiColors)) {
110
- for (const shade of shades) {
111
- const varName = `--ui-color-${semantic}-${shade}`;
112
- const value = colors[colorName]?.[shade];
113
- if (value && !vars.has(varName))
114
- vars.set(varName, value);
115
- }
116
- if (!vars.has(`--ui-${semantic}`))
117
- vars.set(`--ui-${semantic}`, colors[colorName]?.[500] || "");
118
- }
119
- const neutral = nuxtUiColors.neutral || "slate";
120
- const neutralColors = colors[neutral];
121
- const semanticVars = theme === "light" ? {
122
- "--ui-text-dimmed": neutralColors?.[400] || "",
123
- "--ui-text-muted": neutralColors?.[500] || "",
124
- "--ui-text-toned": neutralColors?.[600] || "",
125
- "--ui-text": neutralColors?.[700] || "",
126
- "--ui-text-highlighted": neutralColors?.[900] || "",
127
- "--ui-text-inverted": "#ffffff",
128
- "--ui-bg": "#ffffff",
129
- "--ui-bg-muted": neutralColors?.[50] || "",
130
- "--ui-bg-elevated": neutralColors?.[100] || "",
131
- "--ui-bg-accented": neutralColors?.[200] || "",
132
- "--ui-bg-inverted": neutralColors?.[900] || "",
133
- "--ui-border": neutralColors?.[200] || "",
134
- "--ui-border-muted": neutralColors?.[200] || "",
135
- "--ui-border-accented": neutralColors?.[300] || "",
136
- "--ui-border-inverted": neutralColors?.[900] || ""
137
- } : {
138
- // Dark mode (default for OG images, also explicit theme === 'dark')
139
- "--ui-text-dimmed": neutralColors?.[500] || "",
140
- "--ui-text-muted": neutralColors?.[400] || "",
141
- "--ui-text-toned": neutralColors?.[300] || "",
142
- "--ui-text": neutralColors?.[200] || "",
143
- "--ui-text-highlighted": "#ffffff",
144
- "--ui-text-inverted": neutralColors?.[900] || "",
145
- "--ui-bg": neutralColors?.[900] || "",
146
- "--ui-bg-muted": neutralColors?.[800] || "",
147
- "--ui-bg-elevated": neutralColors?.[800] || "",
148
- "--ui-bg-accented": neutralColors?.[700] || "",
149
- "--ui-bg-inverted": "#ffffff",
150
- "--ui-border": neutralColors?.[800] || "",
151
- "--ui-border-muted": neutralColors?.[700] || "",
152
- "--ui-border-accented": neutralColors?.[700] || "",
153
- "--ui-border-inverted": "#ffffff"
154
- };
155
- for (const [name, value] of Object.entries(semanticVars)) {
156
- if (value)
157
- vars.set(name, value);
158
- }
159
- }
160
- let cachedCompiler = null;
161
- let cachedCssPath = null;
162
- let cachedVars = null;
163
- let cachedExtractedVars = null;
164
- let pendingCompiler = null;
165
- const resolvedStyleCache = /* @__PURE__ */ new Map();
166
- function clearTw4UserVarsCache() {
167
- cachedVars = null;
168
- cachedExtractedVars = null;
169
- resolvedStyleCache.clear();
170
- }
171
- function clearTw4Cache() {
172
- cachedCompiler = null;
173
- cachedCssPath = null;
174
- cachedVars = null;
175
- cachedExtractedVars = null;
176
- pendingCompiler = null;
177
- resolvedStyleCache.clear();
178
- }
179
- async function getCompiler(cssPath, nuxtUiColors) {
180
- if (cachedCompiler && cachedCssPath === cssPath)
181
- return { compiler: cachedCompiler, vars: cachedVars };
182
- if (pendingCompiler)
183
- return pendingCompiler;
184
- pendingCompiler = (async () => {
185
- await loadTw4Deps();
186
- const userCss = await promises.readFile(cssPath, "utf-8");
187
- const baseDir = pathe.dirname(cssPath);
188
- const compiler = await compile(userCss, {
189
- loadStylesheet: createStylesheetLoader(baseDir),
190
- loadModule: createModuleLoader(baseDir)
191
- });
192
- const vars = /* @__PURE__ */ new Map();
193
- if (nuxtUiColors)
194
- buildNuxtUiVars(vars, nuxtUiColors);
195
- cachedCompiler = compiler;
196
- cachedCssPath = cssPath;
197
- cachedVars = vars;
198
- cachedExtractedVars = {
199
- rootVars: /* @__PURE__ */ new Map(),
200
- qualifiedRules: [],
201
- universalVars: /* @__PURE__ */ new Map(),
202
- propertyInitials: /* @__PURE__ */ new Map(),
203
- perClassVars: /* @__PURE__ */ new Map()
204
- };
205
- resolvedStyleCache.clear();
206
- return { compiler, vars };
207
- })();
208
- const p = pendingCompiler;
209
- p.finally(() => {
210
- pendingCompiler = null;
211
- });
212
- return p;
213
- }
214
- async function parseCssOutput(rawCss, vars, extractedAccum) {
215
- const css = await module$1.simplifyCss(rawCss);
216
- for (const [name, value] of module$1.extractCssVars(css)) {
217
- if (!vars.has(name))
218
- vars.set(name, value);
219
- }
220
- for (const [name, value] of module$1.extractUniversalVars(css)) {
221
- if (!vars.has(name))
222
- vars.set(name, value);
223
- }
224
- const perClassVars = module$1.extractPerClassVars(css);
225
- if (extractedAccum) {
226
- const fresh = await module$1.extractVarsFromCss(css);
227
- for (const [n, v] of fresh.rootVars) {
228
- if (!extractedAccum.rootVars.has(n))
229
- extractedAccum.rootVars.set(n, v);
230
- }
231
- extractedAccum.qualifiedRules.push(...fresh.qualifiedRules);
232
- for (const [n, v] of fresh.universalVars) {
233
- if (!extractedAccum.universalVars.has(n))
234
- extractedAccum.universalVars.set(n, v);
235
- }
236
- for (const [n, v] of fresh.propertyInitials) {
237
- if (!extractedAccum.propertyInitials.has(n))
238
- extractedAccum.propertyInitials.set(n, v);
239
- }
240
- for (const [name, classVars] of fresh.perClassVars) {
241
- const existing = extractedAccum.perClassVars.get(name);
242
- if (existing) {
243
- for (const [k, v] of classVars) existing.set(k, v);
244
- } else {
245
- extractedAccum.perClassVars.set(name, new Map(classVars));
246
- }
247
- }
248
- }
249
- const classes = module$1.extractClassStyles(css, { skipPrefixes: ["--"], merge: true });
250
- return { classes, perClassVars };
251
- }
252
- const LINEAR_GRADIENT_DIRECTIONS = {
253
- "bg-gradient-to-t": "to top",
254
- "bg-gradient-to-tr": "to top right",
255
- "bg-gradient-to-r": "to right",
256
- "bg-gradient-to-br": "to bottom right",
257
- "bg-gradient-to-b": "to bottom",
258
- "bg-gradient-to-bl": "to bottom left",
259
- "bg-gradient-to-l": "to left",
260
- "bg-gradient-to-tl": "to top left"
261
- };
262
- const RADIAL_GRADIENT_SHAPES = {
263
- "bg-radial": "circle at center",
264
- "bg-radial-at-t": "circle at top",
265
- "bg-radial-at-tr": "circle at top right",
266
- "bg-radial-at-r": "circle at right",
267
- "bg-radial-at-br": "circle at bottom right",
268
- "bg-radial-at-b": "circle at bottom",
269
- "bg-radial-at-bl": "circle at bottom left",
270
- "bg-radial-at-l": "circle at left",
271
- "bg-radial-at-tl": "circle at top left",
272
- "bg-radial-at-c": "circle at center"
273
- };
274
- async function resolveGradientColor(cls, vars) {
275
- const colorName = cls.replace(RE_GRADIENT_STOP_PREFIX, "");
276
- const shadeMatch = colorName.match(RE_COLOR_SHADE);
277
- if (shadeMatch?.[1] && shadeMatch?.[2]) {
278
- const varName2 = `--color-${shadeMatch[1]}-${shadeMatch[2]}`;
279
- const value2 = vars.get(varName2);
280
- if (value2) {
281
- const resolved = await module$1.resolveVarsDeep(value2, vars);
282
- if (!resolved.includes("var(")) {
283
- const simplified = await module$1.simplifyCss(`.x{color:${resolved}}`);
284
- return simplified.match(RE_CSS_COLOR_VALUE)?.[1]?.trim() ?? resolved;
285
- }
286
- }
287
- }
288
- const varName = `--color-${colorName}`;
289
- const value = vars.get(varName);
290
- if (value) {
291
- const resolved = await module$1.resolveVarsDeep(value, vars);
292
- if (!resolved.includes("var(")) {
293
- const simplified = await module$1.simplifyCss(`.x{color:${resolved}}`);
294
- return simplified.match(RE_CSS_COLOR_VALUE)?.[1]?.trim() ?? resolved;
295
- }
296
- }
297
- return null;
298
- }
299
- async function buildGradient(classes, vars) {
300
- const linearDir = classes.find((c) => LINEAR_GRADIENT_DIRECTIONS[c]);
301
- const radialShape = classes.find((c) => RADIAL_GRADIENT_SHAPES[c]);
302
- const fromClass = classes.find((c) => c.startsWith("from-"));
303
- const viaClass = classes.find((c) => c.startsWith("via-"));
304
- const toClass = classes.find((c) => c.startsWith("to-") && !RE_TO_DIRECTION.test(c));
305
- if (!linearDir && !radialShape)
306
- return null;
307
- if (!fromClass && !toClass)
308
- return null;
309
- const fromColor = fromClass ? await resolveGradientColor(fromClass, vars) : null;
310
- const viaColor = viaClass ? await resolveGradientColor(viaClass, vars) : null;
311
- const toColor = toClass ? await resolveGradientColor(toClass, vars) : null;
312
- if (!fromColor && !toColor)
313
- return null;
314
- const stops = [fromColor, viaColor, toColor].filter(Boolean).join(", ");
315
- const colorClasses = [fromClass, viaClass, toClass].filter((c) => !!c);
316
- if (linearDir) {
317
- const direction = LINEAR_GRADIENT_DIRECTIONS[linearDir];
318
- return {
319
- gradientClass: linearDir,
320
- value: `linear-gradient(${direction}, ${stops})`,
321
- colorClasses
322
- };
323
- }
324
- if (radialShape) {
325
- const shape = RADIAL_GRADIENT_SHAPES[radialShape];
326
- return {
327
- gradientClass: radialShape,
328
- value: `radial-gradient(${shape}, ${stops})`,
329
- colorClasses
330
- };
331
- }
332
- return null;
333
- }
334
- function buildThemeVars(baseVars, extracted, theme, nuxtUiColors) {
335
- const vars = new Map(baseVars);
336
- if (nuxtUiColors)
337
- buildNuxtUiVars(vars, nuxtUiColors, theme);
338
- if (extracted) {
339
- const themeRootAttrs = { "data-theme": theme };
340
- const themeVars = module$1.resolveExtractedVars(extracted, themeRootAttrs);
341
- for (const [n, v] of themeVars)
342
- vars.set(n, v);
343
- }
344
- return vars;
345
- }
346
- async function resolveClassesToStyles(classes, options, context, theme) {
347
- const { compiler, vars } = await getCompiler(options.cssPath, options.nuxtUiColors);
348
- const cacheKeyFor = (cls) => theme ? `${cls}|${theme}` : cls;
349
- const uncached = classes.filter((c) => !resolvedStyleCache.has(cacheKeyFor(c)));
350
- if (uncached.length > 0) {
351
- const outputCss = compiler.build(uncached);
352
- const { classes: parsedClasses, perClassVars } = await parseCssOutput(outputCss, vars, cachedExtractedVars || void 0);
353
- const resolveVarsForClass = theme ? buildThemeVars(vars, cachedExtractedVars, theme, options.nuxtUiColors) : vars;
354
- for (const [className, rawStyles] of parsedClasses) {
355
- const classVars = perClassVars.get(className);
356
- const mergedVars = classVars ? new Map([...resolveVarsForClass, ...classVars]) : resolveVarsForClass;
357
- const styles = await module$1.postProcessStyles(rawStyles, mergedVars, void 0, context);
358
- const cacheKey = cacheKeyFor(className);
359
- if (!styles && className.startsWith("bg-gradient-")) {
360
- resolvedStyleCache.set(cacheKey, rawStyles);
361
- } else {
362
- resolvedStyleCache.set(cacheKey, styles);
363
- }
364
- }
365
- for (const c of uncached) {
366
- const key = cacheKeyFor(c);
367
- if (!resolvedStyleCache.has(key))
368
- resolvedStyleCache.set(key, null);
369
- }
370
- }
371
- const result = {};
372
- for (const cls of classes) {
373
- const resolved = resolvedStyleCache.get(cacheKeyFor(cls));
374
- if (resolved)
375
- result[cls] = resolved;
376
- }
377
- const gradientVars = theme ? buildThemeVars(vars, cachedExtractedVars, theme, options.nuxtUiColors) : vars;
378
- const gradient = await buildGradient(classes, gradientVars);
379
- if (gradient) {
380
- result[gradient.gradientClass] = { "background-image": gradient.value };
381
- for (const colorClass of gradient.colorClasses) {
382
- result[colorClass] = {};
383
- }
384
- }
385
- return result;
386
- }
387
- async function extractTw4Metadata(options) {
388
- const { compiler, vars } = await getCompiler(options.cssPath, options.nuxtUiColors);
389
- const userCss = await promises.readFile(options.cssPath, "utf-8");
390
- const fontCandidates = Array.from(userCss.matchAll(RE_FONT_VAR), (m) => `font-${m[1]}`);
391
- const themeCss = compiler.build(fontCandidates);
392
- await parseCssOutput(themeCss, vars);
393
- const fontVars = {};
394
- const breakpoints = {};
395
- const colors = {};
396
- for (const [name, value] of vars) {
397
- const resolvedValue = await module$1.resolveVarsDeep(value, vars);
398
- if (name.startsWith("--font-")) {
399
- fontVars[name.slice(2)] = resolvedValue;
400
- } else if (name.startsWith("--breakpoint-")) {
401
- const px = Number.parseInt(resolvedValue.replace("px", ""), 10);
402
- if (!Number.isNaN(px))
403
- breakpoints[name.slice(13)] = px;
404
- } else if (name.startsWith("--color-") && !resolvedValue.includes("var(")) {
405
- const colorPath = name.slice(8);
406
- const shadeMatch = colorPath.match(RE_COLOR_SHADE);
407
- const simplified = await module$1.simplifyCss(`.x{color:${resolvedValue}}`);
408
- const hexValue = simplified.match(RE_CSS_COLOR_VALUE)?.[1]?.trim() ?? resolvedValue;
409
- if (shadeMatch) {
410
- const [, colorName, shade] = shadeMatch;
411
- if (colorName) {
412
- if (!colors[colorName])
413
- colors[colorName] = {};
414
- if (typeof colors[colorName] === "object")
415
- colors[colorName][shade] = hexValue;
416
- }
417
- } else {
418
- colors[colorPath] = hexValue;
419
- }
420
- }
421
- }
422
- return { fontVars, breakpoints, colors };
423
- }
424
- function createTw4Provider(options) {
425
- let cssPath;
426
- let initPromise;
427
- let initialized = false;
428
- async function init() {
429
- if (initialized)
430
- return;
431
- if (initPromise)
432
- return initPromise;
433
- initPromise = (async () => {
434
- cssPath = await options.resolveCssPath();
435
- if (!cssPath) {
436
- initialized = true;
437
- return;
438
- }
439
- const content = await promises.readFile(cssPath, "utf-8");
440
- if (!content.includes("@theme") && !content.includes('@import "tailwindcss"'))
441
- cssPath = void 0;
442
- initialized = true;
443
- })();
444
- return initPromise;
445
- }
446
- return {
447
- name: "tailwind",
448
- async resolveClassesToStyles(classes, context, rootAttrs) {
449
- await init();
450
- if (!cssPath)
451
- return {};
452
- const baseClasses = module$1.extractVariantBaseClasses(classes);
453
- const classesToResolve = [.../* @__PURE__ */ new Set([...classes, ...baseClasses])];
454
- const nuxtUiColors = await options.loadNuxtUiColors();
455
- const theme = rootAttrs?.["data-theme"] === "light" || rootAttrs?.["data-theme"] === "dark" ? rootAttrs["data-theme"] : void 0;
456
- const tw4Resolved = await resolveClassesToStyles(classesToResolve, {
457
- cssPath,
458
- nuxtUiColors
459
- }, context, theme);
460
- const resolvedMap = new Map(Object.entries(tw4Resolved));
461
- return module$1.resolveVariantPrefixes(classes, resolvedMap);
462
- },
463
- async extractMetadata() {
464
- await init();
465
- if (!cssPath)
466
- return { fontVars: {}, breakpoints: {}, colors: {} };
467
- const nuxtUiColors = await options.loadNuxtUiColors();
468
- return extractTw4Metadata({ cssPath, nuxtUiColors });
469
- },
470
- async getVars(rootAttrs) {
471
- await init();
472
- if (!cssPath)
473
- return /* @__PURE__ */ new Map();
474
- const nuxtUiColors = await options.loadNuxtUiColors();
475
- const { vars } = await getCompiler(cssPath, nuxtUiColors);
476
- const theme = rootAttrs?.["data-theme"] === "light" || rootAttrs?.["data-theme"] === "dark" ? rootAttrs["data-theme"] : void 0;
477
- if (!theme)
478
- return vars;
479
- return buildThemeVars(vars, cachedExtractedVars, theme, nuxtUiColors);
480
- },
481
- clearUserVarsCache: clearTw4UserVarsCache,
482
- clearCache: clearTw4Cache
483
- };
484
- }
485
-
486
- exports.buildNuxtUiVars = buildNuxtUiVars;
487
- exports.clearTw4Cache = clearTw4Cache;
488
- exports.clearTw4UserVarsCache = clearTw4UserVarsCache;
489
- exports.createModuleLoader = createModuleLoader;
490
- exports.createStylesheetLoader = createStylesheetLoader;
491
- exports.createTw4Provider = createTw4Provider;
492
- exports.extractTw4Metadata = extractTw4Metadata;
493
- exports.resolveClassesToStyles = resolveClassesToStyles;