Skip to content

Commit cf3a8aa

Browse files
authored
Merge pull request #7650 from QwikDev/bg-asset
fix: bundlegraph as regular asset
2 parents 7459b2a + b583647 commit cf3a8aa

File tree

28 files changed

+338
-110
lines changed

28 files changed

+338
-110
lines changed

.changeset/good-mammals-grab.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@builder.io/qwik': minor
3+
---
4+
5+
FIX: the preloader bundle graph file is now built as an asset. This is cleaner and avoids i18n translation of the file.

.changeset/real-cities-fold.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@builder.io/qwik': patch
3+
---
4+
5+
FEAT: q-manifest.json now also includes the generated assets

e2e/adapters-e2e/vite.config.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,9 @@ errorOnDuplicatesPkgDeps(devDependencies, dependencies);
2020
* Note that Vite normally starts from `index.html` but the qwikCity plugin makes start at
2121
* `src/entry.ssr.tsx` instead.
2222
*/
23-
export default defineConfig(({ command, mode }): UserConfig => {
23+
export default defineConfig((): UserConfig => {
2424
return {
25-
plugins: [
26-
qwikCity(),
27-
qwikVite(),
28-
tsconfigPaths({
29-
root: '.',
30-
}),
31-
],
25+
plugins: [qwikCity(), qwikVite(), tsconfigPaths({ root: '.' })],
3226
// This tells Vite which dependencies to pre-build in dev mode.
3327
optimizeDeps: {
3428
// Put problematic deps that break bundling here, mostly those with binaries.

e2e/qwik-cli-e2e/vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ if (process.env.CI) {
2626
}
2727

2828
export default defineConfig({
29-
plugins: [tsconfigPaths({ ignoreConfigErrors: true, root: '../../' })],
29+
plugins: [tsconfigPaths({ root: '../../' })],
3030
test: {
3131
include: ['./tests/*.spec.?(c|m)[jt]s?(x)'],
3232
setupFiles: ['./utils/setup.ts'],

packages/docs/src/routes/api/qwik-optimizer/api.json

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,20 @@
385385
"content": "",
386386
"mdFile": "qwik.experimentalfeatures.preventnavigate.md"
387387
},
388+
{
389+
"name": "QwikAsset",
390+
"id": "qwikasset",
391+
"hierarchy": [
392+
{
393+
"name": "QwikAsset",
394+
"id": "qwikasset"
395+
}
396+
],
397+
"kind": "Interface",
398+
"content": "```typescript\nexport interface QwikAsset \n```\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[name](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring \\| undefined\n\n\n</td><td>\n\nName of the asset\n\n\n</td></tr>\n<tr><td>\n\n[size](#)\n\n\n</td><td>\n\n\n</td><td>\n\nnumber\n\n\n</td><td>\n\nSize of the asset\n\n\n</td></tr>\n</tbody></table>",
399+
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts",
400+
"mdFile": "qwik.qwikasset.md"
401+
},
388402
{
389403
"name": "QwikBuildMode",
390404
"id": "qwikbuildmode",
@@ -451,7 +465,7 @@
451465
}
452466
],
453467
"kind": "Interface",
454-
"content": "The metadata of the build. One of its uses is storing where QRL symbols are located.\n\n\n```typescript\nexport interface QwikManifest \n```\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[bundleGraph?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[QwikBundleGraph](#qwikbundlegraph)\n\n\n</td><td>\n\n_(Optional)_ All bundles in a compact graph format with probabilities\n\n\n</td></tr>\n<tr><td>\n\n[bundles](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[fileName: string\\]: [QwikBundle](#qwikbundle)<!-- -->; }\n\n\n</td><td>\n\nAll code bundles, used to know the import graph\n\n\n</td></tr>\n<tr><td>\n\n[core?](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\n_(Optional)_ The Qwik core bundle fileName\n\n\n</td></tr>\n<tr><td>\n\n[injections?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[GlobalInjections](#globalinjections)<!-- -->\\[\\]\n\n\n</td><td>\n\n_(Optional)_ CSS etc to inject in the document head\n\n\n</td></tr>\n<tr><td>\n\n[manifestHash](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\nContent hash of the manifest, if this changes, the code changed\n\n\n</td></tr>\n<tr><td>\n\n[mapping](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[symbolName: string\\]: string; }\n\n\n</td><td>\n\nWhere QRLs are located\n\n\n</td></tr>\n<tr><td>\n\n[options?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ target?: string; buildMode?: string; entryStrategy?: { type: [EntryStrategy](#entrystrategy)<!-- -->\\['type'\\]; }; }\n\n\n</td><td>\n\n_(Optional)_ The options used to build the manifest\n\n\n</td></tr>\n<tr><td>\n\n[platform?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[name: string\\]: string; }\n\n\n</td><td>\n\n_(Optional)_ The platform used to build the manifest\n\n\n</td></tr>\n<tr><td>\n\n[preloader?](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\n_(Optional)_ The preloader bundle fileName\n\n\n</td></tr>\n<tr><td>\n\n[symbols](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[symbolName: string\\]: [QwikSymbol](#qwiksymbol)<!-- -->; }\n\n\n</td><td>\n\nQRL symbols\n\n\n</td></tr>\n<tr><td>\n\n[version](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\nThe version of the manifest\n\n\n</td></tr>\n</tbody></table>",
468+
"content": "The metadata of the build. One of its uses is storing where QRL symbols are located.\n\n\n```typescript\nexport interface QwikManifest \n```\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[assets?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[fileName: string\\]: [QwikAsset](#qwikasset)<!-- -->; }\n\n\n</td><td>\n\n_(Optional)_ All assets. The key is the fileName relative to the rootDir\n\n\n</td></tr>\n<tr><td>\n\n[bundleGraph?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[QwikBundleGraph](#qwikbundlegraph)\n\n\n</td><td>\n\n_(Optional)_ All bundles in a compact graph format with probabilities\n\n\n</td></tr>\n<tr><td>\n\n[bundleGraphAsset?](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\n_(Optional)_ The bundle graph fileName\n\n\n</td></tr>\n<tr><td>\n\n[bundles](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[fileName: string\\]: [QwikBundle](#qwikbundle)<!-- -->; }\n\n\n</td><td>\n\nAll code bundles, used to know the import graph. The key is the bundle fileName relative to \"build/\"\n\n\n</td></tr>\n<tr><td>\n\n[core?](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\n_(Optional)_ The Qwik core bundle fileName\n\n\n</td></tr>\n<tr><td>\n\n[injections?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[GlobalInjections](#globalinjections)<!-- -->\\[\\]\n\n\n</td><td>\n\n_(Optional)_ CSS etc to inject in the document head\n\n\n</td></tr>\n<tr><td>\n\n[manifestHash](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\nContent hash of the manifest, if this changes, the code changed\n\n\n</td></tr>\n<tr><td>\n\n[mapping](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[symbolName: string\\]: string; }\n\n\n</td><td>\n\nWhere QRLs are located. The key is the symbol name, the value is the bundle fileName\n\n\n</td></tr>\n<tr><td>\n\n[options?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ target?: string; buildMode?: string; entryStrategy?: { type: [EntryStrategy](#entrystrategy)<!-- -->\\['type'\\]; }; }\n\n\n</td><td>\n\n_(Optional)_ The options used to build the manifest\n\n\n</td></tr>\n<tr><td>\n\n[platform?](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[name: string\\]: string; }\n\n\n</td><td>\n\n_(Optional)_ The platform used to build the manifest\n\n\n</td></tr>\n<tr><td>\n\n[preloader?](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\n_(Optional)_ The preloader bundle fileName\n\n\n</td></tr>\n<tr><td>\n\n[symbols](#)\n\n\n</td><td>\n\n\n</td><td>\n\n{ \\[symbolName: string\\]: [QwikSymbol](#qwiksymbol)<!-- -->; }\n\n\n</td><td>\n\nQRL symbols\n\n\n</td></tr>\n<tr><td>\n\n[version](#)\n\n\n</td><td>\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\nThe version of the manifest\n\n\n</td></tr>\n</tbody></table>",
455469
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts",
456470
"mdFile": "qwik.qwikmanifest.md"
457471
},
@@ -611,7 +625,7 @@
611625
}
612626
],
613627
"kind": "Interface",
614-
"content": "```typescript\nexport interface ResolvedManifest \n```\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[injections](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[GlobalInjections](#globalinjections)<!-- -->\\[\\]\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[manifest](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[QwikManifest](#qwikmanifest)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[mapper](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[SymbolMapper](#symbolmapper)\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>",
628+
"content": "```typescript\nexport interface ResolvedManifest \n```\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[injections](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[GlobalInjections](#globalinjections)<!-- -->\\[\\]\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[manifest](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[ServerQwikManifest](#serverqwikmanifest)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[mapper](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[SymbolMapper](#symbolmapper)\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>",
615629
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts",
616630
"mdFile": "qwik.resolvedmanifest.md"
617631
},
@@ -643,6 +657,20 @@
643657
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts",
644658
"mdFile": "qwik.segmententrystrategy.md"
645659
},
660+
{
661+
"name": "ServerQwikManifest",
662+
"id": "serverqwikmanifest",
663+
"hierarchy": [
664+
{
665+
"name": "ServerQwikManifest",
666+
"id": "serverqwikmanifest"
667+
}
668+
],
669+
"kind": "TypeAlias",
670+
"content": "The manifest values that are needed for SSR.\n\n\n```typescript\nexport type ServerQwikManifest = Pick<QwikManifest, 'manifestHash' | 'injections' | 'bundleGraph' | 'bundleGraphAsset' | 'mapping' | 'preloader' | 'core'>;\n```\n**References:** [QwikManifest](#qwikmanifest)",
671+
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts",
672+
"mdFile": "qwik.serverqwikmanifest.md"
673+
},
646674
{
647675
"name": "SingleEntryStrategy",
648676
"id": "singleentrystrategy",

packages/docs/src/routes/api/qwik-optimizer/index.mdx

Lines changed: 111 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1231,6 +1231,63 @@ Description
12311231

12321232
## preventNavigate
12331233

1234+
## QwikAsset
1235+
1236+
```typescript
1237+
export interface QwikAsset
1238+
```
1239+
1240+
<table><thead><tr><th>
1241+
1242+
Property
1243+
1244+
</th><th>
1245+
1246+
Modifiers
1247+
1248+
</th><th>
1249+
1250+
Type
1251+
1252+
</th><th>
1253+
1254+
Description
1255+
1256+
</th></tr></thead>
1257+
<tbody><tr><td>
1258+
1259+
[name](#)
1260+
1261+
</td><td>
1262+
1263+
</td><td>
1264+
1265+
string \| undefined
1266+
1267+
</td><td>
1268+
1269+
Name of the asset
1270+
1271+
</td></tr>
1272+
<tr><td>
1273+
1274+
[size](#)
1275+
1276+
</td><td>
1277+
1278+
</td><td>
1279+
1280+
number
1281+
1282+
</td><td>
1283+
1284+
Size of the asset
1285+
1286+
</td></tr>
1287+
</tbody></table>
1288+
1289+
[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts)
1290+
12341291
## QwikBuildMode
12351292

12361293
```typescript
@@ -1418,6 +1475,21 @@ Description
14181475
</th></tr></thead>
14191476
<tbody><tr><td>
14201477

1478+
[assets?](#)
1479+
1480+
</td><td>
1481+
1482+
</td><td>
1483+
1484+
\{ [fileName: string]: [QwikAsset](#qwikasset); }
1485+
1486+
</td><td>
1487+
1488+
_(Optional)_ All assets. The key is the fileName relative to the rootDir
1489+
1490+
</td></tr>
1491+
<tr><td>
1492+
14211493
[bundleGraph?](#)
14221494

14231495
</td><td>
@@ -1433,6 +1505,21 @@ _(Optional)_ All bundles in a compact graph format with probabilities
14331505
</td></tr>
14341506
<tr><td>
14351507

1508+
[bundleGraphAsset?](#)
1509+
1510+
</td><td>
1511+
1512+
</td><td>
1513+
1514+
string
1515+
1516+
</td><td>
1517+
1518+
_(Optional)_ The bundle graph fileName
1519+
1520+
</td></tr>
1521+
<tr><td>
1522+
14361523
[bundles](#)
14371524

14381525
</td><td>
@@ -1443,7 +1530,7 @@ _(Optional)_ All bundles in a compact graph format with probabilities
14431530

14441531
</td><td>
14451532

1446-
All code bundles, used to know the import graph
1533+
All code bundles, used to know the import graph. The key is the bundle fileName relative to "build/"
14471534

14481535
</td></tr>
14491536
<tr><td>
@@ -1503,7 +1590,7 @@ Content hash of the manifest, if this changes, the code changed
15031590

15041591
</td><td>
15051592

1506-
Where QRLs are located
1593+
Where QRLs are located. The key is the symbol name, the value is the bundle fileName
15071594

15081595
</td></tr>
15091596
<tr><td>
@@ -2403,7 +2490,7 @@ Description
24032490

24042491
</td><td>
24052492

2406-
[QwikManifest](#qwikmanifest)
2493+
[ServerQwikManifest](#serverqwikmanifest)
24072494

24082495
</td><td>
24092496

@@ -2663,6 +2750,27 @@ _(Optional)_
26632750

26642751
[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts)
26652752

2753+
## ServerQwikManifest
2754+
2755+
The manifest values that are needed for SSR.
2756+
2757+
```typescript
2758+
export type ServerQwikManifest = Pick<
2759+
QwikManifest,
2760+
| "manifestHash"
2761+
| "injections"
2762+
| "bundleGraph"
2763+
| "bundleGraphAsset"
2764+
| "mapping"
2765+
| "preloader"
2766+
| "core"
2767+
>;
2768+
```
2769+
2770+
**References:** [QwikManifest](#qwikmanifest)
2771+
2772+
[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/optimizer/src/types.ts)
2773+
26662774
## SingleEntryStrategy
26672775

26682776
```typescript

packages/docs/src/routes/api/qwik-server/api.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@
180180
}
181181
],
182182
"kind": "Interface",
183-
"content": "```typescript\nexport interface RenderResult \n```\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[isStatic](#)\n\n\n</td><td>\n\n\n</td><td>\n\nboolean\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[manifest?](#)\n\n\n</td><td>\n\n\n</td><td>\n\nQwikManifest\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n<tr><td>\n\n[prefetchResources](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[PrefetchResource](#prefetchresource)<!-- -->\\[\\]\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[snapshotResult](#)\n\n\n</td><td>\n\n\n</td><td>\n\nSnapshotResult \\| undefined\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>",
183+
"content": "```typescript\nexport interface RenderResult \n```\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[isStatic](#)\n\n\n</td><td>\n\n\n</td><td>\n\nboolean\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[manifest?](#)\n\n\n</td><td>\n\n\n</td><td>\n\nServerQwikManifest\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n<tr><td>\n\n[prefetchResources](#)\n\n\n</td><td>\n\n\n</td><td>\n\n[PrefetchResource](#prefetchresource)<!-- -->\\[\\]\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[snapshotResult](#)\n\n\n</td><td>\n\n\n</td><td>\n\nSnapshotResult \\| undefined\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>",
184184
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/server/types.ts",
185185
"mdFile": "qwik.renderresult.md"
186186
},
@@ -362,7 +362,7 @@
362362
}
363363
],
364364
"kind": "TypeAlias",
365-
"content": "Auto: Prefetch all possible QRLs used by the document. Default\n\n\n```typescript\nexport type SymbolsToPrefetch = 'auto' | ((opts: {\n manifest: QwikManifest;\n}) => PrefetchResource[]);\n```\n**References:** [PrefetchResource](#prefetchresource)",
365+
"content": "Auto: Prefetch all possible QRLs used by the document. Default\n\n\n```typescript\nexport type SymbolsToPrefetch = 'auto' | ((opts: {\n manifest: ServerQwikManifest;\n}) => PrefetchResource[]);\n```\n**References:** [PrefetchResource](#prefetchresource)",
366366
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/server/types.ts",
367367
"mdFile": "qwik.symbolstoprefetch.md"
368368
},

packages/docs/src/routes/api/qwik-server/index.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ boolean
832832

833833
</td><td>
834834

835-
QwikManifest
835+
ServerQwikManifest
836836

837837
</td><td>
838838

@@ -1312,7 +1312,7 @@ Auto: Prefetch all possible QRLs used by the document. Default
13121312
```typescript
13131313
export type SymbolsToPrefetch =
13141314
| "auto"
1315-
| ((opts: { manifest: QwikManifest }) => PrefetchResource[]);
1315+
| ((opts: { manifest: ServerQwikManifest }) => PrefetchResource[]);
13161316
```
13171317
13181318
**References:** [PrefetchResource](#prefetchresource)

packages/docs/src/routes/docs/(qwik)/advanced/custom-build-dir/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export default defineConfig(() => {
7272
outDir: 'resources/', // This is the right setting
7373
},
7474
}),
75-
tsconfigPaths(),
75+
tsconfigPaths({ root: '.' }),
7676
],
7777
};
7878
});

packages/docs/src/routes/docs/(qwik)/advanced/vite/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import tsconfigPaths from 'vite-tsconfig-paths';
3737

3838
export default defineConfig(() => {
3939
return {
40-
plugins: [qwikCity(), qwikVite(), tsconfigPaths()],
40+
plugins: [qwikCity(), qwikVite(), tsconfigPaths({ root: '.' })],
4141
};
4242
});
4343
```

0 commit comments

Comments
 (0)