lunet-transpiler 0.0.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/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # lunet-transpiler
2
+ より柔軟なWebフロントエンドライブラリ lunetのトランスパイラー。
3
+
4
+ ## インストール
5
+ ```bash
6
+ $ npm install lunet-transpiler
7
+ # or
8
+ $ bun i lunet-transpiler
9
+ ```
10
+
11
+ ## 対応状況
12
+ RollupとBunのみ対応しています。
13
+ その他は、エクスポートされている`transpile`関数を用いて行ってください。
14
+
15
+ ## 使い方
16
+ ### 1. Bun
17
+ ```js
18
+ import { bun_lunet } from "lunet-transpiler";
19
+ Bun.plugin(bun_lunet());
20
+
21
+ ...
22
+ ```
23
+
24
+ ### 2. Rollup
25
+ ```js
26
+ import { defineConfig } from "rollup";
27
+ import { rollup_lunet } from "lunet-transpiler";
28
+
29
+ export default defineConfig({
30
+ plugins: [rollup_lunet(), ...],
31
+ ...
32
+ });
33
+ ```
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ var F=require("node:module");var j=Object.create;var{getPrototypeOf:h,defineProperty:p,getOwnPropertyNames:x,getOwnPropertyDescriptor:v}=Object,f=Object.prototype.hasOwnProperty;var l=(e,t,i)=>{i=e!=null?j(h(e)):{};let n=t||!e||!e.__esModule?p(i,"default",{value:e,enumerable:!0}):i;for(let o of x(e))if(!f.call(n,o))p(n,o,{get:()=>e[o],enumerable:!0});return n},d=new WeakMap,L=(e)=>{var t=d.get(e),i;if(t)return t;if(t=p({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")x(e).map((n)=>!f.call(t,n)&&p(t,n,{get:()=>e[n],enumerable:!(i=v(e,n))||i.enumerable}));return d.set(e,t),t};var P=(e,t)=>{for(var i in t)p(e,i,{get:t[i],enumerable:!0,configurable:!0,set:(n)=>t[i]=()=>n})};var I={};P(I,{transpile:()=>a,rollup_lunet:()=>w,bun_lunet:()=>N});module.exports=L(I);var X=require("fs/promises"),c=require("fs");var g=require("@babel/parser"),y=l(require("@babel/traverse")),b=l(require("@babel/generator")),r=l(require("@babel/types")),m=(e)=>r.objectExpression(e.map((t)=>t.type==="JSXAttribute"?r.objectProperty(r.identifier(t.name.type==="JSXIdentifier"?t.name.name:t.name.name.name),t.value?t.value.type==="StringLiteral"?t.value:s(t.value,!0):r.booleanLiteral(!0)):r.spreadElement(t.argument))),u=(e)=>e.type==="JSXIdentifier"?r.identifier(e.name):r.memberExpression(u(e.object),u(e.property)),E=(e)=>!(e.type==="StringLiteral"&&!e.value),S=(e,t)=>{if(e.type==="JSXSpreadChild")return r.spreadElement(e.expression);else return s(e,t)},s=(e,t)=>{switch(e.type){case"JSXText":return r.stringLiteral(t?e.value:e.value.trim());case"JSXFragment":return r.arrayExpression([r.nullLiteral(),r.objectExpression([]),...e.children.map((n)=>S(n)).filter(E)]);case"JSXElement":let i=e.openingElement.name;if(i.type==="JSXIdentifier"&&/^[a-z]/.test(i.name))return r.arrayExpression([r.stringLiteral(i.name),r.objectExpression(e.openingElement.attributes.map((n)=>{if(n.type==="JSXAttribute"){if(n.name.type==="JSXNamespacedName")console.warn("Warning: JSXNamespacedName is not supported");let{name:o}=n.name;return r.objectProperty(r.identifier(typeof o==="string"?o:o.name),n.value?n.value.type==="StringLiteral"?n.value:s(n.value):r.booleanLiteral(!0))}else return r.spreadElement(n.argument)})),...e.children.map((n)=>S(n)).filter(E)]);else switch(i.type){case"JSXIdentifier":return r.callExpression(r.identifier(i.name),[m(e.openingElement.attributes)]);case"JSXMemberExpression":return r.callExpression(u(i),[m(e.openingElement.attributes)]);case"JSXNamespacedName":return console.warn("Warning: JSXNamespacedName is not supported"),r.callExpression(r.identifier(i.name.name),[m(e.openingElement.attributes)])}case"JSXExpressionContainer":switch(e.expression.type){case"JSXEmptyExpression":return r.booleanLiteral(!0);case"JSXElement":case"JSXFragment":return s(e.expression);default:return e.expression}case"JSXSpreadChild":return r.arrayExpression([r.nullLiteral(),r.objectExpression([]),r.spreadElement(e.expression)])}},a=(e,t)=>{let i=g.parse(e,{sourceType:"module",plugins:t?["typescript","jsx"]:["jsx"]});return y.default(i,{JSXElement(n){n.replaceWith(s(n.node))},JSXFragment(n){n.replaceWith(s(n.node))}}),b.default(i).code};var J=process.isBun?(e)=>Bun.file(e).text():(e)=>X.readFile(e).then((t)=>t.toString()),N=()=>({name:"bun-lunet",setup(e){e.onLoad({filter:/\.jsx$/},async(t)=>{let i=await J(t.path);return{contents:a(i,!1),loader:"jsx"}}),e.onLoad({filter:/\.tsx$/},async(t)=>{let i=await J(t.path);return{contents:a(i,!0),loader:"tsx"}})}}),w=()=>({name:"rollup-lunet",load(e){if(e.endsWith(".jsx")){let t=c.readFileSync(e).toString();return{code:a(t,!1)}}else if(e.endsWith(".tsx")){let t=c.readFileSync(e).toString();return{code:a(t,!0)}}}});
@@ -0,0 +1,6 @@
1
+ declare const transpile: (code: string, isTypeScript: boolean) => string;
2
+ import { BunPlugin } from "bun";
3
+ import { Plugin as RollupPlugin } from "rollup";
4
+ declare const bun_lunet: () => BunPlugin;
5
+ declare const rollup_lunet: () => RollupPlugin;
6
+ export { transpile, rollup_lunet, bun_lunet };
@@ -0,0 +1,6 @@
1
+ declare const transpile: (code: string, isTypeScript: boolean) => string;
2
+ import { BunPlugin } from "bun";
3
+ import { Plugin as RollupPlugin } from "rollup";
4
+ declare const bun_lunet: () => BunPlugin;
5
+ declare const rollup_lunet: () => RollupPlugin;
6
+ export { transpile, rollup_lunet, bun_lunet };
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ import{readFile as S}from"fs/promises";import{readFileSync as c}from"fs";import{parse as x}from"@babel/parser";import f from"@babel/traverse";import E from"@babel/generator";import*as t from"@babel/types";var p=(e)=>t.objectExpression(e.map((r)=>r.type==="JSXAttribute"?t.objectProperty(t.identifier(r.name.type==="JSXIdentifier"?r.name.name:r.name.name.name),r.value?r.value.type==="StringLiteral"?r.value:o(r.value,!0):t.booleanLiteral(!0)):t.spreadElement(r.argument))),l=(e)=>e.type==="JSXIdentifier"?t.identifier(e.name):t.memberExpression(l(e.object),l(e.property)),m=(e)=>!(e.type==="StringLiteral"&&!e.value),u=(e,r)=>{if(e.type==="JSXSpreadChild")return t.spreadElement(e.expression);else return o(e,r)},o=(e,r)=>{switch(e.type){case"JSXText":return t.stringLiteral(r?e.value:e.value.trim());case"JSXFragment":return t.arrayExpression([t.nullLiteral(),t.objectExpression([]),...e.children.map((n)=>u(n)).filter(m)]);case"JSXElement":let i=e.openingElement.name;if(i.type==="JSXIdentifier"&&/^[a-z]/.test(i.name))return t.arrayExpression([t.stringLiteral(i.name),t.objectExpression(e.openingElement.attributes.map((n)=>{if(n.type==="JSXAttribute"){if(n.name.type==="JSXNamespacedName")console.warn("Warning: JSXNamespacedName is not supported");let{name:a}=n.name;return t.objectProperty(t.identifier(typeof a==="string"?a:a.name),n.value?n.value.type==="StringLiteral"?n.value:o(n.value):t.booleanLiteral(!0))}else return t.spreadElement(n.argument)})),...e.children.map((n)=>u(n)).filter(m)]);else switch(i.type){case"JSXIdentifier":return t.callExpression(t.identifier(i.name),[p(e.openingElement.attributes)]);case"JSXMemberExpression":return t.callExpression(l(i),[p(e.openingElement.attributes)]);case"JSXNamespacedName":return console.warn("Warning: JSXNamespacedName is not supported"),t.callExpression(t.identifier(i.name.name),[p(e.openingElement.attributes)])}case"JSXExpressionContainer":switch(e.expression.type){case"JSXEmptyExpression":return t.booleanLiteral(!0);case"JSXElement":case"JSXFragment":return o(e.expression);default:return e.expression}case"JSXSpreadChild":return t.arrayExpression([t.nullLiteral(),t.objectExpression([]),t.spreadElement(e.expression)])}},s=(e,r)=>{let i=x(e,{sourceType:"module",plugins:r?["typescript","jsx"]:["jsx"]});return f(i,{JSXElement(n){n.replaceWith(o(n.node))},JSXFragment(n){n.replaceWith(o(n.node))}}),E(i).code};var d=process.isBun?(e)=>Bun.file(e).text():(e)=>S(e).then((r)=>r.toString()),v=()=>({name:"bun-lunet",setup(e){e.onLoad({filter:/\.jsx$/},async(r)=>{let i=await d(r.path);return{contents:s(i,!1),loader:"jsx"}}),e.onLoad({filter:/\.tsx$/},async(r)=>{let i=await d(r.path);return{contents:s(i,!0),loader:"tsx"}})}}),L=()=>({name:"rollup-lunet",load(e){if(e.endsWith(".jsx")){let r=c(e).toString();return{code:s(r,!1)}}else if(e.endsWith(".tsx")){let r=c(e).toString();return{code:s(r,!0)}}}});export{s as transpile,L as rollup_lunet,v as bun_lunet};
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "lunet-transpiler",
3
+ "version": "0.0.0",
4
+ "author": "TNTSuperMan",
5
+ "license": "MIT",
6
+ "description": "より柔軟なWebフロントエンドライブラリ lunetのトランスパイラー。",
7
+ "module": "dist/index.js",
8
+ "type": "module",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/TNTSuperMan/lunet.git"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js",
17
+ "browser": "./dist/index.js",
18
+ "import": "./dist/index.js"
19
+ }
20
+ },
21
+ "dependencies": {
22
+ "@babel/generator": "^7.28.3",
23
+ "@babel/parser": "^7.28.3",
24
+ "@babel/traverse": "^7.28.3",
25
+ "@babel/types": "^7.28.2"
26
+ },
27
+ "bunup": {
28
+ "name": "lunet-transpiler",
29
+ "entry": ["src/index.ts"],
30
+ "external": ["@babel/generator", "@babel/parser", "@babel/traverse", "@babel/types"],
31
+ "format": ["esm", "cjs"],
32
+ "target": "node",
33
+ "minify": true,
34
+ "outDir": "dist"
35
+ }
36
+ }