xplorajs 0.1.6 → 0.1.8
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/cli.js +2 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/build.js +2 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/dev.js +2 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/start.js +2 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/package.json +3 -3
package/dist/cli.js
CHANGED
|
@@ -9,3 +9,5 @@ program.command("dev").description("Start development server").action(dev);
|
|
|
9
9
|
program.command("build").description("Build for production").action(build);
|
|
10
10
|
program.command("start").description("Start production server").action(start);
|
|
11
11
|
program.parse();
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { build } from \"./commands/build\";\nimport { dev } from \"./commands/dev\";\nimport { start } from \"./commands/start\";\n\nconst program = new Command();\n\nprogram.name(\"xplorajs\").description(\"Xplora.js CLI tool\").version(\"0.0.0\");\n\nprogram.command(\"dev\").description(\"Start development server\").action(dev);\n\nprogram.command(\"build\").description(\"Build for production\").action(build);\n\nprogram.command(\"start\").description(\"Start production server\").action(start);\n\nprogram.parse();\n"],"names":["Command","build","dev","start","program","name","description","version","command","action","parse"],"mappings":";AACA,SAASA,OAAO,QAAQ,YAAY;AACpC,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,GAAG,QAAQ,iBAAiB;AACrC,SAASC,KAAK,QAAQ,mBAAmB;AAEzC,MAAMC,UAAU,IAAIJ;AAEpBI,QAAQC,IAAI,CAAC,YAAYC,WAAW,CAAC,sBAAsBC,OAAO,CAAC;AAEnEH,QAAQI,OAAO,CAAC,OAAOF,WAAW,CAAC,4BAA4BG,MAAM,CAACP;AAEtEE,QAAQI,OAAO,CAAC,SAASF,WAAW,CAAC,wBAAwBG,MAAM,CAACR;AAEpEG,QAAQI,OAAO,CAAC,SAASF,WAAW,CAAC,2BAA2BG,MAAM,CAACN;AAEvEC,QAAQM,KAAK"}
|
package/dist/commands/build.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/build.ts"],"sourcesContent":["import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { glob } from \"fast-glob\";\nimport React from \"react\";\nimport { generateStaticPage } from \"xplorajs-react\";\n\ninterface Route {\n path: string;\n file: string;\n isDynamic: boolean;\n params: string[];\n}\n\nfunction convertToRoute(filePath: string): Route {\n const relativePath = filePath.replace(\"src/app/\", \"\");\n const path = relativePath\n .replace(/\\.tsx$/, \"\")\n .replace(/\\/page$/, \"\")\n .replace(/\\[([^\\]]+)\\]/g, \":$1\");\n\n const params = (relativePath.match(/\\[([^\\]]+)\\]/g) || []).map((param) =>\n param.slice(1, -1),\n );\n\n return {\n path: path === \"page\" ? \"/\" : `/${path}`,\n file: filePath,\n isDynamic: params.length > 0,\n params,\n };\n}\n\nasync function processPage(page: string, route: Route) {\n try {\n const module = await import(join(process.cwd(), page));\n const PageComponent = module.default;\n\n const getStaticProps = module.getStaticProps;\n let props = {};\n\n if (getStaticProps) {\n const result = await getStaticProps();\n props = result.props;\n }\n\n const outputPath = join(process.cwd(), \"dist\", route.path, \"index.html\");\n await generateStaticPage({\n component: React.createElement(PageComponent, props),\n outputPath,\n props,\n });\n\n console.log(`Generated ${outputPath}`);\n } catch (error) {\n console.error(`Error processing ${page}:`, error);\n }\n}\n\nexport async function build() {\n console.log(\"Building application...\");\n\n await mkdir(join(process.cwd(), \"dist\"), { recursive: true });\n\n const pages = await glob(\"src/app/**/*.tsx\", {\n ignore: [\"**/node_modules/**\"],\n });\n\n const routes: Route[] = [];\n\n for (const page of pages) {\n const route = convertToRoute(page);\n routes.push(route);\n await processPage(page, route);\n }\n\n const routesConfig = {\n routes,\n generatedAt: new Date().toISOString(),\n };\n\n await writeFile(\n join(process.cwd(), \".xplora\", \"routes.json\"),\n JSON.stringify(routesConfig, null, 2),\n );\n\n console.log(\"Build completed!\");\n console.log(\"Routes:\", routes.map((r) => r.path).join(\"\\n\"));\n}\n"],"names":["mkdir","writeFile","join","glob","React","generateStaticPage","convertToRoute","filePath","relativePath","replace","path","params","match","map","param","slice","file","isDynamic","length","processPage","page","route","module","process","cwd","PageComponent","default","getStaticProps","props","result","outputPath","component","createElement","console","log","error","build","recursive","pages","ignore","routes","push","routesConfig","generatedAt","Date","toISOString","JSON","stringify","r"],"mappings":"AAAA,SAASA,KAAK,EAAYC,SAAS,QAAQ,mBAAmB;AAC9D,SAAkBC,IAAI,QAAQ,YAAY;AAC1C,SAASC,IAAI,QAAQ,YAAY;AACjC,OAAOC,WAAW,QAAQ;AAC1B,SAASC,kBAAkB,QAAQ,iBAAiB;AASpD,SAASC,eAAeC,QAAgB;IACtC,MAAMC,eAAeD,SAASE,OAAO,CAAC,YAAY;IAClD,MAAMC,OAAOF,aACVC,OAAO,CAAC,UAAU,IAClBA,OAAO,CAAC,WAAW,IACnBA,OAAO,CAAC,iBAAiB;IAE5B,MAAME,SAAS,AAACH,CAAAA,aAAaI,KAAK,CAAC,oBAAoB,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,QAC9DA,MAAMC,KAAK,CAAC,GAAG,CAAC;IAGlB,OAAO;QACLL,MAAMA,SAAS,SAAS,MAAM,CAAC,CAAC,EAAEA,MAAM;QACxCM,MAAMT;QACNU,WAAWN,OAAOO,MAAM,GAAG;QAC3BP;IACF;AACF;AAEA,eAAeQ,YAAYC,IAAY,EAAEC,KAAY;IACnD,IAAI;QACF,MAAMC,SAAS,MAAM,MAAM,CAACpB,KAAKqB,QAAQC,GAAG,IAAIJ;QAChD,MAAMK,gBAAgBH,OAAOI,OAAO;QAEpC,MAAMC,iBAAiBL,OAAOK,cAAc;QAC5C,IAAIC,QAAQ,CAAC;QAEb,IAAID,gBAAgB;YAClB,MAAME,SAAS,MAAMF;YACrBC,QAAQC,OAAOD,KAAK;QACtB;QAEA,MAAME,aAAa5B,KAAKqB,QAAQC,GAAG,IAAI,QAAQH,MAAMX,IAAI,EAAE;QAC3D,MAAML,mBAAmB;YACvB0B,WAAW3B,MAAM4B,aAAa,CAACP,eAAeG;YAC9CE;YACAF;QACF;QAEAK,QAAQC,GAAG,CAAC,CAAC,UAAU,EAAEJ,YAAY;IACvC,EAAE,OAAOK,OAAO;QACdF,QAAQE,KAAK,CAAC,CAAC,iBAAiB,EAAEf,KAAK,CAAC,CAAC,EAAEe;IAC7C;AACF;AAEA,OAAO,eAAeC;IACpBH,QAAQC,GAAG,CAAC;IAEZ,MAAMlC,MAAME,KAAKqB,QAAQC,GAAG,IAAI,SAAS;QAAEa,WAAW;IAAK;IAE3D,MAAMC,QAAQ,MAAMnC,KAAK,oBAAoB;QAC3CoC,QAAQ;YAAC;SAAqB;IAChC;IAEA,MAAMC,SAAkB,EAAE;IAE1B,KAAK,MAAMpB,QAAQkB,MAAO;QACxB,MAAMjB,QAAQf,eAAec;QAC7BoB,OAAOC,IAAI,CAACpB;QACZ,MAAMF,YAAYC,MAAMC;IAC1B;IAEA,MAAMqB,eAAe;QACnBF;QACAG,aAAa,IAAIC,OAAOC,WAAW;IACrC;IAEA,MAAM5C,UACJC,KAAKqB,QAAQC,GAAG,IAAI,WAAW,gBAC/BsB,KAAKC,SAAS,CAACL,cAAc,MAAM;IAGrCT,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,WAAWM,OAAO3B,GAAG,CAAC,CAACmC,IAAMA,EAAEtC,IAAI,EAAER,IAAI,CAAC;AACxD"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/dev.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { serve } from \"bun\";\nimport { watch } from \"chokidar\";\nimport React from \"react\";\nimport type { ComponentType } from \"react\";\nimport { WebSocketServer } from \"ws\";\nimport { renderToStream } from \"xplorajs-react\";\nimport { build } from \"./build\";\n\n// biome-ignore lint/suspicious/noExplicitAny: <intended>\nconst pages = new Map<string, ComponentType<any>>();\n\nasync function loadPages() {\n pages.clear();\n const routes = await loadRoutes();\n\n for (const route of routes) {\n const abs = join(process.cwd(), route.file);\n delete import.meta.require?.cache?.[abs];\n // biome-ignore lint/suspicious/noExplicitAny: <intended>\n pages.set(route.path, (await import(abs)).default as ComponentType<any>);\n }\n}\n\nasync function loadRoutes() {\n try {\n const routesPath = join(process.cwd(), \".xplora\", \"routes.json\");\n const routesContent = readFileSync(routesPath, \"utf-8\");\n return JSON.parse(routesContent).routes;\n } catch {\n return [];\n }\n}\n\nexport async function dev() {\n console.log(\"Starting development server...\");\n\n const wss = new WebSocketServer({ port: 3001 });\n\n const watcher = watch([\"src/**/*\"], {\n ignored: /(^|[\\/\\\\])\\../,\n persistent: true,\n });\n\n watcher.on(\"change\", async (path) => {\n console.log(`File ${path} has been changed`);\n await build();\n await loadPages();\n\n for (const client of wss.clients) {\n if (client.readyState === WebSocket.OPEN) {\n client.send(JSON.stringify({ type: \"reload\" }));\n }\n }\n });\n\n await build();\n await loadPages();\n\n serve({\n port: 3000,\n async fetch(req) {\n const url = new URL(req.url).pathname;\n\n if (url.startsWith(\"/assets/\")) {\n const f = Bun.file(join(process.cwd(), \"dist\", url));\n if (await f.exists()) return new Response(f);\n }\n\n const Page = pages.get(url);\n if (!Page) return new Response(\"Not Found\", { status: 404 });\n\n const stream = await renderToStream(React.createElement(Page));\n\n const head = `<!DOCTYPE html><html><head>\n\t\t\t\t<meta charset=\"utf-8\"/>\n\t\t\t\t<link rel=\"stylesheet\" href=\"/assets/style.css\"/>\n\t\t\t\t<script>window.process={env:{NODE_ENV:\"development\"}};</script>\n\t\t\t\t</head><body><div id=\"root\">`;\n\n const foot = `</div>\n\t\t\t\t<script type=\"module\">\n\t\t\t\t\timport * as RefreshRuntime from \"https://esm.sh/react-refresh@0.17.0/runtime\";\n\t\t\t\t\tif (window.process?.env?.NODE_ENV === \"development\") {\n\t\t\t\t\t\tconsole.log(\"Fast refresh runtime loaded in development mode\");\n\t\t\t\t\t}\n\t\t\t\t\tRefreshRuntime.injectIntoGlobalHook(window);\n\t\t\t\t\twindow.$RefreshReg$=()=>{};\n\t\t\t\t\twindow.$RefreshSig$=()=>t=>t;\n\t\t\t\t</script>\n\t\t\t\t<script>\n\t\t\t\t\tconst ws=new WebSocket(\"ws://localhost:3001\");\n\t\t\t\t\tws.onmessage=async e=>{\n\t\t\t\t\t\tif(e.data===\"css\"){\n\t\t\t\t\t\t\tdocument.querySelectorAll('link[rel=\"stylesheet\"]').forEach(l=>l.href=\"/assets/style.css?v=\"+Date.now());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(e.data===\"reload\"){\n\t\t\t\t\t\t\tconsole.log(\"Reloading...\");\n\t\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t</script>\n\t\t\t</body></html>`;\n\n return new Response(\n new ReadableStream({\n start(ctrl) {\n ctrl.enqueue(new TextEncoder().encode(head));\n if (typeof stream === \"string\") {\n ctrl.enqueue(new TextEncoder().encode(stream));\n } else {\n stream.pipeTo(\n new WritableStream({\n write(c) {\n ctrl.enqueue(c);\n },\n close() {\n ctrl.enqueue(new TextEncoder().encode(foot));\n ctrl.close();\n },\n }),\n );\n }\n },\n }),\n { headers: { \"Content-Type\": \"text/html; charset=utf-8\" } },\n );\n },\n });\n\n console.log(\"Development server running at http://localhost:3000\");\n}\n"],"names":["readFileSync","join","serve","watch","React","WebSocketServer","renderToStream","build","pages","Map","loadPages","clear","routes","loadRoutes","route","abs","process","cwd","file","require","cache","set","path","default","routesPath","routesContent","JSON","parse","dev","console","log","wss","port","watcher","ignored","persistent","on","client","clients","readyState","WebSocket","OPEN","send","stringify","type","fetch","req","url","URL","pathname","startsWith","f","Bun","exists","Response","Page","get","status","stream","createElement","head","foot","ReadableStream","start","ctrl","enqueue","TextEncoder","encode","pipeTo","WritableStream","write","c","close","headers"],"mappings":"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"}
|
package/dist/commands/start.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/start.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport async function start() {\n console.log(\"Starting production server...\");\n\n const server = Bun.serve({\n port: 3000,\n fetch(req) {\n // TODO: Implement production server logic\n return new Response(\"Production server running...\");\n },\n });\n\n console.log(`Production server running at http://localhost:${server.port}`);\n}\n"],"names":["start","console","log","server","Bun","serve","port","fetch","req","Response"],"mappings":"AAGA,OAAO,eAAeA;IACpBC,QAAQC,GAAG,CAAC;IAEZ,MAAMC,SAASC,IAAIC,KAAK,CAAC;QACvBC,MAAM;QACNC,OAAMC,GAAG;YAEP,OAAO,IAAIC,SAAS;QACtB;IACF;IAEAR,QAAQC,GAAG,CAAC,CAAC,8CAA8C,EAAEC,OAAOG,IAAI,EAAE;AAC5E"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function defineConfig(config) {
|
|
2
|
+
return {
|
|
3
|
+
dev: {
|
|
4
|
+
port: 3000,
|
|
5
|
+
hmr: true,
|
|
6
|
+
...config.dev
|
|
7
|
+
},
|
|
8
|
+
static: {
|
|
9
|
+
outputDir: "./dist",
|
|
10
|
+
revalidate: 3600,
|
|
11
|
+
fallback: false,
|
|
12
|
+
...config.static
|
|
13
|
+
},
|
|
14
|
+
build: {
|
|
15
|
+
minify: true,
|
|
16
|
+
sourcemap: true,
|
|
17
|
+
...config.build
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts"],"sourcesContent":["export interface XploraConfig {\n\tdev?: {\n\t\tport?: number;\n\t\thmr?: boolean;\n\t};\n\tstatic?: {\n\t\toutputDir?: string;\n\t\trevalidate?: number;\n\t\tfallback?: boolean;\n\t};\n\tbuild?: {\n\t\tminify?: boolean;\n\t\tsourcemap?: boolean;\n\t};\n}\n\nexport function defineConfig(config: XploraConfig): XploraConfig {\n\treturn {\n\t\tdev: {\n\t\t\tport: 3000,\n\t\t\thmr: true,\n\t\t\t...config.dev,\n\t\t},\n\t\tstatic: {\n\t\t\toutputDir: \"./dist\",\n\t\t\trevalidate: 3600,\n\t\t\tfallback: false,\n\t\t\t...config.static,\n\t\t},\n\t\tbuild: {\n\t\t\tminify: true,\n\t\t\tsourcemap: true,\n\t\t\t...config.build,\n\t\t},\n\t};\n}\n"],"names":["defineConfig","config","dev","port","hmr","static","outputDir","revalidate","fallback","build","minify","sourcemap"],"mappings":"AAgBA,OAAO,SAASA,aAAaC,MAAoB;IAChD,OAAO;QACNC,KAAK;YACJC,MAAM;YACNC,KAAK;YACL,GAAGH,OAAOC,GAAG;QACd;QACAG,QAAQ;YACPC,WAAW;YACXC,YAAY;YACZC,UAAU;YACV,GAAGP,OAAOI,MAAM;QACjB;QACAI,OAAO;YACNC,QAAQ;YACRC,WAAW;YACX,GAAGV,OAAOQ,KAAK;QAChB;IACD;AACD"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./config\";\n"],"names":[],"mappings":"AAAA,cAAc,WAAW"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xplorajs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"@swc/cli": "^0.1.65",
|
|
22
22
|
"@swc/core": "^1.11.24",
|
|
23
23
|
"chokidar": "^3.6.0",
|
|
24
|
-
"commander": "^11.
|
|
24
|
+
"commander": "^11.0.0",
|
|
25
25
|
"fast-glob": "^3.3.3",
|
|
26
26
|
"ws": "^8.18.2",
|
|
27
|
-
"xplorajs-react": "
|
|
27
|
+
"xplorajs-react": "latest"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/bun": "^1.2.13",
|