From 70b2eb27bc9bf13c7c0482493c8bbd6d7e4c400d Mon Sep 17 00:00:00 2001 From: Lee Dogeon Date: Mon, 2 Feb 2026 11:33:10 +0900 Subject: [PATCH 1/2] Introduce moonrepo --- .devcontainer/bin/postCreateCommand.sh | 2 +- .github/actions/determine-version/action.yaml | 2 +- .github/actions/setup-mise/action.yaml | 2 +- .github/workflows/main.yaml | 17 +- .github/workflows/publish-pr.yaml | 3 +- .gitignore | 1 + .moon/tasks/tag-tsdown-build.yml | 21 ++ .moon/toolchains.yml | 6 + .moon/workspace.yml | 11 + AGENTS.md | 14 +- CONTRIBUTING.md | 46 ++-- deno.json | 74 ------- docs/README.md | 8 +- docs/moon.yml | 38 ++++ docs/package.json | 6 +- examples/actor-lookup-cli/README.md | 2 +- examples/custom-collections/README.md | 2 +- mise.toml | 206 +----------------- moon.yml | 186 ++++++++++++++++ package.json | 3 - packages/amqp/deno.json | 24 -- packages/amqp/moon.yml | 52 +++++ packages/amqp/package.json | 11 +- packages/cfworkers/deno.json | 3 - packages/cfworkers/moon.yml | 28 +++ packages/cfworkers/package.json | 6 +- packages/cli/deno.json | 34 --- packages/cli/moon.yml | 79 +++++++ packages/cli/package.json | 14 +- packages/denokv/deno.json | 4 - packages/denokv/moon.yml | 31 +++ packages/elysia/deno.json | 3 - packages/elysia/moon.yml | 15 ++ packages/elysia/package.json | 5 +- packages/express/deno.json | 3 - packages/express/moon.yml | 16 ++ packages/express/package.json | 5 +- packages/fastify/deno.json | 4 - packages/fastify/moon.yml | 40 ++++ packages/fastify/package.json | 6 +- packages/fedify/deno.json | 74 ------- packages/fedify/moon.yml | 114 ++++++++++ packages/fedify/package.json | 10 +- packages/fixture/deno.json | 3 - packages/fixture/moon.yml | 27 +++ packages/fixture/package.json | 7 +- packages/fresh/deno.json | 3 - packages/fresh/moon.yml | 19 ++ packages/h3/deno.json | 3 - packages/h3/moon.yml | 16 ++ packages/h3/package.json | 5 +- packages/hono/deno.json | 4 - packages/hono/moon.yml | 40 ++++ packages/hono/package.json | 6 +- packages/koa/deno.json | 3 - packages/koa/moon.yml | 16 ++ packages/koa/package.json | 5 +- packages/lint/deno.json | 3 - packages/lint/moon.yml | 40 ++++ packages/lint/package.json | 6 +- packages/nestjs/moon.yml | 3 + packages/nestjs/package.json | 5 +- packages/next/moon.yml | 3 + packages/next/package.json | 5 +- packages/postgres/deno.json | 4 - packages/postgres/moon.yml | 52 +++++ packages/postgres/package.json | 9 +- packages/redis/deno.json | 4 - packages/redis/moon.yml | 52 +++++ packages/redis/package.json | 9 +- packages/relay/deno.json | 15 -- packages/relay/moon.yml | 54 +++++ packages/relay/package.json | 9 +- packages/sqlite/deno.json | 4 - packages/sqlite/moon.yml | 52 +++++ packages/sqlite/package.json | 10 +- packages/sveltekit/deno.json | 4 - packages/sveltekit/moon.yml | 40 ++++ packages/sveltekit/package.json | 7 +- packages/testing/deno.json | 24 -- packages/testing/moon.yml | 52 +++++ packages/testing/package.json | 11 +- packages/vocab-runtime/deno.json | 4 - packages/vocab-runtime/moon.yml | 37 ++++ packages/vocab-runtime/package.json | 7 +- packages/vocab-tools/deno.json | 4 - packages/vocab-tools/moon.yml | 66 ++++++ packages/vocab-tools/package.json | 13 +- packages/vocab/deno.json | 5 - packages/vocab/moon.yml | 83 +++++++ packages/vocab/package.json | 9 +- packages/webfinger/deno.json | 4 - packages/webfinger/moon.yml | 37 ++++ packages/webfinger/package.json | 7 +- 94 files changed, 1410 insertions(+), 731 deletions(-) create mode 100644 .moon/tasks/tag-tsdown-build.yml create mode 100644 .moon/toolchains.yml create mode 100644 .moon/workspace.yml create mode 100644 docs/moon.yml create mode 100644 moon.yml create mode 100644 packages/amqp/moon.yml create mode 100644 packages/cfworkers/moon.yml create mode 100644 packages/cli/moon.yml create mode 100644 packages/denokv/moon.yml create mode 100644 packages/elysia/moon.yml create mode 100644 packages/express/moon.yml create mode 100644 packages/fastify/moon.yml create mode 100644 packages/fedify/moon.yml create mode 100644 packages/fixture/moon.yml create mode 100644 packages/fresh/moon.yml create mode 100644 packages/h3/moon.yml create mode 100644 packages/hono/moon.yml create mode 100644 packages/koa/moon.yml create mode 100644 packages/lint/moon.yml create mode 100644 packages/nestjs/moon.yml create mode 100644 packages/next/moon.yml create mode 100644 packages/postgres/moon.yml create mode 100644 packages/redis/moon.yml create mode 100644 packages/relay/moon.yml create mode 100644 packages/sqlite/moon.yml create mode 100644 packages/sveltekit/moon.yml create mode 100644 packages/testing/moon.yml create mode 100644 packages/vocab-runtime/moon.yml create mode 100644 packages/vocab-tools/moon.yml create mode 100644 packages/vocab/moon.yml create mode 100644 packages/webfinger/moon.yml diff --git a/.devcontainer/bin/postCreateCommand.sh b/.devcontainer/bin/postCreateCommand.sh index 5c9f0f3d6..9fa7a439c 100755 --- a/.devcontainer/bin/postCreateCommand.sh +++ b/.devcontainer/bin/postCreateCommand.sh @@ -18,4 +18,4 @@ cat << 'EOF' >> ~/.bashrc eval "$(mise activate bash)" EOF -mise run install +pnpm install diff --git a/.github/actions/determine-version/action.yaml b/.github/actions/determine-version/action.yaml index 52fc090cc..1955bddd3 100644 --- a/.github/actions/determine-version/action.yaml +++ b/.github/actions/determine-version/action.yaml @@ -59,4 +59,4 @@ runs: - name: Sync versions across packages shell: bash - run: mise run check-versions --fix + run: moon run root:check.versions --fix diff --git a/.github/actions/setup-mise/action.yaml b/.github/actions/setup-mise/action.yaml index c2f78baee..f718617d5 100644 --- a/.github/actions/setup-mise/action.yaml +++ b/.github/actions/setup-mise/action.yaml @@ -7,5 +7,5 @@ runs: - uses: jdx/mise-action@v2 with: version: 2025.12.12 - - run: mise run install + - run: pnpm install shell: bash diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index edcaca1e4..7c39791e3 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -65,7 +65,7 @@ jobs: - uses: ./.github/actions/setup-mise - name: Enable RabbitMQ consistent hash exchange plugin run: docker exec ${{ job.services.rabbitmq.id }} rabbitmq-plugins enable rabbitmq_consistent_hash_exchange - - run: mise run --skip-deps test:deno -- --coverage=.cov --junit-path=.test-report.xml + - run: mise run test:deno -- --coverage=.cov --junit-path=.test-report.xml env: RUST_BACKTRACE: ${{ runner.debug }} LOG: ${{ runner.debug && 'always' || '' }} @@ -136,7 +136,7 @@ jobs: - uses: ./.github/actions/setup-mise - name: Enable RabbitMQ consistent hash exchange plugin run: docker exec ${{ job.services.rabbitmq.id }} rabbitmq-plugins enable rabbitmq_consistent_hash_exchange - - run: mise run --skip-deps test:node + - run: moon run :test.node env: AMQP_ORDERING_TEST: "true" @@ -186,7 +186,7 @@ jobs: - uses: ./.github/actions/setup-mise - name: Enable RabbitMQ consistent hash exchange plugin run: docker exec ${{ job.services.rabbitmq.id }} rabbitmq-plugins enable rabbitmq_consistent_hash_exchange - - run: mise run --skip-deps test:bun + - run: moon run :test.bun env: AMQP_ORDERING_TEST: "true" @@ -195,8 +195,7 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup-mise - - run: deno task test:cfworkers - working-directory: ${{ github.workspace }}/packages/fedify/ + - run: moon run fedify:test.cfworkers lint: runs-on: ubuntu-latest @@ -247,8 +246,7 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup-mise - - run: pnpm run build - working-directory: ${{ github.workspace }}/docs/ + - run: moon run docs:build - uses: actions/upload-artifact@v4 with: name: docs-pr-${{ github.event.pull_request.number }} @@ -454,20 +452,19 @@ jobs: EXTRA_NAV_LINK="$UNSTABLE_DOCS_URL" \ SITEMAP_HOSTNAME="$STABLE_DOCS_URL" \ JSR_REF_VERSION=stable \ - pnpm run build + moon run docs:build else EXTRA_NAV_TEXT=Stable \ EXTRA_NAV_LINK="$STABLE_DOCS_URL" \ SITEMAP_HOSTNAME="$UNSTABLE_DOCS_URL" \ JSR_REF_VERSION=unstable \ - pnpm run build + moon run docs:build fi env: SHORT_VERSION: ${{ needs.determine-version.outputs.short_version }} PLAUSIBLE_DOMAIN: ${{ secrets.PLAUSIBLE_DOMAIN }} STABLE_DOCS_URL: ${{ vars.STABLE_DOCS_URL }} UNSTABLE_DOCS_URL: ${{ vars.UNSTABLE_DOCS_URL }} - working-directory: ${{ github.workspace }}/docs/ - uses: actions/upload-pages-artifact@v3 with: path: docs/.vitepress/dist diff --git a/.github/workflows/publish-pr.yaml b/.github/workflows/publish-pr.yaml index a931dc8fa..ba60b2e12 100644 --- a/.github/workflows/publish-pr.yaml +++ b/.github/workflows/publish-pr.yaml @@ -277,12 +277,11 @@ jobs: EXTRA_NAV_LINK="$STABLE_DOCS_URL" \ SITEMAP_HOSTNAME="$UNSTABLE_DOCS_URL" \ JSR_REF_VERSION=unstable \ - pnpm run build + moon run docs:build env: PLAUSIBLE_DOMAIN: ${{ secrets.PLAUSIBLE_DOMAIN }} STABLE_DOCS_URL: ${{ vars.STABLE_DOCS_URL }} UNSTABLE_DOCS_URL: ${{ vars.UNSTABLE_DOCS_URL }} - working-directory: ${{ github.workspace }}/docs/ - id: wrangler uses: cloudflare/wrangler-action@v3 with: diff --git a/.gitignore b/.gitignore index c6158e03b..5e7b64586 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ repomix-output.xml t.ts t2.ts plan.md +.moon/cache/ diff --git a/.moon/tasks/tag-tsdown-build.yml b/.moon/tasks/tag-tsdown-build.yml new file mode 100644 index 000000000..a26cece6d --- /dev/null +++ b/.moon/tasks/tag-tsdown-build.yml @@ -0,0 +1,21 @@ +inheritedBy: + tags: + or: + - "tsdown-build" + +tasks: + build: + script: "pnpm exec tsdown" + deps: + - "^:build" + toolchains: + - "node" + inputs: + - "src/**/*" + - "tsdown.config.ts" + - "file://tsconfig.json?optional" + - "/mise.toml" + outputs: + - "dist/" + options: + cache: true diff --git a/.moon/toolchains.yml b/.moon/toolchains.yml new file mode 100644 index 000000000..8543b570f --- /dev/null +++ b/.moon/toolchains.yml @@ -0,0 +1,6 @@ +javascript: + packageManager: "pnpm" +deno: {} +node: {} +bun: {} +pnpm: {} diff --git a/.moon/workspace.yml b/.moon/workspace.yml new file mode 100644 index 000000000..cd54937d4 --- /dev/null +++ b/.moon/workspace.yml @@ -0,0 +1,11 @@ +projects: + - "packages/*" + - "docs" + - "." + +vcs: + client: "git" + defaultBranch: "main" + +pipeline: + cacheLifetime: "7 days" diff --git a/AGENTS.md b/AGENTS.md index 2a1261288..a7708543c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -41,16 +41,18 @@ integration, database adapters, and CLI toolchain. Development environment ----------------------- - - Task runner: [mise] (required) + - Tool version manager: [mise] (required — manages Deno, Node.js, Bun, pnpm) + - Task orchestrator: [moon] (build caching, impact analysis) - Primary environment: [Deno] - Additional test environments: [Node.js] and [Bun] - Recommended editor: [Visual Studio Code] with [Deno extension] - - **CRITICAL**: Run `mise run install` (or `pnpm install`) after checkout. + - **CRITICAL**: Run `pnpm install` after checkout. This automatically runs code generation and builds all packages. - Lockfiles: Both *deno.lock* and *pnpm-lock.yaml* are committed. Update them when changing dependencies. [mise]: https://mise.jdx.dev/ +[moon]: https://moonrepo.dev/ [Deno]: https://deno.com/ [Node.js]: https://nodejs.org/ [Bun]: https://bun.sh/ @@ -118,11 +120,11 @@ Code patterns and principles Development workflow -------------------- - - **Code Generation**: Run `mise run codegen` whenever vocabulary YAML files - or code generation scripts change. + - **Code Generation**: Run `mise run codegen` whenever vocabulary YAML + files or code generation scripts change. - **Building Packages**: After installation, all packages are automatically - built. To rebuild a specific package and its dependencies, run `pnpm build` - in that package's directory. + built. To rebuild a specific package and its dependencies, run + `moon run :build`. - **Checking Code**: Run `mise run check` before committing. - **Running Tests**: Use `mise run test:deno` for Deno tests or `mise run test` for all environments. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 82c6266c7..227439ebe 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -223,7 +223,7 @@ changes. To update both lockfiles at once, run: ~~~~ bash -mise run install +pnpm install ~~~~ When reviewing pull requests, please check that lockfile changes are included @@ -392,15 +392,15 @@ see the [*Set Up Your Environment* section][1] in the Deno manual. > [!CAUTION] > > Fedify heavily depends on code generation and all packages must be built -> before coding or testing. Running `mise run install` (or `pnpm install`) -> automatically handles code generation and builds all packages. +> before coding or testing. Running `pnpm install` automatically handles +> code generation and builds all packages. Assuming you have Deno and Visual Studio Code installed, you can open the repository in Visual Studio Code and get ready to hack on Fedify by running the following commands at the *root* of the repository: ~~~~ bash -mise run install # This runs codegen and builds all packages +pnpm install # This runs codegen and builds all packages code . ~~~~ @@ -413,10 +413,9 @@ code . > mise run hooks:install > ~~~~ -Note that the `mise run install` command is required to run only once at -the very first time after checkout. When you update dependencies or code -generation scripts, run `mise run install` again. Otherwise, you can skip -the command and just run: +Note that `pnpm install` is required to run only once at the very first time +after checkout. When you update dependencies or code generation scripts, +run `pnpm install` again. Otherwise, you can skip the command and just run: ~~~~ bash code . @@ -442,8 +441,8 @@ Please click the *Install* button to install the Deno extension. ### Running the Fedify CLI If you want to test your changes in the Fedify CLI, you can run -`mise run cli` command from the root. For example, if you want to test -the `fedify lookup` subcommand, you can run the following command: +`mise run cli` command from the root. For example, if you want to +test the `fedify lookup` subcommand, you can run the following command: ~~~~ bash mise run cli -- lookup @fedify@hollo.social @@ -452,8 +451,8 @@ mise run cli -- lookup @fedify@hollo.social > [!NOTE] > > The Fedify CLI is tested with Deno, Node.js, and Bun like other packages. -> However, for quick local testing during development, `mise run cli` uses -> Deno directly without requiring a full multi-runtime test run. +> However, for quick local testing during development, `mise run cli` +> uses Deno directly without requiring a full multi-runtime test run. #### Running the tests @@ -467,14 +466,14 @@ mise run test:deno Or you can test a specific package: ~~~~ bash -deno task -f @fedify/fedify test +moon run fedify:test ~~~~ You can use `--filter` option to run a specific test. For example, if you want to run the `verifyRequest` test: ~~~~ bash -deno task -f @fedify/fedify test --filter verifyRequest +moon run fedify:test -- --filter verifyRequest ~~~~ If the tests pass, you should run `mise run test` command to test @@ -488,10 +487,10 @@ To test individual packages with specific runtimes: ~~~~ bash # Test with Node.js -mise run test:node +moon run :test.node # Test with Bun -mise run test:bun +moon run :test.bun ~~~~ Of course, Node.js and Bun should be installed on your system to run the tests @@ -506,18 +505,17 @@ the `fedify init` command with various combinations of web frameworks, package managers, KvStore implementations, and MessageQueue implementations. ~~~~ bash -# From /packages/cli -deno task test-init +moon run cli:test-init ~~~~ You can also specify specific options to test: ~~~~ bash # Test with specific web framework and package manager -deno task test-init -w hono -p deno +moon run cli:test-init -- -w hono -p deno # Test with multiple options -deno task test-init -w hono -w express -p deno -p npm -k denokv -m denokv +moon run cli:test-init -- -w hono -w express -p deno -p npm -k denokv -m denokv ~~~~ If some options are not specified, all combinations are tested by default. @@ -525,8 +523,8 @@ If some options are not specified, all combinations are tested by default. You can skip dry run or hydration tests: ~~~~ bash -deno task test-init --no-dry-run # Only run hydration tests -deno task test-init --no-hyd-run # Only run dry-run tests +moon run cli:test-init -- --no-dry-run # Only run hydration tests +moon run cli:test-init -- --no-hyd-run # Only run dry-run tests ~~~~ The test results are stored in `/tmp/fedify-init//`(UNIX). @@ -545,8 +543,8 @@ in the browser. To do that, you need to install [Node.js] and [pnpm] first. Then you can run the following commands at the repository root: ~~~~ bash -mise run install -mise run docs +pnpm install +moon run docs:dev ~~~~ Once the development server is running, you can open your browser and navigate diff --git a/deno.json b/deno.json index 273d96dd2..a3247633a 100644 --- a/deno.json +++ b/deno.json @@ -79,80 +79,6 @@ ] }, "nodeModulesDir": "auto", - "tasks": { - "build": { - "command": "pnpm --recursive --filter '@fedify/*' --parallel --silent build", - "dependencies": [ - "install" - ] - }, - "codegen": "deno task -f @fedify/vocab compile", - "check-versions": "deno run --allow-read --allow-write scripts/check_versions.ts", - "check-all": { - "command": "deno fmt --check && deno lint && deno check --unstable-temporal $(deno eval 'import m from \"./deno.json\" with { type: \"json\" }; for (let p of m.workspace) console.log(p)')", - "dependencies": [ - "check-versions", - "codegen" - ] - }, - "install": { - "command": "deno run --allow-read --allow-env --allow-run scripts/install.ts && pnpm install", - "dependencies": [ - "codegen" - ] - }, - "pnpm:build-vocab-runtime": { - "command": "pnpm -C packages/vocab-runtime build" - }, - "pnpm:build-vocab-tools": { - "command": "pnpm -C packages/vocab-tools build" - }, - "pnpm:build-fixture": { - "command": "pnpm -C packages/fixture build" - }, - "pnpm:build-webfinger": { - "command": "pnpm -C packages/webfinger build" - }, - "pnpm:build-vocab": { - "command": "pnpm -C packages/vocab build", - "dependencies": [ - "install", - "pnpm:build-vocab-runtime", - "pnpm:build-vocab-tools", - "pnpm:build-fixture", - "pnpm:build-webfinger" - ] - }, - "test": { - "command": "deno test --check --doc --allow-all --unstable-kv --trace-leaks --parallel", - "dependencies": [ - "codegen" - ] - }, - "test:node": { - "command": "pnpm run --recursive --filter '!{docs}' test", - "dependencies": [ - "build" - ] - }, - "test:bun": { - "command": "pnpm run --recursive --filter '!{docs}' test:bun", - "dependencies": [ - "build" - ] - }, - "test-all": { - "dependencies": [ - "check-all", - "test", - "test:node", - "test:bun" - ] - }, - "cli": "deno task -f @fedify/cli run", - "hooks:install": "mise generate git-pre-commit --write --task=check", - "hooks:pre-commit": "mise run check" - }, "test": { "include": [ "./packages" diff --git a/docs/README.md b/docs/README.md index dc3c7d78f..8f8d007e5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -94,9 +94,9 @@ pnpm add @fedify/fedify ### Building documentation ~~~~ bash -mise run docs:build # Build for production (runs Twoslash type checking) -mise run docs # Start development server +moon run docs:build # Build for production (runs Twoslash type checking) +moon run docs:dev # Start development server ~~~~ -Always run `mise run docs:build` before committing to catch Twoslash type -errors. +Always run `moon run docs:build` before committing to catch Twoslash +type errors. diff --git a/docs/moon.yml b/docs/moon.yml new file mode 100644 index 000000000..cdff9fb18 --- /dev/null +++ b/docs/moon.yml @@ -0,0 +1,38 @@ +id: "docs" +language: "typescript" +tags: [] + +tasks: + dev: + command: "vitepress dev --host" + toolchains: + - "node" + deps: + - "^:build" + options: + cache: false + persistent: true + + build: + script: "NODE_OPTIONS='--max-old-space-size=8192' vitepress build" + toolchains: + - "node" + deps: + - "^:build" + inputs: + - "**/*" + - "/mise.toml" + outputs: + - ".vitepress/dist/" + options: + cache: true + + preview: + command: "vitepress preview" + toolchains: + - "node" + deps: + - "^:build" + options: + cache: false + persistent: true diff --git a/docs/package.json b/docs/package.json index 11e2f8506..5957163f3 100644 --- a/docs/package.json +++ b/docs/package.json @@ -62,9 +62,5 @@ "vitepress-plugin-mermaid": "^2.0.17", "x-forwarded-fetch": "^0.2.0" }, - "scripts": { - "dev": "cd ../ && pnpm run --filter '@fedify/*' -r build:self && cd docs/ && vitepress dev --host", - "build": "cd ../ && pnpm run --filter '@fedify/*' -r build:self && cd docs/ && NODE_OPTIONS='--max-old-space-size=8192' vitepress build", - "preview": "cd ../ && pnpm run --filter '@fedify/*' -r build:self && cd docs/ && vitepress preview" - } + "scripts": {} } diff --git a/examples/actor-lookup-cli/README.md b/examples/actor-lookup-cli/README.md index 74df32ca8..cfa2d3419 100644 --- a/examples/actor-lookup-cli/README.md +++ b/examples/actor-lookup-cli/README.md @@ -12,6 +12,6 @@ Usage ----- ~~~~ sh -deno task codegen # At very first time only +mise run codegen # At very first time only (run from repository root) deno run -A ./main.ts @fedify@hollo.social ~~~~ diff --git a/examples/custom-collections/README.md b/examples/custom-collections/README.md index d816b90b9..8aee2cbc0 100644 --- a/examples/custom-collections/README.md +++ b/examples/custom-collections/README.md @@ -6,6 +6,6 @@ Custom collections allow you to define your own ActivityPub collections with custom logic for dispatching items and counting collection sizes. ~~~~ sh -deno task codegen # At very first time only +mise run codegen # At very first time only (run from repository root) deno run -A ./main.ts ~~~~ diff --git a/mise.toml b/mise.toml index 2091c4700..99b16dd7c 100644 --- a/mise.toml +++ b/mise.toml @@ -1,8 +1,12 @@ +[env] +MOON_TOOLCHAIN_FORCE_GLOBALS = "true" + [tools] bun = "1.2.22" deno = "2.6.4" node = "22" pnpm = "10.28.0" +"npm:@moonrepo/cli" = "2.0.0-rc.1" [tools."github:dahlia/hongdown"] version = "0.3.2" @@ -11,209 +15,21 @@ version = "0.3.2" linux-x64 = "hongdown-*-x86_64-unknown-linux-musl.tar.bz2" linux-arm64 = "hongdown-*-aarch64-unknown-linux-musl.tar.bz2" -# Installation and setup -[tasks.install] -description = "Install all dependencies and set up the development environment" -run = "deno task install" - [tasks.codegen] -description = "Generate ActivityPub vocabulary types from YAML definitions" -run = "deno task codegen" - -[tasks.prepare] -description = "Prepare the development environment (codegen, install, build fixtures)" -env = { CI = "true" } # Prevent pnpm from prompting for confirmation -depends = ["install"] -run = "pnpm -r run build:self" - -[tasks.prepare-each] -description = "Prepare specific package(s)" -usage = 'arg "" help="Package name(s) (without @fedify/ prefix)" var=#true var_min=1' -env = { CI = "true" } -run = ''' -for PACKAGE in ${usage_packages}; do - echo "Preparing package: $PACKAGE" - pnpm --filter "@fedify/$PACKAGE" build -done -''' +run = "moon run vocab:codegen" # Code quality [tasks.check] -description = "Check code formatting, linting, and type checking" -depends = [ - "check:fmt", - "check:lint", - "check:types", - "check:md", - "check-versions", - "check:manifest:workspace-protocol", -] - -[tasks."check:fmt"] -description = "Check code formatting" -run = "deno fmt --check" - -[tasks."check:lint"] -description = "Check code linting" -run = "deno lint" - -[tasks."check:types"] -description = "Check TypeScript types" -run = "deno check --unstable-temporal $(deno eval 'import m from \"./deno.json\" with { type: \"json\" }; for (let p of m.workspace) console.log(p)')" - -[tasks."check:md"] -description = "Check Markdown formatting" -run = "hongdown --check" - -[tasks.check-versions] -description = "Check that all package versions are consistent across the monorepo" -usage = 'flag "--fix" help="Automatically fix version mismatches"' -run = ''' -if [ "${usage_fix}" = "true" ]; then - deno run --allow-read --allow-write scripts/check_versions.ts --fix -else - deno task check-versions -fi -''' - -[tasks."check:manifest:workspace-protocol"] -description = "Check for invalid workspace: specifiers without version (*, ^, ~)" -run = ''' -found=0 -for file in $(find . -name 'package.json' -not -path '*/node_modules/*'); do - invalid=$(jq -r ' - [ - (.dependencies // {}), - (.devDependencies // {}), - (.peerDependencies // {}), - (.optionalDependencies // {}) - ] - | add - | to_entries[] - | select(.value == "workspace:") - | " \(.key)" - ' "$file" 2>/dev/null) - if [ -n "$invalid" ]; then - if [ "$found" -eq 0 ]; then - echo "Error: Found invalid workspace: specifiers (missing *, ^, or ~):" - echo "" - fi - echo "$file:" - echo "$invalid" - found=1 - fi -done - -if [ "$found" -eq 1 ]; then - echo "" - echo "Valid formats: workspace:*, workspace:^, workspace:~" - exit 1 -fi -echo "All workspace: specifiers are valid" -''' - -[tasks.fmt] -description = "Format the codebase" -run = "deno fmt && hongdown --write" - -[tasks.check-each] -description = "Check code quality for specific package(s)" -usage = 'arg "" help="Package name(s) (without @fedify/ prefix)" var=#true var_min=1' -run = ''' -for PACKAGE in ${usage_packages}; do - echo "Checking package: $PACKAGE" - PACKAGE_DIR="packages/$PACKAGE" - if [ ! -d "$PACKAGE_DIR" ]; then - echo "Error: Package directory $PACKAGE_DIR not found" - exit 1 - fi - - deno fmt --check "$PACKAGE_DIR" - deno lint "$PACKAGE_DIR" - deno check "$PACKAGE_DIR"/**/*.ts -done -''' - -# Testing -[tasks."test:deno"] -description = "Run the test suite using Deno" -depends = ["prepare"] -run = "deno test --check --doc --allow-all --unstable-kv --trace-leaks --parallel" - -[tasks."test:node"] -description = "Run the test suite using Node.js" -depends = ["prepare"] -run = "pnpm run --recursive --parallel --filter '!{docs}' --config.enable-pre-post-scripts=false test" +run = "moon run root:check" -[tasks."test:bun"] -description = "Run the test suite using Bun" -depends = ["prepare"] -run = "pnpm run --recursive --parallel --filter '!{docs}' --config.enable-pre-post-scripts=false test:bun" +[tasks.cli] +run = "moon run root:cli" [tasks.test] -description = "Run the test suite across all environments (Deno, Node.js, Bun)" -depends = ["check", "test:deno", "test:node", "test:bun"] - -[tasks.test-each] -description = "Run tests for a specific package across all environments" -usage = 'arg "" help="Package name(s) (without @fedify/ prefix)" var=#true var_min=1' -run = ''' -mise run prepare-each ${usage_packages} -mise run check-each ${usage_packages} - -for PACKAGE in ${usage_packages}; do - echo "Running tests for package: $PACKAGE" - deno task --filter "@fedify/$PACKAGE" test - pnpm --filter "@fedify/$PACKAGE" test - pnpm --filter "@fedify/$PACKAGE" test:bun -done -''' - -# Snapshot updates -# Note: vocab uses @std/testing/snapshot which only works on Deno -# vocab-tools has separate snapshots for each runtime -[tasks."test:deno:update_snapshots"] -description = "Update test snapshots for Deno" -run = ''' -deno task -f @fedify/vocab-tools test -- --update -deno task -f @fedify/vocab test -- --update -''' - -[tasks."test:node:update_snapshots"] -description = "Update test snapshots for Node.js" -run = "pnpm --filter @fedify/vocab-tools test:update_snapshots" - -[tasks."test:bun:update_snapshots"] -description = "Update test snapshots for Bun" -run = "pnpm --filter @fedify/vocab-tools test:bun:update_snapshots" +run = "moon run :test.bun :test.node root:test.deno root:check" -[tasks."test:update_snapshots"] -description = "Update test snapshots for all environments (Deno, Node.js, Bun)" -depends = ["test:deno:update_snapshots", "test:node:update_snapshots", "test:bun:update_snapshots"] - -# Documentation -[tasks.docs] -description = "Start the documentation development server" -run = "pnpm -C docs dev" - -[tasks."docs:build"] -description = "Build the documentation for production" -run = "pnpm -C docs build" - -[tasks."docs:preview"] -description = "Preview the built documentation" -run = "pnpm -C docs preview" - -# Benchmarks -[tasks.bench] -description = "Run benchmarks" -run = "deno task -f @fedify/fedify bench" - -# CLI and utilities -[tasks.cli] -description = "Run the Fedify CLI tool" -run = "deno task cli" +[tasks."test:deno"] +run = "moon run root:test.deno" [tasks."hooks:install"] -description = "Install Git hooks for pre-commit checks" run = "mise generate git-pre-commit --write --task=check" diff --git a/moon.yml b/moon.yml new file mode 100644 index 000000000..44c6fa258 --- /dev/null +++ b/moon.yml @@ -0,0 +1,186 @@ +id: "root" +language: "typescript" +tags: [] + +tasks: + # === Installation/Setup === + install: + command: "deno task install" + toolchains: + - "deno" + options: + cache: false + + # === Formatting === + fmt: + script: "deno fmt && hongdown --write" + toolchains: + - "system" + options: + cache: false + + # === Code Quality Checks === + check: + deps: + - "~:check.fmt" + - "~:check.lint" + - "~:check.types" + - "~:check.md" + - "~:check.workspace-protocol" + - "~:check.versions" + options: + persistent: false + + check.fmt: + command: "deno fmt --check" + toolchains: + - "deno" + inputs: + - "**/*.ts" + - "**/*.tsx" + - "/mise.toml" + options: + cache: true + + check.lint: + command: "deno lint" + toolchains: + - "deno" + inputs: + - "**/*.ts" + - "/mise.toml" + options: + cache: true + + check.types: + script: >- + deno check --unstable-temporal + $(deno eval 'import m from "./deno.json" with { type: "json" }; + for (let p of m.workspace) console.log(p)') + toolchains: + - "deno" + inputs: + - "**/*.ts" + - "/deno.json" + - "/mise.toml" + options: + cache: true + + check.md: + command: "hongdown --check" + toolchains: + - "system" + inputs: + - "**/*.md" + - "/mise.toml" + options: + cache: true + + check.workspace-protocol: + script: | + found=0 + for file in $(find . -name 'package.json' -not -path '*/node_modules/*'); do + invalid=$(jq -r ' + [ + (.dependencies // {}), + (.devDependencies // {}), + (.peerDependencies // {}), + (.optionalDependencies // {}) + ] + | add + | to_entries[] + | select(.value == "workspace:") + | " \(.key)" + ' "$file" 2>/dev/null) + if [ -n "$invalid" ]; then + if [ "$found" -eq 0 ]; then + echo "Error: Found invalid workspace: specifiers (missing *, ^, or ~):" + echo "" + fi + echo "$file:" + echo "$invalid" + found=1 + fi + done + if [ "$found" -eq 1 ]; then + echo "" + echo "Valid formats: workspace:*, workspace:^, workspace:~" + exit 1 + fi + echo "All workspace: specifiers are valid" + toolchains: + - "system" + inputs: + - "**/package.json" + - "/mise.toml" + options: + cache: true + + check.versions: + command: "deno run --allow-read --allow-write scripts/check_versions.ts" + toolchains: + - "deno" + inputs: + - "packages/*/deno.json" + - "packages/*/package.json" + - "/deno.json" + - "/scripts/check_versions.ts" + options: + cache: true + + # === Tests === + test.deno: + command: "deno test --check --doc --allow-all --unstable-kv --trace-leaks --parallel" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "packages/*/src/**/*" + - "/mise.toml" + options: + cache: true + + # === Snapshot Updates === + test.deno.update_snapshots: + script: >- + deno task -f @fedify/vocab-tools test -- --update && + deno task -f @fedify/vocab test -- --update + toolchains: + - "deno" + options: + cache: false + + test.node.update_snapshots: + deps: + - "vocab-tools:test.node.update_snapshots" + options: + persistent: false + + test.bun.update_snapshots: + deps: + - "vocab-tools:test.bun.update_snapshots" + options: + persistent: false + + test.update_snapshots: + deps: + - "~:test.deno.update_snapshots" + - "~:test.node.update_snapshots" + - "~:test.bun.update_snapshots" + + # === Benchmarks === + bench: + command: "deno task -f @fedify/fedify bench" + toolchains: + - "deno" + options: + cache: false + + # === CLI === + cli: + command: "deno task cli" + toolchains: + - "deno" + options: + cache: false diff --git a/package.json b/package.json index 958efcd22..fae89d94b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,4 @@ { - "scripts": { - "prepare": "pnpm -r run build:self" - }, "pnpm": { "onlyBuiltDependencies": [ "esbuild" diff --git a/packages/amqp/deno.json b/packages/amqp/deno.json index 7f38f1e39..7586d06cd 100644 --- a/packages/amqp/deno.json +++ b/packages/amqp/deno.json @@ -18,29 +18,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "build": "pnpm build", - "check": "deno fmt --check && deno lint && deno check *.ts", - "test": "deno test --allow-net --allow-env", - "test:node": { - "dependencies": [ - "build" - ], - "command": "node --experimental-transform-types --test" - }, - "test:bun": { - "dependencies": [ - "build" - ], - "command": "bun test --timeout 15000" - }, - "test-all": { - "dependencies": [ - "test", - "test:node", - "test:bun" - ] - } } } diff --git a/packages/amqp/moon.yml b/packages/amqp/moon.yml new file mode 100644 index 000000000..95202e548 --- /dev/null +++ b/packages/amqp/moon.yml @@ -0,0 +1,52 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check *.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-net --allow-env" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + command: "bun test --timeout 15000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/amqp/package.json b/packages/amqp/package.json index 53b8be3c7..1b12fd225 100644 --- a/packages/amqp/package.json +++ b/packages/amqp/package.json @@ -68,15 +68,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/amqp... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "node --experimental-transform-types --test", - "pretest:bun": "pnpm build", - "test:bun": "bun test --timeout 15000", - "test:deno": "deno task test", - "test-all": "tsdown && node --experimental-transform-types --test && bun test --timeout 15000 && deno task test" + "prepack": "moon run amqp:build" } } diff --git a/packages/cfworkers/deno.json b/packages/cfworkers/deno.json index 266fc7b0e..0474524b3 100644 --- a/packages/cfworkers/deno.json +++ b/packages/cfworkers/deno.json @@ -20,8 +20,5 @@ "vitest.config.ts", "wrangler.jsonc" ] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts" } } diff --git a/packages/cfworkers/moon.yml b/packages/cfworkers/moon.yml new file mode 100644 index 000000000..b7d8b83fd --- /dev/null +++ b/packages/cfworkers/moon.yml @@ -0,0 +1,28 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "vitest run" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/cfworkers/package.json b/packages/cfworkers/package.json index e86877860..28f689f06 100644 --- a/packages/cfworkers/package.json +++ b/packages/cfworkers/package.json @@ -62,10 +62,6 @@ "wrangler": "^4.21.1" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/cfworkers... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "test": "vitest run" + "prepack": "moon run cfworkers:build" } } diff --git a/packages/cli/deno.json b/packages/cli/deno.json index fb64a2642..6e1b46f50 100644 --- a/packages/cli/deno.json +++ b/packages/cli/deno.json @@ -32,40 +32,6 @@ "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts", "scripts/"] }, - "tasks": { - "codegen": "deno task -f @fedify/vocab compile", - "check": { - "command": "deno fmt --check && deno lint && deno check src/**/*.ts", - "dependencies": [ - "codegen" - ] - }, - "run": { - "command": "deno run --allow-all src/mod.ts", - "dependencies": [ - "codegen" - ] - }, - "runi": "deno run --allow-all src/mod.ts", - "pack": { - "command": "deno run -A scripts/pack.ts", - "dependencies": [ - "codegen" - ] - }, - "test": { - "command": "deno test --allow-all", - "dependencies": [ - "codegen" - ] - }, - "test-init": { - "command": "FEDIFY_TEST_MODE=true deno run --allow-all src/init/test/mod.ts test-init", - "dependencies": [ - "codegen" - ] - } - }, "fmt": { "exclude": [ "src/init/templates/**" diff --git a/packages/cli/moon.yml b/packages/cli/moon.yml new file mode 100644 index 000000000..46fe67082 --- /dev/null +++ b/packages/cli/moon.yml @@ -0,0 +1,79 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-all" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + run: + command: "deno run --allow-all src/mod.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + options: + runInCI: false + + pack: + script: "deno run -A scripts/pack.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "scripts/pack.ts" + - "/mise.toml" + + test-init: + script: "FEDIFY_TEST_MODE=true deno run --allow-all src/init/test/mod.ts test-init" + toolchains: + - "deno" + deps: + - "vocab:codegen" + + test.node: + command: "node --test --experimental-transform-types 'src/**/*.test.ts' '!src/init/test/**'" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + command: "bun test" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/cli/package.json b/packages/cli/package.json index 2b59a1f4d..454b97fcc 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -86,18 +86,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/cli... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "node --test --experimental-transform-types 'src/**/*.test.ts' '!src/init/test/**'", - "test-init": "deno task test-init", - "pretest:bun": "pnpm build", - "test:bun": "bun test", - "run": "pnpm build && node dist/mod.js", - "runi": "tsdown && node dist/mod.js", - "run:bun": "pnpm build && bun dist/mod.js", - "runi:bun": "tsdown && bun dist/mod.js" + "prepack": "moon run cli:build" } } diff --git a/packages/denokv/deno.json b/packages/denokv/deno.json index 065d0604d..0c9582a8d 100644 --- a/packages/denokv/deno.json +++ b/packages/denokv/deno.json @@ -15,9 +15,5 @@ ], "publish": { "exclude": ["**/*.test.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test --allow-net --allow-env --allow-read --allow-write" } } diff --git a/packages/denokv/moon.yml b/packages/denokv/moon.yml new file mode 100644 index 000000000..26e03bca9 --- /dev/null +++ b/packages/denokv/moon.yml @@ -0,0 +1,31 @@ +language: "typescript" +tags: [] +# NOTE: moonrepo doesn't detect imports through workspace feature, +# without `imports` field of deno.json. So it needs to be added manually. +dependsOn: + - fedify + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-net --allow-env --allow-read --allow-write" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/elysia/deno.json b/packages/elysia/deno.json index fe7a74567..08671b6d0 100644 --- a/packages/elysia/deno.json +++ b/packages/elysia/deno.json @@ -11,8 +11,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts" } } diff --git a/packages/elysia/moon.yml b/packages/elysia/moon.yml new file mode 100644 index 000000000..c8380e08e --- /dev/null +++ b/packages/elysia/moon.yml @@ -0,0 +1,15 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: {} +# TODO: Skip temporarily. +# check: +# script: "deno fmt --check && deno lint && deno check src/**/*.ts" +# toolchains: +# - "deno" +# inputs: +# - "src/**/*" +# - "/mise.toml" +# options: +# cache: true diff --git a/packages/elysia/package.json b/packages/elysia/package.json index 10a3c56a7..1e5f64713 100644 --- a/packages/elysia/package.json +++ b/packages/elysia/package.json @@ -46,10 +46,7 @@ "package.json" ], "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/elysia... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build" + "prepack": "moon run elysia:build" }, "peerDependencies": { "elysia": "^1.3.6", diff --git a/packages/express/deno.json b/packages/express/deno.json index eefdeacdf..d192fd77f 100644 --- a/packages/express/deno.json +++ b/packages/express/deno.json @@ -14,8 +14,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check *.ts" } } diff --git a/packages/express/moon.yml b/packages/express/moon.yml new file mode 100644 index 000000000..b2ff90f9d --- /dev/null +++ b/packages/express/moon.yml @@ -0,0 +1,16 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/express/package.json b/packages/express/package.json index 6b324fb89..6755216db 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -58,9 +58,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/express... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build" + "prepack": "moon run express:build" } } diff --git a/packages/fastify/deno.json b/packages/fastify/deno.json index d7c7bb84e..a96dc90c2 100644 --- a/packages/fastify/deno.json +++ b/packages/fastify/deno.json @@ -15,9 +15,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test --allow-all" } } diff --git a/packages/fastify/moon.yml b/packages/fastify/moon.yml new file mode 100644 index 000000000..2aadb5ea1 --- /dev/null +++ b/packages/fastify/moon.yml @@ -0,0 +1,40 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-all" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/fastify/package.json b/packages/fastify/package.json index dba385a7a..a6f7901fb 100644 --- a/packages/fastify/package.json +++ b/packages/fastify/package.json @@ -56,10 +56,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/fastify... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "test": "node --experimental-transform-types --test" + "prepack": "moon run fastify:build" } } diff --git a/packages/fedify/deno.json b/packages/fedify/deno.json index 3099074a7..4b1a269c4 100644 --- a/packages/fedify/deno.json +++ b/packages/fedify/deno.json @@ -53,79 +53,5 @@ "scripts/", "wrangler.toml" ] - }, - "tasks": { - "codegen": "deno task -f @fedify/vocab compile", - "cache": { - "command": "deno cache src/mod.ts", - "dependencies": [ - "codegen" - ] - }, - "check": { - "command": "deno fmt --check && deno lint && deno check src/**/*.ts", - "dependencies": [ - "codegen" - ] - }, - "test": { - "command": "deno test --check --doc --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel", - "dependencies": [ - "codegen" - ] - }, - "coverage": "deno task test --clean --coverage && deno coverage --html coverage", - "bench": { - "command": "deno bench --allow-read --allow-write --allow-net --allow-env --allow-run --unstable-kv", - "dependencies": [ - "codegen" - ] - }, - "apidoc": { - "command": "deno doc --html --name=Fedify --output=apidoc/ src/mod.ts", - "dependencies": [ - "codegen" - ] - }, - "publish": { - "command": "deno publish", - "dependencies": [ - "codegen" - ] - }, - "pnpm:install": "pnpm install --silent", - "pnpm:build": { - "command": "pnpm exec tsdown", - "dependencies": [ - "pnpm:build-vocab" - ] - }, - "test:node": { - "command": "cd dist/ && node --test", - "dependencies": [ - "pnpm:build" - ] - }, - "test:bun": { - "command": "cd dist/ && bun test --timeout 60000", - "dependencies": [ - "pnpm:build" - ] - }, - "test:cfworkers": { - "command": "pnpm exec wrangler deploy --dry-run --outdir src/cfworkers && node --import=tsx src/cfworkers/client.ts", - "dependencies": [ - "pnpm:build" - ] - }, - "test-all": { - "dependencies": [ - "check", - "test", - "test:node", - "test:bun", - "test:cfworkers" - ] - } } } diff --git a/packages/fedify/moon.yml b/packages/fedify/moon.yml new file mode 100644 index 000000000..0e4f07672 --- /dev/null +++ b/packages/fedify/moon.yml @@ -0,0 +1,114 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + build: + script: "pnpm exec tsdown" + toolchains: + - "node" + deps: + - "^:build" + inputs: + - "src/**/*" + - "tsdown.config.ts" + - "/mise.toml" + outputs: + - "dist/" + options: + cache: true + + test.deno: + command: "deno test --check --doc --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + script: "cd dist/ && node --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + script: "cd dist/ && bun test --timeout 60000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true + + test.cfworkers: + script: "pnpm exec wrangler deploy --dry-run --outdir src/cfworkers && node --import=tsx src/cfworkers/client.ts" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "wrangler.toml" + - "/mise.toml" + + coverage: + script: "deno test --check --doc --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel --clean --coverage && deno coverage --html coverage" + toolchains: + - "deno" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + outputs: + - "coverage/" + + bench: + command: "deno bench --allow-read --allow-write --allow-net --allow-env --allow-run --unstable-kv" + toolchains: + - "deno" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + + apidoc: + command: "deno doc --html --name=Fedify --output=apidoc/ src/mod.ts" + toolchains: + - "deno" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + outputs: + - "apidoc/" diff --git a/packages/fedify/package.json b/packages/fedify/package.json index f0ee3afe4..0057aa861 100644 --- a/packages/fedify/package.json +++ b/packages/fedify/package.json @@ -153,14 +153,6 @@ "wrangler": "^4.17.0" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/fedify... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "cd dist/ && node --test", - "pretest:bun": "pnpm build", - "test:bun": "cd dist/ && bun test --timeout 60000", - "test:cfworkers": "deno task codegen && wrangler deploy --dry-run --outdir src/cfworkers && node --import=tsx src/cfworkers/client.ts" + "prepack": "moon run fedify:build" } } diff --git a/packages/fixture/deno.json b/packages/fixture/deno.json index 6d73f0889..1536ed23d 100644 --- a/packages/fixture/deno.json +++ b/packages/fixture/deno.json @@ -9,8 +9,5 @@ "dist", "node_modules" ], - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts" - }, "publish": false } diff --git a/packages/fixture/moon.yml b/packages/fixture/moon.yml new file mode 100644 index 000000000..f44226d41 --- /dev/null +++ b/packages/fixture/moon.yml @@ -0,0 +1,27 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + script: "cd dist/ && node --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/fixture/package.json b/packages/fixture/package.json index 4b0bcb673..c2e829524 100644 --- a/packages/fixture/package.json +++ b/packages/fixture/package.json @@ -44,12 +44,7 @@ "urlpattern-polyfill": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/fixture... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "cd dist/ && node --test" + "prepack": "moon run fixture:build" }, "private": true } diff --git a/packages/fresh/deno.json b/packages/fresh/deno.json index d8b402269..979f1f9da 100644 --- a/packages/fresh/deno.json +++ b/packages/fresh/deno.json @@ -15,8 +15,5 @@ ], "publish": { "exclude": ["**/*.test.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts" } } diff --git a/packages/fresh/moon.yml b/packages/fresh/moon.yml new file mode 100644 index 000000000..00e37ff4d --- /dev/null +++ b/packages/fresh/moon.yml @@ -0,0 +1,19 @@ +language: "typescript" +tags: [] +# NOTE: moonrepo doesn't detect imports through workspace feature, +# without `imports` field of deno.json. So it needs to be added manually. +dependsOn: + - fedify + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/h3/deno.json b/packages/h3/deno.json index 1c5be800d..292a96a18 100644 --- a/packages/h3/deno.json +++ b/packages/h3/deno.json @@ -11,8 +11,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts" } } diff --git a/packages/h3/moon.yml b/packages/h3/moon.yml new file mode 100644 index 000000000..b2ff90f9d --- /dev/null +++ b/packages/h3/moon.yml @@ -0,0 +1,16 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/h3/package.json b/packages/h3/package.json index f9daf32c0..ee8f2cf1e 100644 --- a/packages/h3/package.json +++ b/packages/h3/package.json @@ -55,9 +55,6 @@ "h3": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/h3... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build" + "prepack": "moon run h3:build" } } diff --git a/packages/hono/deno.json b/packages/hono/deno.json index 803d394f9..38dae9c3d 100644 --- a/packages/hono/deno.json +++ b/packages/hono/deno.json @@ -14,9 +14,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test --allow-net --allow-env" } } diff --git a/packages/hono/moon.yml b/packages/hono/moon.yml new file mode 100644 index 000000000..5cb78ab11 --- /dev/null +++ b/packages/hono/moon.yml @@ -0,0 +1,40 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-net --allow-env" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/hono/package.json b/packages/hono/package.json index dad560dac..3cef1f559 100644 --- a/packages/hono/package.json +++ b/packages/hono/package.json @@ -57,10 +57,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/hono... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "test": "node --experimental-transform-types --test" + "prepack": "moon run hono:build" } } diff --git a/packages/koa/deno.json b/packages/koa/deno.json index be5582cd1..df7daeb42 100644 --- a/packages/koa/deno.json +++ b/packages/koa/deno.json @@ -14,8 +14,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts" } } diff --git a/packages/koa/moon.yml b/packages/koa/moon.yml new file mode 100644 index 000000000..b2ff90f9d --- /dev/null +++ b/packages/koa/moon.yml @@ -0,0 +1,16 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/koa/package.json b/packages/koa/package.json index 654fb5758..d228bbd22 100644 --- a/packages/koa/package.json +++ b/packages/koa/package.json @@ -59,9 +59,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/koa... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build" + "prepack": "moon run koa:build" } } diff --git a/packages/lint/deno.json b/packages/lint/deno.json index 64af306be..f4a58f48a 100644 --- a/packages/lint/deno.json +++ b/packages/lint/deno.json @@ -11,8 +11,5 @@ }, "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "test": "deno test --allow-env" } } diff --git a/packages/lint/moon.yml b/packages/lint/moon.yml new file mode 100644 index 000000000..a59d33d75 --- /dev/null +++ b/packages/lint/moon.yml @@ -0,0 +1,40 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-env" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test 'src/tests/**/*.test.ts'" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/lint/package.json b/packages/lint/package.json index 8667bbdd4..a3c082ad2 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -67,10 +67,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/lint... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "test": "node --experimental-transform-types --test 'src/tests/**/*.test.ts'" + "prepack": "moon run lint:build" } } diff --git a/packages/nestjs/moon.yml b/packages/nestjs/moon.yml new file mode 100644 index 000000000..0a7f1fb7c --- /dev/null +++ b/packages/nestjs/moon.yml @@ -0,0 +1,3 @@ +language: "typescript" +tags: + - "tsdown-build" diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index 003c0d489..388acd3ef 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -58,9 +58,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/nestjs... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build" + "prepack": "moon run nestjs:build" } } diff --git a/packages/next/moon.yml b/packages/next/moon.yml new file mode 100644 index 000000000..0a7f1fb7c --- /dev/null +++ b/packages/next/moon.yml @@ -0,0 +1,3 @@ +language: "typescript" +tags: + - "tsdown-build" diff --git a/packages/next/package.json b/packages/next/package.json index c82f9fbd0..423f5d86b 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -58,9 +58,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/next... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build" + "prepack": "moon run next:build" } } diff --git a/packages/postgres/deno.json b/packages/postgres/deno.json index 99f92dcf0..38c5d503e 100644 --- a/packages/postgres/deno.json +++ b/packages/postgres/deno.json @@ -16,9 +16,5 @@ "**/*.test.ts", "tsdown.config.ts" ] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test --allow-net --allow-env" } } diff --git a/packages/postgres/moon.yml b/packages/postgres/moon.yml new file mode 100644 index 000000000..7883d7f6b --- /dev/null +++ b/packages/postgres/moon.yml @@ -0,0 +1,52 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-net --allow-env" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + command: "bun test --timeout=10000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/postgres/package.json b/packages/postgres/package.json index fead6c147..76f96444e 100644 --- a/packages/postgres/package.json +++ b/packages/postgres/package.json @@ -84,13 +84,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/postgres... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "node --experimental-transform-types --test", - "pretest:bun": "pnpm build", - "test:bun": "bun test --timeout=10000" + "prepack": "moon run postgres:build" } } diff --git a/packages/redis/deno.json b/packages/redis/deno.json index 4b2e786fb..0dc7d2c46 100644 --- a/packages/redis/deno.json +++ b/packages/redis/deno.json @@ -17,9 +17,5 @@ "**/*.test.ts", "tsdown.config.ts" ] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test --allow-net --allow-env --doc --no-check=leaks" } } diff --git a/packages/redis/moon.yml b/packages/redis/moon.yml new file mode 100644 index 000000000..9ee3fe943 --- /dev/null +++ b/packages/redis/moon.yml @@ -0,0 +1,52 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-net --allow-env --doc --no-check=leaks" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + command: "bun test --timeout=10000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/redis/package.json b/packages/redis/package.json index 9998c07ed..dfe8f11af 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -93,13 +93,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/redis... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "node --experimental-transform-types --test", - "pretest:bun": "pnpm build", - "test:bun": "bun test --timeout=10000" + "prepack": "moon run redis:build" } } diff --git a/packages/relay/deno.json b/packages/relay/deno.json index f6b08ccc6..465ad81ee 100644 --- a/packages/relay/deno.json +++ b/packages/relay/deno.json @@ -15,21 +15,6 @@ "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] }, - "tasks": { - "codegen": "deno task -f @fedify/vocab compile", - "check": { - "command": "deno fmt --check && deno lint && deno check src/**/*.ts", - "dependencies": [ - "codegen" - ] - }, - "test": { - "command": "deno test --allow-env", - "dependencies": [ - "codegen" - ] - } - }, "fmt": { "exclude": [ "src/init/templates/**" diff --git a/packages/relay/moon.yml b/packages/relay/moon.yml new file mode 100644 index 000000000..5b5d53cff --- /dev/null +++ b/packages/relay/moon.yml @@ -0,0 +1,54 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-env" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + script: "cd dist/ && node --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + script: "cd dist/ && bun test --timeout 60000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/relay/package.json b/packages/relay/package.json index 82daa7a91..283f00fb8 100644 --- a/packages/relay/package.json +++ b/packages/relay/package.json @@ -60,13 +60,6 @@ "urlpattern-polyfill": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/relay... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "cd dist/ && node --test", - "pretest:bun": "pnpm build", - "test:bun": "cd dist/ && bun test --timeout 60000" + "prepack": "moon run relay:build" } } diff --git a/packages/sqlite/deno.json b/packages/sqlite/deno.json index eb2b02328..851b91f35 100644 --- a/packages/sqlite/deno.json +++ b/packages/sqlite/deno.json @@ -21,9 +21,5 @@ "!dist/", "tsdown.config.ts" ] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check", - "test": "deno test --allow-net --allow-env --allow-read --allow-write --doc --no-check=leaks" } } diff --git a/packages/sqlite/moon.yml b/packages/sqlite/moon.yml new file mode 100644 index 000000000..e5dc68917 --- /dev/null +++ b/packages/sqlite/moon.yml @@ -0,0 +1,52 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-net --allow-env --allow-read --allow-write --doc --no-check=leaks" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + command: "bun test --timeout=10000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/sqlite/package.json b/packages/sqlite/package.json index e40c092b5..1b767b922 100644 --- a/packages/sqlite/package.json +++ b/packages/sqlite/package.json @@ -81,14 +81,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/sqlite... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "node --experimental-transform-types --test", - "pretest:bun": "pnpm build", - "test:bun": "bun test --timeout=10000", - "test:deno": "deno task test" + "prepack": "moon run sqlite:build" } } diff --git a/packages/sveltekit/deno.json b/packages/sveltekit/deno.json index 3e54a0f40..5ab50e7d8 100644 --- a/packages/sveltekit/deno.json +++ b/packages/sveltekit/deno.json @@ -15,9 +15,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test --allow-net --allow-env" } } diff --git a/packages/sveltekit/moon.yml b/packages/sveltekit/moon.yml new file mode 100644 index 000000000..5cb78ab11 --- /dev/null +++ b/packages/sveltekit/moon.yml @@ -0,0 +1,40 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-net --allow-env" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index d07e995dc..5d0db668d 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -58,11 +58,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/sveltekit... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "dev": "tsdown --watch", - "test": "node --experimental-transform-types --test" + "prepack": "moon run sveltekit:build" } } diff --git a/packages/testing/deno.json b/packages/testing/deno.json index 082176ac4..036e9684f 100644 --- a/packages/testing/deno.json +++ b/packages/testing/deno.json @@ -16,29 +16,5 @@ "**/*.test.ts", "tsdown.config.ts" ] - }, - "tasks": { - "build": "pnpm build", - "check": "deno fmt --check && deno lint && deno check", - "test": "deno test --allow-read --allow-net --allow-env", - "test:node": { - "dependencies": [ - "build" - ], - "command": "node --experimental-transform-types --test" - }, - "test:bun": { - "dependencies": [ - "build" - ], - "command": "bun test --timeout 15000" - }, - "test-all": { - "dependencies": [ - "test", - "test:node", - "test:bun" - ] - } } } diff --git a/packages/testing/moon.yml b/packages/testing/moon.yml new file mode 100644 index 000000000..61bb019be --- /dev/null +++ b/packages/testing/moon.yml @@ -0,0 +1,52 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-read --allow-net --allow-env" + toolchains: + - "deno" + deps: + - "vocab:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + command: "bun test --timeout 15000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/testing/package.json b/packages/testing/package.json index ebbea3740..bc95f4fd2 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -64,15 +64,6 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/testing... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "node --experimental-transform-types --test", - "pretest:bun": "pnpm build", - "test:bun": "bun test --timeout 15000", - "test:deno": "deno task test", - "test-all": "pnpm build && node --experimental-transform-types --test && bun test --timeout 15000 && deno task test" + "prepack": "moon run testing:build" } } diff --git a/packages/vocab-runtime/deno.json b/packages/vocab-runtime/deno.json index f6febbb9b..b05ac8c57 100644 --- a/packages/vocab-runtime/deno.json +++ b/packages/vocab-runtime/deno.json @@ -25,9 +25,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test" } } diff --git a/packages/vocab-runtime/moon.yml b/packages/vocab-runtime/moon.yml new file mode 100644 index 000000000..6796689fa --- /dev/null +++ b/packages/vocab-runtime/moon.yml @@ -0,0 +1,37 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/*.ts" + toolchains: + - "deno" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test" + toolchains: + - "deno" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + script: "cd dist/ && node --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/vocab-runtime/package.json b/packages/vocab-runtime/package.json index e051a12e7..05eb95cc1 100644 --- a/packages/vocab-runtime/package.json +++ b/packages/vocab-runtime/package.json @@ -38,12 +38,7 @@ "./package.json": "./package.json" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/vocab-runtime... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "cd dist/ && node --test" + "prepack": "moon run vocab-runtime:build" }, "keywords": [ "Fedify", diff --git a/packages/vocab-tools/deno.json b/packages/vocab-tools/deno.json index f68c2e79b..24f774abb 100644 --- a/packages/vocab-tools/deno.json +++ b/packages/vocab-tools/deno.json @@ -21,9 +21,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test -A" } } diff --git a/packages/vocab-tools/moon.yml b/packages/vocab-tools/moon.yml new file mode 100644 index 000000000..f0d7115db --- /dev/null +++ b/packages/vocab-tools/moon.yml @@ -0,0 +1,66 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/**/*.ts" + toolchains: + - "deno" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test --allow-all" + toolchains: + - "deno" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + command: "node --experimental-transform-types --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + command: "bun test" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node.update_snapshots: + command: "node --experimental-transform-types --test --test-update-snapshots" + toolchains: + - "node" + deps: + - "~:build" + options: + cache: false + + test.bun.update_snapshots: + command: "bun test --update-snapshots" + toolchains: + - "bun" + deps: + - "~:build" + options: + cache: false diff --git a/packages/vocab-tools/package.json b/packages/vocab-tools/package.json index b351858a5..6d3b20e3d 100644 --- a/packages/vocab-tools/package.json +++ b/packages/vocab-tools/package.json @@ -38,18 +38,7 @@ "./package.json": "./package.json" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/vocab-tools... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "node --experimental-transform-types --test", - "pretest:bun": "pnpm build", - "test:bun": "bun test", - "pretest:update_snapshots": "pnpm build", - "test:update_snapshots": "node --experimental-transform-types --test --test-update-snapshots", - "pretest:bun:update_snapshots": "pnpm build", - "test:bun:update_snapshots": "bun test --update-snapshots" + "prepack": "moon run vocab-tools:build" }, "keywords": [ "Fedify", diff --git a/packages/vocab/deno.json b/packages/vocab/deno.json index 2659d9b5f..b52fae286 100644 --- a/packages/vocab/deno.json +++ b/packages/vocab/deno.json @@ -25,10 +25,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts", "scripts/"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "compile": "deno run --allow-read --allow-write --allow-env --allow-run scripts/codegen.ts", - "test": "deno test --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel" } } diff --git a/packages/vocab/moon.yml b/packages/vocab/moon.yml new file mode 100644 index 000000000..4466de4bd --- /dev/null +++ b/packages/vocab/moon.yml @@ -0,0 +1,83 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/*.ts" + toolchains: + - "deno" + deps: + - "~:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + codegen: + command: "deno run -A scripts/codegen.ts" + toolchains: + - "deno" + inputs: + - "src/*.yaml" + - "scripts/codegen.ts" + - "/mise.toml" + outputs: + - "src/vocab.ts" + options: + cache: true + + build: + script: "pnpm exec tsdown" + toolchains: + - "node" + deps: + - "~:codegen" + - "^:build" + inputs: + - "src/**/*" + - "tsdown.config.ts" + - "/mise.toml" + outputs: + - "dist/" + options: + cache: true + + test.deno: + command: "deno test --check --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel" + toolchains: + - "deno" + deps: + - "~:codegen" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + script: "cd dist/ && node --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true + + test.bun: + script: "cd dist/ && bun test --timeout 60000" + toolchains: + - "bun" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/vocab/package.json b/packages/vocab/package.json index 2ff5d2860..c6947e075 100644 --- a/packages/vocab/package.json +++ b/packages/vocab/package.json @@ -60,14 +60,7 @@ "typescript": "catalog:" }, "scripts": { - "build:self": "deno task compile && tsdown", - "build": "pnpm --filter @fedify/vocab... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "cd dist/ && node --test", - "pretest:bun": "pnpm build", - "test:bun": "cd dist/ && bun test --timeout 60000" + "prepack": "moon run vocab:build" }, "keywords": [ "Fedify", diff --git a/packages/webfinger/deno.json b/packages/webfinger/deno.json index 36f26b5ca..4e8253fee 100644 --- a/packages/webfinger/deno.json +++ b/packages/webfinger/deno.json @@ -21,9 +21,5 @@ ], "publish": { "exclude": ["**/*.test.ts", "tsdown.config.ts"] - }, - "tasks": { - "check": "deno fmt --check && deno lint && deno check src/*.ts", - "test": "deno test" } } diff --git a/packages/webfinger/moon.yml b/packages/webfinger/moon.yml new file mode 100644 index 000000000..6796689fa --- /dev/null +++ b/packages/webfinger/moon.yml @@ -0,0 +1,37 @@ +language: "typescript" +tags: + - "tsdown-build" + +tasks: + check: + script: "deno fmt --check && deno lint && deno check src/*.ts" + toolchains: + - "deno" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.deno: + command: "deno test" + toolchains: + - "deno" + inputs: + - "src/**/*" + - "/mise.toml" + options: + cache: true + + test.node: + script: "cd dist/ && node --test" + toolchains: + - "node" + deps: + - "~:build" + inputs: + - "src/**/*" + - "dist/**/*" + - "/mise.toml" + options: + cache: true diff --git a/packages/webfinger/package.json b/packages/webfinger/package.json index 443b357a5..c4fe8dde3 100644 --- a/packages/webfinger/package.json +++ b/packages/webfinger/package.json @@ -38,12 +38,7 @@ "./package.json": "./package.json" }, "scripts": { - "build:self": "tsdown", - "build": "pnpm --filter @fedify/webfinger... run build:self", - "prepack": "pnpm build", - "prepublish": "pnpm build", - "pretest": "pnpm build", - "test": "cd dist/ && node --test" + "prepack": "moon run webfinger:build" }, "keywords": [ "Fedify", From 6710c5a7763c3299b7f4568d02318b1b50af3ce7 Mon Sep 17 00:00:00 2001 From: Lee Dogeon Date: Wed, 4 Feb 2026 22:01:23 +0900 Subject: [PATCH 2/2] TMP --- .moon/workspace.yml | 2 +- mise.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.moon/workspace.yml b/.moon/workspace.yml index cd54937d4..420681881 100644 --- a/.moon/workspace.yml +++ b/.moon/workspace.yml @@ -5,7 +5,7 @@ projects: vcs: client: "git" - defaultBranch: "main" + defaultBranch: main pipeline: cacheLifetime: "7 days" diff --git a/mise.toml b/mise.toml index 99b16dd7c..47e013a4d 100644 --- a/mise.toml +++ b/mise.toml @@ -20,7 +20,7 @@ run = "moon run vocab:codegen" # Code quality [tasks.check] -run = "moon run root:check" +run = "MOON_LOG=trace moon run root:check" [tasks.cli] run = "moon run root:cli"