@vune-ui/compiler 0.1.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/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/vite.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import type { VuneTransformResult, VuneVitePluginOptions } from "./types.js";
2
+ export declare function createVuneVitePlugin(options?: VuneVitePluginOptions): {
3
+ name: string;
4
+ enforce: "pre";
5
+ config(): {
6
+ optimizeDeps: {
7
+ rolldownOptions: {
8
+ plugins: {
9
+ name: string;
10
+ transform: (source: string, id: string) => VuneTransformResult | null;
11
+ }[];
12
+ };
13
+ };
14
+ };
15
+ transform: (source: string, id: string) => VuneTransformResult | null;
16
+ };
17
+ //# sourceMappingURL=vite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAgC5E,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B;;;;;;;;wCAE3C,MAAM,MAAM,MAAM,KAAG,mBAAmB,GAAG,IAAI;;;;;wBAA/C,MAAM,MAAM,MAAM,KAAG,mBAAmB,GAAG,IAAI;EAqD3E"}
package/dist/vite.js ADDED
@@ -0,0 +1,96 @@
1
+ import { createVuneSourceMap } from "./source-map.js";
2
+ import { hasVuneSyntax, transformVuneSource } from "./pipeline.js";
3
+ function isVuneVueScript(attributes) {
4
+ const language = /\blang\s*=\s*(["'])([^"']+)\1/i.exec(attributes)?.[2];
5
+ return !language || /^(?:vune|js|jsx|ts|tsx|mts|cts)$/i.test(language);
6
+ }
7
+ function isGeneratedVueScript(source) {
8
+ return /\b_defineComponent\(\{/.test(source)
9
+ && /\bsetup\(__props(?:\s*,|\s*\))/.test(source)
10
+ && /\b(?:_openBlock|_createBlock|_createElementBlock)\b/.test(source);
11
+ }
12
+ function transformVueSfcSource(source, fileName) {
13
+ const script = /<script\b([^>]*)>([\s\S]*?)<\/script\s*>/gi;
14
+ let output = source;
15
+ let changed = false;
16
+ let match;
17
+ while ((match = script.exec(source))) {
18
+ if (!isVuneVueScript(match[1]))
19
+ continue;
20
+ const language = /\blang\s*=\s*(["'])([^"']+)\1/i.exec(match[1])?.[2] ?? "ts";
21
+ if (!hasVuneSyntax(match[2], !/^(?:tsx|jsx)$/i.test(language)))
22
+ continue;
23
+ const transformed = transformVuneSource(match[2], `${fileName}#script`);
24
+ if (transformed === match[2])
25
+ continue;
26
+ const bodyStart = match.index + match[0].indexOf(match[2]);
27
+ const outputStart = bodyStart + (output.length - source.length);
28
+ output = output.slice(0, outputStart) + transformed + output.slice(outputStart + match[2].length);
29
+ changed = true;
30
+ }
31
+ return changed ? output : source;
32
+ }
33
+ export function createVuneVitePlugin(options = {}) {
34
+ const cache = new Map();
35
+ const transform = (source, id) => {
36
+ const fileName = id.split("?", 1)[0];
37
+ const query = id.slice(fileName.length + (id.includes("?") ? 1 : 0));
38
+ // Compiled workspace packages are already TypeScript output. Re-running
39
+ // Vune lowering over their JavaScript can mistake ordinary method calls
40
+ // for authoring syntax and corrupt otherwise valid module code.
41
+ if (/[\\/]node_modules[\\/]/.test(fileName) || /[\\/]dist[\\/]/.test(fileName))
42
+ return null;
43
+ const isVue = /\.vue$/i.test(fileName);
44
+ const isVueTemplate = isVue && /(?:^|&)type=template(?:&|$)/.test(query);
45
+ const isVueStyle = isVue && /(?:^|&)type=style(?:&|$)/.test(query);
46
+ const isVueScript = isVue && (/(?:^|&)type=script(?:&|$)/.test(query)
47
+ || (!isVueTemplate && !isVueStyle && !/<(?:script|template)\b/i.test(source)));
48
+ if (!isVue && !/\.vune\.tsx?$/.test(fileName) && !/\.[cm]?[jt]sx?$/.test(fileName))
49
+ return null;
50
+ if (options.include) {
51
+ options.include.lastIndex = 0;
52
+ if (!options.include.test(fileName))
53
+ return null;
54
+ }
55
+ if (isVue && (isVueTemplate || isVueStyle))
56
+ return null;
57
+ if (isVueScript && isGeneratedVueScript(source))
58
+ return null;
59
+ const vueSource = isVue && !isVueScript
60
+ ? transformVueSfcSource(source, fileName)
61
+ : source;
62
+ if (!isVue && !/\.vune\.tsx?$/.test(fileName) && !hasVuneSyntax(source, false))
63
+ return null;
64
+ if (isVue && vueSource === source && !isVueScript)
65
+ return null;
66
+ if (isVueScript && !hasVuneSyntax(source, !/(?:^|&)lang\.(?:tsx|jsx)(?:&|$)/.test(query)))
67
+ return null;
68
+ const cacheKey = isVue ? id : fileName;
69
+ const cached = cache.get(cacheKey);
70
+ if (cached?.source === source)
71
+ return cached.result;
72
+ const code = isVue && !isVueScript ? vueSource : transformVuneSource(source, fileName);
73
+ const transformed = code === source ? null : { code, map: createVuneSourceMap(source, code, fileName) };
74
+ cache.set(cacheKey, { source, result: transformed });
75
+ return transformed;
76
+ };
77
+ const dependencyScanPlugin = {
78
+ name: "vune-compiler:dependency-scan",
79
+ transform,
80
+ };
81
+ return {
82
+ name: "vune-compiler",
83
+ enforce: "pre",
84
+ config() {
85
+ return {
86
+ optimizeDeps: {
87
+ rolldownOptions: {
88
+ plugins: [dependencyScanPlugin],
89
+ },
90
+ },
91
+ };
92
+ },
93
+ transform,
94
+ };
95
+ }
96
+ //# sourceMappingURL=vite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGlE,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,QAAQ,GAAG,gCAAgC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACvE,OAAO,CAAC,QAAQ,IAAI,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACxE,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;WACvC,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC;WAC7C,qDAAqD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc,EAAE,QAAgB;IAC7D,MAAM,MAAM,GAAG,4CAA4C,CAAA;IAC3D,IAAI,MAAM,GAAG,MAAM,CAAA;IACnB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,KAA6B,CAAA;IACjC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,SAAQ;QACxC,MAAM,QAAQ,GAAG,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QAC7E,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAQ;QACxE,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,SAAS,CAAC,CAAA;QACvE,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC;YAAE,SAAQ;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACjG,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAiC,EAAE;IACtE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkE,CAAA;IACvF,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAU,EAA8B,EAAE;QAC3E,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,wEAAwE;QACxE,wEAAwE;QACxE,gEAAgE;QAChE,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QAC3F,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,MAAM,aAAa,GAAG,KAAK,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxE,MAAM,UAAU,GAAG,KAAK,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClE,MAAM,WAAW,GAAG,KAAK,IAAI,CAC3B,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;eACpC,CAAC,CAAC,aAAa,IAAI,CAAC,UAAU,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAC9E,CAAA;QACD,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QAC/F,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAA;QAClD,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QACvD,IAAI,WAAW,IAAI,oBAAoB,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5D,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,WAAW;YACrC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;YACzC,CAAC,CAAC,MAAM,CAAA;QACV,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC3F,IAAI,KAAK,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QAC9D,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QACtG,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM;YAAE,OAAO,MAAM,CAAC,MAAM,CAAA;QACnD,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtF,MAAM,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAA;QACvG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;QACpD,OAAO,WAAW,CAAA;IACpB,CAAC,CAAA;IACD,MAAM,oBAAoB,GAAG;QAC3B,IAAI,EAAE,+BAA+B;QACrC,SAAS;KACV,CAAA;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,KAAc;QACvB,MAAM;YACJ,OAAO;gBACL,YAAY,EAAE;oBACZ,eAAe,EAAE;wBACf,OAAO,EAAE,CAAC,oBAAoB,CAAC;qBAChC;iBACF;aACF,CAAA;QACH,CAAC;QACD,SAAS;KACV,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@vune-ui/compiler",
3
+ "version": "0.1.0",
4
+ "description": "TypeScript-hosted compiler for Vune builder and .vune.ts syntax.",
5
+ "type": "module",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "scripts": {
18
+ "build": "tsc -p tsconfig.json",
19
+ "check": "tsc -p tsconfig.json --noEmit"
20
+ },
21
+ "dependencies": {
22
+ "@vune-ui/core": "workspace:*",
23
+ "typescript": "^5.8.3"
24
+ },
25
+ "sideEffects": false,
26
+ "publishConfig": {
27
+ "access": "public"
28
+ }
29
+ }