From 867da7899f5be23d463b2e30f5342b631eccf068 Mon Sep 17 00:00:00 2001 From: Exelo Date: Thu, 10 Sep 2026 02:50:14 +0200 Subject: [PATCH 1/2] feat: add new nanoforge package --- packages/nanoforge/.cliff-jumperrc.json | 8 + packages/nanoforge/.gitignore | 275 +++++++++++++++++++++ packages/nanoforge/.prettierignore | 11 + packages/nanoforge/LICENSE | 21 ++ packages/nanoforge/README.md | 64 +++++ packages/nanoforge/cliff.toml | 79 ++++++ packages/nanoforge/eslint.config.js | 3 + packages/nanoforge/mint-tsdocs.config.json | 13 + packages/nanoforge/package.json | 103 ++++++++ packages/nanoforge/prettier.config.js | 3 + packages/nanoforge/src/config.ts | 1 + packages/nanoforge/src/index.ts | 4 + packages/nanoforge/tsconfig.json | 15 ++ packages/nanoforge/tsconfig.spec.json | 10 + packages/nanoforge/tsdoc.json | 14 ++ packages/nanoforge/tsdown.config.ts | 3 + pnpm-lock.yaml | 121 +++++++++ 17 files changed, 748 insertions(+) create mode 100644 packages/nanoforge/.cliff-jumperrc.json create mode 100644 packages/nanoforge/.gitignore create mode 100644 packages/nanoforge/.prettierignore create mode 100644 packages/nanoforge/LICENSE create mode 100644 packages/nanoforge/README.md create mode 100644 packages/nanoforge/cliff.toml create mode 100644 packages/nanoforge/eslint.config.js create mode 100644 packages/nanoforge/mint-tsdocs.config.json create mode 100644 packages/nanoforge/package.json create mode 100644 packages/nanoforge/prettier.config.js create mode 100644 packages/nanoforge/src/config.ts create mode 100644 packages/nanoforge/src/index.ts create mode 100644 packages/nanoforge/tsconfig.json create mode 100644 packages/nanoforge/tsconfig.spec.json create mode 100644 packages/nanoforge/tsdoc.json create mode 100644 packages/nanoforge/tsdown.config.ts diff --git a/packages/nanoforge/.cliff-jumperrc.json b/packages/nanoforge/.cliff-jumperrc.json new file mode 100644 index 00000000..ae1084c0 --- /dev/null +++ b/packages/nanoforge/.cliff-jumperrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://raw.githubusercontent.com/favware/cliff-jumper/main/assets/cliff-jumper.schema.json", + "name": "nanoforge", + "org": "nanoforge-dev", + "packagePath": "packages/nanoforge", + "tagTemplate": "{{new-version}}", + "identifierBase": false +} diff --git a/packages/nanoforge/.gitignore b/packages/nanoforge/.gitignore new file mode 100644 index 00000000..e2764b6d --- /dev/null +++ b/packages/nanoforge/.gitignore @@ -0,0 +1,275 @@ +### VisualStudioCode template +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### C++ template +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Node template +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Private + +# Turbo +.turbo/ + +# Compiled files +src/**/*.js +src/**/*.d.ts + +# pubilc directory +public/ +compile_commands.json +emsdk/ + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/nanoforge/.prettierignore b/packages/nanoforge/.prettierignore new file mode 100644 index 00000000..64b127c9 --- /dev/null +++ b/packages/nanoforge/.prettierignore @@ -0,0 +1,11 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock +bun.lock + +.turbo/ +node_modules/ +dist/ +coverage/ +CHANGELOG.md diff --git a/packages/nanoforge/LICENSE b/packages/nanoforge/LICENSE new file mode 100644 index 00000000..46724861 --- /dev/null +++ b/packages/nanoforge/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright © 2026 NanoForge + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/nanoforge/README.md b/packages/nanoforge/README.md new file mode 100644 index 00000000..28fc55c9 --- /dev/null +++ b/packages/nanoforge/README.md @@ -0,0 +1,64 @@ +
+
+

+ NanoForge +

+
+

+ npm version + npm downloads + Tests status + Last commit + Contributors +

+
+ +## About + +`nanoforge` is a meta package that re-exports the core NanoForge Engine libraries (`@nanoforge-dev/asset`, `@nanoforge-dev/common`, `@nanoforge-dev/core`, `@nanoforge-dev/env`) from a single entry point, plus `@nanoforge-dev/config` from the `nanoforge/config` subpath used by `nanoforge.config.ts` files. + +## Installation + +**Node.js 26 or newer is required.** + +```sh +npm install nanoforge +yarn add nanoforge +pnpm add nanoforge +bun add nanoforge +``` + +## Example usage + +```ts +import { AssetLibrary, NanoforgeFactory, registerEnv } from "nanoforge"; +``` + +```ts +import { defineConfig } from "nanoforge/config"; + +export default defineConfig({ + // ... +}); +``` + +## Links + +- [GitHub][source] +- [npm][npm] + +## Contributing + +Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the +[documentation][documentation]. +See [the contribution guide][contributing] if you'd like to submit a PR. + +## Help + +If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to ask questions in [discussions][discussions]. + +[documentation]: https://github.com/NanoForge-dev/Engine +[discussions]: https://github.com/NanoForge-dev/Engine/discussions +[source]: https://github.com/NanoForge-dev/Engine/tree/main/packages/nanoforge +[npm]: https://www.npmjs.com/package/nanoforge +[contributing]: https://github.com/NanoForge-dev/Engine/blob/main/.github/CONTRIBUTING.md diff --git a/packages/nanoforge/cliff.toml b/packages/nanoforge/cliff.toml new file mode 100644 index 00000000..5163767e --- /dev/null +++ b/packages/nanoforge/cliff.toml @@ -0,0 +1,79 @@ +[changelog] +header = """ +# Changelog + +All notable changes to this project will be documented in this file.\n +""" +body = """ +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} +{% if version %}\ + # [{{ version | trim_start_matches(pat="v") }}]\ + {% if previous %}\ + {% if previous.version %}\ + ({{ self::remote_url() }}/compare/{{ previous.version }}...{{ version }})\ + {% else %}\ + ({{ self::remote_url() }}/tree/{{ version }})\ + {% endif %}\ + {% endif %} \ + - ({{ timestamp | date(format="%Y-%m-%d") }}) +{% else %}\ + # [unreleased] +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ## {{ group | upper_first }} + {% for commit in commits %} + - {% if commit.scope %}\ + **{{commit.scope}}:** \ + {% endif %}\ + {{ commit.message | upper_first }} ([{{ commit.id | truncate(length=7, end="") }}]({{ self::remote_url() }}/commit/{{ commit.id }}))\ + {% if commit.github.username %} by @{{ commit.github.username }}{%- endif %}\ + {% if commit.breaking %}\ + {% for footer in commit.footers %}\ + {% if footer.breaking %}\ + \n{% raw %} {% endraw %}- **{{ footer.token }}{{ footer.separator }}** {{ footer.value }}\ + {% endif %}\ + {% endfor %}\ + {% endif %}\ + {% endfor %} +{% endfor %}\ +{% if github.contributors | filter(attribute="is_first_time", value=true) | length %}\ + \n### New Contributors\n + {% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %}\ + - @{{ contributor.username }} made their first contribution in #{{ contributor.pr_number }} + {% endfor %}\ +{% endif %}\n +""" +trim = true +footer = "" + +[git] +conventional_commits = true +filter_unconventional = true +commit_parsers = [ + { message = "^feat", group = "Features"}, + { message = "^fix", group = "Bug Fixes"}, + { message = "^docs", group = "Documentation"}, + { message = "^perf", group = "Performance"}, + { message = "^refactor", group = "Refactor"}, + { message = "^types", group = "Typings"}, + { message = ".*deprecated", body = ".*deprecated", group = "Deprecation"}, + { message = "^revert", skip = true}, + { message = "^style", group = "Styling"}, + { message = "^test", group = "Testing"}, + { message = "^chore", skip = true}, + { message = "^ci", skip = true}, + { message = "^build", skip = true}, + { body = ".*security", group = "Security"}, +] +filter_commits = true +protect_breaking_commits = true +tag_pattern = "^[0-9]+" +ignore_tags = "" +topo_order = false +sort_commits = "newest" + +[remote.github] +owner = "NanoForge-dev" +repo = "Engine" diff --git a/packages/nanoforge/eslint.config.js b/packages/nanoforge/eslint.config.js new file mode 100644 index 00000000..62ec06dc --- /dev/null +++ b/packages/nanoforge/eslint.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge-dev/utils-eslint-config"; + +export default config; diff --git a/packages/nanoforge/mint-tsdocs.config.json b/packages/nanoforge/mint-tsdocs.config.json new file mode 100644 index 00000000..87c4693a --- /dev/null +++ b/packages/nanoforge/mint-tsdocs.config.json @@ -0,0 +1,13 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.ts", + "outputFolder": "../../docs/references/nanoforge", + "lint": { + "eslint": { + "enabled": true + } + }, + "templates": { + "userTemplateDir": "../../docs/templates" + } +} diff --git a/packages/nanoforge/package.json b/packages/nanoforge/package.json new file mode 100644 index 00000000..907a6d5a --- /dev/null +++ b/packages/nanoforge/package.json @@ -0,0 +1,103 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "name": "nanoforge", + "version": "1.4.2", + "description": "NanoForge Engine - Meta package re-exporting the core engine libraries", + "keywords": [ + "nanoforge", + "game", + "engine" + ], + "homepage": "https://github.com/NanoForge-dev/Engine#readme", + "bugs": "https://github.com/NanoForge-dev/Engine/issues", + "license": "MIT", + "contributors": [ + "Bill ", + "Exelo ", + "Fexkoser ", + "Josephine ", + "Tchips " + ], + "files": [ + "dist" + ], + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.cts", + "exports": { + ".": { + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + }, + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "./config": { + "require": { + "types": "./dist/config.d.cts", + "default": "./dist/config.cjs" + }, + "import": { + "types": "./dist/config.d.ts", + "default": "./dist/config.js" + } + }, + "./package.json": "./package.json" + }, + "type": "module", + "directories": { + "lib": "src" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/NanoForge-dev/Engine.git", + "directory": "packages/nanoforge" + }, + "funding": "https://github.com/NanoForge-dev/Engine?sponsor", + "scripts": { + "build": "tsc --noEmit && tsdown --config-loader unrun", + "lint": "prettier --check . && eslint --format=pretty src", + "format": "prettier --write . && eslint --fix --format=pretty src", + "test:unit": "vitest run --config ../../vitest.config.ts", + "prepack": "pnpm run build && pnpm run lint", + "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/nanoforge/*'", + "release": "cliff-jumper", + "docs": "mint-tsdocs generate" + }, + "dependencies": { + "@nanoforge-dev/asset": "workspace:*", + "@nanoforge-dev/common": "workspace:*", + "@nanoforge-dev/core": "workspace:*", + "@nanoforge-dev/env": "workspace:*" + }, + "devDependencies": { + "@favware/cliff-jumper": "catalog:ci", + "@nanoforge-dev/utils-eslint-config": "workspace:*", + "@nanoforge-dev/utils-prettier-config": "workspace:*", + "@trivago/prettier-plugin-sort-imports": "catalog:lint", + "eslint": "catalog:lint", + "prettier": "catalog:lint", + "tsdown": "catalog:build", + "typescript": "catalog:core", + "unrun": "catalog:build", + "vitest": "catalog:test" + }, + "packageManager": "pnpm@12.0.0", + "engines": { + "node": "26" + }, + "publishConfig": { + "access": "public" + }, + "lint-staged": { + "**": [ + "prettier --ignore-unknown --write" + ], + "src/**/*.ts": [ + "eslint --fix" + ] + } +} diff --git a/packages/nanoforge/prettier.config.js b/packages/nanoforge/prettier.config.js new file mode 100644 index 00000000..27d0e269 --- /dev/null +++ b/packages/nanoforge/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge-dev/utils-prettier-config"; + +export default config; diff --git a/packages/nanoforge/src/config.ts b/packages/nanoforge/src/config.ts new file mode 100644 index 00000000..657e1cea --- /dev/null +++ b/packages/nanoforge/src/config.ts @@ -0,0 +1 @@ +export * from "@nanoforge-dev/config"; diff --git a/packages/nanoforge/src/index.ts b/packages/nanoforge/src/index.ts new file mode 100644 index 00000000..008442e1 --- /dev/null +++ b/packages/nanoforge/src/index.ts @@ -0,0 +1,4 @@ +export * from "@nanoforge-dev/asset"; +export * from "@nanoforge-dev/common"; +export * from "@nanoforge-dev/core"; +export * from "@nanoforge-dev/env"; diff --git a/packages/nanoforge/tsconfig.json b/packages/nanoforge/tsconfig.json new file mode 100644 index 00000000..1ada333c --- /dev/null +++ b/packages/nanoforge/tsconfig.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig.json", + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } +} diff --git a/packages/nanoforge/tsconfig.spec.json b/packages/nanoforge/tsconfig.spec.json new file mode 100644 index 00000000..8270caba --- /dev/null +++ b/packages/nanoforge/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig.json", + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": true, + "skipLibCheck": true + }, + "include": ["test/**/*.spec.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/nanoforge/tsdoc.json b/packages/nanoforge/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/nanoforge/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/nanoforge/tsdown.config.ts b/packages/nanoforge/tsdown.config.ts new file mode 100644 index 00000000..70ceffa7 --- /dev/null +++ b/packages/nanoforge/tsdown.config.ts @@ -0,0 +1,3 @@ +import { createTsdownConfig } from "../../tsdown.config"; + +export default [createTsdownConfig({ entry: ["src/index.ts", "src/config.ts"] })]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18c6a80d..43dd7df3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -271,6 +271,81 @@ importers: specifier: catalog:test version: 4.1.11(@types/node@26.4.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.4.0)(jiti@2.6.1)(yaml@2.9.0)) + e2e/game: + devDependencies: + '@nanoforge-dev/asset': + specifier: workspace:* + version: link:../../packages/asset + '@nanoforge-dev/cli': + specifier: latest + version: 1.6.2(@types/node@26.4.0) + '@nanoforge-dev/common': + specifier: workspace:* + version: link:../../packages/common + '@nanoforge-dev/core': + specifier: workspace:* + version: link:../../packages/core + '@nanoforge-dev/env': + specifier: workspace:* + version: link:../../packages/env + typescript: + specifier: catalog:core + version: 6.0.3 + + e2e/game/apps/client: + devDependencies: + '@nanoforge-dev/asset': + specifier: workspace:* + version: link:../../../../packages/asset + '@nanoforge-dev/common': + specifier: workspace:* + version: link:../../../../packages/common + '@nanoforge-dev/core': + specifier: workspace:* + version: link:../../../../packages/core + '@nanoforge-dev/ecs': + specifier: workspace:* + version: link:../../../../modules/ecs + '@nanoforge-dev/env': + specifier: workspace:* + version: link:../../../../packages/env + '@nanoforge-dev/graphics-2d': + specifier: workspace:* + version: link:../../../../modules/graphics-2d + '@nanoforge-dev/input': + specifier: workspace:* + version: link:../../../../modules/input + '@nanoforge-dev/network': + specifier: workspace:* + version: link:../../../../modules/network + typescript: + specifier: catalog:core + version: 6.0.3 + + e2e/game/apps/server: + devDependencies: + '@nanoforge-dev/asset': + specifier: workspace:* + version: link:../../../../packages/asset + '@nanoforge-dev/common': + specifier: workspace:* + version: link:../../../../packages/common + '@nanoforge-dev/core': + specifier: workspace:* + version: link:../../../../packages/core + '@nanoforge-dev/ecs': + specifier: workspace:* + version: link:../../../../modules/ecs + '@nanoforge-dev/env': + specifier: workspace:* + version: link:../../../../packages/env + '@nanoforge-dev/network': + specifier: workspace:* + version: link:../../../../modules/network + typescript: + specifier: catalog:core + version: 6.0.3 + example/pong-network: devDependencies: '@nanoforge-dev/asset': @@ -836,6 +911,52 @@ importers: specifier: catalog:test version: 4.1.11(@types/node@26.4.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.4.0)(jiti@2.6.1)(yaml@2.9.0)) + packages/nanoforge: + dependencies: + '@nanoforge-dev/asset': + specifier: workspace:* + version: link:../asset + '@nanoforge-dev/common': + specifier: workspace:* + version: link:../common + '@nanoforge-dev/core': + specifier: workspace:* + version: link:../core + '@nanoforge-dev/env': + specifier: workspace:* + version: link:../env + devDependencies: + '@favware/cliff-jumper': + specifier: catalog:ci + version: 6.1.0 + '@nanoforge-dev/utils-eslint-config': + specifier: workspace:* + version: link:../../utils/eslint-config + '@nanoforge-dev/utils-prettier-config': + specifier: workspace:* + version: link:../../utils/prettier-config + '@trivago/prettier-plugin-sort-imports': + specifier: catalog:lint + version: 6.0.2(prettier@3.9.6)(supports-color@10.2.2) + eslint: + specifier: catalog:lint + version: 10.9.1(jiti@2.6.1)(supports-color@10.2.2) + prettier: + specifier: catalog:lint + version: 3.9.6 + tsdown: + specifier: catalog:build + version: 0.22.14(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.13)) + typescript: + specifier: catalog:core + version: 6.0.3 + unrun: + specifier: catalog:build + version: 0.3.1(synckit@0.11.13) + vitest: + specifier: catalog:test + version: 4.1.11(@types/node@26.4.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.4.0)(jiti@2.6.1)(yaml@2.9.0)) + utils/eslint-config: dependencies: '@eslint/js': From 8a22258faac1131e1ee8366585d10190f9987717 Mon Sep 17 00:00:00 2001 From: Exelo Date: Thu, 10 Sep 2026 03:11:35 +0200 Subject: [PATCH 2/2] ci: add nanoforge to release ci --- .github/workflows/pre-release.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 1af60574..75014163 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -34,7 +34,7 @@ jobs: - name: Create release PR uses: ./node_modules/@nanoforge-dev/actions/actions/create-packages-release-pr with: - packages: "@nanoforge-dev/asset,@nanoforge-dev/common,@nanoforge-dev/core,@nanoforge-dev/ecs,@nanoforge-dev/editor-lib,@nanoforge-dev/env,@nanoforge-dev/graphics-2d,@nanoforge-dev/input,@nanoforge-dev/music,@nanoforge-dev/network,@nanoforge-dev/sound" + packages: "@nanoforge-dev/asset,@nanoforge-dev/common,@nanoforge-dev/core,@nanoforge-dev/ecs,@nanoforge-dev/editor-lib,@nanoforge-dev/env,@nanoforge-dev/graphics-2d,@nanoforge-dev/input,@nanoforge-dev/music,nanoforge,@nanoforge-dev/network,@nanoforge-dev/sound" version: ${{ inputs.version }} branch-format: "releases/nanoforge@{version}" commit-format: "chore: release @nanoforge-dev/engine@{version}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 12d25e80..aa24f89c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: - name: Release packages uses: ./node_modules/@nanoforge-dev/actions/actions/release-packages with: - packages: "@nanoforge-dev/asset,@nanoforge-dev/common,@nanoforge-dev/core,@nanoforge-dev/ecs,@nanoforge-dev/editor-lib,@nanoforge-dev/env,@nanoforge-dev/graphics-2d,@nanoforge-dev/input,@nanoforge-dev/music,@nanoforge-dev/network,@nanoforge-dev/sound" + packages: "@nanoforge-dev/asset,@nanoforge-dev/common,@nanoforge-dev/core,@nanoforge-dev/ecs,@nanoforge-dev/editor-lib,@nanoforge-dev/env,@nanoforge-dev/graphics-2d,@nanoforge-dev/input,@nanoforge-dev/music,nanoforge,@nanoforge-dev/network,@nanoforge-dev/sound" tag-format: "{version}" latest: true env: