@adonis-agora/agent 0.78.0 → 0.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/src/genui/index.d.ts +8 -0
- package/dist/src/genui/index.d.ts.map +1 -1
- package/dist/src/genui/index.js +13 -3
- package/dist/src/genui/index.js.map +1 -1
- package/dist/src/genui/kit/adonis.d.ts +20 -2
- package/dist/src/genui/kit/adonis.d.ts.map +1 -1
- package/dist/src/genui/kit/adonis.js +15 -5
- package/dist/src/genui/kit/adonis.js.map +1 -1
- package/dist/src/genui/kit/discover.d.ts +15 -1
- package/dist/src/genui/kit/discover.d.ts.map +1 -1
- package/dist/src/genui/kit/discover.js +19 -4
- package/dist/src/genui/kit/discover.js.map +1 -1
- package/dist/src/genui/kit/index.d.ts +3 -3
- package/dist/src/genui/kit/index.d.ts.map +1 -1
- package/dist/src/genui/kit/index.js +2 -2
- package/dist/src/genui/kit/index.js.map +1 -1
- package/dist/src/genui/kit/plugin.d.ts +26 -0
- package/dist/src/genui/kit/plugin.d.ts.map +1 -1
- package/dist/src/genui/kit/plugin.js +55 -10
- package/dist/src/genui/kit/plugin.js.map +1 -1
- package/dist/src/genui/kit/styles.d.ts +27 -0
- package/dist/src/genui/kit/styles.d.ts.map +1 -1
- package/dist/src/genui/kit/styles.js +29 -1
- package/dist/src/genui/kit/styles.js.map +1 -1
- package/dist/src/genui/sandbox-kit.d.ts +3 -1
- package/dist/src/genui/sandbox-kit.d.ts.map +1 -1
- package/dist/src/genui/sandbox-kit.js +1 -1
- package/dist/src/genui/sandbox-kit.js.map +1 -1
- package/dist/src/genui/sandbox-styles.d.ts +41 -4
- package/dist/src/genui/sandbox-styles.d.ts.map +1 -1
- package/dist/src/genui/sandbox-styles.js +287 -37
- package/dist/src/genui/sandbox-styles.js.map +1 -1
- package/dist/src/genui/sandbox.d.ts +44 -0
- package/dist/src/genui/sandbox.d.ts.map +1 -1
- package/dist/src/genui/sandbox.js +108 -25
- package/dist/src/genui/sandbox.js.map +1 -1
- package/dist/src/hooks/genui_kit.d.ts +2 -0
- package/dist/src/hooks/genui_kit.d.ts.map +1 -1
- package/dist/src/hooks/genui_kit.js +2 -1
- package/dist/src/hooks/genui_kit.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/react/core/genui/sandbox-assets.d.ts +1 -0
- package/dist/src/react/core/genui/sandbox-assets.d.ts.map +1 -1
- package/dist/src/react/core/genui/sandbox-assets.js +8 -7
- package/dist/src/react/core/genui/sandbox-assets.js.map +1 -1
- package/dist/src/react/core/genui/sandbox.d.ts +7 -0
- package/dist/src/react/core/genui/sandbox.d.ts.map +1 -1
- package/dist/src/react/core/genui/sandbox.js +35 -4
- package/dist/src/react/core/genui/sandbox.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @adonis-agora/agent
|
|
2
2
|
|
|
3
|
+
## 0.79.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#368](https://github.com/DavideCarvalho/adonis-agora-agent/pull/368) [`090c31b`](https://github.com/DavideCarvalho/adonis-agora-agent/commit/090c31b209b7098e760a56a4041db68f641030ff) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - genui sandbox: lighter frames, purged kit styles, overlays that fit, and several kits per app.
|
|
8
|
+
|
|
9
|
+
- **Shared assets (new default).** A page fetches the kit, its styles and the Tailwind runtime once; each sandbox `srcdoc` now carries only placeholders for them, asks its host (`agora:sandbox:load`) and gets their text (`agora:sandbox:assets`), put in inline elements under the same CSP as before (no `blob:`, no network, no `allow-same-origin`). Five Lastro-kit sandboxes went from 5.36 MB of HTML to 0.25 MB, with less browser memory. `createSandboxRenderer({ assets: 'inline' })` keeps the old behaviour; React Native keeps inlining. New: `SandboxDocumentOptions.sharedAssets`, `SANDBOX_MESSAGE.load` / `.assets`, `sandboxSharedAssetsWanted()`.
|
|
10
|
+
- **Purged kit styles.** `genuiSandboxKit({ purge })`, on by default: with Tailwind v4, the utilities layer keeps only what the kit's code names (the frame's runtime generates the rest); Tailwind v3 drops rules naming classes the kit does not use; other CSS drops unused CSS-modules classes. `purge: false` ships everything, `{ safelist }` keeps more. New: `purgeCss()`, `classTokensOf()`, `purgeSandboxKitStyles()`.
|
|
11
|
+
- **Complete class vocabulary.** Non-Tailwind stylesheets are described as patterns (`m{,b,e,s,t,x,y}-{0..5,auto}`) instead of a list capped at 600 names: all of Bootstrap's 2,025 classes, spacing included, in about 10 KB. `extractCssVocabulary` gains `maxChars` (default 12,000); `maxClasses` / `maxPerFamily` now default to no cap.
|
|
12
|
+
- **Overlays grow the frame.** An open dialog, menu or popover (portals, `position: fixed`, `<dialog open>`, `:popover-open`, ARIA roles) counts in the frame's height while it is open, and the frame shrinks back once it closes, so a tall MUI `Dialog` or Radix `Popover` is no longer clipped.
|
|
13
|
+
- **See-through frame page.** The frame's `html`/`body` stay transparent whatever a kit's baseline paints (MUI `CssBaseline`, Bootstrap reboot): no more box of the theme's background beside a narrower card.
|
|
14
|
+
- **Named kits.** `genuiSandboxKit({ name })` builds several kits in one app, each under `/@genui-sandbox-kit/<name>/`, its own descriptor and manifest keys; the server picks one with `kitName` (`sandbox: { kit: true, kitName }`, `defineSandbox({ kitName })`), and named discovery is available for per-request choices.
|
|
15
|
+
- **Kit urls for a hook-only setup.** `genui({ sandboxKit: { kitUrl, cssUrl, tailwindUrl } })` tells the browser where an SPA serves the kit when the assembler hook (`genuiKitHook`) wrote docs without urls — the same options as Nest's `sandboxKit`, which gains `cssUrl` and `tailwindUrl`. `sandboxKitDiscovery` takes all three.
|
|
16
|
+
|
|
3
17
|
## 0.78.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* renderers and UI tools. The same local definitions can be imported by browser code.
|
|
4
4
|
*/
|
|
5
5
|
import { type GenuiFactory } from './factory.js';
|
|
6
|
+
import type { AdonisSandboxKitUrls } from './kit/adonis.js';
|
|
6
7
|
import { type Catalog, type GenuiCatalogScope, type GenuiToolsOptions } from './public.js';
|
|
7
8
|
import { type DefineSandboxOptions } from './sandbox.js';
|
|
8
9
|
export { AgentGenui, type GenuiFactory, type GenuiFactoryContext, type GenuiSetup, } from './factory.js';
|
|
@@ -34,6 +35,13 @@ export interface GenuiOptions extends Omit<GenuiToolsOptions, 'resolveCatalog'>
|
|
|
34
35
|
* catalog file) so the renderer enforces the same policy.
|
|
35
36
|
*/
|
|
36
37
|
sandbox?: boolean | DefineSandboxOptions;
|
|
38
|
+
/**
|
|
39
|
+
* Where the kit's assets are when this process cannot find them through Vite: a separate SPA
|
|
40
|
+
* that builds them with `genuiSandboxKit()` and serves them itself, while the assembler hook
|
|
41
|
+
* (`genuiKitHook`) writes the docs here. `{ kitUrl: '/spa/assets/genui-sandbox-kit.js', cssUrl,
|
|
42
|
+
* tailwindUrl }` — urls the browser can fetch (same origin, or CORS-enabled).
|
|
43
|
+
*/
|
|
44
|
+
sandboxKit?: AdonisSandboxKitUrls;
|
|
37
45
|
}
|
|
38
46
|
/**
|
|
39
47
|
* Generative UI for `config/agent.ts`:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAE5B;;;;GAIG;AACH,8BAAsB,oBAAoB;IACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED,KAAK,cAAc,GACf,oBAAoB,GACpB,CAAC,QAAQ,MACP,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,oBAAoB,CAAC,GAC1B,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/D,iGAAiG;AACjG,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IAC7E,yGAAyG;IACzG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACzC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAsCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,YAAY,CAkF9D"}
|
package/dist/src/genui/index.js
CHANGED
|
@@ -20,6 +20,8 @@ function mergeSandboxClients(clients) {
|
|
|
20
20
|
for (const client of clients) {
|
|
21
21
|
const one = client();
|
|
22
22
|
merged.theme ||= one.theme;
|
|
23
|
+
if (one.name !== undefined && merged.kit === undefined && one.kit !== undefined)
|
|
24
|
+
merged.name = one.name;
|
|
23
25
|
if (one.kit !== undefined)
|
|
24
26
|
merged.kit ??= one.kit;
|
|
25
27
|
if (one.css !== undefined)
|
|
@@ -61,12 +63,12 @@ async function resolveCatalogFn(resolver, ctx) {
|
|
|
61
63
|
*/
|
|
62
64
|
export function genui(options = {}) {
|
|
63
65
|
return async (ctx) => {
|
|
64
|
-
const { catalog: given, resolver, sandbox: asked, channels: askedChannels, ...rest } = options;
|
|
66
|
+
const { catalog: given, resolver, sandbox: asked, channels: askedChannels, sandboxKit: _urls, ...rest } = options;
|
|
65
67
|
assertGenuiChannels(askedChannels);
|
|
66
68
|
const base = given ?? defineCatalog([]);
|
|
67
69
|
// A sandbox's kit (styles, components, wrapper) and theme names are found through the app's Vite setup.
|
|
68
70
|
const clients = [];
|
|
69
|
-
|
|
71
|
+
const discoveries = new Map();
|
|
70
72
|
const resolveSandbox = async (value) => {
|
|
71
73
|
if (value === undefined || value === false)
|
|
72
74
|
return value;
|
|
@@ -75,7 +77,15 @@ export function genui(options = {}) {
|
|
|
75
77
|
import('./kit/adonis.js'),
|
|
76
78
|
import('./kit/discover.js'),
|
|
77
79
|
]);
|
|
78
|
-
|
|
80
|
+
const kitName = value === true ? undefined : value.kitName;
|
|
81
|
+
let discovery = discoveries.get(kitName ?? '');
|
|
82
|
+
if (discovery === undefined) {
|
|
83
|
+
discovery = await adonisSandboxKitDiscovery(ctx.app, {
|
|
84
|
+
...(kitName !== undefined ? { name: kitName } : {}),
|
|
85
|
+
...(options.sandboxKit ?? {}),
|
|
86
|
+
});
|
|
87
|
+
discoveries.set(kitName ?? '', discovery);
|
|
88
|
+
}
|
|
79
89
|
const resolved = resolveSandboxServer(value, discovery);
|
|
80
90
|
clients.push(resolved.client);
|
|
81
91
|
return resolved.define;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAsB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import { type SandboxKitDiscovery } from './discover.js';
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Where the kit's assets are when this process cannot find them — an SPA built and served by its own
|
|
4
|
+
* Vite, with the assembler hook (`genuiKitHook`) writing the docs here. Same names as Nest's
|
|
5
|
+
* `sandboxKit` options.
|
|
6
|
+
*/
|
|
7
|
+
export interface AdonisSandboxKitUrls {
|
|
8
|
+
/** The kit bundle (React, the components, the wrapper): what JSX views draw with. */
|
|
9
|
+
kitUrl?: string;
|
|
10
|
+
/** The compiled styles. */
|
|
11
|
+
cssUrl?: string;
|
|
12
|
+
/** The Tailwind browser runtime (`@tailwindcss/browser`), when the styles use Tailwind. */
|
|
13
|
+
tailwindUrl?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Find the kit through the app's Vite setup. `app` is the Adonis application; `name`, a named kit's
|
|
17
|
+
* (`genuiSandboxKit({ name })`).
|
|
18
|
+
*/
|
|
19
|
+
export declare function adonisSandboxKitDiscovery(app: unknown, options?: {
|
|
20
|
+
name?: string;
|
|
21
|
+
} & AdonisSandboxKitUrls): Promise<SandboxKitDiscovery>;
|
|
4
22
|
//# sourceMappingURL=adonis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adonis.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/adonis.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,mBAAmB,EAAuB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"adonis.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/adonis.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,mBAAmB,EAAuB,MAAM,eAAe,CAAC;AAG9E;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAyB,GACrD,OAAO,CAAC,mBAAmB,CAAC,CAsC9B"}
|
|
@@ -6,8 +6,12 @@
|
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import { ADONIS_SANDBOX_KIT_DESCRIPTOR } from '../../vite/index.js';
|
|
8
8
|
import { sandboxKitDiscovery } from './discover.js';
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
import { sandboxKitDescriptorPath } from './plugin.js';
|
|
10
|
+
/**
|
|
11
|
+
* Find the kit through the app's Vite setup. `app` is the Adonis application; `name`, a named kit's
|
|
12
|
+
* (`genuiSandboxKit({ name })`).
|
|
13
|
+
*/
|
|
14
|
+
export async function adonisSandboxKitDiscovery(app, options = {}) {
|
|
11
15
|
const adonis = app;
|
|
12
16
|
const root = adonis === undefined
|
|
13
17
|
? process.cwd()
|
|
@@ -25,14 +29,20 @@ export async function adonisSandboxKitDiscovery(app) {
|
|
|
25
29
|
const buildDirectory = config.buildDirectory ?? 'public/assets';
|
|
26
30
|
return sandboxKitDiscovery({
|
|
27
31
|
root,
|
|
28
|
-
|
|
32
|
+
...(options.name !== undefined ? { name: options.name } : {}),
|
|
33
|
+
descriptor: sandboxKitDescriptorPath(ADONIS_SANDBOX_KIT_DESCRIPTOR, options.name),
|
|
29
34
|
manifest: {
|
|
30
35
|
file: config.manifestFile ?? `${buildDirectory}/.vite/manifest.json`,
|
|
31
36
|
outDir: buildDirectory,
|
|
32
37
|
},
|
|
33
|
-
plugin: () => vite
|
|
34
|
-
?.
|
|
38
|
+
plugin: () => vite
|
|
39
|
+
?.getDevServer?.()
|
|
40
|
+
?.config.plugins.find((plugin) => plugin.name === 'genui-sandbox-kit' &&
|
|
41
|
+
plugin.api?.kitName === options.name)?.api,
|
|
35
42
|
...(adonis?.inProduction !== undefined ? { production: adonis.inProduction } : {}),
|
|
43
|
+
...(options.kitUrl !== undefined ? { kitUrl: options.kitUrl } : {}),
|
|
44
|
+
...(options.cssUrl !== undefined ? { cssUrl: options.cssUrl } : {}),
|
|
45
|
+
...(options.tailwindUrl !== undefined ? { tailwindUrl: options.tailwindUrl } : {}),
|
|
36
46
|
});
|
|
37
47
|
}
|
|
38
48
|
//# sourceMappingURL=adonis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adonis.js","sourceRoot":"","sources":["../../../../src/genui/kit/adonis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAA4B,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"adonis.js","sourceRoot":"","sources":["../../../../src/genui/kit/adonis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAA4B,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAA2B,wBAAwB,EAAE,MAAM,aAAa,CAAC;AA2BhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,GAAY,EACZ,OAAO,GAA6C,EAAE;IAEtD,MAAM,MAAM,GAAG,GAAgC,CAAC;IAChD,MAAM,IAAI,GACR,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACf,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,CAAC,CAAC,MAAM,CAAC,OAAO;YAChB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAiC,CAAC;IACtC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAgC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GACV,MAAM,EAAE,MAAM,CAAC,GAAG,CAAqD,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3F,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,eAAe,CAAC;IAChE,OAAO,mBAAmB,CAAC;QACzB,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,UAAU,EAAE,wBAAwB,CAAC,6BAA6B,EAAE,OAAO,CAAC,IAAI,CAAC;QACjF,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,GAAG,cAAc,sBAAsB;YACpE,MAAM,EAAE,cAAc;SACvB;QACD,MAAM,EAAE,GAAG,EAAE,CACX,IAAI;YACF,EAAE,YAAY,EAAE,EAAE;YAClB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CACnB,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,IAAI,KAAK,mBAAmB;YAClC,MAAM,CAAC,GAAsC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAC3E,EAAE,GAAqC;QAC5C,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -4,6 +4,11 @@ import { type GenuiSandboxKitApi } from './plugin.js';
|
|
|
4
4
|
export interface SandboxKitDiscoveryOptions {
|
|
5
5
|
/** The app root (relative paths below resolve against it). */
|
|
6
6
|
root: string;
|
|
7
|
+
/**
|
|
8
|
+
* The kit's name (`genuiSandboxKit({ name })`): its manifest keys. `descriptor` and `plugin` are
|
|
9
|
+
* given for that kit already. Unnamed: the app's one kit.
|
|
10
|
+
*/
|
|
11
|
+
name?: string;
|
|
7
12
|
/** The descriptor the dev plugin (or a docs generator) writes. */
|
|
8
13
|
descriptor?: string;
|
|
9
14
|
/** The production manifest, and the directory its `file`s are relative to. */
|
|
@@ -18,10 +23,19 @@ export interface SandboxKitDiscoveryOptions {
|
|
|
18
23
|
* descriptor and the build's descriptor was written last. Default: `NODE_ENV === 'production'`.
|
|
19
24
|
*/
|
|
20
25
|
production?: boolean;
|
|
21
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Explicit asset urls, over what is found: for an app whose Vite does not run in the server
|
|
28
|
+
* process (an SPA built and served elsewhere), where the descriptor the assembler hook / codegen
|
|
29
|
+
* writes has docs but no urls. `kitUrl`: the kit bundle (React, the components); `cssUrl`: the
|
|
30
|
+
* compiled styles; `tailwindUrl`: the Tailwind browser runtime.
|
|
31
|
+
*/
|
|
22
32
|
kitUrl?: string;
|
|
33
|
+
cssUrl?: string;
|
|
34
|
+
tailwindUrl?: string;
|
|
23
35
|
}
|
|
24
36
|
export interface SandboxKitDiscovery {
|
|
37
|
+
/** The kit's name, for a named kit. */
|
|
38
|
+
readonly name?: string;
|
|
25
39
|
/** What is known now: docs, theme names, asset urls — `null` when nothing was found. */
|
|
26
40
|
descriptor(): SandboxKitDescriptor | null;
|
|
27
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/discover.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAkB,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/discover.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAkB,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,aAAa,CAAC;AAE9E,MAAM,WAAW,0BAA0B;IACzC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,kBAAkB,GAAG,SAAS,CAAC;IAC9C;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,UAAU,IAAI,oBAAoB,GAAG,IAAI,CAAC;CAC3C;AAoBD,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,CAwE5F;AAED,0EAA0E;AAC1E,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,MAAM,EAAE,oBAAoB,CAAC;IAC7B,kDAAkD;IAClD,MAAM,IAAI,mBAAmB,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,GAAG,oBAAoB,EACpC,SAAS,EAAE,mBAAmB,GAC7B,qBAAqB,CA6BvB"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
8
8
|
import { join, resolve } from 'node:path';
|
|
9
|
-
import {
|
|
9
|
+
import { sandboxKitManifestKeys } from './plugin.js';
|
|
10
10
|
function readJson(path) {
|
|
11
11
|
try {
|
|
12
12
|
return JSON.parse(readFileSync(path, 'utf8'));
|
|
@@ -50,7 +50,7 @@ export function sandboxKitDiscovery(options) {
|
|
|
50
50
|
if (options.manifest === undefined)
|
|
51
51
|
return null;
|
|
52
52
|
const manifest = cached(resolve(options.root, options.manifest.file));
|
|
53
|
-
const file = manifest?.[
|
|
53
|
+
const file = manifest?.[sandboxKitManifestKeys(options.name).descriptor]?.file;
|
|
54
54
|
if (file === undefined)
|
|
55
55
|
return null;
|
|
56
56
|
const path = join(resolve(options.root, options.manifest.outDir), file);
|
|
@@ -81,11 +81,25 @@ export function sandboxKitDiscovery(options) {
|
|
|
81
81
|
return dev.mtime >= built.mtime ? dev.value : built.value;
|
|
82
82
|
};
|
|
83
83
|
return {
|
|
84
|
+
...(options.name !== undefined ? { name: options.name } : {}),
|
|
84
85
|
descriptor() {
|
|
85
86
|
const found = find();
|
|
86
|
-
if (found === null ||
|
|
87
|
+
if (found === null ||
|
|
88
|
+
(options.kitUrl === undefined &&
|
|
89
|
+
options.cssUrl === undefined &&
|
|
90
|
+
options.tailwindUrl === undefined))
|
|
87
91
|
return found;
|
|
88
|
-
|
|
92
|
+
const assets = { ...found.assets };
|
|
93
|
+
if (options.kitUrl !== undefined)
|
|
94
|
+
assets.kit = { url: options.kitUrl };
|
|
95
|
+
if (options.cssUrl !== undefined)
|
|
96
|
+
assets.css = { url: options.cssUrl };
|
|
97
|
+
if (options.tailwindUrl !== undefined)
|
|
98
|
+
assets.tailwind = {
|
|
99
|
+
url: options.tailwindUrl,
|
|
100
|
+
...(found.assets.tailwind?.css !== undefined ? { css: found.assets.tailwind.css } : {}),
|
|
101
|
+
};
|
|
102
|
+
return { ...found, ...(options.kitUrl !== undefined ? { jsx: true } : {}), assets };
|
|
89
103
|
},
|
|
90
104
|
};
|
|
91
105
|
}
|
|
@@ -117,6 +131,7 @@ export function resolveSandboxServer(sandbox, discovery) {
|
|
|
117
131
|
const assets = kitOn ? discovery.descriptor()?.assets : undefined;
|
|
118
132
|
return {
|
|
119
133
|
theme: themeOn,
|
|
134
|
+
...(assets !== undefined && discovery.name !== undefined ? { name: discovery.name } : {}),
|
|
120
135
|
...(assets?.kit ? { kit: assets.kit } : {}),
|
|
121
136
|
...(assets?.css ? { css: assets.css } : {}),
|
|
122
137
|
...(assets?.tailwind ? { tailwind: assets.tailwind } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../../src/genui/kit/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAA2B,
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../../src/genui/kit/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* docs generated from their types, the bundle, and finding all of it at runtime. The Vite plugin is
|
|
4
4
|
* `@adonis-agora/agent/vite`; the assembler hook `@adonis-agora/agent/hooks/genui_kit`.
|
|
5
5
|
*/
|
|
6
|
-
export { adonisSandboxKitDiscovery } from './adonis.js';
|
|
6
|
+
export { type AdonisSandboxKitUrls, adonisSandboxKitDiscovery } from './adonis.js';
|
|
7
7
|
export { type BuildSandboxKitOptions, buildSandboxKitBundle, kitDocsFromBundle, type SandboxKitBundle, } from './bundle.js';
|
|
8
8
|
export { type ResolvedSandboxServer, resolveSandboxServer, type SandboxKitDiscovery, type SandboxKitDiscoveryOptions, sandboxKitDiscovery, } from './discover.js';
|
|
9
9
|
export { type GenerateSandboxKitDocsOptions, generateSandboxKitDocs } from './docs.js';
|
|
10
10
|
export { assertNoLegacyKitOptions, DEFAULT_KIT_DIRS, globFiles, globToRegExp, resolveSandboxKitFiles, resolveSandboxKitWrapper, type SandboxKitFiles, type SandboxKitSourceOptions, } from './files.js';
|
|
11
|
-
export { createGenuiSandboxKitPlugin, type GenuiSandboxKitApi, type GenuiSandboxKitDefaults, type GenuiSandboxKitOptions, type GenuiSandboxKitPlugin, SANDBOX_KIT_DEV_PREFIX, SANDBOX_KIT_MANIFEST_KEYS, SANDBOX_KIT_UPDATE_EVENT, } from './plugin.js';
|
|
12
|
-
export { type BuildSandboxKitStylesOptions, buildSandboxKitStyles, collectStyleSources, discoverStyleEntries, readStylesGuide, resolveStyleEntries, resolveStyleImport, type SandboxKitStyles, STYLE_EXTENSIONS, type StyleSource, } from './styles.js';
|
|
11
|
+
export { createGenuiSandboxKitPlugin, type GenuiSandboxKitApi, type GenuiSandboxKitDefaults, type GenuiSandboxKitOptions, type GenuiSandboxKitPlugin, SANDBOX_KIT_DEV_PREFIX, SANDBOX_KIT_MANIFEST_KEYS, SANDBOX_KIT_UPDATE_EVENT, sandboxKitDescriptorPath, sandboxKitManifestKeys, } from './plugin.js';
|
|
12
|
+
export { type BuildSandboxKitStylesOptions, buildSandboxKitStyles, collectStyleSources, discoverStyleEntries, purgeSandboxKitStyles, readStylesGuide, resolveStyleEntries, resolveStyleImport, type SandboxKitPurgeOption, type SandboxKitStyles, STYLE_EXTENSIONS, type StyleSource, } from './styles.js';
|
|
13
13
|
export { type WriteSandboxKitDocsOptions, writeSandboxKitDocs } from './write.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EACL,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACvF,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,uBAAuB,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,2BAA2B,EAC3B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -8,7 +8,7 @@ export { buildSandboxKitBundle, kitDocsFromBundle, } from './bundle.js';
|
|
|
8
8
|
export { resolveSandboxServer, sandboxKitDiscovery, } from './discover.js';
|
|
9
9
|
export { generateSandboxKitDocs } from './docs.js';
|
|
10
10
|
export { assertNoLegacyKitOptions, DEFAULT_KIT_DIRS, globFiles, globToRegExp, resolveSandboxKitFiles, resolveSandboxKitWrapper, } from './files.js';
|
|
11
|
-
export { createGenuiSandboxKitPlugin, SANDBOX_KIT_DEV_PREFIX, SANDBOX_KIT_MANIFEST_KEYS, SANDBOX_KIT_UPDATE_EVENT, } from './plugin.js';
|
|
12
|
-
export { buildSandboxKitStyles, collectStyleSources, discoverStyleEntries, readStylesGuide, resolveStyleEntries, resolveStyleImport, STYLE_EXTENSIONS, } from './styles.js';
|
|
11
|
+
export { createGenuiSandboxKitPlugin, SANDBOX_KIT_DEV_PREFIX, SANDBOX_KIT_MANIFEST_KEYS, SANDBOX_KIT_UPDATE_EVENT, sandboxKitDescriptorPath, sandboxKitManifestKeys, } from './plugin.js';
|
|
12
|
+
export { buildSandboxKitStyles, collectStyleSources, discoverStyleEntries, purgeSandboxKitStyles, readStylesGuide, resolveStyleEntries, resolveStyleImport, STYLE_EXTENSIONS, } from './styles.js';
|
|
13
13
|
export { writeSandboxKitDocs } from './write.js';
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/genui/kit/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/genui/kit/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA6B,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAEL,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,oBAAoB,EAGpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAsC,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACvF,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,GAGzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,2BAA2B,EAK3B,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAGlB,gBAAgB,GAEjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAmC,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import type { Plugin } from 'vite';
|
|
2
2
|
import type { SandboxKitDescriptor } from '../sandbox-kit.js';
|
|
3
3
|
import { type SandboxKitSourceOptions } from './files.js';
|
|
4
|
+
import { type SandboxKitPurgeOption } from './styles.js';
|
|
4
5
|
export interface GenuiSandboxKitOptions extends SandboxKitSourceOptions {
|
|
6
|
+
/**
|
|
7
|
+
* A name, for several kits in one app (variants of the design system, a tenant's own, an A/B
|
|
8
|
+
* test): each `genuiSandboxKit({ name })` builds its own kit, served under
|
|
9
|
+
* `/@genui-sandbox-kit/<name>/`, written to its own descriptor and listed under its own manifest
|
|
10
|
+
* keys ({@link sandboxKitManifestKeys}); the server picks one by that name (`kitName`). Unnamed:
|
|
11
|
+
* the app's one kit.
|
|
12
|
+
*/
|
|
13
|
+
name?: string;
|
|
5
14
|
/**
|
|
6
15
|
* The app's style entry files — plain CSS, Sass/Less, PostCSS, CSS modules, a `.scss` importing
|
|
7
16
|
* Bootstrap, a Tailwind v3/v4 stylesheet… — compiled with the app's Vite CSS pipeline and inlined
|
|
@@ -26,6 +35,15 @@ export interface GenuiSandboxKitOptions extends SandboxKitSourceOptions {
|
|
|
26
35
|
inlineAssetLimit?: number;
|
|
27
36
|
/** Most bytes of fonts and images inlined in all. Default 1 MB. */
|
|
28
37
|
inlineAssetBudget?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Take out of the compiled styles what the frame can never use (default on): with Tailwind v4,
|
|
40
|
+
* every utility the kit's own code does not name (the frame's Tailwind runtime generates the
|
|
41
|
+
* ones the model writes; the theme, base and components layers stay); with Tailwind v3, every
|
|
42
|
+
* rule naming a class the kit does not use; with other CSS, generated CSS-modules classes the kit
|
|
43
|
+
* does not use. `false` ships the whole stylesheet; `{ safelist }` keeps more classes (names or
|
|
44
|
+
* patterns) — say, a Tailwind plugin's utilities the model is told about in `stylesDocs`.
|
|
45
|
+
*/
|
|
46
|
+
purge?: SandboxKitPurgeOption;
|
|
29
47
|
}
|
|
30
48
|
/** The library-specific defaults the shared plugin is built with. */
|
|
31
49
|
export interface GenuiSandboxKitDefaults {
|
|
@@ -45,8 +63,16 @@ export declare const SANDBOX_KIT_MANIFEST_KEYS: {
|
|
|
45
63
|
};
|
|
46
64
|
/** The event a page gets (`window`) when the kit was rebuilt in dev. */
|
|
47
65
|
export declare const SANDBOX_KIT_UPDATE_EVENT = "genui-sandbox-kit:update";
|
|
66
|
+
/** The manifest keys a named kit's assets are listed under (`genui-sandbox-kit.<name>.js`…). */
|
|
67
|
+
export declare function sandboxKitManifestKeys(name?: string): Record<keyof typeof SANDBOX_KIT_MANIFEST_KEYS, string>;
|
|
68
|
+
/** A named kit's descriptor path, from the unnamed one's (`genui_sandbox_kit.json` → `genui_sandbox_kit.<name>.json`). */
|
|
69
|
+
export declare function sandboxKitDescriptorPath(path: string, name?: string): string;
|
|
70
|
+
/** Throws unless a kit name is a plain identifier (it goes into urls and file names). */
|
|
71
|
+
export declare function assertSandboxKitName(name: unknown): asserts name is string | undefined;
|
|
48
72
|
/** What the plugin exposes to the server process it runs in (`plugin.api`). */
|
|
49
73
|
export interface GenuiSandboxKitApi {
|
|
74
|
+
/** The kit's name (`genuiSandboxKit({ name })`), `undefined` for the unnamed one. */
|
|
75
|
+
readonly kitName?: string | undefined;
|
|
50
76
|
/** The current descriptor (dev), once the first build is done. */
|
|
51
77
|
descriptor(): SandboxKitDescriptor | null;
|
|
52
78
|
/** Resolves when the first build is done. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/plugin.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAA0B,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAItF,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/genui/kit/plugin.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAA0B,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAItF,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAML,KAAK,qBAAqB,EAK3B,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACpC,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,yHAAyH;IACzH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,8CAA8C;AAC9C,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAC5D,yDAAyD;AACzD,eAAO,MAAM,yBAAyB;aACpC,GAAG,EAAE,sBAAsB;aAC3B,GAAG,EAAE,uBAAuB;aAC5B,QAAQ,EAAE,2BAA2B;aACrC,UAAU,EAAE,wBAAwB;CAC5B,CAAC;AACX,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,gGAAgG;AAChG,wBAAgB,sBAAsB,CACpC,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,OAAO,yBAAyB,EAAE,MAAM,CAAC,CASxD;AAED,0HAA0H;AAC1H,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,GAAG,SAAS,CAKtF;AAED,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kEAAkE;IAClE,UAAU,IAAI,oBAAoB,GAAG,IAAI,CAAC;IAC1C,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAkCD,qFAAqF;AACrF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAsBzE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,uBAAuB,GAChC,qBAAqB,CAwYvB"}
|
|
@@ -24,7 +24,7 @@ import { themeVarsFromCss } from '../sandbox-theme.js';
|
|
|
24
24
|
import { buildSandboxKitBundle, kitDocsFromBundle } from './bundle.js';
|
|
25
25
|
import { generateSandboxKitDocs } from './docs.js';
|
|
26
26
|
import { assertNoLegacyKitOptions, resolveSandboxKitFiles, } from './files.js';
|
|
27
|
-
import { buildSandboxKitStyles, discoverStyleEntries, readStylesGuide, resolveStyleEntries, STYLE_EXTENSIONS, stylesDocs, tailwindVitePluginFor, } from './styles.js';
|
|
27
|
+
import { buildSandboxKitStyles, discoverStyleEntries, purgeSandboxKitStyles, readStylesGuide, resolveStyleEntries, STYLE_EXTENSIONS, stylesDocs, tailwindVitePluginFor, } from './styles.js';
|
|
28
28
|
/** Where the dev server serves the assets. */
|
|
29
29
|
export const SANDBOX_KIT_DEV_PREFIX = '@genui-sandbox-kit/';
|
|
30
30
|
/** The Vite manifest keys the build lists them under. */
|
|
@@ -36,6 +36,24 @@ export const SANDBOX_KIT_MANIFEST_KEYS = {
|
|
|
36
36
|
};
|
|
37
37
|
/** The event a page gets (`window`) when the kit was rebuilt in dev. */
|
|
38
38
|
export const SANDBOX_KIT_UPDATE_EVENT = 'genui-sandbox-kit:update';
|
|
39
|
+
/** The manifest keys a named kit's assets are listed under (`genui-sandbox-kit.<name>.js`…). */
|
|
40
|
+
export function sandboxKitManifestKeys(name) {
|
|
41
|
+
if (name === undefined)
|
|
42
|
+
return { ...SANDBOX_KIT_MANIFEST_KEYS };
|
|
43
|
+
const keys = {};
|
|
44
|
+
for (const [key, file] of Object.entries(SANDBOX_KIT_MANIFEST_KEYS))
|
|
45
|
+
keys[key] = file.replace(/(\.[a-z]+)$/, `.${name}$1`);
|
|
46
|
+
return keys;
|
|
47
|
+
}
|
|
48
|
+
/** A named kit's descriptor path, from the unnamed one's (`genui_sandbox_kit.json` → `genui_sandbox_kit.<name>.json`). */
|
|
49
|
+
export function sandboxKitDescriptorPath(path, name) {
|
|
50
|
+
return name === undefined ? path : path.replace(/(\.json)?$/, `.${name}$1`);
|
|
51
|
+
}
|
|
52
|
+
/** Throws unless a kit name is a plain identifier (it goes into urls and file names). */
|
|
53
|
+
export function assertSandboxKitName(name) {
|
|
54
|
+
if (name !== undefined && (typeof name !== 'string' || !/^[a-z0-9][a-z0-9_-]{0,63}$/i.test(name)))
|
|
55
|
+
throw new TypeError(`genuiSandboxKit: name "${String(name)}" must be letters, digits, "-" or "_" (up to 64)`);
|
|
56
|
+
}
|
|
39
57
|
function tailwindRuntimePath() {
|
|
40
58
|
try {
|
|
41
59
|
const require = createRequire(import.meta.url);
|
|
@@ -63,8 +81,15 @@ function WORKSPACE_LINKED(path) {
|
|
|
63
81
|
}
|
|
64
82
|
/** A file a change to which may change the compiled styles. */
|
|
65
83
|
const STYLE_CHANGE = new RegExp(`(${STYLE_EXTENSIONS.map((ext) => ext.replace('.', '\\.')).join('|')}|tailwind\\.config\\.[cm]?[jt]s)$`, 'i');
|
|
84
|
+
function kib(chars) {
|
|
85
|
+
return `${Math.round(chars / 1024)} KB`;
|
|
86
|
+
}
|
|
66
87
|
export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
67
88
|
assertNoLegacyKitOptions(options, 'genuiSandboxKit');
|
|
89
|
+
// Read once: the kit's identity (its urls, files, manifest keys) does not change while it runs.
|
|
90
|
+
const kitName = options.name;
|
|
91
|
+
assertSandboxKitName(kitName);
|
|
92
|
+
const manifestKeys = sandboxKitManifestKeys(kitName);
|
|
68
93
|
let config;
|
|
69
94
|
let files = null;
|
|
70
95
|
let bundle = null;
|
|
@@ -84,7 +109,8 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
84
109
|
warned.add(message);
|
|
85
110
|
config?.logger.warn(`[genui-sandbox-kit] ${message}`);
|
|
86
111
|
};
|
|
87
|
-
const
|
|
112
|
+
const devDir = `${SANDBOX_KIT_DEV_PREFIX}${kitName === undefined ? '' : `${kitName}/`}`;
|
|
113
|
+
const devUrl = (name, hash) => `${config?.base ?? '/'}${devDir}${name}${hash ? `?v=${hash}` : ''}`;
|
|
88
114
|
/** The descriptor, given where each asset is (`null`: none). */
|
|
89
115
|
const describe = (urls) => {
|
|
90
116
|
const vars = styles !== null && Object.keys(styles.vars).length > 0 ? styles.vars : scannedVars;
|
|
@@ -120,7 +146,7 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
120
146
|
if (config === undefined)
|
|
121
147
|
return;
|
|
122
148
|
descriptor = describeDev();
|
|
123
|
-
const path = resolve(config.root, options.descriptor ?? defaults.descriptor);
|
|
149
|
+
const path = resolve(config.root, options.descriptor ?? sandboxKitDescriptorPath(defaults.descriptor, kitName));
|
|
124
150
|
try {
|
|
125
151
|
mkdirSync(dirname(path), { recursive: true });
|
|
126
152
|
writeFileSync(path, `${JSON.stringify(descriptor, null, 2)}\n`);
|
|
@@ -208,7 +234,18 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
208
234
|
return null;
|
|
209
235
|
}),
|
|
210
236
|
]);
|
|
211
|
-
|
|
237
|
+
const purge = options.purge ?? true;
|
|
238
|
+
styles =
|
|
239
|
+
builtStyles === null || purge === false
|
|
240
|
+
? builtStyles
|
|
241
|
+
: purgeSandboxKitStyles(builtStyles, {
|
|
242
|
+
...(built !== null ? { kitCode: built.code } : {}),
|
|
243
|
+
...(typeof purge === 'object' && purge.safelist !== undefined
|
|
244
|
+
? { safelist: purge.safelist }
|
|
245
|
+
: {}),
|
|
246
|
+
});
|
|
247
|
+
if (styles?.purged !== undefined)
|
|
248
|
+
config.logger.info(`[genui-sandbox-kit] styles purged: ${kib(styles.purged.before)} → ${kib(styles.css.length)}`);
|
|
212
249
|
bundle = built;
|
|
213
250
|
docs = generated ?? (built === null ? [] : kitDocsFromBundle(built.code));
|
|
214
251
|
if (generated === null && docs.length === 0 && built !== null)
|
|
@@ -219,6 +256,7 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
219
256
|
name: 'genui-sandbox-kit',
|
|
220
257
|
enforce: 'pre',
|
|
221
258
|
api: {
|
|
259
|
+
kitName,
|
|
222
260
|
descriptor: () => descriptor,
|
|
223
261
|
ready: () => ready,
|
|
224
262
|
},
|
|
@@ -271,10 +309,16 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
271
309
|
});
|
|
272
310
|
server.middlewares.use((req, res, next) => {
|
|
273
311
|
const url = String(req.url ?? '').split('?')[0] ?? '';
|
|
274
|
-
const prefix = `${config?.base ?? '/'}${
|
|
275
|
-
|
|
312
|
+
const prefix = `${config?.base ?? '/'}${devDir}`;
|
|
313
|
+
const rest = url.startsWith(prefix)
|
|
314
|
+
? url.slice(prefix.length)
|
|
315
|
+
: url.startsWith(`/${devDir}`)
|
|
316
|
+
? url.slice(devDir.length + 1)
|
|
317
|
+
: undefined;
|
|
318
|
+
// Its own files only: `<prefix>kit.js` — another kit's (`<prefix><name>/kit.js`) is not its.
|
|
319
|
+
if (rest === undefined || rest.includes('/'))
|
|
276
320
|
return next();
|
|
277
|
-
const name =
|
|
321
|
+
const name = rest;
|
|
278
322
|
void (async () => {
|
|
279
323
|
await firstBuild;
|
|
280
324
|
let body = null;
|
|
@@ -327,6 +371,7 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
327
371
|
type: 'custom',
|
|
328
372
|
event: SANDBOX_KIT_UPDATE_EVENT,
|
|
329
373
|
data: {
|
|
374
|
+
...(kitName !== undefined ? { name: kitName } : {}),
|
|
330
375
|
hash: bundle?.hash ?? null,
|
|
331
376
|
url: descriptor?.assets.kit?.url ?? null,
|
|
332
377
|
css: descriptor?.assets.css?.url ?? null,
|
|
@@ -351,8 +396,8 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
351
396
|
const emit = (key, source) => {
|
|
352
397
|
const ref = this.emitFile({
|
|
353
398
|
type: 'asset',
|
|
354
|
-
name:
|
|
355
|
-
originalFileName:
|
|
399
|
+
name: manifestKeys[key],
|
|
400
|
+
originalFileName: manifestKeys[key],
|
|
356
401
|
source,
|
|
357
402
|
});
|
|
358
403
|
const fileName = this.getFileName(ref);
|
|
@@ -377,7 +422,7 @@ export function createGenuiSandboxKitPlugin(options, defaults) {
|
|
|
377
422
|
for (const [key, file] of Object.entries(emitted)) {
|
|
378
423
|
if (file === undefined)
|
|
379
424
|
continue;
|
|
380
|
-
const name =
|
|
425
|
+
const name = manifestKeys[key];
|
|
381
426
|
manifest[name] = { file, src: name };
|
|
382
427
|
}
|
|
383
428
|
writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
|