From b7f2ac262033e459b638f61ad4dcfa9ba1a5fe50 Mon Sep 17 00:00:00 2001 From: Ayo Date: Sun, 29 Oct 2023 18:21:43 +0100 Subject: [PATCH] feat: auto imports --- package-lock.json | 41 +++++++++++-------- packages/cli/commands/prepare.mjs | 34 ++++----------- packages/cli/package.json | 4 +- packages/cli/utils/try-catch.mjs | 9 ---- packages/config/index.mjs | 16 ++++++++ packages/config/package.json | 8 ++-- .../{define-config.mjs => define-config.js} | 2 +- .../{event-handler.mjs => event-handler.js} | 4 +- packages/core/index.js | 2 + packages/core/package.json | 3 +- site/mcfly.config.mjs | 5 +-- site/routes/[...index].js | 1 - templates/basic/mcfly.config.mjs | 5 +-- templates/basic/routes/[...index].js | 1 - 14 files changed, 64 insertions(+), 71 deletions(-) delete mode 100644 packages/cli/utils/try-catch.mjs rename packages/core/{define-config.mjs => define-config.js} (82%) rename packages/core/{event-handler.mjs => event-handler.js} (98%) create mode 100644 packages/core/index.js diff --git a/package-lock.json b/package-lock.json index 440cd92..ea4c376 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/packages/cli/commands/prepare.mjs b/packages/cli/commands/prepare.mjs index 7365003..9e248cd 100755 --- a/packages/cli/commands/prepare.mjs +++ b/packages/cli/commands/prepare.mjs @@ -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" ); diff --git a/packages/cli/package.json b/packages/cli/package.json index a8c1d35..36cc113 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -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" } } diff --git a/packages/cli/utils/try-catch.mjs b/packages/cli/utils/try-catch.mjs deleted file mode 100644 index d5df7d6..0000000 --- a/packages/cli/utils/try-catch.mjs +++ /dev/null @@ -1,9 +0,0 @@ -export function tryCatch(fn) { - let error; - try { - fn(); - } catch (e) { - error = e; - } - return error; -} diff --git a/packages/config/index.mjs b/packages/config/index.mjs index 7e86008..700b538 100644 --- a/packages/config/index.mjs +++ b/packages/config/index.mjs @@ -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"], + }, + ], + }, }; } diff --git a/packages/config/package.json b/packages/config/package.json index 3efae67..7ca429e 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -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" + } } diff --git a/packages/core/define-config.mjs b/packages/core/define-config.js similarity index 82% rename from packages/core/define-config.mjs rename to packages/core/define-config.js index 90ce2c0..739d48b 100644 --- a/packages/core/define-config.mjs +++ b/packages/core/define-config.js @@ -9,6 +9,6 @@ * @param {McFlyConfig} config * @returns {function(): McFlyConfig} */ -export default function defineConfig(config) { +export function defineMcFlyConfig(config) { return () => config; } diff --git a/packages/core/event-handler.mjs b/packages/core/event-handler.js similarity index 98% rename from packages/core/event-handler.mjs rename to packages/core/event-handler.js index eda73d7..6bdb330 100644 --- a/packages/core/event-handler.mjs +++ b/packages/core/event-handler.js @@ -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} diff --git a/packages/core/index.js b/packages/core/index.js new file mode 100644 index 0000000..6b1f75e --- /dev/null +++ b/packages/core/index.js @@ -0,0 +1,2 @@ +export * from "./define-config.js"; +export * from "./event-handler.js"; diff --git a/packages/core/package.json b/packages/core/package.json index 13d09c7..2a30c5f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -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" }, diff --git a/site/mcfly.config.mjs b/site/mcfly.config.mjs index ea86ebd..2642ce3 100644 --- a/site/mcfly.config.mjs +++ b/site/mcfly.config.mjs @@ -1,5 +1,4 @@ -import defineConfig from "@mcflyjs/core/define-config.mjs"; - -export default defineConfig({ +import { defineMcFlyConfig } from "#imports"; +export default defineMcFlyConfig({ components: "js", }); diff --git a/site/routes/[...index].js b/site/routes/[...index].js index 194e494..12bc8c6 100644 --- a/site/routes/[...index].js +++ b/site/routes/[...index].js @@ -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() }); diff --git a/templates/basic/mcfly.config.mjs b/templates/basic/mcfly.config.mjs index ea86ebd..2642ce3 100644 --- a/templates/basic/mcfly.config.mjs +++ b/templates/basic/mcfly.config.mjs @@ -1,5 +1,4 @@ -import defineConfig from "@mcflyjs/core/define-config.mjs"; - -export default defineConfig({ +import { defineMcFlyConfig } from "#imports"; +export default defineMcFlyConfig({ components: "js", }); diff --git a/templates/basic/routes/[...index].js b/templates/basic/routes/[...index].js index 194e494..12bc8c6 100644 --- a/templates/basic/routes/[...index].js +++ b/templates/basic/routes/[...index].js @@ -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() });