feat: auto imports

This commit is contained in:
Ayo 2023-10-29 18:21:43 +01:00
parent 7fbc38b7cd
commit b7f2ac2620
14 changed files with 64 additions and 71 deletions

41
package-lock.json generated
View file

@ -3843,9 +3843,9 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/web-component-base": {
"version": "1.9.5",
"resolved": "https://registry.npmjs.org/web-component-base/-/web-component-base-1.9.5.tgz",
"integrity": "sha512-wIYHFLR0FZUdofVAk26hwngHznUys2dpAYY238v1i2yYeLtO75k59WZmdxUfHf29mh2Gyle3S8A8EoKvZ+nNjA=="
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/web-component-base/-/web-component-base-1.11.0.tgz",
"integrity": "sha512-jGmw9XTNTu6fT1tnVX6YebGB38g1bYZuXo9AGXPM6j5Z9BCBFNI1fwe+sQpx/ve/p8kZF9Hkn975Xi9LwTCoGg=="
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
@ -3970,12 +3970,12 @@
},
"packages/cli": {
"name": "@mcflyjs/cli",
"version": "0.0.15",
"version": "0.0.16",
"license": "MIT",
"dependencies": {
"citty": "^0.1.4",
"consola": "^3.2.3",
"web-component-base": "latest"
"web-component-base": "^1.9.5"
},
"bin": {
"mcfly": "index.js"
@ -3983,13 +3983,15 @@
},
"packages/config": {
"name": "@mcflyjs/config",
"version": "0.0.9",
"version": "0.0.10",
"license": "MIT",
"devDependencies": {}
"dependencies": {
"web-component-base": "^1.9.5"
}
},
"packages/core": {
"name": "@mcflyjs/core",
"version": "0.2.10",
"version": "0.2.11",
"license": "MIT",
"dependencies": {
"esprima": "^4.0.1",
@ -4031,27 +4033,30 @@
}
},
"templates/basic/node_modules/@mcflyjs/cli": {
"version": "0.0.14",
"resolved": "https://registry.npmjs.org/@mcflyjs/cli/-/cli-0.0.14.tgz",
"integrity": "sha512-pJiob4D4W/8hN1wNiSuDzE9W/j7yTDJucGss5IBtO/7XzTkgpNHU5ThXLExnlnI20GIrmeR3R9A+5vJ7JnMYyA==",
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/@mcflyjs/cli/-/cli-0.0.16.tgz",
"integrity": "sha512-De70ANluAMsAhgEhHSUcbnQky7vqQ2P7qhLM7LltXfOemYz0Lt+UPTYY3K29XnZ5e3O0EVzZTYETGpeo+azkIg==",
"dependencies": {
"citty": "^0.1.4",
"consola": "^3.2.3",
"web-component-base": "latest"
"web-component-base": "^1.9.5"
},
"bin": {
"mcfly": "index.js"
}
},
"templates/basic/node_modules/@mcflyjs/config": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/@mcflyjs/config/-/config-0.0.9.tgz",
"integrity": "sha512-T0JGct0dh+b6ka07HdzMckECRXdGoiZDPctolL6tQ3AvaQt9+DvoyvihJTRgNdnkJyzEDeD1fDeU0aO7tiZd6A=="
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/@mcflyjs/config/-/config-0.0.10.tgz",
"integrity": "sha512-PIDno3dXE914MjC7I9wLkOHqGeYrO79RUpyGZj+5gEHErsZYXZqBwI7ns4rQ7S3WDBbjmWnUX9Q13ctM0Wun9w==",
"dependencies": {
"web-component-base": "^1.9.5"
}
},
"templates/basic/node_modules/@mcflyjs/core": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/@mcflyjs/core/-/core-0.2.9.tgz",
"integrity": "sha512-RpbntTIA00SGQCZODJcTbQ8HyNl9/MXlMBujNtGsQzYX4mXrb3V0VlCBy/3VDKO2Hhzbp9Fbh4waAiNHCc/5cg==",
"version": "0.2.11",
"resolved": "https://registry.npmjs.org/@mcflyjs/core/-/core-0.2.11.tgz",
"integrity": "sha512-lyCAUfX77liSX6ICAaKsXQg+MiqYAEQJWyn20ij4aoidOTaPj/cXUsrYnWdmSvdb0xccPci3dNTtNU0ml+PmGQ==",
"dependencies": {
"esprima": "^4.0.1",
"h3": "^1.8.2",

View file

@ -2,11 +2,7 @@
import { consola } from "consola";
import { defineCommand } from "citty";
import { appendFileSync, copyFileSync, readFileSync } from "node:fs";
import { createRequire } from "node:module";
import { execSync as exec } from "child_process";
import { tryCatch } from "../utils/try-catch.mjs";
import path from "node:path";
export default defineCommand({
meta: {
@ -16,32 +12,16 @@ export default defineCommand({
async run() {
consola.start("Preparing McFly workspace...");
const require = createRequire(import.meta.url);
const globalsPath = path.dirname(require.resolve("@mcflyjs/cli"));
const steps = [
() => exec("npx nitropack prepare", { stdio: "inherit" }),
() =>
copyFileSync(
`${globalsPath}/globals/mcfly-imports.d.ts`,
".nitro/types/mcfly-imports.d.ts"
),
() => {
const ref = `\n${readFileSync(
`${globalsPath}/globals/mcfly.d.ts`
).toString()}`;
appendFileSync(".nitro/types/nitro.d.ts", ref);
},
].map((fn) => () => tryCatch(fn));
let err;
steps.every((step) => {
err = step();
return !err;
});
try {
exec("npx nitropack prepare", { stdio: "inherit" });
} catch (e) {
consola.error(e);
err = e;
}
if (err) {
consola.error(err);
consola.fail(
"McFly workspace preparation failed. Please make sure dependencies are installed.\n"
);

View file

@ -1,6 +1,6 @@
{
"name": "@mcflyjs/cli",
"version": "0.0.15",
"version": "0.0.16",
"description": "McFly CLI tools",
"type": "module",
"main": "index.js",
@ -24,6 +24,6 @@
"dependencies": {
"citty": "^0.1.4",
"consola": "^3.2.3",
"web-component-base": "latest"
"web-component-base": "^1.9.5"
}
}

View file

@ -1,9 +0,0 @@
export function tryCatch(fn) {
let error;
try {
fn();
} catch (e) {
error = e;
}
return error;
}

View file

@ -18,5 +18,21 @@ export default function McFly() {
dir: "./src/components",
},
],
imports: {
presets: [
{
from: "web-component-base/WebComponent",
imports: ["WebComponent"],
},
{
from: "@mcflyjs/core/event-handler",
imports: ["useMcFlyRoute"],
},
{
from: "@mcflyjs/core/define-config",
imports: ["defineMcFlyConfig"],
},
],
},
};
}

View file

@ -1,10 +1,9 @@
{
"name": "@mcflyjs/config",
"version": "0.0.9",
"version": "0.0.10",
"description": "Nitro configuration for McFly apps",
"type": "module",
"main": "index.mjs",
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
@ -18,5 +17,8 @@
"bugs": {
"url": "https://github.com/ayoayco/McFly/issues"
},
"homepage": "https://github.com/ayoayco/McFly#readme"
"homepage": "https://github.com/ayoayco/McFly#readme",
"dependencies": {
"web-component-base": "^1.9.5"
}
}

View file

@ -9,6 +9,6 @@
* @param {McFlyConfig} config
* @returns {function(): McFlyConfig}
*/
export default function defineConfig(config) {
export function defineMcFlyConfig(config) {
return () => config;
}

View file

@ -3,7 +3,7 @@ import { ELEMENT_NODE, parse, render, renderSync, walkSync } from "ultrahtml";
import { parseScript } from "esprima";
/**
* @typedef {import('./define-config.mjs').McFlyConfig} McFlyConfig
* @typedef {import('./define-config.js').McFlyConfig} Config
* @typedef {import('unstorage').Storage} Storage
* @typedef {import('unstorage').StorageValue} StorageValue
* @typedef {import('ultrahtml').Node} HtmlNode
@ -14,7 +14,7 @@ import { parseScript } from "esprima";
/**
* Intercepts all routes and assembles the correct HTML to return
* @param {{
* config: function(): McFlyConfig,
* config: function(): Config,
* storage: Storage
* }} param0
* @returns {EventHandler}

2
packages/core/index.js Normal file
View file

@ -0,0 +1,2 @@
export * from "./define-config.js";
export * from "./event-handler.js";

View file

@ -1,8 +1,9 @@
{
"name": "@mcflyjs/core",
"version": "0.2.10",
"version": "0.2.11",
"description": "McFly core package",
"type": "module",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},

View file

@ -1,5 +1,4 @@
import defineConfig from "@mcflyjs/core/define-config.mjs";
export default defineConfig({
import { defineMcFlyConfig } from "#imports";
export default defineMcFlyConfig({
components: "js",
});

View file

@ -5,6 +5,5 @@
* ...reusable code are in ./src/components
* @see https://ayco.io/gh/McFly#special-directories
*/
import { useMcFlyRoute } from "@mcflyjs/core/event-handler.mjs";
import config from "../mcfly.config.mjs";
export default useMcFlyRoute({ config, storage: useStorage() });

View file

@ -1,5 +1,4 @@
import defineConfig from "@mcflyjs/core/define-config.mjs";
export default defineConfig({
import { defineMcFlyConfig } from "#imports";
export default defineMcFlyConfig({
components: "js",
});

View file

@ -5,6 +5,5 @@
* ...reusable code are in ./src/components
* @see https://ayco.io/gh/McFly#special-directories
*/
import { useMcFlyRoute } from "@mcflyjs/core/event-handler.mjs";
import config from "../mcfly.config.mjs";
export default useMcFlyRoute({ config, storage: useStorage() });