diff --git a/.devcontainer/bin/postCreateCommand.sh b/.devcontainer/bin/postCreateCommand.sh index 5c9f0f3d..9fa7a439 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 52fc090c..1955bddd 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 c2f78bae..f718617d 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 edcaca1e..7c39791e 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 a931dc8f..ba60b2e1 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 c6158e03..5e7b6458 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 00000000..a26cece6 --- /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 00000000..8543b570 --- /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 00000000..42068188 --- /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 2a126128..a7708543 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 82c6266c..227439eb 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 273d96dd..a3247633 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 dc3c7d78..8f8d007e 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 00000000..cdff9fb1 --- /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 11e2f850..5957163f 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 74df32ca..cfa2d341 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 d816b90b..8aee2cbc 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 2091c470..47e013a4 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_LOG=trace 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 00000000..44c6fa25 --- /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 958efcd2..fae89d94 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 7f38f1e3..7586d06c 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 00000000..95202e54 --- /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 53b8be3c..1b12fd22 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 266fc7b0..0474524b 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 00000000..b7d8b83f --- /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 e8687786..28f689f0 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 fb64a264..6e1b46f5 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 00000000..46fe6708 --- /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 2b59a1f4..454b97fc 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 065d0604..0c9582a8 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 00000000..26e03bca --- /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 fe7a7456..08671b6d 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 00000000..c8380e08 --- /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 10a3c56a..1e5f6471 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 eefdeacd..d192fd77 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 00000000..b2ff90f9 --- /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 6b324fb8..6755216d 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 d7c7bb84..a96dc90c 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 00000000..2aadb5ea --- /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 dba385a7..a6f7901f 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 3099074a..4b1a269c 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 00000000..0e4f0767 --- /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 f0ee3afe..0057aa86 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 6d73f088..1536ed23 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 00000000..f44226d4 --- /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 4b0bcb67..c2e82952 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 d8b40226..979f1f9d 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 00000000..00e37ff4 --- /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 1c5be800..292a96a1 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 00000000..b2ff90f9 --- /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 f9daf32c..ee8f2cf1 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 803d394f..38dae9c3 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 00000000..5cb78ab1 --- /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 dad560da..3cef1f55 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 be5582cd..df7daeb4 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 00000000..b2ff90f9 --- /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 654fb575..d228bbd2 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 64af306b..f4a58f48 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 00000000..a59d33d7 --- /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 8667bbdd..a3c082ad 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 00000000..0a7f1fb7 --- /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 003c0d48..388acd3e 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 00000000..0a7f1fb7 --- /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 c82f9fbd..423f5d86 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 99f92dcf..38c5d503 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 00000000..7883d7f6 --- /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 fead6c14..76f96444 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 4b2e786f..0dc7d2c4 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 00000000..9ee3fe94 --- /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 9998c07e..dfe8f11a 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 f6b08ccc..465ad81e 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 00000000..5b5d53cf --- /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 82daa7a9..283f00fb 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 eb2b0232..851b91f3 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 00000000..e5dc6891 --- /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 e40c092b..1b767b92 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 3e54a0f4..5ab50e7d 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 00000000..5cb78ab1 --- /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 d07e995d..5d0db668 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 082176ac..036e9684 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 00000000..61bb019b --- /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 ebbea374..bc95f4fd 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 f6febbb9..b05ac8c5 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 00000000..6796689f --- /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 e051a12e..05eb95cc 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 f68c2e79..24f774ab 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 00000000..f0d7115d --- /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 b351858a..6d3b20e3 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 2659d9b5..b52fae28 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 00000000..4466de4b --- /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 2ff5d286..c6947e07 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 36f26b5c..4e8253fe 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 00000000..6796689f --- /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 443b357a..c4fe8dde 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",