fynixui 1.0.2 → 1.0.4
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.
Potentially problematic release.
This version of fynixui might be problematic. Click here for more details.
- package/dist/fynix/index.d.ts +1 -1
- package/dist/fynix/index.d.ts.map +1 -1
- package/dist/fynix/index.js +1 -1
- package/dist/fynix/index.js.map +2 -2
- package/dist/hooks/nixFor.d.ts +13 -0
- package/dist/hooks/nixFor.d.ts.map +1 -0
- package/dist/hooks/nixFor.js +25 -0
- package/dist/hooks/nixFor.js.map +7 -0
- package/dist/package.json +5 -1
- package/dist/plugins/vite-plugin-res.d.ts +29 -20
- package/dist/plugins/vite-plugin-res.d.ts.map +1 -1
- package/dist/plugins/vite-plugin-res.js +33 -231
- package/dist/plugins/vite-plugin-res.js.map +3 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3 -0
- package/dist/runtime.js.map +2 -2
- package/package.json +6 -2
- package/types/fnx.d.ts +9 -47
- package/types/fynix-ui.d.ts +1 -1
- package/types/jsx.d.ts +6 -1
- package/types/vite-env.d.ts +0 -8
- package/README.md +0 -36
- package/dist/README.md +0 -36
- package/dist/parser/fnx-parser.d.ts +0 -49
- package/dist/parser/fnx-parser.d.ts.map +0 -1
- package/dist/parser/fnx-parser.js +0 -483
- package/dist/parser/fnx-parser.js.map +0 -7
- package/dist/typescript-fynix-plugin/index.js +0 -1065
- package/dist/typescript-fynix-plugin/index.js.map +0 -7
package/dist/fynix/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export * from "../runtime.js";
|
|
|
2
2
|
export * from "../router/router.js";
|
|
3
3
|
export { default as createFynix } from "../router/router.js";
|
|
4
4
|
export { Fynix } from "../runtime.js";
|
|
5
|
-
export
|
|
5
|
+
export { For } from "../hooks/nixFor.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../fynix/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../fynix/index.ts"],"names":[],"mappings":"AA2BA,cAAc,eAAe,CAAC;AAE9B,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/fynix/index.js
CHANGED
package/dist/fynix/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../fynix/index.ts"],
|
|
4
|
-
"sourcesContent": ["/* MIT License\r\n\r\n* Copyright (c) 2026 Resty Gonzales\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n* SOFTWARE.\r\n */\r\n// fynix/index.js - Single entry point for all core functionality\r\nexport * from \"../runtime.js\";\r\n// Re-export Fynix namespace and hooks under new names\r\nexport * from \"../router/router.js\";\r\nexport { default as createFynix } from \"../router/router.js\";\r\nexport { Fynix } from \"../runtime.js\";\r\
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/* MIT License\r\n\r\n* Copyright (c) 2026 Resty Gonzales\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n* SOFTWARE.\r\n */\r\n// fynix/index.js - Single entry point for all core functionality\r\n\r\n/// <reference path=\"../types/jsx.d.ts\" />\r\n/// <reference path=\"../types/global.d.ts\" />\r\n\r\nexport * from \"../runtime.js\";\r\n// Re-export Fynix namespace and hooks under new names\r\nexport * from \"../router/router.js\";\r\nexport { default as createFynix } from \"../router/router.js\";\r\nexport { Fynix } from \"../runtime.js\";\r\nexport { For } from \"../hooks/nixFor.js\";\r\n"],
|
|
5
|
+
"mappings": "AA2BA,cAAc;AAEd,cAAc;AACd,SAAoB,WAAXA,gBAA8B;AACvC,SAAS,aAAa;AACtB,SAAS,WAAW;",
|
|
6
6
|
"names": ["default"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { VNode } from "../types/fnx";
|
|
2
|
+
interface ReactiveState<T> {
|
|
3
|
+
value: T;
|
|
4
|
+
_isNixState: boolean;
|
|
5
|
+
subscribe(callback: () => void): () => void;
|
|
6
|
+
}
|
|
7
|
+
interface ForProps<T> {
|
|
8
|
+
each: T[] | ReactiveState<T[]>;
|
|
9
|
+
children?: ((item: T, index: number) => VNode) | ((item: T, index: number) => VNode)[];
|
|
10
|
+
}
|
|
11
|
+
export declare function For<T>(props: ForProps<T>): VNode;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=nixFor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nixFor.d.ts","sourceRoot":"","sources":["../../hooks/nixFor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,UAAU,aAAa,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC/C;AAED,UAAU,QAAQ,CAAC,CAAC;IAChB,IAAI,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC;CAC1F;AAkBD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAyChD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Fragment } from "../runtime";
|
|
2
|
+
export function For(props) {
|
|
3
|
+
let items = [];
|
|
4
|
+
if (props.each && typeof props.each === "object" && "_isNixState" in props.each) {
|
|
5
|
+
items = props.each.value;
|
|
6
|
+
}
|
|
7
|
+
else if (Array.isArray(props.each)) {
|
|
8
|
+
items = props.each;
|
|
9
|
+
}
|
|
10
|
+
let renderer;
|
|
11
|
+
if (typeof props.children === "function") {
|
|
12
|
+
renderer = props.children;
|
|
13
|
+
}
|
|
14
|
+
else if (Array.isArray(props.children) && typeof props.children[0] === "function") {
|
|
15
|
+
renderer = props.children[0];
|
|
16
|
+
}
|
|
17
|
+
if (!renderer) {
|
|
18
|
+
if (items.length > 0) {
|
|
19
|
+
console.warn("[Fynix] <For> expects a function as its child.");
|
|
20
|
+
}
|
|
21
|
+
return { type: Fragment, props: { children: [] }, key: null };
|
|
22
|
+
}
|
|
23
|
+
const mapped = items.map((item, index) => renderer(item, index));
|
|
24
|
+
return { type: Fragment, props: { children: mapped }, key: null };
|
|
25
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../hooks/nixFor.ts"],
|
|
4
|
+
"sourcesContent": ["/* MIT License\r\n* Copyright (c) 2026 Resty Gonzales\r\n*/\r\n\r\nimport { Fragment } from \"../runtime\";\r\nimport { VNode } from \"../types/fnx\";\r\n\r\ninterface ReactiveState<T> {\r\n value: T;\r\n _isNixState: boolean;\r\n subscribe(callback: () => void): () => void;\r\n}\r\n\r\ninterface ForProps<T> {\r\n each: T[] | ReactiveState<T[]>;\r\n children?: ((item: T, index: number) => VNode) | ((item: T, index: number) => VNode)[];\r\n}\r\n\r\n/**\r\n * <For> Component\r\n *\r\n * A reactive list iteration component that efficiently renders items from an array or reactive state.\r\n *\r\n * @example\r\n * ```tsx\r\n * <For each={items}>\r\n * {(item, index) => <div key={item.id}>{item.name}</div>}\r\n * </For>\r\n * ```\r\n *\r\n * @param props - Component properties\r\n * @param props.each - The array or reactive state of array to iterate over\r\n * @param props.children - Render function that receives (item, index) and returns a VNode\r\n */\r\nexport function For<T>(props: ForProps<T>): VNode {\r\n // Accessing props.each.value (if reactive) will register the subscription\r\n // for the component that *uses* <For> or for <For> itself if it's a separate component context.\r\n // Since <For> is a functional component, when it runs, it has a context.\r\n // Accessing .value here subscribes THIS instance of <For> to the state.\r\n // When state changes, <For> re-runs, produces new Fragment with new children,\r\n // and the parent patcher updates the DOM.\r\n\r\n let items: T[] = [];\r\n\r\n if (props.each && typeof props.each === \"object\" && \"_isNixState\" in props.each) {\r\n // Access usage to subscribe\r\n items = (props.each as ReactiveState<T[]>).value;\r\n } else if (Array.isArray(props.each)) {\r\n items = props.each;\r\n }\r\n\r\n // The child (renderer function) is usually passed as the first element of children array\r\n // or as the children prop itself if it's not an array in specific transform cases,\r\n // but standard JSX transform passes children as an array.\r\n // However, Fynix runtime seems to flatten children.\r\n // If the user does <For>{(item) => ...}</For>, props.children might be [Function] or Function.\r\n\r\n let renderer: ((item: T, index: number) => VNode) | undefined;\r\n\r\n if (typeof props.children === \"function\") {\r\n renderer = props.children as unknown as ((item: T, index: number) => VNode);\r\n } else if (Array.isArray(props.children) && typeof props.children[0] === \"function\") {\r\n renderer = props.children[0] as unknown as ((item: T, index: number) => VNode);\r\n }\r\n\r\n if (!renderer) {\r\n if (items.length > 0) {\r\n console.warn(\"[Fynix] <For> expects a function as its child.\");\r\n }\r\n return { type: Fragment, props: { children: [] }, key: null };\r\n }\r\n\r\n const mapped = items.map((item, index) => renderer!(item, index));\r\n\r\n return { type: Fragment, props: { children: mapped }, key: null };\r\n}\r\n"],
|
|
5
|
+
"mappings": ";;AAIA,SAAS,gBAAgB;AA8BlB,SAAS,IAAO,OAA2B;AAQ9C,MAAI,QAAa,CAAC;AAElB,MAAI,MAAM,QAAQ,OAAO,MAAM,SAAS,YAAY,iBAAiB,MAAM,MAAM;AAE7E,YAAS,MAAM,KAA4B;AAAA,EAC/C,WAAW,MAAM,QAAQ,MAAM,IAAI,GAAG;AAClC,YAAQ,MAAM;AAAA,EAClB;AAQA,MAAI;AAEJ,MAAI,OAAO,MAAM,aAAa,YAAY;AACtC,eAAW,MAAM;AAAA,EACrB,WAAW,MAAM,QAAQ,MAAM,QAAQ,KAAK,OAAO,MAAM,SAAS,CAAC,MAAM,YAAY;AACjF,eAAW,MAAM,SAAS,CAAC;AAAA,EAC/B;AAEA,MAAI,CAAC,UAAU;AACX,QAAI,MAAM,SAAS,GAAG;AAClB,cAAQ,KAAK,gDAAgD;AAAA,IACjE;AACA,WAAO,EAAE,MAAM,UAAU,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,KAAK,KAAK;AAAA,EAChE;AAEA,QAAM,SAAS,MAAM,IAAI,CAAC,MAAM,UAAU,SAAU,MAAM,KAAK,CAAC;AAEhE,SAAO,EAAE,MAAM,UAAU,OAAO,EAAE,UAAU,OAAO,GAAG,KAAK,KAAK;AACpE;AAzCgB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fynixui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core package for Fynix UI framework - A lightweight, reactive UI framework with TypeScript support.",
|
|
6
6
|
"main": "./dist/fynix/index.js",
|
|
@@ -140,6 +140,10 @@
|
|
|
140
140
|
"./types/fnx": {
|
|
141
141
|
"types": "./types/fnx.d.ts"
|
|
142
142
|
},
|
|
143
|
+
"./hooks/nixFor": {
|
|
144
|
+
"types": "./dist/hooks/nixFor.d.ts",
|
|
145
|
+
"import": "./dist/hooks/nixFor.js"
|
|
146
|
+
},
|
|
143
147
|
"./package.json": "./package.json"
|
|
144
148
|
},
|
|
145
149
|
"files": [
|
|
@@ -1,29 +1,38 @@
|
|
|
1
|
-
import { type TransformOptions
|
|
2
|
-
import
|
|
1
|
+
import { type TransformOptions } from "esbuild";
|
|
2
|
+
import type { HmrContext, ViteDevServer } from "vite";
|
|
3
3
|
interface FynixPluginOptions {
|
|
4
4
|
jsxFactory?: string;
|
|
5
5
|
jsxFragment?: string;
|
|
6
6
|
include?: string[];
|
|
7
7
|
exclude?: string[];
|
|
8
8
|
sourcemap?: boolean;
|
|
9
|
-
esbuildOptions?: Partial<
|
|
10
|
-
enableSFC?: boolean;
|
|
11
|
-
debug?: boolean;
|
|
12
|
-
showGeneratedCode?: boolean;
|
|
13
|
-
typeCheck?: boolean;
|
|
14
|
-
tsConfig?: ts.CompilerOptions;
|
|
9
|
+
esbuildOptions?: Partial<TransformOptions>;
|
|
15
10
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
11
|
+
export default function fynixPlugin(options?: FynixPluginOptions): {
|
|
12
|
+
name: string;
|
|
13
|
+
enforce: "pre";
|
|
14
|
+
configureServer(server: ViteDevServer): void;
|
|
15
|
+
transform(code: string, id: string): Promise<{
|
|
16
|
+
code: string;
|
|
17
|
+
map: string | null;
|
|
18
|
+
} | null>;
|
|
19
|
+
handleHotUpdate(ctx: HmrContext): never[] | undefined;
|
|
20
|
+
config(): {
|
|
21
|
+
esbuild: false;
|
|
22
|
+
optimizeDeps: {
|
|
23
|
+
include: string[];
|
|
24
|
+
esbuildOptions: {
|
|
25
|
+
jsx: string;
|
|
26
|
+
jsxFactory: string;
|
|
27
|
+
jsxFragment: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
resolve: {
|
|
31
|
+
extensions: string[];
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
buildStart(): void;
|
|
35
|
+
};
|
|
36
|
+
export { fynixPlugin };
|
|
28
37
|
export type { FynixPluginOptions };
|
|
29
38
|
//# sourceMappingURL=vite-plugin-res.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-res.d.ts","sourceRoot":"","sources":["../../plugins/vite-plugin-res.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"vite-plugin-res.d.ts","sourceRoot":"","sources":["../../plugins/vite-plugin-res.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAMtD,UAAU,kBAAkB;IAK1B,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAMnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAMnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAKpB,cAAc,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC5C;AAaD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAO,GAAE,kBAAuB;;;4BAoBxC,aAAa;oBAIf,MAAM,MAAM,MAAM;;;;yBAqEnB,UAAU;;;;;;;;;;;;;;;;EA0ClC;AAKD,OAAO,EAAE,WAAW,EAAE,CAAC;AAKvB,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,141 +1,14 @@
|
|
|
1
|
-
import { transform
|
|
1
|
+
import { transform } from "esbuild";
|
|
2
2
|
import { normalizePath } from "vite";
|
|
3
|
-
import * as ts from "typescript";
|
|
4
|
-
import { parseFnxFile, validateParsedFnx, transformToComponent, } from "../parser/fnx-parser.js";
|
|
5
|
-
const colors = {
|
|
6
|
-
reset: "\x1b[0m",
|
|
7
|
-
red: "\x1b[31m",
|
|
8
|
-
green: "\x1b[32m",
|
|
9
|
-
yellow: "\x1b[33m",
|
|
10
|
-
blue: "\x1b[34m",
|
|
11
|
-
magenta: "\x1b[35m",
|
|
12
|
-
cyan: "\x1b[36m",
|
|
13
|
-
gray: "\x1b[90m",
|
|
14
|
-
bold: "\x1b[1m",
|
|
15
|
-
};
|
|
16
|
-
class TypeScriptChecker {
|
|
17
|
-
constructor(customOptions) {
|
|
18
|
-
this.virtualFiles = new Map();
|
|
19
|
-
this.program = null;
|
|
20
|
-
this.compilerOptions = {
|
|
21
|
-
noEmit: true,
|
|
22
|
-
strict: false,
|
|
23
|
-
target: ts.ScriptTarget.ESNext,
|
|
24
|
-
module: ts.ModuleKind.ESNext,
|
|
25
|
-
jsx: ts.JsxEmit.Preserve,
|
|
26
|
-
lib: ["lib.es2023.d.ts", "lib.dom.d.ts"],
|
|
27
|
-
moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
28
|
-
esModuleInterop: true,
|
|
29
|
-
skipLibCheck: true,
|
|
30
|
-
allowSyntheticDefaultImports: true,
|
|
31
|
-
strictNullChecks: false,
|
|
32
|
-
strictFunctionTypes: false,
|
|
33
|
-
noImplicitAny: false,
|
|
34
|
-
allowJs: true,
|
|
35
|
-
checkJs: false,
|
|
36
|
-
resolveJsonModule: true,
|
|
37
|
-
isolatedModules: true,
|
|
38
|
-
...customOptions,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
addFile(fileName, content) {
|
|
42
|
-
this.virtualFiles.set(fileName, content);
|
|
43
|
-
this.program = null;
|
|
44
|
-
}
|
|
45
|
-
createCompilerHost() {
|
|
46
|
-
const defaultHost = ts.createCompilerHost(this.compilerOptions);
|
|
47
|
-
return {
|
|
48
|
-
...defaultHost,
|
|
49
|
-
getSourceFile: (fileName, languageVersion) => {
|
|
50
|
-
if (this.virtualFiles.has(fileName)) {
|
|
51
|
-
const content = this.virtualFiles.get(fileName);
|
|
52
|
-
if (content === undefined)
|
|
53
|
-
return undefined;
|
|
54
|
-
return ts.createSourceFile(fileName, content, languageVersion, true);
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
if (ts.sys.fileExists(fileName)) {
|
|
58
|
-
const content = ts.sys.readFile(fileName);
|
|
59
|
-
if (content !== undefined) {
|
|
60
|
-
return ts.createSourceFile(fileName, content, languageVersion, true);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
}
|
|
66
|
-
return undefined;
|
|
67
|
-
},
|
|
68
|
-
fileExists: (fileName) => {
|
|
69
|
-
if (this.virtualFiles.has(fileName))
|
|
70
|
-
return true;
|
|
71
|
-
return ts.sys.fileExists(fileName);
|
|
72
|
-
},
|
|
73
|
-
readFile: (fileName) => {
|
|
74
|
-
if (this.virtualFiles.has(fileName)) {
|
|
75
|
-
const content = this.virtualFiles.get(fileName);
|
|
76
|
-
return content === undefined ? undefined : content;
|
|
77
|
-
}
|
|
78
|
-
const sysContent = ts.sys.readFile(fileName);
|
|
79
|
-
return sysContent === undefined ? undefined : sysContent;
|
|
80
|
-
},
|
|
81
|
-
writeFile: () => { },
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
checkFile(fileName) {
|
|
85
|
-
const errors = [];
|
|
86
|
-
try {
|
|
87
|
-
if (!this.virtualFiles.has(fileName)) {
|
|
88
|
-
return ["File not found in virtual file system"];
|
|
89
|
-
}
|
|
90
|
-
const compilerHost = this.createCompilerHost();
|
|
91
|
-
if (!this.program) {
|
|
92
|
-
this.program = ts.createProgram([fileName], this.compilerOptions, compilerHost);
|
|
93
|
-
}
|
|
94
|
-
const sourceFile = this.program.getSourceFile(fileName);
|
|
95
|
-
if (!sourceFile) {
|
|
96
|
-
return [`Could not get source file for ${fileName}`];
|
|
97
|
-
}
|
|
98
|
-
const diagnostics = [
|
|
99
|
-
...this.program.getSyntacticDiagnostics(sourceFile),
|
|
100
|
-
...this.program.getSemanticDiagnostics(sourceFile),
|
|
101
|
-
];
|
|
102
|
-
const skipCodes = new Set([2307, 2792, 7016, 2304, 7026, 2874]);
|
|
103
|
-
diagnostics.forEach((diagnostic) => {
|
|
104
|
-
if (skipCodes.has(diagnostic.code)) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (diagnostic.file && diagnostic.start !== undefined) {
|
|
108
|
-
const pos = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
109
|
-
const line = pos?.line ?? 0;
|
|
110
|
-
const character = pos?.character ?? 0;
|
|
111
|
-
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
112
|
-
errors.push(`${colors.yellow}Line ${line + 1}:${character + 1}${colors.reset} - ${message} ${colors.gray}(TS${diagnostic.code})${colors.reset}`);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
116
|
-
errors.push(`${message} ${colors.gray}(TS${diagnostic.code})${colors.reset}`);
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
errors.push(`${colors.red}Type checking error:${colors.reset} ${error instanceof Error ? error.message : String(error)}`);
|
|
122
|
-
}
|
|
123
|
-
return errors;
|
|
124
|
-
}
|
|
125
|
-
clear() {
|
|
126
|
-
this.virtualFiles.clear();
|
|
127
|
-
this.program = null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
3
|
export default function fynixPlugin(options = {}) {
|
|
131
|
-
const { jsxFactory = "Fynix", jsxFragment = "Fynix.Fragment", include = [".ts", ".js", ".jsx", ".tsx", ".fnx"], exclude = ["node_modules"], sourcemap = true, esbuildOptions = {},
|
|
132
|
-
let
|
|
133
|
-
if (typeCheck) {
|
|
134
|
-
typeChecker = new TypeScriptChecker(tsConfig);
|
|
135
|
-
}
|
|
4
|
+
const { jsxFactory = "Fynix", jsxFragment = "Fynix.Fragment", include = [".ts", ".js", ".jsx", ".tsx", ".fnx"], exclude = ["node_modules"], sourcemap = true, esbuildOptions = {}, } = options;
|
|
5
|
+
let viteServer = null;
|
|
136
6
|
return {
|
|
137
|
-
name: "vite-plugin-fynix
|
|
7
|
+
name: "vite-plugin-fynix",
|
|
138
8
|
enforce: "pre",
|
|
9
|
+
configureServer(server) {
|
|
10
|
+
viteServer = server;
|
|
11
|
+
},
|
|
139
12
|
async transform(code, id) {
|
|
140
13
|
const normalizedId = normalizePath(id);
|
|
141
14
|
const shouldExclude = exclude.some((pattern) => normalizedId.includes(pattern));
|
|
@@ -149,72 +22,20 @@ export default function fynixPlugin(options = {}) {
|
|
|
149
22
|
ctx.addWatchFile(id);
|
|
150
23
|
}
|
|
151
24
|
try {
|
|
152
|
-
let codeToTransform = code;
|
|
153
25
|
let loader = "tsx";
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
filePath: normalizedId,
|
|
160
|
-
jsxFactory,
|
|
161
|
-
includeStyleInjection: true,
|
|
162
|
-
includeMetaInjection: true,
|
|
163
|
-
});
|
|
164
|
-
codeToTransform = transformResult.code;
|
|
165
|
-
if (showGeneratedCode) {
|
|
166
|
-
console.log(`\n${colors.cyan}${"=".repeat(80)}${colors.reset}`);
|
|
167
|
-
console.log(`${colors.cyan}[Fynix SFC]${colors.reset} Generated code for: ${colors.gray}${normalizedId}${colors.reset}`);
|
|
168
|
-
console.log(`${colors.cyan}${"=".repeat(80)}${colors.reset}`);
|
|
169
|
-
console.log(codeToTransform);
|
|
170
|
-
console.log(`${colors.cyan}${"=".repeat(80)}${colors.reset}\n`);
|
|
171
|
-
}
|
|
172
|
-
shouldTypeCheck = typeCheck && parsed.logicLang === "ts";
|
|
173
|
-
loader = parsed.logicLang === "ts" ? "tsx" : "jsx";
|
|
174
|
-
if (shouldTypeCheck && typeChecker) {
|
|
175
|
-
const virtualFileName = normalizedId.replace(/\.fnx$/, ".virtual.tsx");
|
|
176
|
-
typeChecker.addFile(virtualFileName, codeToTransform);
|
|
177
|
-
const typeErrors = typeChecker.checkFile(virtualFileName);
|
|
178
|
-
if (typeErrors.length > 0) {
|
|
179
|
-
console.error(`\n${colors.red}${colors.bold}[Fynix SFC] TypeScript Errors${colors.reset} in ${colors.cyan}${normalizedId}${colors.reset}:`);
|
|
180
|
-
typeErrors.forEach((error) => console.error(` ${error}`));
|
|
181
|
-
console.error("");
|
|
182
|
-
if (process.env.NODE_ENV === "production") {
|
|
183
|
-
throw new Error(`TypeScript errors in ${normalizedId}`);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
shouldTypeCheck = false;
|
|
187
|
-
}
|
|
26
|
+
if (normalizedId.endsWith(".ts") || normalizedId.endsWith(".fnx")) {
|
|
27
|
+
loader = "tsx";
|
|
28
|
+
}
|
|
29
|
+
else if (normalizedId.endsWith(".tsx")) {
|
|
30
|
+
loader = "tsx";
|
|
188
31
|
}
|
|
189
|
-
else {
|
|
190
|
-
|
|
191
|
-
loader = "ts";
|
|
192
|
-
shouldTypeCheck = typeCheck;
|
|
193
|
-
}
|
|
194
|
-
else if (normalizedId.endsWith(".tsx")) {
|
|
195
|
-
loader = "tsx";
|
|
196
|
-
shouldTypeCheck = typeCheck;
|
|
197
|
-
}
|
|
198
|
-
else if (normalizedId.endsWith(".jsx")) {
|
|
199
|
-
loader = "jsx";
|
|
200
|
-
}
|
|
201
|
-
else if (normalizedId.endsWith(".js")) {
|
|
202
|
-
loader = "js";
|
|
203
|
-
}
|
|
32
|
+
else if (normalizedId.endsWith(".jsx")) {
|
|
33
|
+
loader = "jsx";
|
|
204
34
|
}
|
|
205
|
-
if (
|
|
206
|
-
|
|
207
|
-
const typeErrors = typeChecker.checkFile(normalizedId);
|
|
208
|
-
if (typeErrors.length > 0) {
|
|
209
|
-
console.error(`\n${colors.red}${colors.bold}[Fynix SFC] TypeScript Errors${colors.reset} in ${colors.cyan}${normalizedId}${colors.reset}:`);
|
|
210
|
-
typeErrors.forEach((error) => console.error(` ${error}`));
|
|
211
|
-
console.error("");
|
|
212
|
-
if (process.env.NODE_ENV === "production") {
|
|
213
|
-
throw new Error(`TypeScript errors in ${normalizedId}`);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
35
|
+
else if (normalizedId.endsWith(".js")) {
|
|
36
|
+
loader = "jsx";
|
|
216
37
|
}
|
|
217
|
-
const result = await transform(
|
|
38
|
+
const result = await transform(code, {
|
|
218
39
|
loader,
|
|
219
40
|
jsxFactory,
|
|
220
41
|
jsxFragment,
|
|
@@ -231,19 +52,19 @@ export default function fynixPlugin(options = {}) {
|
|
|
231
52
|
}
|
|
232
53
|
catch (error) {
|
|
233
54
|
const err = error;
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
55
|
+
if (viteServer) {
|
|
56
|
+
viteServer.ws.send({
|
|
57
|
+
type: "error",
|
|
58
|
+
err: {
|
|
59
|
+
message: err.message,
|
|
60
|
+
stack: err.stack || "",
|
|
61
|
+
plugin: "vite-plugin-fynix",
|
|
62
|
+
id,
|
|
63
|
+
},
|
|
242
64
|
});
|
|
243
65
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
66
|
+
console.error(`\x1b[32m[vite-plugin-fynix]\x1b[0m \x1b[31mFailed to transform ${id}:\x1b[0m`);
|
|
67
|
+
console.error(err.message);
|
|
247
68
|
return null;
|
|
248
69
|
}
|
|
249
70
|
},
|
|
@@ -252,10 +73,7 @@ export default function fynixPlugin(options = {}) {
|
|
|
252
73
|
const normalizedFile = normalizePath(file);
|
|
253
74
|
const shouldReload = include.some((ext) => normalizedFile.endsWith(ext));
|
|
254
75
|
if (shouldReload) {
|
|
255
|
-
console.log(
|
|
256
|
-
if (typeChecker) {
|
|
257
|
-
typeChecker.clear();
|
|
258
|
-
}
|
|
76
|
+
console.log(`\x1b[32m[vite-plugin-fynix]\x1b[0m HMR: full-reload triggered by ${normalizedFile}`);
|
|
259
77
|
server.ws.send({
|
|
260
78
|
type: "full-reload",
|
|
261
79
|
path: "*",
|
|
@@ -265,12 +83,8 @@ export default function fynixPlugin(options = {}) {
|
|
|
265
83
|
return undefined;
|
|
266
84
|
},
|
|
267
85
|
config() {
|
|
268
|
-
|
|
269
|
-
esbuild:
|
|
270
|
-
jsxFactory,
|
|
271
|
-
jsxFragment,
|
|
272
|
-
jsxInject: `import { ${jsxFactory} } from 'fynixui'`,
|
|
273
|
-
},
|
|
86
|
+
return {
|
|
87
|
+
esbuild: false,
|
|
274
88
|
optimizeDeps: {
|
|
275
89
|
include: ["fynixui"],
|
|
276
90
|
esbuildOptions: {
|
|
@@ -283,22 +97,10 @@ export default function fynixPlugin(options = {}) {
|
|
|
283
97
|
extensions: [".fnx", ".ts", ".tsx", ".js", ".jsx", ".json"],
|
|
284
98
|
},
|
|
285
99
|
};
|
|
286
|
-
return config;
|
|
287
100
|
},
|
|
288
101
|
buildStart() {
|
|
289
|
-
console.log(
|
|
290
|
-
if (enableSFC) {
|
|
291
|
-
console.log(`${colors.cyan}[vite-plugin-fynix-sfc]${colors.reset} SFC support: ${colors.green}enabled${colors.reset}`);
|
|
292
|
-
}
|
|
293
|
-
if (typeCheck) {
|
|
294
|
-
console.log(`${colors.cyan}[vite-plugin-fynix-sfc]${colors.reset} Type checking: ${colors.green}enabled${colors.reset}`);
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
buildEnd() {
|
|
298
|
-
if (typeChecker) {
|
|
299
|
-
typeChecker.clear();
|
|
300
|
-
}
|
|
102
|
+
console.log(`\x1b[32m[vite-plugin-fynix]\x1b[0m Initialized with JSX factory: ${jsxFactory}`);
|
|
301
103
|
},
|
|
302
104
|
};
|
|
303
105
|
}
|
|
304
|
-
export { fynixPlugin
|
|
106
|
+
export { fynixPlugin };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../plugins/vite-plugin-res.ts"],
|
|
4
|
-
"sourcesContent": ["import {\r\n transform,\r\n type TransformOptions as EsbuildTransformOptions,\r\n} from \"esbuild\";\r\nimport type { HmrContext, UserConfig } from \"vite\";\r\nimport { normalizePath } from \"vite\";\r\nimport * as ts from \"typescript\";\r\nimport {\r\n parseFnxFile,\r\n validateParsedFnx,\r\n transformToComponent,\r\n} from \"../parser/fnx-parser.js\";\r\n\r\n/**\r\n * ANSI color codes for terminal output\r\n */\r\nconst colors = {\r\n reset: \"\\x1b[0m\",\r\n red: \"\\x1b[31m\",\r\n green: \"\\x1b[32m\",\r\n yellow: \"\\x1b[33m\",\r\n blue: \"\\x1b[34m\",\r\n magenta: \"\\x1b[35m\",\r\n cyan: \"\\x1b[36m\",\r\n gray: \"\\x1b[90m\",\r\n bold: \"\\x1b[1m\",\r\n};\r\n\r\n/**\r\n * Vite plugin options for Fynix with SFC support\r\n */\r\ninterface FynixPluginOptions {\r\n /**\r\n * JSX factory function name\r\n * @default \"Fynix\"\r\n */\r\n jsxFactory?: string;\r\n\r\n /**\r\n * JSX fragment factory name\r\n * @default \"Fynix.Fragment\"\r\n */\r\n jsxFragment?: string;\r\n\r\n /**\r\n * File extensions to transform\r\n * @default [\".ts\", \".js\", \".jsx\", \".tsx\", \".fnx\"]\r\n */\r\n include?: string[];\r\n\r\n /**\r\n * Paths to exclude from transformation\r\n * @default [\"node_modules\"]\r\n */\r\n exclude?: string[];\r\n\r\n /**\r\n * Enable source maps\r\n * @default true\r\n */\r\n sourcemap?: boolean;\r\n\r\n /**\r\n * Custom esbuild transform options\r\n */\r\n esbuildOptions?: Partial<EsbuildTransformOptions>;\r\n\r\n /**\r\n * Enable SFC parsing for .fnx files\r\n * @default true\r\n */\r\n enableSFC?: boolean;\r\n\r\n /**\r\n * Enable debug logging\r\n * @default false\r\n */\r\n debug?: boolean;\r\n\r\n /**\r\n * Show generated code in console (useful for debugging SFC transformation)\r\n * @default false\r\n */\r\n showGeneratedCode?: boolean;\r\n\r\n /**\r\n * Enable TypeScript type checking (slower but catches type errors)\r\n * @default false\r\n */\r\n typeCheck?: boolean;\r\n\r\n /**\r\n * TypeScript compiler options override\r\n */\r\n tsConfig?: ts.CompilerOptions;\r\n}\r\n\r\n/**\r\n * Extended context type that includes Vite's transform context methods\r\n */\r\ninterface TransformContext {\r\n addWatchFile?: (id: string) => void;\r\n error?: (error: { message: string; stack?: string; id?: string }) => void;\r\n}\r\n\r\n/**\r\n * Improved type checker with better error handling and virtual file system\r\n */\r\nclass TypeScriptChecker {\r\n private compilerOptions: ts.CompilerOptions;\r\n private virtualFiles: Map<string, string> = new Map();\r\n private program: ts.Program | null = null;\r\n\r\n constructor(customOptions?: ts.CompilerOptions) {\r\n this.compilerOptions = {\r\n noEmit: true,\r\n strict: false,\r\n target: ts.ScriptTarget.ESNext,\r\n module: ts.ModuleKind.ESNext,\r\n jsx: ts.JsxEmit.Preserve,\r\n lib: [\"lib.es2023.d.ts\", \"lib.dom.d.ts\"],\r\n moduleResolution: ts.ModuleResolutionKind.Bundler,\r\n esModuleInterop: true,\r\n skipLibCheck: true,\r\n allowSyntheticDefaultImports: true,\r\n strictNullChecks: false,\r\n strictFunctionTypes: false,\r\n noImplicitAny: false,\r\n allowJs: true,\r\n checkJs: false,\r\n resolveJsonModule: true,\r\n isolatedModules: true,\r\n ...customOptions,\r\n };\r\n }\r\n\r\n addFile(fileName: string, content: string): void {\r\n this.virtualFiles.set(fileName, content);\r\n this.program = null;\r\n }\r\n\r\n private createCompilerHost(): ts.CompilerHost {\r\n const defaultHost = ts.createCompilerHost(this.compilerOptions);\r\n\r\n return {\r\n ...defaultHost,\r\n getSourceFile: (fileName, languageVersion) => {\r\n if (this.virtualFiles.has(fileName)) {\r\n const content = this.virtualFiles.get(fileName);\r\n if (content === undefined) return undefined;\r\n return ts.createSourceFile(fileName, content, languageVersion, true);\r\n }\r\n\r\n try {\r\n if (ts.sys.fileExists(fileName)) {\r\n const content = ts.sys.readFile(fileName);\r\n if (content !== undefined) {\r\n return ts.createSourceFile(\r\n fileName,\r\n content,\r\n languageVersion,\r\n true\r\n );\r\n }\r\n }\r\n } catch (err) {\r\n // Silent fail\r\n }\r\n\r\n return undefined;\r\n },\r\n fileExists: (fileName) => {\r\n if (this.virtualFiles.has(fileName)) return true;\r\n return ts.sys.fileExists(fileName);\r\n },\r\n readFile: (fileName) => {\r\n if (this.virtualFiles.has(fileName)) {\r\n const content = this.virtualFiles.get(fileName);\r\n return content === undefined ? undefined : content;\r\n }\r\n const sysContent = ts.sys.readFile(fileName);\r\n return sysContent === undefined ? undefined : sysContent;\r\n },\r\n writeFile: () => { },\r\n };\r\n }\r\n\r\n checkFile(fileName: string): string[] {\r\n const errors: string[] = [];\r\n\r\n try {\r\n if (!this.virtualFiles.has(fileName)) {\r\n return [\"File not found in virtual file system\"];\r\n }\r\n\r\n const compilerHost = this.createCompilerHost();\r\n\r\n if (!this.program) {\r\n this.program = ts.createProgram(\r\n [fileName],\r\n this.compilerOptions,\r\n compilerHost\r\n );\r\n }\r\n\r\n const sourceFile = this.program.getSourceFile(fileName);\r\n if (!sourceFile) {\r\n return [`Could not get source file for ${fileName}`];\r\n }\r\n\r\n const diagnostics = [\r\n ...this.program.getSyntacticDiagnostics(sourceFile),\r\n ...this.program.getSemanticDiagnostics(sourceFile),\r\n ];\r\n\r\n const skipCodes = new Set([2307, 2792, 7016, 2304, 7026, 2874]);\r\n\r\n diagnostics.forEach((diagnostic) => {\r\n if (skipCodes.has(diagnostic.code)) {\r\n return;\r\n }\r\n\r\n if (diagnostic.file && diagnostic.start !== undefined) {\r\n const pos = diagnostic.file.getLineAndCharacterOfPosition(\r\n diagnostic.start\r\n );\r\n const line = pos?.line ?? 0;\r\n const character = pos?.character ?? 0;\r\n const message = ts.flattenDiagnosticMessageText(\r\n diagnostic.messageText,\r\n \"\\n\"\r\n );\r\n errors.push(\r\n `${colors.yellow}Line ${line + 1}:${character + 1}${colors.reset} - ${message} ${colors.gray}(TS${diagnostic.code})${colors.reset}`\r\n );\r\n } else {\r\n const message = ts.flattenDiagnosticMessageText(\r\n diagnostic.messageText,\r\n \"\\n\"\r\n );\r\n errors.push(\r\n `${message} ${colors.gray}(TS${diagnostic.code})${colors.reset}`\r\n );\r\n }\r\n });\r\n } catch (error) {\r\n errors.push(\r\n `${colors.red}Type checking error:${colors.reset} ${error instanceof Error ? error.message : String(error)}`\r\n );\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n clear(): void {\r\n this.virtualFiles.clear();\r\n this.program = null;\r\n }\r\n}\r\n\r\n/**\r\n * Vite plugin for Fynix framework with improved SFC support\r\n */\r\nexport default function fynixPlugin(options: FynixPluginOptions = {}): any {\r\n const {\r\n jsxFactory = \"Fynix\",\r\n jsxFragment = \"Fynix.Fragment\",\r\n include = [\".ts\", \".js\", \".jsx\", \".tsx\", \".fnx\"],\r\n exclude = [\"node_modules\"],\r\n sourcemap = true,\r\n esbuildOptions = {},\r\n enableSFC = true,\r\n showGeneratedCode = false,\r\n typeCheck = false,\r\n tsConfig,\r\n } = options;\r\n\r\n let typeChecker: TypeScriptChecker | null = null;\r\n\r\n if (typeCheck) {\r\n typeChecker = new TypeScriptChecker(tsConfig);\r\n }\r\n\r\n return {\r\n name: \"vite-plugin-fynix-sfc\",\r\n enforce: \"pre\" as const,\r\n\r\n async transform(code: string, id: string) {\r\n const normalizedId = normalizePath(id);\r\n\r\n const shouldExclude = exclude.some((pattern) =>\r\n normalizedId.includes(pattern)\r\n );\r\n if (shouldExclude) return null;\r\n\r\n const shouldInclude = include.some((ext) => normalizedId.endsWith(ext));\r\n if (!shouldInclude) return null;\r\n\r\n const ctx = this as unknown as TransformContext;\r\n if (typeof ctx.addWatchFile === \"function\") {\r\n ctx.addWatchFile(id);\r\n }\r\n\r\n try {\r\n let codeToTransform = code;\r\n let loader: EsbuildTransformOptions[\"loader\"] = \"tsx\";\r\n let shouldTypeCheck = false;\r\n\r\n if (normalizedId.endsWith(\".fnx\") && enableSFC) {\r\n const parsed = parseFnxFile(code);\r\n validateParsedFnx(parsed, normalizedId);\r\n\r\n const transformResult = transformToComponent(parsed, {\r\n filePath: normalizedId,\r\n jsxFactory,\r\n includeStyleInjection: true,\r\n includeMetaInjection: true,\r\n });\r\n\r\n codeToTransform = transformResult.code;\r\n\r\n if (showGeneratedCode) {\r\n console.log(`\\n${colors.cyan}${\"=\".repeat(80)}${colors.reset}`);\r\n console.log(\r\n `${colors.cyan}[Fynix SFC]${colors.reset} Generated code for: ${colors.gray}${normalizedId}${colors.reset}`\r\n );\r\n console.log(`${colors.cyan}${\"=\".repeat(80)}${colors.reset}`);\r\n console.log(codeToTransform);\r\n console.log(`${colors.cyan}${\"=\".repeat(80)}${colors.reset}\\n`);\r\n }\r\n\r\n shouldTypeCheck = typeCheck && parsed.logicLang === \"ts\";\r\n loader = parsed.logicLang === \"ts\" ? \"tsx\" : \"jsx\";\r\n\r\n if (shouldTypeCheck && typeChecker) {\r\n const virtualFileName = normalizedId.replace(\r\n /\\.fnx$/,\r\n \".virtual.tsx\"\r\n );\r\n typeChecker.addFile(virtualFileName, codeToTransform);\r\n const typeErrors = typeChecker.checkFile(virtualFileName);\r\n\r\n if (typeErrors.length > 0) {\r\n console.error(\r\n `\\n${colors.red}${colors.bold}[Fynix SFC] TypeScript Errors${colors.reset} in ${colors.cyan}${normalizedId}${colors.reset}:`\r\n );\r\n typeErrors.forEach((error) => console.error(` ${error}`));\r\n console.error(\"\");\r\n\r\n if (process.env.NODE_ENV === \"production\") {\r\n throw new Error(`TypeScript errors in ${normalizedId}`);\r\n }\r\n }\r\n\r\n shouldTypeCheck = false;\r\n }\r\n } else {\r\n if (normalizedId.endsWith(\".ts\")) {\r\n loader = \"ts\";\r\n shouldTypeCheck = typeCheck;\r\n } else if (normalizedId.endsWith(\".tsx\")) {\r\n loader = \"tsx\";\r\n shouldTypeCheck = typeCheck;\r\n } else if (normalizedId.endsWith(\".jsx\")) {\r\n loader = \"jsx\";\r\n } else if (normalizedId.endsWith(\".js\")) {\r\n loader = \"js\";\r\n }\r\n }\r\n\r\n if (shouldTypeCheck && typeChecker) {\r\n typeChecker.addFile(normalizedId, codeToTransform);\r\n const typeErrors = typeChecker.checkFile(normalizedId);\r\n\r\n if (typeErrors.length > 0) {\r\n console.error(\r\n `\\n${colors.red}${colors.bold}[Fynix SFC] TypeScript Errors${colors.reset} in ${colors.cyan}${normalizedId}${colors.reset}:`\r\n );\r\n typeErrors.forEach((error) => console.error(` ${error}`));\r\n console.error(\"\");\r\n\r\n if (process.env.NODE_ENV === \"production\") {\r\n throw new Error(`TypeScript errors in ${normalizedId}`);\r\n }\r\n }\r\n }\r\n\r\n const result = await transform(codeToTransform, {\r\n loader,\r\n jsxFactory,\r\n jsxFragment,\r\n sourcemap,\r\n sourcefile: id,\r\n target: \"esnext\",\r\n format: \"esm\",\r\n ...esbuildOptions,\r\n });\r\n\r\n return {\r\n code: result.code,\r\n map: result.map || null,\r\n };\r\n } catch (error) {\r\n const err = error as Error;\r\n console.error(\r\n `\\n${colors.red}${colors.bold}[Fynix SFC] Transform Error${colors.reset} in ${colors.cyan}${id}${colors.reset}:`\r\n );\r\n console.error(` ${colors.red}${err.message}${colors.reset}\\n`);\r\n\r\n const ctx = this as unknown as TransformContext;\r\n if (typeof ctx.error === \"function\") {\r\n ctx.error({\r\n message: `Failed to transform ${id}: ${err.message}`,\r\n stack: err.stack,\r\n id,\r\n });\r\n } else {\r\n throw err;\r\n }\r\n return null;\r\n }\r\n },\r\n\r\n handleHotUpdate(ctx: HmrContext) {\r\n const { file, server } = ctx;\r\n const normalizedFile = normalizePath(file);\r\n const shouldReload = include.some((ext) => normalizedFile.endsWith(ext));\r\n\r\n if (shouldReload) {\r\n console.log(\r\n `${colors.green}[HMR]${colors.reset} ${colors.gray}${normalizedFile}${colors.reset}`\r\n );\r\n\r\n if (typeChecker) {\r\n typeChecker.clear();\r\n }\r\n\r\n server.ws.send({\r\n type: \"full-reload\",\r\n path: \"*\",\r\n });\r\n return [];\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n config() {\r\n const config: Omit<UserConfig, \"plugins\"> = {\r\n esbuild: {\r\n jsxFactory,\r\n jsxFragment,\r\n jsxInject: `import { ${jsxFactory} } from 'fynixui'`,\r\n },\r\n optimizeDeps: {\r\n include: [\"fynixui\"],\r\n esbuildOptions: {\r\n jsx: \"transform\",\r\n jsxFactory,\r\n jsxFragment,\r\n },\r\n },\r\n resolve: {\r\n extensions: [\".fnx\", \".ts\", \".tsx\", \".js\", \".jsx\", \".json\"],\r\n },\r\n };\r\n\r\n return config;\r\n },\r\n\r\n buildStart() {\r\n console.log(\r\n `${colors.cyan}[vite-plugin-fynix-sfc]${colors.reset} Initialized`\r\n );\r\n if (enableSFC) {\r\n console.log(\r\n `${colors.cyan}[vite-plugin-fynix-sfc]${colors.reset} SFC support: ${colors.green}enabled${colors.reset}`\r\n );\r\n }\r\n if (typeCheck) {\r\n console.log(\r\n `${colors.cyan}[vite-plugin-fynix-sfc]${colors.reset} Type checking: ${colors.green}enabled${colors.reset}`\r\n );\r\n }\r\n },\r\n\r\n buildEnd() {\r\n if (typeChecker) {\r\n typeChecker.clear();\r\n }\r\n },\r\n };\r\n}\r\n\r\nexport { fynixPlugin, TypeScriptChecker };\r\nexport type { FynixPluginOptions };\r\n"],
|
|
5
|
-
"mappings": ";;AAAA
|
|
6
|
-
"names": [
|
|
4
|
+
"sourcesContent": ["import { transform, type TransformOptions } from \"esbuild\";\r\nimport type { HmrContext, ViteDevServer } from \"vite\";\r\nimport { normalizePath } from \"vite\";\r\n\r\n/**\r\n * Vite plugin options for Fynix\r\n */\r\ninterface FynixPluginOptions {\r\n /**\r\n * JSX factory function name\r\n * @default \"Fynix\"\r\n */\r\n jsxFactory?: string;\r\n\r\n /**\r\n * JSX fragment factory name\r\n * @default \"Fynix.Fragment\"\r\n */\r\n jsxFragment?: string;\r\n\r\n /**\r\n * File extensions to transform\r\n * @default [\".ts\", \".js\", \".jsx\", \".tsx\", \".fnx\"]\r\n */\r\n include?: string[];\r\n\r\n /**\r\n * Paths to exclude from transformation\r\n * @default [\"node_modules\"]\r\n */\r\n exclude?: string[];\r\n\r\n /**\r\n * Enable source maps\r\n * @default true\r\n */\r\n sourcemap?: boolean;\r\n\r\n /**\r\n * Custom esbuild transform options\r\n */\r\n esbuildOptions?: Partial<TransformOptions>;\r\n}\r\n\r\n/**\r\n * Extended context type that includes Vite's transform context methods\r\n */\r\ninterface TransformContext {\r\n addWatchFile?: (id: string) => void;\r\n}\r\n\r\n/**\r\n * Vite plugin for Fynix framework\r\n * Transforms JSX/TSX files using esbuild with custom JSX pragma\r\n */\r\nexport default function fynixPlugin(options: FynixPluginOptions = {}) {\r\n const {\r\n jsxFactory = \"Fynix\",\r\n jsxFragment = \"Fynix.Fragment\",\r\n include = [\".ts\", \".js\", \".jsx\", \".tsx\", \".fnx\"],\r\n exclude = [\"node_modules\"],\r\n sourcemap = true,\r\n esbuildOptions = {},\r\n } = options;\r\n\r\n let viteServer: ViteDevServer | null = null;\r\n\r\n return {\r\n name: \"vite-plugin-fynix\",\r\n enforce: \"pre\" as const,\r\n\r\n /**\r\n * Capture the Vite dev server instance for sending\r\n * WebSocket messages (error overlays, reloads, etc.)\r\n */\r\n configureServer(server: ViteDevServer) {\r\n viteServer = server;\r\n },\r\n\r\n async transform(code: string, id: string) {\r\n const normalizedId = normalizePath(id);\r\n const shouldExclude = exclude.some((pattern) =>\r\n normalizedId.includes(pattern)\r\n );\r\n if (shouldExclude) return null;\r\n const shouldInclude = include.some((ext) => normalizedId.endsWith(ext));\r\n if (!shouldInclude) return null;\r\n\r\n // Type-safe way to access Vite context methods\r\n const ctx = this as unknown as TransformContext;\r\n if (typeof ctx.addWatchFile === \"function\") {\r\n ctx.addWatchFile(id);\r\n }\r\n\r\n try {\r\n let loader: TransformOptions[\"loader\"] = \"tsx\";\r\n if (normalizedId.endsWith(\".ts\") || normalizedId.endsWith(\".fnx\")) {\r\n loader = \"tsx\";\r\n } else if (normalizedId.endsWith(\".tsx\")) {\r\n loader = \"tsx\";\r\n } else if (normalizedId.endsWith(\".jsx\")) {\r\n loader = \"jsx\";\r\n } else if (normalizedId.endsWith(\".js\")) {\r\n loader = \"jsx\";\r\n }\r\n\r\n const result = await transform(code, {\r\n loader,\r\n jsxFactory,\r\n jsxFragment,\r\n sourcemap,\r\n sourcefile: id,\r\n target: \"esnext\",\r\n format: \"esm\",\r\n ...esbuildOptions,\r\n });\r\n\r\n return {\r\n code: result.code,\r\n map: result.map || null,\r\n };\r\n } catch (error) {\r\n const err = error as Error;\r\n\r\n // Send error overlay to the browser via WebSocket\r\n // This shows the red error overlay in the browser instead of just logging to terminal\r\n if (viteServer) {\r\n viteServer.ws.send({\r\n type: \"error\",\r\n err: {\r\n message: err.message,\r\n stack: err.stack || \"\",\r\n plugin: \"vite-plugin-fynix\",\r\n id,\r\n },\r\n });\r\n }\r\n\r\n // Log to terminal as well\r\n console.error(`\\x1b[32m[vite-plugin-fynix]\\x1b[0m \\x1b[31mFailed to transform ${id}:\\x1b[0m`);\r\n console.error(err.message);\r\n\r\n // Return null instead of throwing so Vite's HMR pipeline\r\n // stays intact and can recover when the error is fixed\r\n return null;\r\n }\r\n },\r\n\r\n handleHotUpdate(ctx: HmrContext) {\r\n const { file, server } = ctx;\r\n const normalizedFile = normalizePath(file);\r\n const shouldReload = include.some((ext) => normalizedFile.endsWith(ext));\r\n\r\n if (shouldReload) {\r\n console.log(\r\n `\\x1b[32m[vite-plugin-fynix]\\x1b[0m HMR: full-reload triggered by ${normalizedFile}`\r\n );\r\n server.ws.send({\r\n type: \"full-reload\",\r\n path: \"*\",\r\n });\r\n return [];\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n config() {\r\n return {\r\n esbuild: false as const,\r\n optimizeDeps: {\r\n include: [\"fynixui\"],\r\n esbuildOptions: {\r\n jsx: \"transform\",\r\n jsxFactory,\r\n jsxFragment,\r\n },\r\n },\r\n resolve: {\r\n extensions: [\".fnx\", \".ts\", \".tsx\", \".js\", \".jsx\", \".json\"],\r\n },\r\n };\r\n },\r\n\r\n buildStart() {\r\n console.log(\r\n `\\x1b[32m[vite-plugin-fynix]\\x1b[0m Initialized with JSX factory: ${jsxFactory}`\r\n );\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * Named export for convenience\r\n */\r\nexport { fynixPlugin };\r\n\r\n/**\r\n * Export types for TypeScript users\r\n */\r\nexport type { FynixPluginOptions };\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
CHANGED