From 574695b2e51f0593a74f60943d1f460ad0559b53 Mon Sep 17 00:00:00 2001 From: Newton <5769156+iamnewton@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:16:34 -0700 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=F0=9F=94=A7=20bump=20eslint-confi?= =?UTF-8?q?g=20to=207.22.3=20and=20drop=20n/no-unpublished-import=20overri?= =?UTF-8?q?de?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Newton <5769156+iamnewton@users.noreply.github.com> --- eslint.config.ts | 13 +------ pnpm-lock.yaml | 95 ++++++++++++++++++++++++++++++++++++++++++--- pnpm-workspace.yaml | 5 ++- 3 files changed, 94 insertions(+), 19 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index 5192972..a4660e5 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -1,17 +1,6 @@ import { library } from "@theholocron/eslint-config/bundles/library"; import type { Linter } from "eslint"; -const config = [ - ...library(), - { - rules: { - // src/ compiles to dist/ via tsdown; files[] lists dist/ so every - // relative src/ import is flagged as unpublished. False positive - // for the TypeScript src→dist build model. - "n/no-unpublished-import": "off", - }, - }, - { ignores: ["dist/**", "coverage/**", "docs/**"] }, -] satisfies Linter.Config[]; +const config = [...library(), { ignores: ["dist/**", "coverage/**", "docs/**"] }] satisfies Linter.Config[]; export default config; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57692ed..c1e9599 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,8 +13,8 @@ catalogs: specifier: ^7.19.1 version: 7.19.1 '@theholocron/eslint-config': - specifier: ^7.19.1 - version: 7.19.1 + specifier: ^7.23.1 + version: 7.23.1 '@theholocron/holocron-config': specifier: ^7.19.1 version: 7.19.1 @@ -171,7 +171,7 @@ importers: version: 1.4.3(@astrojs/starlight@0.41.7(astro@7.2.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(@types/node@26.2.0)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@5.9.3))(astro@7.2.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(@types/node@26.2.0)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) '@theholocron/eslint-config': specifier: catalog:configs - version: 7.19.1(@eslint/js@10.0.1(eslint@10.8.1(jiti@2.7.0)))(eslint-plugin-n@18.3.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3))(eslint-plugin-simple-import-sort@14.0.0(eslint@10.8.1(jiti@2.7.0)))(eslint@10.8.1(jiti@2.7.0))(globals@17.9.0)(typescript-eslint@8.67.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3)) + version: 7.23.1(@eslint/js@10.0.1(eslint@10.8.1(jiti@2.7.0)))(eslint-plugin-n@18.3.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3))(eslint-plugin-simple-import-sort@14.0.0(eslint@10.8.1(jiti@2.7.0)))(eslint@10.8.1(jiti@2.7.0))(globals@17.9.0)(typescript-eslint@8.67.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3)) '@theholocron/holocron-config': specifier: catalog:configs version: 7.19.1(@theholocron/cli@3.24.4(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@types/node@26.2.0)(vitest@4.1.10)) @@ -797,6 +797,10 @@ packages: eslint: optional: true + '@eslint/json@2.0.1': + resolution: {integrity: sha512-Thz2j92ceUF3Bq/0TuWb3MWn3Z+Cwc8k5ptF0fakl2D4Mp8mSx07Xr1aQM4R5NoihzarWUdxfOmQ8DesGy4jOg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/object-schema@3.0.5': resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -833,6 +837,10 @@ packages: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/momoa@3.3.12': + resolution: {integrity: sha512-xS9xl4ieqTqhSZfKV3YXj/htwJCUxbgvkTVaK1fkESgrOzvoVSOTRQeQ8tTLOZUS0Csi2xqtJQXgVTRH5OEbHQ==} + engines: {node: '>=18'} + '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -1986,8 +1994,8 @@ packages: '@astrojs/starlight': '>=0.30.0' astro: '>=5.0.0' - '@theholocron/eslint-config@7.19.1': - resolution: {integrity: sha512-/tkJGE4Hy+gxUHzAo+ewnUI49c2aeLE3xXo/dM8X9s7Dl6I2lTyaS3/IJUs8cTMSuPQcXxDxnXt0VOP30YVYhQ==} + '@theholocron/eslint-config@7.23.1': + resolution: {integrity: sha512-TYbnFZnR0QT8R09is8swWkYOEcGAC+SrrBuEjAw1wtpBgjJ+3/I7sa5Q+nmTUx6Li/ew0dBlMradMAuxbH3wbA==} engines: {node: '>=22.0.0'} peerDependencies: '@eslint/js': ^10 @@ -1995,6 +2003,7 @@ packages: '@vitest/eslint-plugin': ^1 eslint: ^10 eslint-plugin-cypress: ^6 + eslint-plugin-jsdoc: ^50.0.0 eslint-plugin-n: ^18 eslint-plugin-react: ^7 eslint-plugin-simple-import-sort: ^14 @@ -2008,6 +2017,8 @@ packages: optional: true eslint-plugin-cypress: optional: true + eslint-plugin-jsdoc: + optional: true eslint-plugin-n: optional: true eslint-plugin-react: @@ -3001,6 +3012,12 @@ packages: peerDependencies: eslint: '>=6.0.0' + eslint-package-json@0.3.0: + resolution: {integrity: sha512-znnM6ynvEBTTpQ/iq9hqY4OUcJ/O++wMxKpVqPu+Re/8wCsGvU0DUR/65xNI9u98ajCnn0wHkR+tAmrW2C2D3A==} + engines: {node: '>=22'} + peerDependencies: + eslint: '>=10.4' + eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3382,6 +3399,10 @@ packages: hookable@6.1.1: resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} + hosted-git-info@10.1.1: + resolution: {integrity: sha512-DeOnSPAvOndYKfw075gt8yZzQ7S2hNztw34zBTfhIzLhmBTswIBg5/y+pqu/VD5cYWm5goAFTusDmUEmKZ0PEQ==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -4106,6 +4127,10 @@ packages: resolution: {integrity: sha512-ARftfC5HdUNu9jJeL8pHj8debUIHA2b91FizCoMzY4lG6dDX13jdvTK0TBe24IBDRf2HvJSzzwEPvmbkQWHRSg==} engines: {node: '>=20'} + npm-package-arg@14.0.0: + resolution: {integrity: sha512-69XQh3k+dtGa1p+7RaR57IuG3rCko96xr/nUfN4yDYBXbTYICiWcOpsFKLN2GtGE9cyIljE+f1exnaYt9MvM+Q==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4408,6 +4433,10 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} + proc-log@7.0.0: + resolution: {integrity: sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + process-ancestry@0.1.0: resolution: {integrity: sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==} engines: {node: '>=18.0.0'} @@ -4733,6 +4762,9 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + spdx-license-ids@3.0.23: resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} @@ -5179,6 +5211,14 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-name@7.0.2: + resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} + engines: {node: ^20.17.0 || >=22.9.0} + + validate-npm-package-name@8.0.0: + resolution: {integrity: sha512-SCv6OOV6Xj2/3cXy3dGmADluJTNcL3o7hZAglNPTe+WYuEuvxgJzxPrSDLZhF+CwyQOubqgecjMmTJGMVLWjYQ==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + verkit@0.3.1: resolution: {integrity: sha512-w2Eo8LSIIoW7qxNBzT7/17k+bh8plXo7G3dHjEIDqPlnluhzaxr9JX8F28VSYEtDvc1/a3WBDih6xNUZseebXg==} engines: {node: '>=18.12.0'} @@ -5967,6 +6007,13 @@ snapshots: optionalDependencies: eslint: 10.8.1(jiti@2.7.0) + '@eslint/json@2.0.1': + dependencies: + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@humanwhocodes/momoa': 3.3.12 + natural-compare: 1.4.0 + '@eslint/object-schema@3.0.5': {} '@eslint/plugin-kit@0.7.2': @@ -6013,6 +6060,8 @@ snapshots: '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/momoa@3.3.12': {} + '@humanwhocodes/retry@0.4.3': {} '@img/colour@1.1.0': @@ -6973,11 +7022,12 @@ snapshots: astro: 7.2.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(@types/node@26.2.0)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) gray-matter: 4.0.3 - '@theholocron/eslint-config@7.19.1(@eslint/js@10.0.1(eslint@10.8.1(jiti@2.7.0)))(eslint-plugin-n@18.3.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3))(eslint-plugin-simple-import-sort@14.0.0(eslint@10.8.1(jiti@2.7.0)))(eslint@10.8.1(jiti@2.7.0))(globals@17.9.0)(typescript-eslint@8.67.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3))': + '@theholocron/eslint-config@7.23.1(@eslint/js@10.0.1(eslint@10.8.1(jiti@2.7.0)))(eslint-plugin-n@18.3.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3))(eslint-plugin-simple-import-sort@14.0.0(eslint@10.8.1(jiti@2.7.0)))(eslint@10.8.1(jiti@2.7.0))(globals@17.9.0)(typescript-eslint@8.67.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3))': dependencies: '@eslint/compat': 2.1.0(eslint@10.8.1(jiti@2.7.0)) '@eslint/js': 10.0.1(eslint@10.8.1(jiti@2.7.0)) eslint: 10.8.1(jiti@2.7.0) + eslint-package-json: 0.3.0(eslint@10.8.1(jiti@2.7.0)) eslint-plugin-simple-import-sort: 14.0.0(eslint@10.8.1(jiti@2.7.0)) globals: 17.9.0 typescript-eslint: 8.67.0(eslint@10.8.1(jiti@2.7.0))(typescript@5.9.3) @@ -7936,6 +7986,17 @@ snapshots: eslint: 10.8.1(jiti@2.7.0) semver: 7.8.5 + eslint-package-json@0.3.0(eslint@10.8.1(jiti@2.7.0)): + dependencies: + '@eslint/json': 2.0.1 + detect-indent: 7.0.2 + eslint: 10.8.1(jiti@2.7.0) + hosted-git-info: 10.1.1 + npm-package-arg: 14.0.0 + semver: 7.8.5 + spdx-expression-parse: 4.0.0 + validate-npm-package-name: 7.0.2 + eslint-plugin-es-x@7.8.0(eslint@10.8.1(jiti@2.7.0)): dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)) @@ -8500,6 +8561,10 @@ snapshots: hookable@6.1.1: {} + hosted-git-info@10.1.1: + dependencies: + lru-cache: 11.5.2 + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -9436,6 +9501,13 @@ snapshots: normalize-url@9.0.1: {} + npm-package-arg@14.0.0: + dependencies: + hosted-git-info: 10.1.1 + proc-log: 7.0.0 + semver: 7.8.5 + validate-npm-package-name: 8.0.0 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -9710,6 +9782,8 @@ snapshots: prismjs@1.30.0: {} + proc-log@7.0.0: {} + process-ancestry@0.1.0: {} process-nextick-args@2.0.1: {} @@ -10208,6 +10282,11 @@ snapshots: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.23 + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 + spdx-license-ids@3.0.23: {} split2@1.0.0: @@ -10576,6 +10655,10 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + validate-npm-package-name@7.0.2: {} + + validate-npm-package-name@8.0.0: {} + verkit@0.3.1: {} vfile-location@5.0.3: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2aa1ccc..443445a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -36,7 +36,7 @@ catalogs: configs: '@theholocron/astro-config': ^7.22.2 '@theholocron/commitlint-config': ^7.19.1 - '@theholocron/eslint-config': ^7.19.1 + '@theholocron/eslint-config': ^7.23.1 '@theholocron/holocron-config': ^7.19.1 '@theholocron/lint-staged-config': ^7.19.1 '@theholocron/prettier-config': ^7.19.1 @@ -48,3 +48,6 @@ catalogs: holocron: '@theholocron/cli': ^3.24.4 '@theholocron/holocron-plugin-github': ^3.24.4 + +overrides: + '@eslint/json': ^1.2.0 From 1274bc2a6e01751029031e88a2ce77662d3ad820 Mon Sep 17 00:00:00 2001 From: Newton <5769156+iamnewton@users.noreply.github.com> Date: Tue, 25 Aug 2026 10:43:54 -0700 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=F0=9F=94=A7=20add=20sync=20workfl?= =?UTF-8?q?ow=20to=20holocron.config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Newton <5769156+iamnewton@users.noreply.github.com> --- holocron.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/holocron.config.ts b/holocron.config.ts index 0a1daaa..ede31df 100644 --- a/holocron.config.ts +++ b/holocron.config.ts @@ -24,6 +24,7 @@ export default defineConfig({ ...workflows, { name: "audit", with: { "run-knip": true } }, { name: "release", with: { "run-build": true } }, + "sync", { name: "deploy", with: { type: "docs", name: "node-template" }, paths: ["docs/**"] }, ], providers: { From 027eaaff0273b9cdf72fdb14992c1f8d98044343 Mon Sep 17 00:00:00 2001 From: Newton <5769156+iamnewton@users.noreply.github.com> Date: Tue, 25 Aug 2026 11:52:55 -0700 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=F0=9F=94=A7=20=F0=9F=93=9A?= =?UTF-8?q?=EF=B8=8F=20add=20development=20and=20releases=20marker=20block?= =?UTF-8?q?s=20to=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Newton <5769156+iamnewton@users.noreply.github.com> --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 1ddc5e3..f99620f 100755 --- a/README.md +++ b/README.md @@ -46,6 +46,8 @@ function App(options: SomethingOptions) { ## Development + + This repo uses [pnpm workspaces](https://pnpm.io/workspaces). ```bash @@ -56,6 +58,12 @@ pnpm typecheck # typecheck all packages pnpm lint # lint all packages ``` + + ## Releases + + Releases are automated via [semantic-release](https://semantic-release.gitbook.io) on push to `main`. All packages are versioned and published in lockstep. See [CHANGELOG.md](CHANGELOG.md) for the release history. + +