@lukas_holdings/castdom 1.0.2 → 1.0.3
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/README.md +6 -0
- package/bin/castdom.js +0 -0
- package/dist/astro.cjs +31 -13
- package/dist/astro.cjs.map +1 -1
- package/dist/astro.d.cts +8 -4
- package/dist/astro.d.ts +8 -4
- package/dist/astro.js +25 -7
- package/dist/astro.js.map +1 -1
- package/dist/{chunk-ZBJB7WVV.js → chunk-275VEEA7.js} +4 -4
- package/dist/{chunk-ZBJB7WVV.js.map → chunk-275VEEA7.js.map} +1 -1
- package/dist/chunk-4LFW65DU.js +38 -0
- package/dist/chunk-4LFW65DU.js.map +1 -0
- package/dist/{chunk-ONS533CQ.js → chunk-6RFGWOGG.js} +3 -3
- package/dist/{chunk-ONS533CQ.js.map → chunk-6RFGWOGG.js.map} +1 -1
- package/dist/{chunk-XS5HAU5E.cjs → chunk-ASS2BFPN.cjs} +8 -8
- package/dist/{chunk-XS5HAU5E.cjs.map → chunk-ASS2BFPN.cjs.map} +1 -1
- package/dist/{chunk-ORY4OMZ5.cjs → chunk-BDIAGFG5.cjs} +4 -4
- package/dist/{chunk-ORY4OMZ5.cjs.map → chunk-BDIAGFG5.cjs.map} +1 -1
- package/dist/{chunk-QLEBTZIB.cjs → chunk-C2D4NZQB.cjs} +7 -7
- package/dist/{chunk-QLEBTZIB.cjs.map → chunk-C2D4NZQB.cjs.map} +1 -1
- package/dist/{chunk-JRQ6EVQP.cjs → chunk-C3VW72Z3.cjs} +10 -2
- package/dist/chunk-C3VW72Z3.cjs.map +1 -0
- package/dist/{chunk-O4OOMGGM.cjs → chunk-CC4LCPVY.cjs} +8 -8
- package/dist/{chunk-O4OOMGGM.cjs.map → chunk-CC4LCPVY.cjs.map} +1 -1
- package/dist/{chunk-ZWZ5ZLJE.js → chunk-GVFBT6MD.js} +3 -3
- package/dist/{chunk-ZWZ5ZLJE.js.map → chunk-GVFBT6MD.js.map} +1 -1
- package/dist/{chunk-COLESJ66.js → chunk-M4OXJTRQ.js} +3 -3
- package/dist/{chunk-COLESJ66.js.map → chunk-M4OXJTRQ.js.map} +1 -1
- package/dist/{chunk-KGLTVTHU.js → chunk-V4FV5XFF.js} +4 -4
- package/dist/{chunk-KGLTVTHU.js.map → chunk-V4FV5XFF.js.map} +1 -1
- package/dist/{chunk-YDT4TPB7.cjs → chunk-W236FF4E.cjs} +11 -11
- package/dist/{chunk-YDT4TPB7.cjs.map → chunk-W236FF4E.cjs.map} +1 -1
- package/dist/cli.js +12 -12
- package/dist/index.cjs +48 -48
- package/dist/index.js +8 -8
- package/dist/next.cjs +15 -15
- package/dist/next.cjs.map +1 -1
- package/dist/next.d.cts +3 -3
- package/dist/next.d.ts +3 -3
- package/dist/next.js +6 -6
- package/dist/next.js.map +1 -1
- package/dist/react.cjs +9 -9
- package/dist/react.js +5 -5
- package/dist/ssr.cjs +12 -12
- package/dist/ssr.js +3 -3
- package/dist/vite.cjs +3 -3
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.cts +1 -1
- package/dist/vite.d.ts +1 -1
- package/dist/vite.js +2 -2
- package/dist/vite.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-EJRNKHL5.js +0 -31
- package/dist/chunk-EJRNKHL5.js.map +0 -1
- package/dist/chunk-JRQ6EVQP.cjs.map +0 -1
package/dist/react.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { CastDOM, CastDOMStyle, react_default as default, useCastDOM } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
1
|
+
export { CastDOM, CastDOMStyle, react_default as default, useCastDOM } from './chunk-275VEEA7.js';
|
|
2
|
+
import './chunk-6RFGWOGG.js';
|
|
3
|
+
import './chunk-V4FV5XFF.js';
|
|
4
|
+
import './chunk-GVFBT6MD.js';
|
|
5
|
+
import './chunk-4LFW65DU.js';
|
|
6
6
|
//# sourceMappingURL=react.js.map
|
|
7
7
|
//# sourceMappingURL=react.js.map
|
package/dist/ssr.cjs
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
3
|
+
var chunkC2D4NZQB_cjs = require('./chunk-C2D4NZQB.cjs');
|
|
4
|
+
var chunkASS2BFPN_cjs = require('./chunk-ASS2BFPN.cjs');
|
|
5
|
+
require('./chunk-C3VW72Z3.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "renderCriticalStyleTag", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkC2D4NZQB_cjs.renderCriticalStyleTag; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "renderHydrationScript", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkC2D4NZQB_cjs.renderHydrationScript; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "renderPreloadHints", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkC2D4NZQB_cjs.renderPreloadHints; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "renderSSRFragment", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkC2D4NZQB_cjs.renderSSRFragment; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "renderSkeleton", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkC2D4NZQB_cjs.renderSkeleton; }
|
|
28
28
|
});
|
|
29
29
|
Object.defineProperty(exports, "renderSkeletons", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunkC2D4NZQB_cjs.renderSkeletons; }
|
|
32
32
|
});
|
|
33
33
|
Object.defineProperty(exports, "generateCriticalCSS", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
35
|
+
get: function () { return chunkASS2BFPN_cjs.generateCriticalCSS; }
|
|
36
36
|
});
|
|
37
37
|
Object.defineProperty(exports, "renderResponsiveHTML", {
|
|
38
38
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
39
|
+
get: function () { return chunkASS2BFPN_cjs.renderResponsiveHTML; }
|
|
40
40
|
});
|
|
41
41
|
Object.defineProperty(exports, "renderStandalone", {
|
|
42
42
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
43
|
+
get: function () { return chunkASS2BFPN_cjs.renderStandalone; }
|
|
44
44
|
});
|
|
45
45
|
//# sourceMappingURL=ssr.cjs.map
|
|
46
46
|
//# sourceMappingURL=ssr.cjs.map
|
package/dist/ssr.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { renderCriticalStyleTag, renderHydrationScript, renderPreloadHints, renderSSRFragment, renderSkeleton, renderSkeletons } from './chunk-
|
|
2
|
-
export { generateCriticalCSS, renderResponsiveHTML, renderStandalone } from './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { renderCriticalStyleTag, renderHydrationScript, renderPreloadHints, renderSSRFragment, renderSkeleton, renderSkeletons } from './chunk-M4OXJTRQ.js';
|
|
2
|
+
export { generateCriticalCSS, renderResponsiveHTML, renderStandalone } from './chunk-GVFBT6MD.js';
|
|
3
|
+
import './chunk-4LFW65DU.js';
|
|
4
4
|
//# sourceMappingURL=ssr.js.map
|
|
5
5
|
//# sourceMappingURL=ssr.js.map
|
package/dist/vite.cjs
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var chunkC3VW72Z3_cjs = require('./chunk-C3VW72Z3.cjs');
|
|
6
6
|
|
|
7
7
|
// src/adapters/vite.ts
|
|
8
8
|
var VIRTUAL_MODULE_ID = "virtual:castdom";
|
|
9
9
|
var RESOLVED_VIRTUAL_MODULE_ID = "\0virtual:castdom";
|
|
10
10
|
function castdom(options = {}) {
|
|
11
|
-
const outDir = options.outDir ??
|
|
11
|
+
const outDir = options.outDir ?? chunkC3VW72Z3_cjs.DEFAULTS.outDir;
|
|
12
12
|
let devPort = options.devPort;
|
|
13
13
|
return {
|
|
14
14
|
name: "castdom",
|
|
@@ -39,7 +39,7 @@ function castdom(options = {}) {
|
|
|
39
39
|
load(id) {
|
|
40
40
|
if (id === RESOLVED_VIRTUAL_MODULE_ID) {
|
|
41
41
|
return `
|
|
42
|
-
import { loadManifest } from "castdom";
|
|
42
|
+
import { loadManifest } from "@lukas_holdings/castdom";
|
|
43
43
|
|
|
44
44
|
let manifest;
|
|
45
45
|
try {
|
package/dist/vite.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapters/vite.ts"],"names":["DEFAULTS"],"mappings":";;;;;;;AA4DA,IAAM,iBAAA,GAAoB,iBAAA;AAC1B,IAAM,0BAAA,GAA6B,mBAAA;AAE5B,SAAS,OAAA,CAAQ,OAAA,GAA8B,EAAC,EAAe;AACpE,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAUA,0BAAA,CAAS,MAAA;AAC1C,EAAA,IAAI,UAA8B,OAAA,CAAQ,OAAA;AAG1C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,eAAe,MAAA,EAAQ;AACrB,MAAA,IAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAE9B,QAAA,OAAA,KAAY,MAAA,CAAO,QAAQ,IAAA,IAAQ,IAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAAA,IAEA,gBAAgB,MAAA,EAAQ;AACtB,MAAA,OAAA,KAAY,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,IAAA,IAAQ,IAAA;AAGzC,MAAA,MAAA,CAAO,OAAA,CAAQ,IAAI,MAAM,CAAA;AAGzB,MAAA,MAAA,CAAO,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,EAAU,KAAU,IAAA,KAAc;AACxD,QAAA,IAAI,GAAA,CAAI,QAAQ,oBAAA,EAAsB;AAEpC,UAAA,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,EAAE,cAAA,EAAgB,oBAAoB,CAAA;AACzD,UAAA,GAAA,CAAI,GAAA,CAAI,KAAK,SAAA,CAAU,EAAE,QAAQ,IAAA,EAAM,OAAA,EAAS,uBAAA,EAAyB,CAAC,CAAA;AAC1E,UAAA;AAAA,QACF;AACA,QAAA,IAAA,EAAK;AAAA,MACP,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IAEA,UAAU,EAAA,EAAI;AACZ,MAAA,IAAI,OAAO,iBAAA,EAAmB;AAC5B,QAAA,OAAO,0BAAA;AAAA,MACT;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,KAAK,EAAA,EAAI;AACP,MAAA,IAAI,OAAO,0BAAA,EAA4B;AAErC,QAAA,OAAO;AAAA;;AAAA;AAAA;AAAA,2BAAA,EAKc,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,CAAA;AAAA,MAQ7B;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAgB,GAAA,EAAK;AAEnB,MAAA,IAAI,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AAC7B,QAAA,GAAA,CAAI,MAAA,CAAO,GAAG,IAAA,CAAK;AAAA,UACjB,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,gBAAA;AAAA,UACP,IAAA,EAAM,EAAE,IAAA,EAAM,GAAA,CAAI,IAAA;AAAK,SACxB,CAAA;AAAA,MACH;AAAA,IACF;AAAA,GACF;AACF;AAMO,SAAS,cAAA,CAAe,OAAA,GAA8B,EAAC,EAAe;AAC3E,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,MAAM,UAAA,GAAa;AAGjB,MAAA,OAAA,CAAQ,IAAI,mEAAmE,CAAA;AAAA,IACjF;AAAA,GACF;AACF;AAEA,IAAO,YAAA,GAAQ","file":"vite.cjs","sourcesContent":["import type { CastDOMConfig, ExtractionTarget } from \"../core/types.js\";\nimport { DEFAULTS } from \"../core/types.js\";\n\n/**\n * Vite plugin for CastDOM.\n *\n * Features:\n * - Dev mode: live skeleton extraction from running dev server\n * - Build mode: pre-extract and embed skeleton data\n * - HMR: hot-reload skeleton changes\n * - Auto-discovery of [data-castdom] elements\n *\n * Usage:\n * ```ts\n * // vite.config.ts\n * import { castdom } from \"castdom/vite\";\n *\n * export default defineConfig({\n * plugins: [castdom()],\n * });\n * ```\n */\n\nexport interface CastDOMViteOptions {\n /** Path to castdom config file (default: \"castdom.config.json\") */\n configPath?: string;\n /** Output directory (default: \".castdom\") */\n outDir?: string;\n /** Dev server port to extract from (auto-detected if not set) */\n devPort?: number;\n /** Breakpoints to capture (default: [375, 768, 1280]) */\n breakpoints?: number[];\n /** Auto-extract on dev server start (default: false) */\n autoExtract?: boolean;\n /** Watch for changes and re-extract (default: true in dev) */\n watch?: boolean;\n /** Targets to extract (if not using config file) */\n targets?: ExtractionTarget[];\n /** Config overrides */\n config?: Partial<CastDOMConfig>;\n}\n\ninterface VitePlugin {\n name: string;\n enforce?: \"pre\" | \"post\";\n configResolved?: (config: { command: string; server?: { port?: number } }) => void;\n configureServer?: (server: ViteDevServer) => void;\n buildStart?: () => Promise<void>;\n resolveId?: (id: string) => string | null;\n load?: (id: string) => string | null;\n handleHotUpdate?: (ctx: { file: string; server: ViteDevServer }) => void;\n}\n\ninterface ViteDevServer {\n config: { server: { port?: number } };\n ws: { send: (data: unknown) => void };\n watcher: { add: (path: string) => void };\n middlewares: { use: (fn: unknown) => void };\n}\n\nconst VIRTUAL_MODULE_ID = \"virtual:castdom\";\nconst RESOLVED_VIRTUAL_MODULE_ID = \"\\0virtual:castdom\";\n\nexport function castdom(options: CastDOMViteOptions = {}): VitePlugin {\n const outDir = options.outDir ?? DEFAULTS.outDir;\n let devPort: number | undefined = options.devPort;\n let isServing = false;\n\n return {\n name: \"castdom\",\n enforce: \"pre\",\n\n configResolved(config) {\n if (config.command === \"serve\") {\n isServing = true;\n devPort ??= config.server?.port ?? 5173;\n }\n },\n\n configureServer(server) {\n devPort ??= server.config.server.port ?? 5173;\n\n // Watch the output directory for changes\n server.watcher.add(outDir);\n\n // Add dev middleware for on-demand extraction\n server.middlewares.use((req: any, res: any, next: any) => {\n if (req.url === \"/__castdom/extract\") {\n // Trigger extraction via HTTP endpoint in dev\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ status: \"ok\", message: \"Use npx castdom build\" }));\n return;\n }\n next();\n });\n },\n\n resolveId(id) {\n if (id === VIRTUAL_MODULE_ID) {\n return RESOLVED_VIRTUAL_MODULE_ID;\n }\n return null;\n },\n\n load(id) {\n if (id === RESOLVED_VIRTUAL_MODULE_ID) {\n // Provide a virtual module that loads the manifest\n return `\nimport { loadManifest } from \"castdom\";\n\nlet manifest;\ntry {\n manifest = await import(\"${outDir}/manifest.json\", { with: { type: \"json\" } });\n loadManifest(manifest.default || manifest);\n} catch (e) {\n console.warn(\"CastDOM: No manifest found. Run 'npx castdom build' to generate.\");\n}\n\nexport default manifest;\n`;\n }\n return null;\n },\n\n handleHotUpdate(ctx) {\n // Hot-reload when skeleton data changes\n if (ctx.file.includes(outDir)) {\n ctx.server.ws.send({\n type: \"custom\",\n event: \"castdom:update\",\n data: { file: ctx.file },\n });\n }\n },\n };\n}\n\n/**\n * Vite plugin for extracting skeletons during build.\n * Runs `castdom build` as part of the Vite build process.\n */\nexport function castdomExtract(options: CastDOMViteOptions = {}): VitePlugin {\n return {\n name: \"castdom-extract\",\n enforce: \"pre\",\n\n async buildStart() {\n // Only extract during build, not serve\n // The actual extraction is done via the CLI\n console.log(\"CastDOM: Ensure skeletons are up to date with 'npx castdom build'\");\n },\n };\n}\n\nexport default castdom;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/adapters/vite.ts"],"names":["DEFAULTS"],"mappings":";;;;;;;AA4DA,IAAM,iBAAA,GAAoB,iBAAA;AAC1B,IAAM,0BAAA,GAA6B,mBAAA;AAE5B,SAAS,OAAA,CAAQ,OAAA,GAA8B,EAAC,EAAe;AACpE,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAUA,0BAAA,CAAS,MAAA;AAC1C,EAAA,IAAI,UAA8B,OAAA,CAAQ,OAAA;AAG1C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,eAAe,MAAA,EAAQ;AACrB,MAAA,IAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAE9B,QAAA,OAAA,KAAY,MAAA,CAAO,QAAQ,IAAA,IAAQ,IAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAAA,IAEA,gBAAgB,MAAA,EAAQ;AACtB,MAAA,OAAA,KAAY,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,IAAA,IAAQ,IAAA;AAGzC,MAAA,MAAA,CAAO,OAAA,CAAQ,IAAI,MAAM,CAAA;AAGzB,MAAA,MAAA,CAAO,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,EAAU,KAAU,IAAA,KAAc;AACxD,QAAA,IAAI,GAAA,CAAI,QAAQ,oBAAA,EAAsB;AAEpC,UAAA,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,EAAE,cAAA,EAAgB,oBAAoB,CAAA;AACzD,UAAA,GAAA,CAAI,GAAA,CAAI,KAAK,SAAA,CAAU,EAAE,QAAQ,IAAA,EAAM,OAAA,EAAS,uBAAA,EAAyB,CAAC,CAAA;AAC1E,UAAA;AAAA,QACF;AACA,QAAA,IAAA,EAAK;AAAA,MACP,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IAEA,UAAU,EAAA,EAAI;AACZ,MAAA,IAAI,OAAO,iBAAA,EAAmB;AAC5B,QAAA,OAAO,0BAAA;AAAA,MACT;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,KAAK,EAAA,EAAI;AACP,MAAA,IAAI,OAAO,0BAAA,EAA4B;AAErC,QAAA,OAAO;AAAA;;AAAA;AAAA;AAAA,2BAAA,EAKc,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,CAAA;AAAA,MAQ7B;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAgB,GAAA,EAAK;AAEnB,MAAA,IAAI,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AAC7B,QAAA,GAAA,CAAI,MAAA,CAAO,GAAG,IAAA,CAAK;AAAA,UACjB,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,gBAAA;AAAA,UACP,IAAA,EAAM,EAAE,IAAA,EAAM,GAAA,CAAI,IAAA;AAAK,SACxB,CAAA;AAAA,MACH;AAAA,IACF;AAAA,GACF;AACF;AAMO,SAAS,cAAA,CAAe,OAAA,GAA8B,EAAC,EAAe;AAC3E,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,MAAM,UAAA,GAAa;AAGjB,MAAA,OAAA,CAAQ,IAAI,mEAAmE,CAAA;AAAA,IACjF;AAAA,GACF;AACF;AAEA,IAAO,YAAA,GAAQ","file":"vite.cjs","sourcesContent":["import type { CastDOMConfig, ExtractionTarget } from \"../core/types.js\";\nimport { DEFAULTS } from \"../core/types.js\";\n\n/**\n * Vite plugin for CastDOM.\n *\n * Features:\n * - Dev mode: live skeleton extraction from running dev server\n * - Build mode: pre-extract and embed skeleton data\n * - HMR: hot-reload skeleton changes\n * - Auto-discovery of [data-castdom] elements\n *\n * Usage:\n * ```ts\n * // vite.config.ts\n * import { castdom } from \"@lukas_holdings/castdom/vite\";\n *\n * export default defineConfig({\n * plugins: [castdom()],\n * });\n * ```\n */\n\nexport interface CastDOMViteOptions {\n /** Path to castdom config file (default: \"castdom.config.json\") */\n configPath?: string;\n /** Output directory (default: \".castdom\") */\n outDir?: string;\n /** Dev server port to extract from (auto-detected if not set) */\n devPort?: number;\n /** Breakpoints to capture (default: [375, 768, 1280]) */\n breakpoints?: number[];\n /** Auto-extract on dev server start (default: false) */\n autoExtract?: boolean;\n /** Watch for changes and re-extract (default: true in dev) */\n watch?: boolean;\n /** Targets to extract (if not using config file) */\n targets?: ExtractionTarget[];\n /** Config overrides */\n config?: Partial<CastDOMConfig>;\n}\n\ninterface VitePlugin {\n name: string;\n enforce?: \"pre\" | \"post\";\n configResolved?: (config: { command: string; server?: { port?: number } }) => void;\n configureServer?: (server: ViteDevServer) => void;\n buildStart?: () => Promise<void>;\n resolveId?: (id: string) => string | null;\n load?: (id: string) => string | null;\n handleHotUpdate?: (ctx: { file: string; server: ViteDevServer }) => void;\n}\n\ninterface ViteDevServer {\n config: { server: { port?: number } };\n ws: { send: (data: unknown) => void };\n watcher: { add: (path: string) => void };\n middlewares: { use: (fn: unknown) => void };\n}\n\nconst VIRTUAL_MODULE_ID = \"virtual:castdom\";\nconst RESOLVED_VIRTUAL_MODULE_ID = \"\\0virtual:castdom\";\n\nexport function castdom(options: CastDOMViteOptions = {}): VitePlugin {\n const outDir = options.outDir ?? DEFAULTS.outDir;\n let devPort: number | undefined = options.devPort;\n let isServing = false;\n\n return {\n name: \"castdom\",\n enforce: \"pre\",\n\n configResolved(config) {\n if (config.command === \"serve\") {\n isServing = true;\n devPort ??= config.server?.port ?? 5173;\n }\n },\n\n configureServer(server) {\n devPort ??= server.config.server.port ?? 5173;\n\n // Watch the output directory for changes\n server.watcher.add(outDir);\n\n // Add dev middleware for on-demand extraction\n server.middlewares.use((req: any, res: any, next: any) => {\n if (req.url === \"/__castdom/extract\") {\n // Trigger extraction via HTTP endpoint in dev\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ status: \"ok\", message: \"Use npx castdom build\" }));\n return;\n }\n next();\n });\n },\n\n resolveId(id) {\n if (id === VIRTUAL_MODULE_ID) {\n return RESOLVED_VIRTUAL_MODULE_ID;\n }\n return null;\n },\n\n load(id) {\n if (id === RESOLVED_VIRTUAL_MODULE_ID) {\n // Provide a virtual module that loads the manifest\n return `\nimport { loadManifest } from \"@lukas_holdings/castdom\";\n\nlet manifest;\ntry {\n manifest = await import(\"${outDir}/manifest.json\", { with: { type: \"json\" } });\n loadManifest(manifest.default || manifest);\n} catch (e) {\n console.warn(\"CastDOM: No manifest found. Run 'npx castdom build' to generate.\");\n}\n\nexport default manifest;\n`;\n }\n return null;\n },\n\n handleHotUpdate(ctx) {\n // Hot-reload when skeleton data changes\n if (ctx.file.includes(outDir)) {\n ctx.server.ws.send({\n type: \"custom\",\n event: \"castdom:update\",\n data: { file: ctx.file },\n });\n }\n },\n };\n}\n\n/**\n * Vite plugin for extracting skeletons during build.\n * Runs `castdom build` as part of the Vite build process.\n */\nexport function castdomExtract(options: CastDOMViteOptions = {}): VitePlugin {\n return {\n name: \"castdom-extract\",\n enforce: \"pre\",\n\n async buildStart() {\n // Only extract during build, not serve\n // The actual extraction is done via the CLI\n console.log(\"CastDOM: Ensure skeletons are up to date with 'npx castdom build'\");\n },\n };\n}\n\nexport default castdom;\n"]}
|
package/dist/vite.d.cts
CHANGED
|
@@ -12,7 +12,7 @@ import { f as ExtractionTarget, C as CastDOMConfig } from './types-ChD5jENU.cjs'
|
|
|
12
12
|
* Usage:
|
|
13
13
|
* ```ts
|
|
14
14
|
* // vite.config.ts
|
|
15
|
-
* import { castdom } from "castdom/vite";
|
|
15
|
+
* import { castdom } from "@lukas_holdings/castdom/vite";
|
|
16
16
|
*
|
|
17
17
|
* export default defineConfig({
|
|
18
18
|
* plugins: [castdom()],
|
package/dist/vite.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { f as ExtractionTarget, C as CastDOMConfig } from './types-ChD5jENU.js';
|
|
|
12
12
|
* Usage:
|
|
13
13
|
* ```ts
|
|
14
14
|
* // vite.config.ts
|
|
15
|
-
* import { castdom } from "castdom/vite";
|
|
15
|
+
* import { castdom } from "@lukas_holdings/castdom/vite";
|
|
16
16
|
*
|
|
17
17
|
* export default defineConfig({
|
|
18
18
|
* plugins: [castdom()],
|
package/dist/vite.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULTS } from './chunk-
|
|
1
|
+
import { DEFAULTS } from './chunk-4LFW65DU.js';
|
|
2
2
|
|
|
3
3
|
// src/adapters/vite.ts
|
|
4
4
|
var VIRTUAL_MODULE_ID = "virtual:castdom";
|
|
@@ -35,7 +35,7 @@ function castdom(options = {}) {
|
|
|
35
35
|
load(id) {
|
|
36
36
|
if (id === RESOLVED_VIRTUAL_MODULE_ID) {
|
|
37
37
|
return `
|
|
38
|
-
import { loadManifest } from "castdom";
|
|
38
|
+
import { loadManifest } from "@lukas_holdings/castdom";
|
|
39
39
|
|
|
40
40
|
let manifest;
|
|
41
41
|
try {
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapters/vite.ts"],"names":[],"mappings":";;;AA4DA,IAAM,iBAAA,GAAoB,iBAAA;AAC1B,IAAM,0BAAA,GAA6B,mBAAA;AAE5B,SAAS,OAAA,CAAQ,OAAA,GAA8B,EAAC,EAAe;AACpE,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,QAAA,CAAS,MAAA;AAC1C,EAAA,IAAI,UAA8B,OAAA,CAAQ,OAAA;AAG1C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,eAAe,MAAA,EAAQ;AACrB,MAAA,IAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAE9B,QAAA,OAAA,KAAY,MAAA,CAAO,QAAQ,IAAA,IAAQ,IAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAAA,IAEA,gBAAgB,MAAA,EAAQ;AACtB,MAAA,OAAA,KAAY,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,IAAA,IAAQ,IAAA;AAGzC,MAAA,MAAA,CAAO,OAAA,CAAQ,IAAI,MAAM,CAAA;AAGzB,MAAA,MAAA,CAAO,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,EAAU,KAAU,IAAA,KAAc;AACxD,QAAA,IAAI,GAAA,CAAI,QAAQ,oBAAA,EAAsB;AAEpC,UAAA,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,EAAE,cAAA,EAAgB,oBAAoB,CAAA;AACzD,UAAA,GAAA,CAAI,GAAA,CAAI,KAAK,SAAA,CAAU,EAAE,QAAQ,IAAA,EAAM,OAAA,EAAS,uBAAA,EAAyB,CAAC,CAAA;AAC1E,UAAA;AAAA,QACF;AACA,QAAA,IAAA,EAAK;AAAA,MACP,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IAEA,UAAU,EAAA,EAAI;AACZ,MAAA,IAAI,OAAO,iBAAA,EAAmB;AAC5B,QAAA,OAAO,0BAAA;AAAA,MACT;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,KAAK,EAAA,EAAI;AACP,MAAA,IAAI,OAAO,0BAAA,EAA4B;AAErC,QAAA,OAAO;AAAA;;AAAA;AAAA;AAAA,2BAAA,EAKc,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,CAAA;AAAA,MAQ7B;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAgB,GAAA,EAAK;AAEnB,MAAA,IAAI,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AAC7B,QAAA,GAAA,CAAI,MAAA,CAAO,GAAG,IAAA,CAAK;AAAA,UACjB,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,gBAAA;AAAA,UACP,IAAA,EAAM,EAAE,IAAA,EAAM,GAAA,CAAI,IAAA;AAAK,SACxB,CAAA;AAAA,MACH;AAAA,IACF;AAAA,GACF;AACF;AAMO,SAAS,cAAA,CAAe,OAAA,GAA8B,EAAC,EAAe;AAC3E,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,MAAM,UAAA,GAAa;AAGjB,MAAA,OAAA,CAAQ,IAAI,mEAAmE,CAAA;AAAA,IACjF;AAAA,GACF;AACF;AAEA,IAAO,YAAA,GAAQ","file":"vite.js","sourcesContent":["import type { CastDOMConfig, ExtractionTarget } from \"../core/types.js\";\nimport { DEFAULTS } from \"../core/types.js\";\n\n/**\n * Vite plugin for CastDOM.\n *\n * Features:\n * - Dev mode: live skeleton extraction from running dev server\n * - Build mode: pre-extract and embed skeleton data\n * - HMR: hot-reload skeleton changes\n * - Auto-discovery of [data-castdom] elements\n *\n * Usage:\n * ```ts\n * // vite.config.ts\n * import { castdom } from \"castdom/vite\";\n *\n * export default defineConfig({\n * plugins: [castdom()],\n * });\n * ```\n */\n\nexport interface CastDOMViteOptions {\n /** Path to castdom config file (default: \"castdom.config.json\") */\n configPath?: string;\n /** Output directory (default: \".castdom\") */\n outDir?: string;\n /** Dev server port to extract from (auto-detected if not set) */\n devPort?: number;\n /** Breakpoints to capture (default: [375, 768, 1280]) */\n breakpoints?: number[];\n /** Auto-extract on dev server start (default: false) */\n autoExtract?: boolean;\n /** Watch for changes and re-extract (default: true in dev) */\n watch?: boolean;\n /** Targets to extract (if not using config file) */\n targets?: ExtractionTarget[];\n /** Config overrides */\n config?: Partial<CastDOMConfig>;\n}\n\ninterface VitePlugin {\n name: string;\n enforce?: \"pre\" | \"post\";\n configResolved?: (config: { command: string; server?: { port?: number } }) => void;\n configureServer?: (server: ViteDevServer) => void;\n buildStart?: () => Promise<void>;\n resolveId?: (id: string) => string | null;\n load?: (id: string) => string | null;\n handleHotUpdate?: (ctx: { file: string; server: ViteDevServer }) => void;\n}\n\ninterface ViteDevServer {\n config: { server: { port?: number } };\n ws: { send: (data: unknown) => void };\n watcher: { add: (path: string) => void };\n middlewares: { use: (fn: unknown) => void };\n}\n\nconst VIRTUAL_MODULE_ID = \"virtual:castdom\";\nconst RESOLVED_VIRTUAL_MODULE_ID = \"\\0virtual:castdom\";\n\nexport function castdom(options: CastDOMViteOptions = {}): VitePlugin {\n const outDir = options.outDir ?? DEFAULTS.outDir;\n let devPort: number | undefined = options.devPort;\n let isServing = false;\n\n return {\n name: \"castdom\",\n enforce: \"pre\",\n\n configResolved(config) {\n if (config.command === \"serve\") {\n isServing = true;\n devPort ??= config.server?.port ?? 5173;\n }\n },\n\n configureServer(server) {\n devPort ??= server.config.server.port ?? 5173;\n\n // Watch the output directory for changes\n server.watcher.add(outDir);\n\n // Add dev middleware for on-demand extraction\n server.middlewares.use((req: any, res: any, next: any) => {\n if (req.url === \"/__castdom/extract\") {\n // Trigger extraction via HTTP endpoint in dev\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ status: \"ok\", message: \"Use npx castdom build\" }));\n return;\n }\n next();\n });\n },\n\n resolveId(id) {\n if (id === VIRTUAL_MODULE_ID) {\n return RESOLVED_VIRTUAL_MODULE_ID;\n }\n return null;\n },\n\n load(id) {\n if (id === RESOLVED_VIRTUAL_MODULE_ID) {\n // Provide a virtual module that loads the manifest\n return `\nimport { loadManifest } from \"castdom\";\n\nlet manifest;\ntry {\n manifest = await import(\"${outDir}/manifest.json\", { with: { type: \"json\" } });\n loadManifest(manifest.default || manifest);\n} catch (e) {\n console.warn(\"CastDOM: No manifest found. Run 'npx castdom build' to generate.\");\n}\n\nexport default manifest;\n`;\n }\n return null;\n },\n\n handleHotUpdate(ctx) {\n // Hot-reload when skeleton data changes\n if (ctx.file.includes(outDir)) {\n ctx.server.ws.send({\n type: \"custom\",\n event: \"castdom:update\",\n data: { file: ctx.file },\n });\n }\n },\n };\n}\n\n/**\n * Vite plugin for extracting skeletons during build.\n * Runs `castdom build` as part of the Vite build process.\n */\nexport function castdomExtract(options: CastDOMViteOptions = {}): VitePlugin {\n return {\n name: \"castdom-extract\",\n enforce: \"pre\",\n\n async buildStart() {\n // Only extract during build, not serve\n // The actual extraction is done via the CLI\n console.log(\"CastDOM: Ensure skeletons are up to date with 'npx castdom build'\");\n },\n };\n}\n\nexport default castdom;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/adapters/vite.ts"],"names":[],"mappings":";;;AA4DA,IAAM,iBAAA,GAAoB,iBAAA;AAC1B,IAAM,0BAAA,GAA6B,mBAAA;AAE5B,SAAS,OAAA,CAAQ,OAAA,GAA8B,EAAC,EAAe;AACpE,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,QAAA,CAAS,MAAA;AAC1C,EAAA,IAAI,UAA8B,OAAA,CAAQ,OAAA;AAG1C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,eAAe,MAAA,EAAQ;AACrB,MAAA,IAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAE9B,QAAA,OAAA,KAAY,MAAA,CAAO,QAAQ,IAAA,IAAQ,IAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAAA,IAEA,gBAAgB,MAAA,EAAQ;AACtB,MAAA,OAAA,KAAY,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,IAAA,IAAQ,IAAA;AAGzC,MAAA,MAAA,CAAO,OAAA,CAAQ,IAAI,MAAM,CAAA;AAGzB,MAAA,MAAA,CAAO,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,EAAU,KAAU,IAAA,KAAc;AACxD,QAAA,IAAI,GAAA,CAAI,QAAQ,oBAAA,EAAsB;AAEpC,UAAA,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,EAAE,cAAA,EAAgB,oBAAoB,CAAA;AACzD,UAAA,GAAA,CAAI,GAAA,CAAI,KAAK,SAAA,CAAU,EAAE,QAAQ,IAAA,EAAM,OAAA,EAAS,uBAAA,EAAyB,CAAC,CAAA;AAC1E,UAAA;AAAA,QACF;AACA,QAAA,IAAA,EAAK;AAAA,MACP,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IAEA,UAAU,EAAA,EAAI;AACZ,MAAA,IAAI,OAAO,iBAAA,EAAmB;AAC5B,QAAA,OAAO,0BAAA;AAAA,MACT;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,KAAK,EAAA,EAAI;AACP,MAAA,IAAI,OAAO,0BAAA,EAA4B;AAErC,QAAA,OAAO;AAAA;;AAAA;AAAA;AAAA,2BAAA,EAKc,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,CAAA;AAAA,MAQ7B;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAgB,GAAA,EAAK;AAEnB,MAAA,IAAI,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AAC7B,QAAA,GAAA,CAAI,MAAA,CAAO,GAAG,IAAA,CAAK;AAAA,UACjB,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,gBAAA;AAAA,UACP,IAAA,EAAM,EAAE,IAAA,EAAM,GAAA,CAAI,IAAA;AAAK,SACxB,CAAA;AAAA,MACH;AAAA,IACF;AAAA,GACF;AACF;AAMO,SAAS,cAAA,CAAe,OAAA,GAA8B,EAAC,EAAe;AAC3E,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,MAAM,UAAA,GAAa;AAGjB,MAAA,OAAA,CAAQ,IAAI,mEAAmE,CAAA;AAAA,IACjF;AAAA,GACF;AACF;AAEA,IAAO,YAAA,GAAQ","file":"vite.js","sourcesContent":["import type { CastDOMConfig, ExtractionTarget } from \"../core/types.js\";\nimport { DEFAULTS } from \"../core/types.js\";\n\n/**\n * Vite plugin for CastDOM.\n *\n * Features:\n * - Dev mode: live skeleton extraction from running dev server\n * - Build mode: pre-extract and embed skeleton data\n * - HMR: hot-reload skeleton changes\n * - Auto-discovery of [data-castdom] elements\n *\n * Usage:\n * ```ts\n * // vite.config.ts\n * import { castdom } from \"@lukas_holdings/castdom/vite\";\n *\n * export default defineConfig({\n * plugins: [castdom()],\n * });\n * ```\n */\n\nexport interface CastDOMViteOptions {\n /** Path to castdom config file (default: \"castdom.config.json\") */\n configPath?: string;\n /** Output directory (default: \".castdom\") */\n outDir?: string;\n /** Dev server port to extract from (auto-detected if not set) */\n devPort?: number;\n /** Breakpoints to capture (default: [375, 768, 1280]) */\n breakpoints?: number[];\n /** Auto-extract on dev server start (default: false) */\n autoExtract?: boolean;\n /** Watch for changes and re-extract (default: true in dev) */\n watch?: boolean;\n /** Targets to extract (if not using config file) */\n targets?: ExtractionTarget[];\n /** Config overrides */\n config?: Partial<CastDOMConfig>;\n}\n\ninterface VitePlugin {\n name: string;\n enforce?: \"pre\" | \"post\";\n configResolved?: (config: { command: string; server?: { port?: number } }) => void;\n configureServer?: (server: ViteDevServer) => void;\n buildStart?: () => Promise<void>;\n resolveId?: (id: string) => string | null;\n load?: (id: string) => string | null;\n handleHotUpdate?: (ctx: { file: string; server: ViteDevServer }) => void;\n}\n\ninterface ViteDevServer {\n config: { server: { port?: number } };\n ws: { send: (data: unknown) => void };\n watcher: { add: (path: string) => void };\n middlewares: { use: (fn: unknown) => void };\n}\n\nconst VIRTUAL_MODULE_ID = \"virtual:castdom\";\nconst RESOLVED_VIRTUAL_MODULE_ID = \"\\0virtual:castdom\";\n\nexport function castdom(options: CastDOMViteOptions = {}): VitePlugin {\n const outDir = options.outDir ?? DEFAULTS.outDir;\n let devPort: number | undefined = options.devPort;\n let isServing = false;\n\n return {\n name: \"castdom\",\n enforce: \"pre\",\n\n configResolved(config) {\n if (config.command === \"serve\") {\n isServing = true;\n devPort ??= config.server?.port ?? 5173;\n }\n },\n\n configureServer(server) {\n devPort ??= server.config.server.port ?? 5173;\n\n // Watch the output directory for changes\n server.watcher.add(outDir);\n\n // Add dev middleware for on-demand extraction\n server.middlewares.use((req: any, res: any, next: any) => {\n if (req.url === \"/__castdom/extract\") {\n // Trigger extraction via HTTP endpoint in dev\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ status: \"ok\", message: \"Use npx castdom build\" }));\n return;\n }\n next();\n });\n },\n\n resolveId(id) {\n if (id === VIRTUAL_MODULE_ID) {\n return RESOLVED_VIRTUAL_MODULE_ID;\n }\n return null;\n },\n\n load(id) {\n if (id === RESOLVED_VIRTUAL_MODULE_ID) {\n // Provide a virtual module that loads the manifest\n return `\nimport { loadManifest } from \"@lukas_holdings/castdom\";\n\nlet manifest;\ntry {\n manifest = await import(\"${outDir}/manifest.json\", { with: { type: \"json\" } });\n loadManifest(manifest.default || manifest);\n} catch (e) {\n console.warn(\"CastDOM: No manifest found. Run 'npx castdom build' to generate.\");\n}\n\nexport default manifest;\n`;\n }\n return null;\n },\n\n handleHotUpdate(ctx) {\n // Hot-reload when skeleton data changes\n if (ctx.file.includes(outDir)) {\n ctx.server.ws.send({\n type: \"custom\",\n event: \"castdom:update\",\n data: { file: ctx.file },\n });\n }\n },\n };\n}\n\n/**\n * Vite plugin for extracting skeletons during build.\n * Runs `castdom build` as part of the Vite build process.\n */\nexport function castdomExtract(options: CastDOMViteOptions = {}): VitePlugin {\n return {\n name: \"castdom-extract\",\n enforce: \"pre\",\n\n async buildStart() {\n // Only extract during build, not serve\n // The actual extraction is done via the CLI\n console.log(\"CastDOM: Ensure skeletons are up to date with 'npx castdom build'\");\n },\n };\n}\n\nexport default castdom;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lukas_holdings/castdom",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Pixel-perfect skeleton loading screens, extracted from your real DOM. Zero-config, SSR-first, CSS-only runtime.",
|
|
5
5
|
"homepage": "https://kameeleonn.github.io/CastDOM/",
|
|
6
6
|
"repository": {
|
package/dist/chunk-EJRNKHL5.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// src/core/types.ts
|
|
2
|
-
var DEFAULTS = {
|
|
3
|
-
outDir: ".castdom",
|
|
4
|
-
breakpoints: [375, 768, 1280],
|
|
5
|
-
color: "#e0e0e0",
|
|
6
|
-
shimmerColor: "#f0f0f0",
|
|
7
|
-
animationDuration: 1500,
|
|
8
|
-
contentAware: true,
|
|
9
|
-
minBoneSize: 4,
|
|
10
|
-
classPrefix: "castdom",
|
|
11
|
-
inlineStyles: false,
|
|
12
|
-
ssr: true
|
|
13
|
-
};
|
|
14
|
-
var BONE_KIND_INDEX = {
|
|
15
|
-
text: 1,
|
|
16
|
-
heading: 2,
|
|
17
|
-
image: 3,
|
|
18
|
-
avatar: 4,
|
|
19
|
-
button: 5,
|
|
20
|
-
input: 6,
|
|
21
|
-
icon: 7,
|
|
22
|
-
divider: 8,
|
|
23
|
-
block: 0
|
|
24
|
-
};
|
|
25
|
-
var BONE_KIND_FROM_INDEX = Object.fromEntries(
|
|
26
|
-
Object.entries(BONE_KIND_INDEX).map(([k, v]) => [v, k])
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
export { BONE_KIND_FROM_INDEX, BONE_KIND_INDEX, DEFAULTS };
|
|
30
|
-
//# sourceMappingURL=chunk-EJRNKHL5.js.map
|
|
31
|
-
//# sourceMappingURL=chunk-EJRNKHL5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/types.ts"],"names":[],"mappings":";AAqHO,IAAM,QAAA,GAcT;AAAA,EACF,MAAA,EAAQ,UAAA;AAAA,EACR,WAAA,EAAa,CAAC,GAAA,EAAK,GAAA,EAAK,IAAI,CAAA;AAAA,EAC5B,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,IAAA;AAAA,EACnB,YAAA,EAAc,IAAA;AAAA,EACd,WAAA,EAAa,CAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc,KAAA;AAAA,EACd,GAAA,EAAK;AACP;AAGO,IAAM,eAAA,GAA4C;AAAA,EACvD,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,CAAA;AAAA,EACT,KAAA,EAAO,CAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,MAAA,EAAQ,CAAA;AAAA,EACR,KAAA,EAAO,CAAA;AAAA,EACP,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,CAAA;AAAA,EACT,KAAA,EAAO;AACT;AAEO,IAAM,uBAAiD,MAAA,CAAO,WAAA;AAAA,EACnE,MAAA,CAAO,OAAA,CAAQ,eAAe,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAC,CAAA,EAAG,CAAa,CAAC;AACpE","file":"chunk-EJRNKHL5.js","sourcesContent":["/** A single bone — one rectangular skeleton element */\nexport interface Bone {\n /** X position relative to container (px) */\n x: number;\n /** Y position relative to container (px) */\n y: number;\n /** Width (px) */\n w: number;\n /** Height (px) */\n h: number;\n /** Border radius (px). 9999 = circle */\n r: number;\n /** Element type hint for content-aware rendering */\n kind?: BoneKind;\n}\n\nexport type BoneKind =\n | \"text\"\n | \"heading\"\n | \"image\"\n | \"avatar\"\n | \"button\"\n | \"input\"\n | \"icon\"\n | \"divider\"\n | \"block\";\n\n/** Bone data for a single breakpoint */\nexport interface BreakpointData {\n /** Viewport width this was captured at */\n viewport: number;\n /** Container width at capture time */\n containerWidth: number;\n /** Container height at capture time */\n containerHeight: number;\n /** All bones at this breakpoint */\n bones: Bone[];\n}\n\n/** Complete skeleton definition for a named component */\nexport interface SkeletonData {\n /** Unique name for this skeleton */\n name: string;\n /** Version hash for cache busting */\n hash: string;\n /** Breakpoint data, sorted ascending by viewport width */\n breakpoints: BreakpointData[];\n /** Timestamp of last extraction */\n extractedAt: number;\n}\n\n/** Configuration for CastDOM */\nexport interface CastDOMConfig {\n /** Directory to output generated skeleton data */\n outDir?: string;\n /** Breakpoint widths to capture at (default: [375, 768, 1280]) */\n breakpoints?: number[];\n /** Base color for skeleton bones (default: \"#e0e0e0\") */\n color?: string;\n /** Shimmer highlight color (default: \"#f0f0f0\") */\n shimmerColor?: string;\n /** Animation duration in ms (default: 1500) */\n animationDuration?: number;\n /** Enable content-aware bone detection (default: true) */\n contentAware?: boolean;\n /** Minimum bone size to include in px (default: 4) */\n minBoneSize?: number;\n /** CSS class prefix (default: \"castdom\") */\n classPrefix?: string;\n /** Generate inline styles instead of class-based (default: false) */\n inlineStyles?: boolean;\n /** Enable SSR rendering (default: true) */\n ssr?: boolean;\n /** URL or path to dev server for extraction */\n devServer?: string;\n /** Routes to snapshot for extraction */\n routes?: string[];\n /** Playwright launch options */\n playwright?: {\n headless?: boolean;\n timeout?: number;\n };\n}\n\n/** Registry entry used at runtime */\nexport interface RegistryEntry {\n data: SkeletonData;\n css: string;\n html: Record<number, string>;\n}\n\n/** Extraction target — what to snapshot */\nexport interface ExtractionTarget {\n name: string;\n selector: string;\n route?: string;\n}\n\n/** Result from the extraction process */\nexport interface ExtractionResult {\n target: ExtractionTarget;\n skeleton: SkeletonData;\n}\n\n/** Compressed bone format for wire/storage (delta-encoded) */\nexport interface CompressedBones {\n /** Version of compression format */\n v: 1;\n /** Viewport width */\n vw: number;\n /** Container dimensions [w, h] */\n c: [number, number];\n /** Flat array: [x, y, w, h, r, kind, ...] per bone. kind is enum index. */\n d: number[];\n}\n\n/** Default configuration values */\nexport const DEFAULTS: Required<\n Pick<\n CastDOMConfig,\n | \"outDir\"\n | \"breakpoints\"\n | \"color\"\n | \"shimmerColor\"\n | \"animationDuration\"\n | \"contentAware\"\n | \"minBoneSize\"\n | \"classPrefix\"\n | \"inlineStyles\"\n | \"ssr\"\n >\n> = {\n outDir: \".castdom\",\n breakpoints: [375, 768, 1280],\n color: \"#e0e0e0\",\n shimmerColor: \"#f0f0f0\",\n animationDuration: 1500,\n contentAware: true,\n minBoneSize: 4,\n classPrefix: \"castdom\",\n inlineStyles: false,\n ssr: true,\n};\n\n/** Map bone kind to numeric index for compression */\nexport const BONE_KIND_INDEX: Record<BoneKind, number> = {\n text: 1,\n heading: 2,\n image: 3,\n avatar: 4,\n button: 5,\n input: 6,\n icon: 7,\n divider: 8,\n block: 0,\n};\n\nexport const BONE_KIND_FROM_INDEX: Record<number, BoneKind> = Object.fromEntries(\n Object.entries(BONE_KIND_INDEX).map(([k, v]) => [v, k as BoneKind])\n) as Record<number, BoneKind>;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/types.ts"],"names":[],"mappings":";;;AAqHO,IAAM,QAAA,GAcT;AAAA,EACF,MAAA,EAAQ,UAAA;AAAA,EACR,WAAA,EAAa,CAAC,GAAA,EAAK,GAAA,EAAK,IAAI,CAAA;AAAA,EAC5B,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,IAAA;AAAA,EACnB,YAAA,EAAc,IAAA;AAAA,EACd,WAAA,EAAa,CAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,YAAA,EAAc,KAAA;AAAA,EACd,GAAA,EAAK;AACP;AAGO,IAAM,eAAA,GAA4C;AAAA,EACvD,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,CAAA;AAAA,EACT,KAAA,EAAO,CAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,MAAA,EAAQ,CAAA;AAAA,EACR,KAAA,EAAO,CAAA;AAAA,EACP,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,CAAA;AAAA,EACT,KAAA,EAAO;AACT;AAEO,IAAM,uBAAiD,MAAA,CAAO,WAAA;AAAA,EACnE,MAAA,CAAO,OAAA,CAAQ,eAAe,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAC,CAAA,EAAG,CAAa,CAAC;AACpE","file":"chunk-JRQ6EVQP.cjs","sourcesContent":["/** A single bone — one rectangular skeleton element */\nexport interface Bone {\n /** X position relative to container (px) */\n x: number;\n /** Y position relative to container (px) */\n y: number;\n /** Width (px) */\n w: number;\n /** Height (px) */\n h: number;\n /** Border radius (px). 9999 = circle */\n r: number;\n /** Element type hint for content-aware rendering */\n kind?: BoneKind;\n}\n\nexport type BoneKind =\n | \"text\"\n | \"heading\"\n | \"image\"\n | \"avatar\"\n | \"button\"\n | \"input\"\n | \"icon\"\n | \"divider\"\n | \"block\";\n\n/** Bone data for a single breakpoint */\nexport interface BreakpointData {\n /** Viewport width this was captured at */\n viewport: number;\n /** Container width at capture time */\n containerWidth: number;\n /** Container height at capture time */\n containerHeight: number;\n /** All bones at this breakpoint */\n bones: Bone[];\n}\n\n/** Complete skeleton definition for a named component */\nexport interface SkeletonData {\n /** Unique name for this skeleton */\n name: string;\n /** Version hash for cache busting */\n hash: string;\n /** Breakpoint data, sorted ascending by viewport width */\n breakpoints: BreakpointData[];\n /** Timestamp of last extraction */\n extractedAt: number;\n}\n\n/** Configuration for CastDOM */\nexport interface CastDOMConfig {\n /** Directory to output generated skeleton data */\n outDir?: string;\n /** Breakpoint widths to capture at (default: [375, 768, 1280]) */\n breakpoints?: number[];\n /** Base color for skeleton bones (default: \"#e0e0e0\") */\n color?: string;\n /** Shimmer highlight color (default: \"#f0f0f0\") */\n shimmerColor?: string;\n /** Animation duration in ms (default: 1500) */\n animationDuration?: number;\n /** Enable content-aware bone detection (default: true) */\n contentAware?: boolean;\n /** Minimum bone size to include in px (default: 4) */\n minBoneSize?: number;\n /** CSS class prefix (default: \"castdom\") */\n classPrefix?: string;\n /** Generate inline styles instead of class-based (default: false) */\n inlineStyles?: boolean;\n /** Enable SSR rendering (default: true) */\n ssr?: boolean;\n /** URL or path to dev server for extraction */\n devServer?: string;\n /** Routes to snapshot for extraction */\n routes?: string[];\n /** Playwright launch options */\n playwright?: {\n headless?: boolean;\n timeout?: number;\n };\n}\n\n/** Registry entry used at runtime */\nexport interface RegistryEntry {\n data: SkeletonData;\n css: string;\n html: Record<number, string>;\n}\n\n/** Extraction target — what to snapshot */\nexport interface ExtractionTarget {\n name: string;\n selector: string;\n route?: string;\n}\n\n/** Result from the extraction process */\nexport interface ExtractionResult {\n target: ExtractionTarget;\n skeleton: SkeletonData;\n}\n\n/** Compressed bone format for wire/storage (delta-encoded) */\nexport interface CompressedBones {\n /** Version of compression format */\n v: 1;\n /** Viewport width */\n vw: number;\n /** Container dimensions [w, h] */\n c: [number, number];\n /** Flat array: [x, y, w, h, r, kind, ...] per bone. kind is enum index. */\n d: number[];\n}\n\n/** Default configuration values */\nexport const DEFAULTS: Required<\n Pick<\n CastDOMConfig,\n | \"outDir\"\n | \"breakpoints\"\n | \"color\"\n | \"shimmerColor\"\n | \"animationDuration\"\n | \"contentAware\"\n | \"minBoneSize\"\n | \"classPrefix\"\n | \"inlineStyles\"\n | \"ssr\"\n >\n> = {\n outDir: \".castdom\",\n breakpoints: [375, 768, 1280],\n color: \"#e0e0e0\",\n shimmerColor: \"#f0f0f0\",\n animationDuration: 1500,\n contentAware: true,\n minBoneSize: 4,\n classPrefix: \"castdom\",\n inlineStyles: false,\n ssr: true,\n};\n\n/** Map bone kind to numeric index for compression */\nexport const BONE_KIND_INDEX: Record<BoneKind, number> = {\n text: 1,\n heading: 2,\n image: 3,\n avatar: 4,\n button: 5,\n input: 6,\n icon: 7,\n divider: 8,\n block: 0,\n};\n\nexport const BONE_KIND_FROM_INDEX: Record<number, BoneKind> = Object.fromEntries(\n Object.entries(BONE_KIND_INDEX).map(([k, v]) => [v, k as BoneKind])\n) as Record<number, BoneKind>;\n"]}
|