@mionjs/devtools 0.8.0-alpha.0 → 0.8.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.
- package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.cjs +62 -26
- package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.cjs.map +1 -1
- package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.d.ts +11 -3
- package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.cjs +5 -4
- package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.cjs.map +1 -1
- package/build/vite-plugin/cjs/src/vite-plugin/constants.cjs +4 -0
- package/build/vite-plugin/cjs/src/vite-plugin/constants.cjs.map +1 -1
- package/build/vite-plugin/cjs/src/vite-plugin/constants.d.ts +2 -0
- package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.cjs +137 -30
- package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.cjs.map +1 -1
- package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.d.ts +2 -2
- package/build/vite-plugin/cjs/src/vite-plugin/transformers.cjs +1 -0
- package/build/vite-plugin/cjs/src/vite-plugin/transformers.cjs.map +1 -1
- package/build/vite-plugin/cjs/src/vite-plugin/types.d.ts +6 -4
- package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.cjs +3 -2
- package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.cjs.map +1 -1
- package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.d.ts +11 -3
- package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.js +62 -26
- package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.js.map +1 -1
- package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.js +5 -4
- package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.js.map +1 -1
- package/build/vite-plugin/esm/src/vite-plugin/constants.d.ts +2 -0
- package/build/vite-plugin/esm/src/vite-plugin/constants.js +4 -0
- package/build/vite-plugin/esm/src/vite-plugin/constants.js.map +1 -1
- package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.d.ts +2 -2
- package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.js +138 -32
- package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.js.map +1 -1
- package/build/vite-plugin/esm/src/vite-plugin/transformers.js +1 -0
- package/build/vite-plugin/esm/src/vite-plugin/transformers.js.map +1 -1
- package/build/vite-plugin/esm/src/vite-plugin/types.d.ts +6 -4
- package/build/vite-plugin/esm/src/vite-plugin/virtualModule.js +3 -2
- package/build/vite-plugin/esm/src/vite-plugin/virtualModule.js.map +1 -1
- package/package.json +2 -2
- package/src/vite-plugin/virtual-modules.d.ts +1 -1
|
@@ -27,13 +27,14 @@ function generateEntryCode(fn) {
|
|
|
27
27
|
return JSON.stringify(parts.length === 2 ? parts[1] : d);
|
|
28
28
|
});
|
|
29
29
|
const fnCode = fn.isFactory ? generateFactoryFn(fn) : generateDirectFn(fn);
|
|
30
|
+
const depsLine = depsArray.length > 0 ? `
|
|
31
|
+
pureFnDependencies: [${depsArray.join(", ")}],` : "";
|
|
30
32
|
return ` ${JSON.stringify(fn.fnName)}: {
|
|
31
33
|
namespace: ${JSON.stringify(fn.namespace)},
|
|
32
34
|
fnName: ${JSON.stringify(fn.fnName)},
|
|
33
35
|
paramNames: [${paramsArray}],
|
|
34
36
|
code: ${JSON.stringify(fn.fnBody)},
|
|
35
|
-
bodyHash: ${JSON.stringify(fn.bodyHash)}
|
|
36
|
-
pureFnDependencies: [${depsArray.join(", ")}],
|
|
37
|
+
bodyHash: ${JSON.stringify(fn.bodyHash)},${depsLine}
|
|
37
38
|
isFactory: ${fn.isFactory},
|
|
38
39
|
${fnCode}
|
|
39
40
|
}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualModule.js","sources":["../../../../../src/vite-plugin/virtualModule.ts"],"sourcesContent":["/* ########\n * 2026 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {ExtractedPureFn} from './types.ts';\n\n/** Generates the virtual module source code from extracted server pure functions */\nexport function generateServerPureFnsVirtualModule(extractedFns: ExtractedPureFn[]): string {\n // Group functions by namespace\n const byNamespace = new Map<string, ExtractedPureFn[]>();\n for (const fn of extractedFns) {\n const list = byNamespace.get(fn.namespace) || [];\n list.push(fn);\n byNamespace.set(fn.namespace, list);\n }\n\n // Generate nested namespace entries\n const namespaceEntries: string[] = [];\n for (const [namespace, fns] of byNamespace) {\n const fnEntries = fns.map((fn) => generateEntryCode(fn));\n namespaceEntries.push(` ${JSON.stringify(namespace)}: {\\n${fnEntries.join(',\\n')}\\n }`);\n }\n\n return `// Auto-generated by @mionjs/server-pure-functions\n// Do not edit manually\n\nexport const serverPureFnsCache = {\n${namespaceEntries.join(',\\n')}\n};\n`;\n}\n\n/** Generates the code for a single server pure function entry */\nfunction generateEntryCode(fn: ExtractedPureFn): string {\n const paramsArray = fn.paramNames.map((p) => JSON.stringify(p)).join(', ');\n\n // Convert dependencies from \"namespace::fnName\" to just \"fnName\" (same-namespace resolution)\n const depsArray = [...fn.dependencies].map((d) => {\n const parts = d.split('::');\n return JSON.stringify(parts.length === 2 ? parts[1] : d);\n });\n\n // Generate the function code\n const fnCode = fn.isFactory ? generateFactoryFn(fn) : generateDirectFn(fn);\n\n return ` ${JSON.stringify(fn.fnName)}: {\n namespace: ${JSON.stringify(fn.namespace)},\n fnName: ${JSON.stringify(fn.fnName)},\n paramNames: [${paramsArray}],\n code: ${JSON.stringify(fn.fnBody)},\n bodyHash: ${JSON.stringify(fn.bodyHash)}
|
|
1
|
+
{"version":3,"file":"virtualModule.js","sources":["../../../../../src/vite-plugin/virtualModule.ts"],"sourcesContent":["/* ########\n * 2026 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {ExtractedPureFn} from './types.ts';\n\n/** Generates the virtual module source code from extracted server pure functions */\nexport function generateServerPureFnsVirtualModule(extractedFns: ExtractedPureFn[]): string {\n // Group functions by namespace\n const byNamespace = new Map<string, ExtractedPureFn[]>();\n for (const fn of extractedFns) {\n const list = byNamespace.get(fn.namespace) || [];\n list.push(fn);\n byNamespace.set(fn.namespace, list);\n }\n\n // Generate nested namespace entries\n const namespaceEntries: string[] = [];\n for (const [namespace, fns] of byNamespace) {\n const fnEntries = fns.map((fn) => generateEntryCode(fn));\n namespaceEntries.push(` ${JSON.stringify(namespace)}: {\\n${fnEntries.join(',\\n')}\\n }`);\n }\n\n return `// Auto-generated by @mionjs/server-pure-functions\n// Do not edit manually\n\nexport const serverPureFnsCache = {\n${namespaceEntries.join(',\\n')}\n};\n`;\n}\n\n/** Generates the code for a single server pure function entry */\nfunction generateEntryCode(fn: ExtractedPureFn): string {\n const paramsArray = fn.paramNames.map((p) => JSON.stringify(p)).join(', ');\n\n // Convert dependencies from \"namespace::fnName\" to just \"fnName\" (same-namespace resolution)\n const depsArray = [...fn.dependencies].map((d) => {\n const parts = d.split('::');\n return JSON.stringify(parts.length === 2 ? parts[1] : d);\n });\n\n // Generate the function code\n const fnCode = fn.isFactory ? generateFactoryFn(fn) : generateDirectFn(fn);\n\n const depsLine = depsArray.length > 0 ? `\\n pureFnDependencies: [${depsArray.join(', ')}],` : '';\n\n return ` ${JSON.stringify(fn.fnName)}: {\n namespace: ${JSON.stringify(fn.namespace)},\n fnName: ${JSON.stringify(fn.fnName)},\n paramNames: [${paramsArray}],\n code: ${JSON.stringify(fn.fnBody)},\n bodyHash: ${JSON.stringify(fn.bodyHash)},${depsLine}\n isFactory: ${fn.isFactory},\n${fnCode}\n }`;\n}\n\n/** Generates a direct fn property for a regular pure function */\nfunction generateDirectFn(fn: ExtractedPureFn): string {\n const params = fn.paramNames.join(', ');\n const safeName = makeSafeFunctionName(fn.fnName);\n\n return ` fn: function ${safeName}(${params}) {\n ${fn.fnBody}\n },`;\n}\n\n/** Generates createFn + fn: undefined for a factory function */\nfunction generateFactoryFn(fn: ExtractedPureFn): string {\n const params = fn.paramNames.join(', ');\n const safeName = makeSafeFunctionName(fn.fnName);\n\n return ` fn: undefined,\n createFn: function ${safeName}(jitUtils) {\n return (function factory(${params}) {\n ${fn.fnBody}\n })(jitUtils);\n },`;\n}\n\n/** Makes a function name safe for use as a JavaScript identifier */\nfunction makeSafeFunctionName(name: string): string {\n // Replace any non-alphanumeric characters with underscores\n const safe = name.replace(/[^a-zA-Z0-9_$]/g, '_');\n // Ensure it starts with a letter or underscore\n if (/^[0-9]/.test(safe)) {\n return '_' + safe;\n }\n return safe || 'anonymous';\n}\n"],"names":[],"mappings":"AAUO,SAAS,mCAAmC,cAAyC;AAExF,QAAM,kCAAkB,IAAA;AACxB,aAAW,MAAM,cAAc;AAC3B,UAAM,OAAO,YAAY,IAAI,GAAG,SAAS,KAAK,CAAA;AAC9C,SAAK,KAAK,EAAE;AACZ,gBAAY,IAAI,GAAG,WAAW,IAAI;AAAA,EACtC;AAGA,QAAM,mBAA6B,CAAA;AACnC,aAAW,CAAC,WAAW,GAAG,KAAK,aAAa;AACxC,UAAM,YAAY,IAAI,IAAI,CAAC,OAAO,kBAAkB,EAAE,CAAC;AACvD,qBAAiB,KAAK,OAAO,KAAK,UAAU,SAAS,CAAC;AAAA,EAAQ,UAAU,KAAK,KAAK,CAAC;AAAA,MAAS;AAAA,EAChG;AAEA,SAAO;AAAA;AAAA;AAAA;AAAA,EAIT,iBAAiB,KAAK,KAAK,CAAC;AAAA;AAAA;AAG9B;AAGA,SAAS,kBAAkB,IAA6B;AACpD,QAAM,cAAc,GAAG,WAAW,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI;AAGzE,QAAM,YAAY,CAAC,GAAG,GAAG,YAAY,EAAE,IAAI,CAAC,MAAM;AAC9C,UAAM,QAAQ,EAAE,MAAM,IAAI;AAC1B,WAAO,KAAK,UAAU,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC;AAAA,EAC3D,CAAC;AAGD,QAAM,SAAS,GAAG,YAAY,kBAAkB,EAAE,IAAI,iBAAiB,EAAE;AAEzE,QAAM,WAAW,UAAU,SAAS,IAAI;AAAA,mCAAsC,UAAU,KAAK,IAAI,CAAC,OAAO;AAEzG,SAAO,WAAW,KAAK,UAAU,GAAG,MAAM,CAAC;AAAA,yBACtB,KAAK,UAAU,GAAG,SAAS,CAAC;AAAA,sBAC/B,KAAK,UAAU,GAAG,MAAM,CAAC;AAAA,2BACpB,WAAW;AAAA,oBAClB,KAAK,UAAU,GAAG,MAAM,CAAC;AAAA,wBACrB,KAAK,UAAU,GAAG,QAAQ,CAAC,IAAI,QAAQ;AAAA,yBACtC,GAAG,SAAS;AAAA,EACnC,MAAM;AAAA;AAER;AAGA,SAAS,iBAAiB,IAA6B;AACnD,QAAM,SAAS,GAAG,WAAW,KAAK,IAAI;AACtC,QAAM,WAAW,qBAAqB,GAAG,MAAM;AAE/C,SAAO,4BAA4B,QAAQ,IAAI,MAAM;AAAA,kBACvC,GAAG,MAAM;AAAA;AAE3B;AAGA,SAAS,kBAAkB,IAA6B;AACpD,QAAM,SAAS,GAAG,WAAW,KAAK,IAAI;AACtC,QAAM,WAAW,qBAAqB,GAAG,MAAM;AAE/C,SAAO;AAAA,iCACsB,QAAQ;AAAA,2CACE,MAAM;AAAA,sBAC3B,GAAG,MAAM;AAAA;AAAA;AAG/B;AAGA,SAAS,qBAAqB,MAAsB;AAEhD,QAAM,OAAO,KAAK,QAAQ,mBAAmB,GAAG;AAEhD,MAAI,SAAS,KAAK,IAAI,GAAG;AACrB,WAAO,MAAM;AAAA,EACjB;AACA,SAAO,QAAQ;AACnB;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mionjs/devtools",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"description": "Development tooling for mion (ESLint plugin and Vite plugin).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -90,5 +90,5 @@
|
|
|
90
90
|
"devDependencies": {
|
|
91
91
|
"@typescript-eslint/rule-tester": "^8.17.0"
|
|
92
92
|
},
|
|
93
|
-
"gitHead": "
|
|
93
|
+
"gitHead": "c53dbf8bc494d950876e0bf171cb15078356a6cf"
|
|
94
94
|
}
|
|
@@ -39,7 +39,7 @@ declare module 'virtual:mion-server-pure-fns' {
|
|
|
39
39
|
paramNames: string[];
|
|
40
40
|
code: string;
|
|
41
41
|
bodyHash: string;
|
|
42
|
-
pureFnDependencies
|
|
42
|
+
pureFnDependencies?: string[];
|
|
43
43
|
isFactory: boolean;
|
|
44
44
|
fn: ((...args: any[]) => any) | undefined;
|
|
45
45
|
createFn?: (jitUtils: any) => (...args: any[]) => any;
|