@vertesia/build-tools 1.2.0 → 1.4.0-dev.20260614.160504Z
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 +3 -3
- package/lib/bin/build.d.ts +35 -0
- package/lib/bin/build.d.ts.map +1 -0
- package/lib/bin/build.js +79 -0
- package/lib/bin/build.js.map +1 -0
- package/lib/bin/config.d.ts +24 -0
- package/lib/bin/config.d.ts.map +1 -0
- package/lib/bin/config.js +91 -0
- package/lib/bin/config.js.map +1 -0
- package/lib/core/compilers/widget.d.ts +27 -0
- package/lib/core/compilers/widget.d.ts.map +1 -0
- package/lib/core/compilers/widget.js +37 -0
- package/lib/core/compilers/widget.js.map +1 -0
- package/lib/{types → core}/parsers/frontmatter.d.ts +1 -1
- package/lib/core/parsers/frontmatter.d.ts.map +1 -0
- package/lib/{esm → core}/parsers/frontmatter.js +1 -1
- package/lib/core/parsers/frontmatter.js.map +1 -0
- package/lib/core/transformers/index.d.ts +10 -0
- package/lib/core/transformers/index.d.ts.map +1 -0
- package/lib/core/transformers/index.js +10 -0
- package/lib/core/transformers/index.js.map +1 -0
- package/lib/{types/presets → core/transformers}/prompt.d.ts +7 -21
- package/lib/core/transformers/prompt.d.ts.map +1 -0
- package/lib/{esm/presets → core/transformers}/prompt.js +17 -14
- package/lib/core/transformers/prompt.js.map +1 -0
- package/lib/core/transformers/raw.d.ts.map +1 -0
- package/lib/{esm/presets → core/transformers}/raw.js +2 -2
- package/lib/core/transformers/raw.js.map +1 -0
- package/lib/core/transformers/skill-collection.d.ts.map +1 -0
- package/lib/{esm/presets → core/transformers}/skill-collection.js +5 -12
- package/lib/core/transformers/skill-collection.js.map +1 -0
- package/lib/core/transformers/skill.d.ts +111 -0
- package/lib/core/transformers/skill.d.ts.map +1 -0
- package/lib/{esm/presets → core/transformers}/skill.js +70 -51
- package/lib/core/transformers/skill.js.map +1 -0
- package/lib/core/transformers/template-collection.d.ts.map +1 -0
- package/lib/{esm/presets → core/transformers}/template-collection.js +5 -12
- package/lib/core/transformers/template-collection.js.map +1 -0
- package/lib/{types/presets → core/transformers}/template.d.ts +7 -22
- package/lib/core/transformers/template.d.ts.map +1 -0
- package/lib/{esm/presets → core/transformers}/template.js +16 -11
- package/lib/core/transformers/template.js.map +1 -0
- package/lib/{types → core}/types.d.ts +5 -61
- package/lib/core/types.d.ts.map +1 -0
- package/lib/core/types.js +6 -0
- package/lib/{cjs → core}/types.js.map +1 -1
- package/lib/core/utils/asset-copy.d.ts.map +1 -0
- package/lib/core/utils/asset-copy.js.map +1 -0
- package/lib/core/utils/asset-discovery.d.ts.map +1 -0
- package/lib/{esm → core}/utils/asset-discovery.js +4 -4
- package/lib/core/utils/asset-discovery.js.map +1 -0
- package/lib/core/utils/template-asset-discovery.d.ts.map +1 -0
- package/lib/{esm → core}/utils/template-asset-discovery.js +3 -7
- package/lib/core/utils/template-asset-discovery.js.map +1 -0
- package/lib/import-transform/builtins.d.ts +21 -0
- package/lib/import-transform/builtins.d.ts.map +1 -0
- package/lib/import-transform/builtins.js +50 -0
- package/lib/import-transform/builtins.js.map +1 -0
- package/lib/import-transform/chunk-emitter.d.ts +24 -0
- package/lib/import-transform/chunk-emitter.d.ts.map +1 -0
- package/lib/import-transform/chunk-emitter.js +35 -0
- package/lib/import-transform/chunk-emitter.js.map +1 -0
- package/lib/import-transform/detector.d.ts +24 -0
- package/lib/import-transform/detector.d.ts.map +1 -0
- package/lib/import-transform/detector.js +34 -0
- package/lib/import-transform/detector.js.map +1 -0
- package/lib/import-transform/index.d.ts +47 -0
- package/lib/import-transform/index.d.ts.map +1 -0
- package/lib/import-transform/index.js +115 -0
- package/lib/import-transform/index.js.map +1 -0
- package/lib/import-transform/patterns.d.ts +25 -0
- package/lib/import-transform/patterns.d.ts.map +1 -0
- package/lib/import-transform/patterns.js +27 -0
- package/lib/import-transform/patterns.js.map +1 -0
- package/lib/import-transform/resolver.d.ts +23 -0
- package/lib/import-transform/resolver.d.ts.map +1 -0
- package/lib/import-transform/resolver.js +30 -0
- package/lib/import-transform/resolver.js.map +1 -0
- package/lib/import-transform/rewriter.d.ts +21 -0
- package/lib/import-transform/rewriter.d.ts.map +1 -0
- package/lib/import-transform/rewriter.js +30 -0
- package/lib/import-transform/rewriter.js.map +1 -0
- package/lib/import-transform/scanner.d.ts +17 -0
- package/lib/import-transform/scanner.d.ts.map +1 -0
- package/lib/import-transform/scanner.js +46 -0
- package/lib/import-transform/scanner.js.map +1 -0
- package/lib/index.d.ts +39 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +43 -0
- package/lib/index.js.map +1 -0
- package/lib/vite/api-server.d.ts +54 -0
- package/lib/vite/api-server.d.ts.map +1 -0
- package/lib/vite/api-server.js +94 -0
- package/lib/vite/api-server.js.map +1 -0
- package/lib/vite/dev-server.d.ts +42 -0
- package/lib/vite/dev-server.d.ts.map +1 -0
- package/lib/vite/dev-server.js +111 -0
- package/lib/vite/dev-server.js.map +1 -0
- package/lib/vite/index.d.ts +15 -0
- package/lib/vite/index.d.ts.map +1 -0
- package/lib/vite/index.js +15 -0
- package/lib/vite/index.js.map +1 -0
- package/package.json +38 -28
- package/src/bin/build.ts +83 -0
- package/src/bin/config.ts +113 -0
- package/src/core/compilers/widget.ts +69 -0
- package/src/{parsers → core/parsers}/frontmatter.ts +2 -2
- package/src/core/transformers/index.ts +27 -0
- package/src/{presets → core/transformers}/prompt.ts +35 -32
- package/src/{presets → core/transformers}/raw.ts +2 -2
- package/src/{presets → core/transformers}/skill-collection.ts +5 -12
- package/src/{presets → core/transformers}/skill.ts +119 -99
- package/src/{presets → core/transformers}/template-collection.ts +76 -83
- package/src/{presets → core/transformers}/template.ts +121 -116
- package/src/core/types.ts +71 -0
- package/src/{utils → core/utils}/asset-copy.ts +3 -2
- package/src/{utils → core/utils}/asset-discovery.ts +5 -5
- package/src/{utils → core/utils}/template-asset-discovery.ts +70 -77
- package/src/import-transform/builtins.ts +56 -0
- package/src/import-transform/chunk-emitter.ts +60 -0
- package/src/import-transform/detector.ts +56 -0
- package/src/import-transform/index.ts +171 -0
- package/src/import-transform/patterns.ts +34 -0
- package/src/import-transform/resolver.ts +57 -0
- package/src/import-transform/rewriter.ts +48 -0
- package/src/import-transform/scanner.ts +55 -0
- package/src/index.ts +67 -42
- package/src/vite/api-server.ts +142 -0
- package/src/vite/dev-server.ts +128 -0
- package/src/vite/index.ts +15 -0
- package/lib/build-tools.js +0 -2031
- package/lib/build-tools.js.map +0 -1
- package/lib/cjs/index.js +0 -43
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/parsers/frontmatter.js +0 -25
- package/lib/cjs/parsers/frontmatter.js.map +0 -1
- package/lib/cjs/plugin.js +0 -150
- package/lib/cjs/plugin.js.map +0 -1
- package/lib/cjs/presets/index.js +0 -25
- package/lib/cjs/presets/index.js.map +0 -1
- package/lib/cjs/presets/prompt.js +0 -185
- package/lib/cjs/presets/prompt.js.map +0 -1
- package/lib/cjs/presets/raw.js +0 -25
- package/lib/cjs/presets/raw.js.map +0 -1
- package/lib/cjs/presets/skill-collection.js +0 -83
- package/lib/cjs/presets/skill-collection.js.map +0 -1
- package/lib/cjs/presets/skill.js +0 -272
- package/lib/cjs/presets/skill.js.map +0 -1
- package/lib/cjs/presets/template-collection.js +0 -80
- package/lib/cjs/presets/template-collection.js.map +0 -1
- package/lib/cjs/presets/template.js +0 -105
- package/lib/cjs/presets/template.js.map +0 -1
- package/lib/cjs/types.js +0 -6
- package/lib/cjs/utils/asset-copy.js +0 -61
- package/lib/cjs/utils/asset-copy.js.map +0 -1
- package/lib/cjs/utils/asset-discovery.js +0 -100
- package/lib/cjs/utils/asset-discovery.js.map +0 -1
- package/lib/cjs/utils/template-asset-discovery.js +0 -63
- package/lib/cjs/utils/template-asset-discovery.js.map +0 -1
- package/lib/cjs/utils/widget-compiler.js +0 -115
- package/lib/cjs/utils/widget-compiler.js.map +0 -1
- package/lib/cjs/vite.js +0 -45
- package/lib/cjs/vite.js.map +0 -1
- package/lib/esm/index.js +0 -26
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/parsers/frontmatter.js.map +0 -1
- package/lib/esm/plugin.js +0 -144
- package/lib/esm/plugin.js.map +0 -1
- package/lib/esm/presets/index.js +0 -10
- package/lib/esm/presets/index.js.map +0 -1
- package/lib/esm/presets/prompt.js.map +0 -1
- package/lib/esm/presets/raw.js.map +0 -1
- package/lib/esm/presets/skill-collection.js.map +0 -1
- package/lib/esm/presets/skill.js.map +0 -1
- package/lib/esm/presets/template-collection.js.map +0 -1
- package/lib/esm/presets/template.js.map +0 -1
- package/lib/esm/types.js +0 -5
- package/lib/esm/types.js.map +0 -1
- package/lib/esm/utils/asset-copy.js.map +0 -1
- package/lib/esm/utils/asset-discovery.js.map +0 -1
- package/lib/esm/utils/template-asset-discovery.js.map +0 -1
- package/lib/esm/utils/widget-compiler.js +0 -76
- package/lib/esm/utils/widget-compiler.js.map +0 -1
- package/lib/esm/vite.js +0 -42
- package/lib/esm/vite.js.map +0 -1
- package/lib/types/index.d.ts +0 -24
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/parsers/frontmatter.d.ts.map +0 -1
- package/lib/types/plugin.d.ts +0 -10
- package/lib/types/plugin.d.ts.map +0 -1
- package/lib/types/presets/index.d.ts +0 -10
- package/lib/types/presets/index.d.ts.map +0 -1
- package/lib/types/presets/prompt.d.ts.map +0 -1
- package/lib/types/presets/raw.d.ts.map +0 -1
- package/lib/types/presets/skill-collection.d.ts.map +0 -1
- package/lib/types/presets/skill.d.ts +0 -361
- package/lib/types/presets/skill.d.ts.map +0 -1
- package/lib/types/presets/template-collection.d.ts.map +0 -1
- package/lib/types/presets/template.d.ts.map +0 -1
- package/lib/types/types.d.ts.map +0 -1
- package/lib/types/utils/asset-copy.d.ts.map +0 -1
- package/lib/types/utils/asset-discovery.d.ts.map +0 -1
- package/lib/types/utils/template-asset-discovery.d.ts.map +0 -1
- package/lib/types/utils/widget-compiler.d.ts +0 -15
- package/lib/types/utils/widget-compiler.d.ts.map +0 -1
- package/lib/types/vite.d.ts +0 -32
- package/lib/types/vite.d.ts.map +0 -1
- package/src/plugin.ts +0 -166
- package/src/presets/index.ts +0 -10
- package/src/types.ts +0 -140
- package/src/utils/widget-compiler.ts +0 -98
- package/src/vite.ts +0 -45
- /package/lib/{types/presets → core/transformers}/raw.d.ts +0 -0
- /package/lib/{types/presets → core/transformers}/skill-collection.d.ts +0 -0
- /package/lib/{types/presets → core/transformers}/template-collection.d.ts +0 -0
- /package/lib/{types → core}/utils/asset-copy.d.ts +0 -0
- /package/lib/{esm → core}/utils/asset-copy.js +0 -0
- /package/lib/{types → core}/utils/asset-discovery.d.ts +0 -0
- /package/lib/{types → core}/utils/template-asset-discovery.d.ts +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vite plugin that transforms Vertesia query-style imports
|
|
3
|
+
* (`?skill`, `?skills`, `?prompt`, `?template`, `?templates`, `?raw`) on the
|
|
4
|
+
* fly during development, plus bare `SKILL.md` / `TEMPLATE.md` imports.
|
|
5
|
+
*
|
|
6
|
+
* This is the dev-mode counterpart to the standalone `transformImports` CLI
|
|
7
|
+
* used at build time. It runs Vite's `resolveId` + `load` hooks against the
|
|
8
|
+
* configured transformers, so the same source files work in both `vite dev`
|
|
9
|
+
* and post-`tsc` build modes.
|
|
10
|
+
*
|
|
11
|
+
* Asset copying and widget bundling are skipped in dev — they're build-time
|
|
12
|
+
* concerns only.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // vite.config.ts
|
|
17
|
+
* import { defineConfig } from 'vite';
|
|
18
|
+
* import { vertesiaDevServerPlugin } from '@vertesia/build-tools/vite';
|
|
19
|
+
*
|
|
20
|
+
* export default defineConfig({
|
|
21
|
+
* plugins: [vertesiaDevServerPlugin()],
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Default transformers include all built-ins (skill / skills / template /
|
|
26
|
+
* templates / prompt / raw). Pass `transformers` to restrict the set:
|
|
27
|
+
*
|
|
28
|
+
* ```typescript
|
|
29
|
+
* vertesiaDevServerPlugin({ transformers: ['skill', 'raw'] });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
import { readFileSync } from 'node:fs';
|
|
34
|
+
import path from 'node:path';
|
|
35
|
+
import type { Plugin } from 'vite';
|
|
36
|
+
import type { TransformerRule } from '../core/types.js';
|
|
37
|
+
import { BUILTIN_TRANSFORMER_NAMES, resolveTransformerNames } from '../import-transform/builtins.js';
|
|
38
|
+
|
|
39
|
+
export interface VertesiaDevServerPluginOptions {
|
|
40
|
+
/**
|
|
41
|
+
* Names of transformers to activate. Defaults to all built-ins:
|
|
42
|
+
* `['skill', 'skills', 'template', 'templates', 'prompt', 'raw']`.
|
|
43
|
+
* Pass a subset to disable transformers you don't use.
|
|
44
|
+
*/
|
|
45
|
+
transformers?: readonly string[];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function vertesiaDevServerPlugin(options: VertesiaDevServerPluginOptions = {}): Plugin {
|
|
49
|
+
const names = options.transformers ?? BUILTIN_TRANSFORMER_NAMES;
|
|
50
|
+
const transformers = resolveTransformerNames([...names]);
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
name: 'vertesia-dev-server',
|
|
54
|
+
enforce: 'pre',
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Map relative query-style imports to absolute paths so Vite's loader
|
|
58
|
+
* sees a stable id keyed by the original file location. The query
|
|
59
|
+
* suffix is preserved in the id and used by `load` to pick the right
|
|
60
|
+
* transformer.
|
|
61
|
+
*/
|
|
62
|
+
resolveId(source: string, importer: string | undefined) {
|
|
63
|
+
for (const transformer of transformers) {
|
|
64
|
+
if (!transformer.pattern.test(source)) continue;
|
|
65
|
+
// Only relative specifiers can be resolved meaningfully against an importer.
|
|
66
|
+
if (source.startsWith('.') && importer) {
|
|
67
|
+
const cleanSource = source.replace(transformer.pattern, '');
|
|
68
|
+
const cleanImporter = importer.includes('?')
|
|
69
|
+
? importer.substring(0, importer.indexOf('?'))
|
|
70
|
+
: importer;
|
|
71
|
+
const baseDir = path.dirname(cleanImporter);
|
|
72
|
+
const resolved = path.resolve(baseDir, cleanSource);
|
|
73
|
+
const suffix = source.match(transformer.pattern)?.[0] ?? '';
|
|
74
|
+
return resolved + suffix;
|
|
75
|
+
}
|
|
76
|
+
// Bare or absolute matches are returned as-is.
|
|
77
|
+
return source;
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Read the source file (skipping reads for virtual transformers),
|
|
84
|
+
* run the matched transformer, and return ES module source code.
|
|
85
|
+
*/
|
|
86
|
+
async load(id: string) {
|
|
87
|
+
const matched = findMatchingTransformer(id, transformers);
|
|
88
|
+
if (!matched) return null;
|
|
89
|
+
|
|
90
|
+
const cleanId = stripQuery(id);
|
|
91
|
+
try {
|
|
92
|
+
const content = matched.virtual ? '' : readFileSync(cleanId, 'utf-8');
|
|
93
|
+
const result = await matched.transform(content, cleanId);
|
|
94
|
+
|
|
95
|
+
if (matched.schema) {
|
|
96
|
+
const validation = matched.schema.safeParse(result.data);
|
|
97
|
+
if (!validation.success) {
|
|
98
|
+
const errors = validation.error.issues
|
|
99
|
+
.map((err) => ` - ${err.path.join('.')}: ${err.message}`)
|
|
100
|
+
.join('\n');
|
|
101
|
+
throw new Error(`Validation failed for ${id}:\n${errors}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const importsBlock =
|
|
106
|
+
result.imports && result.imports.length > 0 ? `${result.imports.join('\n')}\n\n` : '';
|
|
107
|
+
const body = result.code ?? `export default ${JSON.stringify(result.data, null, 2)};`;
|
|
108
|
+
return importsBlock + body;
|
|
109
|
+
} catch (error) {
|
|
110
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
111
|
+
// Vite/Rollup plugin context: `this.error` halts the load with a meaningful message.
|
|
112
|
+
this.error(`vertesia-dev-server: failed to transform ${id}: ${message}`);
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function findMatchingTransformer(id: string, transformers: TransformerRule[]): TransformerRule | undefined {
|
|
119
|
+
for (const t of transformers) {
|
|
120
|
+
if (t.pattern.test(id)) return t;
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function stripQuery(id: string): string {
|
|
126
|
+
const i = id.indexOf('?');
|
|
127
|
+
return i >= 0 ? id.substring(0, i) : id;
|
|
128
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vite integration for Vertesia build tools.
|
|
3
|
+
*
|
|
4
|
+
* - `vertesiaDevServerPlugin` — transforms `?skill` / `?raw` / `?prompt` /
|
|
5
|
+
* `?template` (and `?skills` / `?templates`) imports on the fly during
|
|
6
|
+
* `vite dev`. Same transformer set as the `vertesia-build` CLI used at
|
|
7
|
+
* build time, so source files behave identically in both modes.
|
|
8
|
+
*
|
|
9
|
+
* - `apiServerPlugin` — mounts a Hono tool server as Vite middleware under
|
|
10
|
+
* `/api`, with `vertesiaDevServerPlugin` already included so the tool
|
|
11
|
+
* server's query-style imports work without extra wiring.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export { type ApiServerPluginOptions, apiServerPlugin } from './api-server.js';
|
|
15
|
+
export { type VertesiaDevServerPluginOptions, vertesiaDevServerPlugin } from './dev-server.js';
|