From a0d62162b10d0ca5648f1847af5060941dc022dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Mar 2026 02:24:04 +0000 Subject: [PATCH 001/233] chore(deps): bump google.golang.org/grpc in /apps/services Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.2 to 1.79.3. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.79.2...v1.79.3) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.79.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- apps/services/go.mod | 2 +- apps/services/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/services/go.mod b/apps/services/go.mod index 130590c56..519b88721 100644 --- a/apps/services/go.mod +++ b/apps/services/go.mod @@ -278,7 +278,7 @@ require ( golang.org/x/vuln v1.1.4 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/apps/services/go.sum b/apps/services/go.sum index dc69d894d..18e577f56 100644 --- a/apps/services/go.sum +++ b/apps/services/go.sum @@ -1097,8 +1097,8 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 933af2e272fa10c76f55c10836be2c32f5655a37 Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Thu, 19 Mar 2026 18:31:05 +0300 Subject: [PATCH 002/233] chore(codebase): release v4.1.10 --- CHANGELOG.md | 6 ++++++ VERSION | 2 +- package.json | 2 +- pkg/@cool/cli/package.json | 2 +- pkg/@cool/lime/deno.json | 2 +- pkg/@cool/lime/package.json | 2 +- pkg/@eser/app-runtime/deno.json | 2 +- pkg/@eser/app-runtime/package.json | 2 +- pkg/@eser/bundler/deno.json | 2 +- pkg/@eser/bundler/package.json | 2 +- pkg/@eser/cache/deno.json | 2 +- pkg/@eser/cache/package.json | 2 +- pkg/@eser/cli/deno.json | 2 +- pkg/@eser/cli/package.json | 2 +- pkg/@eser/codebase/deno.json | 2 +- pkg/@eser/codebase/package.json | 2 +- pkg/@eser/collector/deno.json | 2 +- pkg/@eser/collector/package.json | 2 +- pkg/@eser/config/deno.json | 2 +- pkg/@eser/config/package.json | 2 +- pkg/@eser/crypto/deno.json | 2 +- pkg/@eser/crypto/package.json | 2 +- pkg/@eser/cs/deno.json | 2 +- pkg/@eser/cs/package.json | 2 +- pkg/@eser/di/deno.json | 2 +- pkg/@eser/di/package.json | 2 +- pkg/@eser/events/deno.json | 2 +- pkg/@eser/events/package.json | 2 +- pkg/@eser/fp/deno.json | 2 +- pkg/@eser/fp/package.json | 2 +- pkg/@eser/functions/deno.json | 2 +- pkg/@eser/functions/package.json | 2 +- pkg/@eser/http/deno.json | 2 +- pkg/@eser/http/package.json | 2 +- pkg/@eser/jsx-runtime/deno.json | 2 +- pkg/@eser/jsx-runtime/package.json | 2 +- pkg/@eser/laroux-bundler/deno.json | 2 +- pkg/@eser/laroux-bundler/package.json | 2 +- pkg/@eser/laroux-react/deno.json | 2 +- pkg/@eser/laroux-react/package.json | 2 +- pkg/@eser/laroux-server/deno.json | 2 +- pkg/@eser/laroux-server/package.json | 2 +- pkg/@eser/laroux/deno.json | 2 +- pkg/@eser/laroux/package.json | 2 +- pkg/@eser/logging/deno.json | 2 +- pkg/@eser/logging/package.json | 2 +- pkg/@eser/parsing/deno.json | 2 +- pkg/@eser/parsing/package.json | 2 +- pkg/@eser/primitives/deno.json | 2 +- pkg/@eser/primitives/package.json | 2 +- pkg/@eser/shell/deno.json | 2 +- pkg/@eser/shell/package.json | 2 +- pkg/@eser/standards/deno.json | 2 +- pkg/@eser/standards/package.json | 2 +- pkg/@eser/testing/deno.json | 2 +- pkg/@eser/testing/package.json | 2 +- pkg/@eser/workflows/deno.json | 2 +- pkg/@eser/workflows/package.json | 2 +- pkg/@eser/writer/deno.json | 2 +- pkg/@eser/writer/package.json | 2 +- 60 files changed, 65 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb4e823a9..4449e2614 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 4.1.10 - 2026-03-19 + +### Changed + +- **deps:** bump google.golang.org/grpc from 1.79.2 to 1.79.3 in /apps/services + ## 4.1.9 - 2026-03-18 ### Fixed diff --git a/VERSION b/VERSION index 18837e703..5d30083e9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.1.9 +4.1.10 diff --git a/package.json b/package.json index 42a7b9091..aba31b7ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eser/stack", - "version": "4.1.9", + "version": "4.1.10", "private": true, "type": "module", "workspaces": [ diff --git a/pkg/@cool/cli/package.json b/pkg/@cool/cli/package.json index 9124aa0bc..dd9839fb2 100644 --- a/pkg/@cool/cli/package.json +++ b/pkg/@cool/cli/package.json @@ -1,6 +1,6 @@ { "name": "@cool/cli", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@cool/lime/deno.json b/pkg/@cool/lime/deno.json index ad61cebba..549d94b68 100644 --- a/pkg/@cool/lime/deno.json +++ b/pkg/@cool/lime/deno.json @@ -1,6 +1,6 @@ { "name": "@cool/lime", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts" } diff --git a/pkg/@cool/lime/package.json b/pkg/@cool/lime/package.json index 45440b6c9..5201406e8 100644 --- a/pkg/@cool/lime/package.json +++ b/pkg/@cool/lime/package.json @@ -1,6 +1,6 @@ { "name": "@cool/lime", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/app-runtime/deno.json b/pkg/@eser/app-runtime/deno.json index 4a394e817..5579a8f3f 100644 --- a/pkg/@eser/app-runtime/deno.json +++ b/pkg/@eser/app-runtime/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/app-runtime", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/app-runtime/package.json b/pkg/@eser/app-runtime/package.json index aac1c5f5a..c74606562 100644 --- a/pkg/@eser/app-runtime/package.json +++ b/pkg/@eser/app-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@eser/app-runtime", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/bundler/deno.json b/pkg/@eser/bundler/deno.json index 6836c4a99..d48dcef8a 100644 --- a/pkg/@eser/bundler/deno.json +++ b/pkg/@eser/bundler/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/bundler", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./types": "./types.ts", diff --git a/pkg/@eser/bundler/package.json b/pkg/@eser/bundler/package.json index f172a6a87..58ed5bdd0 100644 --- a/pkg/@eser/bundler/package.json +++ b/pkg/@eser/bundler/package.json @@ -1,6 +1,6 @@ { "name": "@eser/bundler", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/cache/deno.json b/pkg/@eser/cache/deno.json index 00948889d..2ff192a1f 100644 --- a/pkg/@eser/cache/deno.json +++ b/pkg/@eser/cache/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cache", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./xdg": "./xdg.ts" diff --git a/pkg/@eser/cache/package.json b/pkg/@eser/cache/package.json index 6ba78c4e0..b5f0f6f99 100644 --- a/pkg/@eser/cache/package.json +++ b/pkg/@eser/cache/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cache", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/cli/deno.json b/pkg/@eser/cli/deno.json index c85a78873..270d99b95 100644 --- a/pkg/@eser/cli/deno.json +++ b/pkg/@eser/cli/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cli", - "version": "4.1.9", + "version": "4.1.10", "exports": "./main.ts", "imports": { "@std/cli": "jsr:@std/cli@^1.0.25", diff --git a/pkg/@eser/cli/package.json b/pkg/@eser/cli/package.json index 86d266329..07c729eeb 100644 --- a/pkg/@eser/cli/package.json +++ b/pkg/@eser/cli/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cli", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": "./main.ts", "bin": { diff --git a/pkg/@eser/codebase/deno.json b/pkg/@eser/codebase/deno.json index 36c8882a1..518a64ad0 100644 --- a/pkg/@eser/codebase/deno.json +++ b/pkg/@eser/codebase/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/codebase", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./directive-analysis": "./directive-analysis.ts", diff --git a/pkg/@eser/codebase/package.json b/pkg/@eser/codebase/package.json index 538f58f77..dae19caa3 100644 --- a/pkg/@eser/codebase/package.json +++ b/pkg/@eser/codebase/package.json @@ -1,6 +1,6 @@ { "name": "@eser/codebase", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/collector/deno.json b/pkg/@eser/collector/deno.json index 29dafaad1..8590d960a 100644 --- a/pkg/@eser/collector/deno.json +++ b/pkg/@eser/collector/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/collector", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/collector/package.json b/pkg/@eser/collector/package.json index 9daa8ebc6..9fab2e38e 100644 --- a/pkg/@eser/collector/package.json +++ b/pkg/@eser/collector/package.json @@ -1,6 +1,6 @@ { "name": "@eser/collector", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/config/deno.json b/pkg/@eser/config/deno.json index 846cd7e17..119fec45d 100644 --- a/pkg/@eser/config/deno.json +++ b/pkg/@eser/config/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/config", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./file": "./file/mod.ts", diff --git a/pkg/@eser/config/package.json b/pkg/@eser/config/package.json index eee09698f..f1f0031af 100644 --- a/pkg/@eser/config/package.json +++ b/pkg/@eser/config/package.json @@ -1,6 +1,6 @@ { "name": "@eser/config", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/crypto/deno.json b/pkg/@eser/crypto/deno.json index b7398d603..8357c7b5d 100644 --- a/pkg/@eser/crypto/deno.json +++ b/pkg/@eser/crypto/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/crypto", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./hash": "./hash.ts" diff --git a/pkg/@eser/crypto/package.json b/pkg/@eser/crypto/package.json index abb31d939..273633eff 100644 --- a/pkg/@eser/crypto/package.json +++ b/pkg/@eser/crypto/package.json @@ -1,6 +1,6 @@ { "name": "@eser/crypto", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/cs/deno.json b/pkg/@eser/cs/deno.json index 9388f74fc..b9772140d 100644 --- a/pkg/@eser/cs/deno.json +++ b/pkg/@eser/cs/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cs", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./cli": "./cli.ts" diff --git a/pkg/@eser/cs/package.json b/pkg/@eser/cs/package.json index 83e45cecb..abba6a633 100644 --- a/pkg/@eser/cs/package.json +++ b/pkg/@eser/cs/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cs", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/di/deno.json b/pkg/@eser/di/deno.json index 4d09e41a8..2f1ff3a2b 100644 --- a/pkg/@eser/di/deno.json +++ b/pkg/@eser/di/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/di", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./container": "./container.ts", diff --git a/pkg/@eser/di/package.json b/pkg/@eser/di/package.json index 53909ba88..19ec687e5 100644 --- a/pkg/@eser/di/package.json +++ b/pkg/@eser/di/package.json @@ -1,6 +1,6 @@ { "name": "@eser/di", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/events/deno.json b/pkg/@eser/events/deno.json index c30a6eaa6..414522b7c 100644 --- a/pkg/@eser/events/deno.json +++ b/pkg/@eser/events/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/events", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./container": "./container.ts", diff --git a/pkg/@eser/events/package.json b/pkg/@eser/events/package.json index 4f0a2adc2..6bc354d81 100644 --- a/pkg/@eser/events/package.json +++ b/pkg/@eser/events/package.json @@ -1,6 +1,6 @@ { "name": "@eser/events", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/fp/deno.json b/pkg/@eser/fp/deno.json index 858493ce4..aa78f3db7 100644 --- a/pkg/@eser/fp/deno.json +++ b/pkg/@eser/fp/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/fp", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./append-to-array": "./append-to-array.ts", diff --git a/pkg/@eser/fp/package.json b/pkg/@eser/fp/package.json index a8be42845..f87cfd4f0 100644 --- a/pkg/@eser/fp/package.json +++ b/pkg/@eser/fp/package.json @@ -1,6 +1,6 @@ { "name": "@eser/fp", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/functions/deno.json b/pkg/@eser/functions/deno.json index ce9fc8b6f..1214cdb21 100644 --- a/pkg/@eser/functions/deno.json +++ b/pkg/@eser/functions/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/functions", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./handler": "./handler.ts", diff --git a/pkg/@eser/functions/package.json b/pkg/@eser/functions/package.json index 51cb04ee3..6e50742cb 100644 --- a/pkg/@eser/functions/package.json +++ b/pkg/@eser/functions/package.json @@ -1,6 +1,6 @@ { "name": "@eser/functions", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/http/deno.json b/pkg/@eser/http/deno.json index ef9fa9065..0353ec8db 100644 --- a/pkg/@eser/http/deno.json +++ b/pkg/@eser/http/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/http", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./middlewares/cors": "./middlewares/cors.ts", diff --git a/pkg/@eser/http/package.json b/pkg/@eser/http/package.json index 89bdfa7f4..cb29d0db0 100644 --- a/pkg/@eser/http/package.json +++ b/pkg/@eser/http/package.json @@ -1,6 +1,6 @@ { "name": "@eser/http", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/jsx-runtime/deno.json b/pkg/@eser/jsx-runtime/deno.json index 0a882b49a..41f33f3f6 100644 --- a/pkg/@eser/jsx-runtime/deno.json +++ b/pkg/@eser/jsx-runtime/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/jsx-runtime", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./jsx-runtime": "./mod.ts", diff --git a/pkg/@eser/jsx-runtime/package.json b/pkg/@eser/jsx-runtime/package.json index 1cb57f684..23d99212f 100644 --- a/pkg/@eser/jsx-runtime/package.json +++ b/pkg/@eser/jsx-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@eser/jsx-runtime", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/laroux-bundler/deno.json b/pkg/@eser/laroux-bundler/deno.json index f2b82afcb..49acac0c6 100644 --- a/pkg/@eser/laroux-bundler/deno.json +++ b/pkg/@eser/laroux-bundler/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-bundler", - "version": "4.1.9", + "version": "4.1.10", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "@std/fs": "jsr:@std/fs@^1.0.21", diff --git a/pkg/@eser/laroux-bundler/package.json b/pkg/@eser/laroux-bundler/package.json index aca8f9ef1..e96fb81c1 100644 --- a/pkg/@eser/laroux-bundler/package.json +++ b/pkg/@eser/laroux-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-bundler", - "version": "4.1.9", + "version": "4.1.10", "description": "Framework-agnostic bundler for the laroux.js framework with hexagonal architecture", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux-react/deno.json b/pkg/@eser/laroux-react/deno.json index 82423d224..2ce9d850c 100644 --- a/pkg/@eser/laroux-react/deno.json +++ b/pkg/@eser/laroux-react/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-react", - "version": "4.1.9", + "version": "4.1.10", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "react": "npm:react@^19.2.3", diff --git a/pkg/@eser/laroux-react/package.json b/pkg/@eser/laroux-react/package.json index b4e6eab75..8ee453b1a 100644 --- a/pkg/@eser/laroux-react/package.json +++ b/pkg/@eser/laroux-react/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-react", - "version": "4.1.9", + "version": "4.1.10", "description": "React adapter for the laroux.js framework", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux-server/deno.json b/pkg/@eser/laroux-server/deno.json index 7fc46962c..0ff1caf7a 100644 --- a/pkg/@eser/laroux-server/deno.json +++ b/pkg/@eser/laroux-server/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-server", - "version": "4.1.9", + "version": "4.1.10", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "@std/cli": "jsr:@std/cli@^1.0.25", diff --git a/pkg/@eser/laroux-server/package.json b/pkg/@eser/laroux-server/package.json index 813b87378..ea2bc4652 100644 --- a/pkg/@eser/laroux-server/package.json +++ b/pkg/@eser/laroux-server/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-server", - "version": "4.1.9", + "version": "4.1.10", "description": "Server runtime for the laroux.js framework", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux/deno.json b/pkg/@eser/laroux/deno.json index ad9dbd0fb..0939dc0ca 100644 --- a/pkg/@eser/laroux/deno.json +++ b/pkg/@eser/laroux/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./navigation": "./navigation/mod.ts", diff --git a/pkg/@eser/laroux/package.json b/pkg/@eser/laroux/package.json index ddc0b7047..77ef11c68 100644 --- a/pkg/@eser/laroux/package.json +++ b/pkg/@eser/laroux/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux", - "version": "4.1.9", + "version": "4.1.10", "description": "Framework-agnostic core utilities for laroux.js", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/logging/deno.json b/pkg/@eser/logging/deno.json index ab7f4bb06..295ec87f0 100644 --- a/pkg/@eser/logging/deno.json +++ b/pkg/@eser/logging/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/logging", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./logger": "./logger.ts", diff --git a/pkg/@eser/logging/package.json b/pkg/@eser/logging/package.json index 260b96c97..10697a6f8 100644 --- a/pkg/@eser/logging/package.json +++ b/pkg/@eser/logging/package.json @@ -1,6 +1,6 @@ { "name": "@eser/logging", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/parsing/deno.json b/pkg/@eser/parsing/deno.json index c17c35ccd..b4bdc4619 100644 --- a/pkg/@eser/parsing/deno.json +++ b/pkg/@eser/parsing/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/parsing", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/parsing/package.json b/pkg/@eser/parsing/package.json index 507779860..aaa5d41eb 100644 --- a/pkg/@eser/parsing/package.json +++ b/pkg/@eser/parsing/package.json @@ -1,6 +1,6 @@ { "name": "@eser/parsing", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/primitives/deno.json b/pkg/@eser/primitives/deno.json index 204e99a71..3a8903b07 100644 --- a/pkg/@eser/primitives/deno.json +++ b/pkg/@eser/primitives/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/primitives", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./functions": "./functions.ts", diff --git a/pkg/@eser/primitives/package.json b/pkg/@eser/primitives/package.json index 09e8b0abf..edd31065c 100644 --- a/pkg/@eser/primitives/package.json +++ b/pkg/@eser/primitives/package.json @@ -1,6 +1,6 @@ { "name": "@eser/primitives", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/shell/deno.json b/pkg/@eser/shell/deno.json index 82c097f83..8d2098625 100644 --- a/pkg/@eser/shell/deno.json +++ b/pkg/@eser/shell/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/shell", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./completions": "./completions/mod.ts", diff --git a/pkg/@eser/shell/package.json b/pkg/@eser/shell/package.json index 48811f3e2..db8624459 100644 --- a/pkg/@eser/shell/package.json +++ b/pkg/@eser/shell/package.json @@ -1,6 +1,6 @@ { "name": "@eser/shell", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/standards/deno.json b/pkg/@eser/standards/deno.json index 8b4570c7e..4a02efee0 100644 --- a/pkg/@eser/standards/deno.json +++ b/pkg/@eser/standards/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/standards", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./datetimes": "./datetimes/mod.ts", diff --git a/pkg/@eser/standards/package.json b/pkg/@eser/standards/package.json index e82e48733..bfd6c6ef7 100644 --- a/pkg/@eser/standards/package.json +++ b/pkg/@eser/standards/package.json @@ -1,6 +1,6 @@ { "name": "@eser/standards", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/testing/deno.json b/pkg/@eser/testing/deno.json index 5d12d8157..de8f88cf9 100644 --- a/pkg/@eser/testing/deno.json +++ b/pkg/@eser/testing/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/testing", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./fake-server": "./fake-server.ts", diff --git a/pkg/@eser/testing/package.json b/pkg/@eser/testing/package.json index 635a7edc9..eabbf5235 100644 --- a/pkg/@eser/testing/package.json +++ b/pkg/@eser/testing/package.json @@ -1,6 +1,6 @@ { "name": "@eser/testing", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/workflows/deno.json b/pkg/@eser/workflows/deno.json index 9127bf464..758f1beb8 100644 --- a/pkg/@eser/workflows/deno.json +++ b/pkg/@eser/workflows/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/workflows", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts", "./list": "./list.ts", diff --git a/pkg/@eser/workflows/package.json b/pkg/@eser/workflows/package.json index 4890714e2..5cf963b1f 100644 --- a/pkg/@eser/workflows/package.json +++ b/pkg/@eser/workflows/package.json @@ -1,6 +1,6 @@ { "name": "@eser/workflows", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/writer/deno.json b/pkg/@eser/writer/deno.json index 0666da205..4c36aeaf2 100644 --- a/pkg/@eser/writer/deno.json +++ b/pkg/@eser/writer/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/writer", - "version": "4.1.9", + "version": "4.1.10", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/writer/package.json b/pkg/@eser/writer/package.json index 1bc3e8c24..566c95fd9 100644 --- a/pkg/@eser/writer/package.json +++ b/pkg/@eser/writer/package.json @@ -1,6 +1,6 @@ { "name": "@eser/writer", - "version": "4.1.9", + "version": "4.1.10", "type": "module", "exports": { ".": "./mod.ts" From 67f3bbaca8cfe7617b809ae2b73cac78136bec71 Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Thu, 19 Mar 2026 19:00:20 +0300 Subject: [PATCH 003/233] fix(ci): add checkout step to upload-assets job. --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 743fc4054..6fcd9167b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -244,6 +244,9 @@ jobs: id-token: write steps: + - name: Checkout repository + uses: actions/checkout@v6 + - name: Download binary bundle uses: actions/download-artifact@v8 with: From 6c45084299986db876e44d9f173351d475cc53f4 Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Thu, 19 Mar 2026 19:01:15 +0300 Subject: [PATCH 004/233] chore(codebase): release v4.1.11 --- CHANGELOG.md | 6 ++++++ VERSION | 2 +- package.json | 2 +- pkg/@cool/cli/package.json | 2 +- pkg/@cool/lime/deno.json | 2 +- pkg/@cool/lime/package.json | 2 +- pkg/@eser/app-runtime/deno.json | 2 +- pkg/@eser/app-runtime/package.json | 2 +- pkg/@eser/bundler/deno.json | 2 +- pkg/@eser/bundler/package.json | 2 +- pkg/@eser/cache/deno.json | 2 +- pkg/@eser/cache/package.json | 2 +- pkg/@eser/cli/deno.json | 2 +- pkg/@eser/cli/package.json | 2 +- pkg/@eser/codebase/deno.json | 2 +- pkg/@eser/codebase/package.json | 2 +- pkg/@eser/collector/deno.json | 2 +- pkg/@eser/collector/package.json | 2 +- pkg/@eser/config/deno.json | 2 +- pkg/@eser/config/package.json | 2 +- pkg/@eser/crypto/deno.json | 2 +- pkg/@eser/crypto/package.json | 2 +- pkg/@eser/cs/deno.json | 2 +- pkg/@eser/cs/package.json | 2 +- pkg/@eser/di/deno.json | 2 +- pkg/@eser/di/package.json | 2 +- pkg/@eser/events/deno.json | 2 +- pkg/@eser/events/package.json | 2 +- pkg/@eser/fp/deno.json | 2 +- pkg/@eser/fp/package.json | 2 +- pkg/@eser/functions/deno.json | 2 +- pkg/@eser/functions/package.json | 2 +- pkg/@eser/http/deno.json | 2 +- pkg/@eser/http/package.json | 2 +- pkg/@eser/jsx-runtime/deno.json | 2 +- pkg/@eser/jsx-runtime/package.json | 2 +- pkg/@eser/laroux-bundler/deno.json | 2 +- pkg/@eser/laroux-bundler/package.json | 2 +- pkg/@eser/laroux-react/deno.json | 2 +- pkg/@eser/laroux-react/package.json | 2 +- pkg/@eser/laroux-server/deno.json | 2 +- pkg/@eser/laroux-server/package.json | 2 +- pkg/@eser/laroux/deno.json | 2 +- pkg/@eser/laroux/package.json | 2 +- pkg/@eser/logging/deno.json | 2 +- pkg/@eser/logging/package.json | 2 +- pkg/@eser/parsing/deno.json | 2 +- pkg/@eser/parsing/package.json | 2 +- pkg/@eser/primitives/deno.json | 2 +- pkg/@eser/primitives/package.json | 2 +- pkg/@eser/shell/deno.json | 2 +- pkg/@eser/shell/package.json | 2 +- pkg/@eser/standards/deno.json | 2 +- pkg/@eser/standards/package.json | 2 +- pkg/@eser/testing/deno.json | 2 +- pkg/@eser/testing/package.json | 2 +- pkg/@eser/workflows/deno.json | 2 +- pkg/@eser/workflows/package.json | 2 +- pkg/@eser/writer/deno.json | 2 +- pkg/@eser/writer/package.json | 2 +- 60 files changed, 65 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4449e2614..212d4714f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 4.1.11 - 2026-03-19 + +### Fixed + +- **ci:** add checkout step to upload-assets job. + ## 4.1.10 - 2026-03-19 ### Changed diff --git a/VERSION b/VERSION index 5d30083e9..152e4522c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.1.10 +4.1.11 diff --git a/package.json b/package.json index aba31b7ad..2f3366455 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eser/stack", - "version": "4.1.10", + "version": "4.1.11", "private": true, "type": "module", "workspaces": [ diff --git a/pkg/@cool/cli/package.json b/pkg/@cool/cli/package.json index dd9839fb2..cc52f7f06 100644 --- a/pkg/@cool/cli/package.json +++ b/pkg/@cool/cli/package.json @@ -1,6 +1,6 @@ { "name": "@cool/cli", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@cool/lime/deno.json b/pkg/@cool/lime/deno.json index 549d94b68..b4649fd11 100644 --- a/pkg/@cool/lime/deno.json +++ b/pkg/@cool/lime/deno.json @@ -1,6 +1,6 @@ { "name": "@cool/lime", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts" } diff --git a/pkg/@cool/lime/package.json b/pkg/@cool/lime/package.json index 5201406e8..f76cea33c 100644 --- a/pkg/@cool/lime/package.json +++ b/pkg/@cool/lime/package.json @@ -1,6 +1,6 @@ { "name": "@cool/lime", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/app-runtime/deno.json b/pkg/@eser/app-runtime/deno.json index 5579a8f3f..de44871b6 100644 --- a/pkg/@eser/app-runtime/deno.json +++ b/pkg/@eser/app-runtime/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/app-runtime", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/app-runtime/package.json b/pkg/@eser/app-runtime/package.json index c74606562..ef09e926d 100644 --- a/pkg/@eser/app-runtime/package.json +++ b/pkg/@eser/app-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@eser/app-runtime", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/bundler/deno.json b/pkg/@eser/bundler/deno.json index d48dcef8a..5bc655017 100644 --- a/pkg/@eser/bundler/deno.json +++ b/pkg/@eser/bundler/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/bundler", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./types": "./types.ts", diff --git a/pkg/@eser/bundler/package.json b/pkg/@eser/bundler/package.json index 58ed5bdd0..dd2c21aa9 100644 --- a/pkg/@eser/bundler/package.json +++ b/pkg/@eser/bundler/package.json @@ -1,6 +1,6 @@ { "name": "@eser/bundler", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/cache/deno.json b/pkg/@eser/cache/deno.json index 2ff192a1f..0e69c4e7c 100644 --- a/pkg/@eser/cache/deno.json +++ b/pkg/@eser/cache/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cache", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./xdg": "./xdg.ts" diff --git a/pkg/@eser/cache/package.json b/pkg/@eser/cache/package.json index b5f0f6f99..660757146 100644 --- a/pkg/@eser/cache/package.json +++ b/pkg/@eser/cache/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cache", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/cli/deno.json b/pkg/@eser/cli/deno.json index 270d99b95..c8b107897 100644 --- a/pkg/@eser/cli/deno.json +++ b/pkg/@eser/cli/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cli", - "version": "4.1.10", + "version": "4.1.11", "exports": "./main.ts", "imports": { "@std/cli": "jsr:@std/cli@^1.0.25", diff --git a/pkg/@eser/cli/package.json b/pkg/@eser/cli/package.json index 07c729eeb..31a70af8c 100644 --- a/pkg/@eser/cli/package.json +++ b/pkg/@eser/cli/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cli", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": "./main.ts", "bin": { diff --git a/pkg/@eser/codebase/deno.json b/pkg/@eser/codebase/deno.json index 518a64ad0..1e5cc078b 100644 --- a/pkg/@eser/codebase/deno.json +++ b/pkg/@eser/codebase/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/codebase", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./directive-analysis": "./directive-analysis.ts", diff --git a/pkg/@eser/codebase/package.json b/pkg/@eser/codebase/package.json index dae19caa3..00e32f783 100644 --- a/pkg/@eser/codebase/package.json +++ b/pkg/@eser/codebase/package.json @@ -1,6 +1,6 @@ { "name": "@eser/codebase", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/collector/deno.json b/pkg/@eser/collector/deno.json index 8590d960a..4bcf865a0 100644 --- a/pkg/@eser/collector/deno.json +++ b/pkg/@eser/collector/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/collector", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/collector/package.json b/pkg/@eser/collector/package.json index 9fab2e38e..510a08e53 100644 --- a/pkg/@eser/collector/package.json +++ b/pkg/@eser/collector/package.json @@ -1,6 +1,6 @@ { "name": "@eser/collector", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/config/deno.json b/pkg/@eser/config/deno.json index 119fec45d..df263ce1c 100644 --- a/pkg/@eser/config/deno.json +++ b/pkg/@eser/config/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/config", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./file": "./file/mod.ts", diff --git a/pkg/@eser/config/package.json b/pkg/@eser/config/package.json index f1f0031af..b18860277 100644 --- a/pkg/@eser/config/package.json +++ b/pkg/@eser/config/package.json @@ -1,6 +1,6 @@ { "name": "@eser/config", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/crypto/deno.json b/pkg/@eser/crypto/deno.json index 8357c7b5d..192e63471 100644 --- a/pkg/@eser/crypto/deno.json +++ b/pkg/@eser/crypto/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/crypto", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./hash": "./hash.ts" diff --git a/pkg/@eser/crypto/package.json b/pkg/@eser/crypto/package.json index 273633eff..faa92e453 100644 --- a/pkg/@eser/crypto/package.json +++ b/pkg/@eser/crypto/package.json @@ -1,6 +1,6 @@ { "name": "@eser/crypto", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/cs/deno.json b/pkg/@eser/cs/deno.json index b9772140d..a74f5d6d9 100644 --- a/pkg/@eser/cs/deno.json +++ b/pkg/@eser/cs/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cs", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./cli": "./cli.ts" diff --git a/pkg/@eser/cs/package.json b/pkg/@eser/cs/package.json index abba6a633..cc84cf2ab 100644 --- a/pkg/@eser/cs/package.json +++ b/pkg/@eser/cs/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cs", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/di/deno.json b/pkg/@eser/di/deno.json index 2f1ff3a2b..3b555b061 100644 --- a/pkg/@eser/di/deno.json +++ b/pkg/@eser/di/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/di", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./container": "./container.ts", diff --git a/pkg/@eser/di/package.json b/pkg/@eser/di/package.json index 19ec687e5..de94e4a0e 100644 --- a/pkg/@eser/di/package.json +++ b/pkg/@eser/di/package.json @@ -1,6 +1,6 @@ { "name": "@eser/di", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/events/deno.json b/pkg/@eser/events/deno.json index 414522b7c..ff7396c93 100644 --- a/pkg/@eser/events/deno.json +++ b/pkg/@eser/events/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/events", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./container": "./container.ts", diff --git a/pkg/@eser/events/package.json b/pkg/@eser/events/package.json index 6bc354d81..3c1e6c63b 100644 --- a/pkg/@eser/events/package.json +++ b/pkg/@eser/events/package.json @@ -1,6 +1,6 @@ { "name": "@eser/events", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/fp/deno.json b/pkg/@eser/fp/deno.json index aa78f3db7..03afe4162 100644 --- a/pkg/@eser/fp/deno.json +++ b/pkg/@eser/fp/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/fp", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./append-to-array": "./append-to-array.ts", diff --git a/pkg/@eser/fp/package.json b/pkg/@eser/fp/package.json index f87cfd4f0..3e6e53084 100644 --- a/pkg/@eser/fp/package.json +++ b/pkg/@eser/fp/package.json @@ -1,6 +1,6 @@ { "name": "@eser/fp", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/functions/deno.json b/pkg/@eser/functions/deno.json index 1214cdb21..0c61c413e 100644 --- a/pkg/@eser/functions/deno.json +++ b/pkg/@eser/functions/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/functions", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./handler": "./handler.ts", diff --git a/pkg/@eser/functions/package.json b/pkg/@eser/functions/package.json index 6e50742cb..781686d26 100644 --- a/pkg/@eser/functions/package.json +++ b/pkg/@eser/functions/package.json @@ -1,6 +1,6 @@ { "name": "@eser/functions", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/http/deno.json b/pkg/@eser/http/deno.json index 0353ec8db..68c4ca033 100644 --- a/pkg/@eser/http/deno.json +++ b/pkg/@eser/http/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/http", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./middlewares/cors": "./middlewares/cors.ts", diff --git a/pkg/@eser/http/package.json b/pkg/@eser/http/package.json index cb29d0db0..816edbe1f 100644 --- a/pkg/@eser/http/package.json +++ b/pkg/@eser/http/package.json @@ -1,6 +1,6 @@ { "name": "@eser/http", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/jsx-runtime/deno.json b/pkg/@eser/jsx-runtime/deno.json index 41f33f3f6..510f20ea5 100644 --- a/pkg/@eser/jsx-runtime/deno.json +++ b/pkg/@eser/jsx-runtime/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/jsx-runtime", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./jsx-runtime": "./mod.ts", diff --git a/pkg/@eser/jsx-runtime/package.json b/pkg/@eser/jsx-runtime/package.json index 23d99212f..039bb26b6 100644 --- a/pkg/@eser/jsx-runtime/package.json +++ b/pkg/@eser/jsx-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@eser/jsx-runtime", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/laroux-bundler/deno.json b/pkg/@eser/laroux-bundler/deno.json index 49acac0c6..d1f46adcf 100644 --- a/pkg/@eser/laroux-bundler/deno.json +++ b/pkg/@eser/laroux-bundler/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-bundler", - "version": "4.1.10", + "version": "4.1.11", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "@std/fs": "jsr:@std/fs@^1.0.21", diff --git a/pkg/@eser/laroux-bundler/package.json b/pkg/@eser/laroux-bundler/package.json index e96fb81c1..075f24d43 100644 --- a/pkg/@eser/laroux-bundler/package.json +++ b/pkg/@eser/laroux-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-bundler", - "version": "4.1.10", + "version": "4.1.11", "description": "Framework-agnostic bundler for the laroux.js framework with hexagonal architecture", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux-react/deno.json b/pkg/@eser/laroux-react/deno.json index 2ce9d850c..02aa83410 100644 --- a/pkg/@eser/laroux-react/deno.json +++ b/pkg/@eser/laroux-react/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-react", - "version": "4.1.10", + "version": "4.1.11", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "react": "npm:react@^19.2.3", diff --git a/pkg/@eser/laroux-react/package.json b/pkg/@eser/laroux-react/package.json index 8ee453b1a..2cde6da72 100644 --- a/pkg/@eser/laroux-react/package.json +++ b/pkg/@eser/laroux-react/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-react", - "version": "4.1.10", + "version": "4.1.11", "description": "React adapter for the laroux.js framework", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux-server/deno.json b/pkg/@eser/laroux-server/deno.json index 0ff1caf7a..691ab9906 100644 --- a/pkg/@eser/laroux-server/deno.json +++ b/pkg/@eser/laroux-server/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-server", - "version": "4.1.10", + "version": "4.1.11", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "@std/cli": "jsr:@std/cli@^1.0.25", diff --git a/pkg/@eser/laroux-server/package.json b/pkg/@eser/laroux-server/package.json index ea2bc4652..a87ab5e24 100644 --- a/pkg/@eser/laroux-server/package.json +++ b/pkg/@eser/laroux-server/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-server", - "version": "4.1.10", + "version": "4.1.11", "description": "Server runtime for the laroux.js framework", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux/deno.json b/pkg/@eser/laroux/deno.json index 0939dc0ca..8b0b50b94 100644 --- a/pkg/@eser/laroux/deno.json +++ b/pkg/@eser/laroux/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./navigation": "./navigation/mod.ts", diff --git a/pkg/@eser/laroux/package.json b/pkg/@eser/laroux/package.json index 77ef11c68..b4d3a8d88 100644 --- a/pkg/@eser/laroux/package.json +++ b/pkg/@eser/laroux/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux", - "version": "4.1.10", + "version": "4.1.11", "description": "Framework-agnostic core utilities for laroux.js", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/logging/deno.json b/pkg/@eser/logging/deno.json index 295ec87f0..00935dbaa 100644 --- a/pkg/@eser/logging/deno.json +++ b/pkg/@eser/logging/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/logging", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./logger": "./logger.ts", diff --git a/pkg/@eser/logging/package.json b/pkg/@eser/logging/package.json index 10697a6f8..f46609466 100644 --- a/pkg/@eser/logging/package.json +++ b/pkg/@eser/logging/package.json @@ -1,6 +1,6 @@ { "name": "@eser/logging", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/parsing/deno.json b/pkg/@eser/parsing/deno.json index b4bdc4619..6a8eb051b 100644 --- a/pkg/@eser/parsing/deno.json +++ b/pkg/@eser/parsing/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/parsing", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/parsing/package.json b/pkg/@eser/parsing/package.json index aaa5d41eb..34054d4fd 100644 --- a/pkg/@eser/parsing/package.json +++ b/pkg/@eser/parsing/package.json @@ -1,6 +1,6 @@ { "name": "@eser/parsing", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/primitives/deno.json b/pkg/@eser/primitives/deno.json index 3a8903b07..be12af553 100644 --- a/pkg/@eser/primitives/deno.json +++ b/pkg/@eser/primitives/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/primitives", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./functions": "./functions.ts", diff --git a/pkg/@eser/primitives/package.json b/pkg/@eser/primitives/package.json index edd31065c..35198106d 100644 --- a/pkg/@eser/primitives/package.json +++ b/pkg/@eser/primitives/package.json @@ -1,6 +1,6 @@ { "name": "@eser/primitives", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/shell/deno.json b/pkg/@eser/shell/deno.json index 8d2098625..86caf62f1 100644 --- a/pkg/@eser/shell/deno.json +++ b/pkg/@eser/shell/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/shell", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./completions": "./completions/mod.ts", diff --git a/pkg/@eser/shell/package.json b/pkg/@eser/shell/package.json index db8624459..db47410e8 100644 --- a/pkg/@eser/shell/package.json +++ b/pkg/@eser/shell/package.json @@ -1,6 +1,6 @@ { "name": "@eser/shell", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/standards/deno.json b/pkg/@eser/standards/deno.json index 4a02efee0..0986931a3 100644 --- a/pkg/@eser/standards/deno.json +++ b/pkg/@eser/standards/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/standards", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./datetimes": "./datetimes/mod.ts", diff --git a/pkg/@eser/standards/package.json b/pkg/@eser/standards/package.json index bfd6c6ef7..4920dffd6 100644 --- a/pkg/@eser/standards/package.json +++ b/pkg/@eser/standards/package.json @@ -1,6 +1,6 @@ { "name": "@eser/standards", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/testing/deno.json b/pkg/@eser/testing/deno.json index de8f88cf9..095141264 100644 --- a/pkg/@eser/testing/deno.json +++ b/pkg/@eser/testing/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/testing", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./fake-server": "./fake-server.ts", diff --git a/pkg/@eser/testing/package.json b/pkg/@eser/testing/package.json index eabbf5235..2f68f151a 100644 --- a/pkg/@eser/testing/package.json +++ b/pkg/@eser/testing/package.json @@ -1,6 +1,6 @@ { "name": "@eser/testing", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/workflows/deno.json b/pkg/@eser/workflows/deno.json index 758f1beb8..faa6e81e3 100644 --- a/pkg/@eser/workflows/deno.json +++ b/pkg/@eser/workflows/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/workflows", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts", "./list": "./list.ts", diff --git a/pkg/@eser/workflows/package.json b/pkg/@eser/workflows/package.json index 5cf963b1f..3eafbe5b5 100644 --- a/pkg/@eser/workflows/package.json +++ b/pkg/@eser/workflows/package.json @@ -1,6 +1,6 @@ { "name": "@eser/workflows", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/writer/deno.json b/pkg/@eser/writer/deno.json index 4c36aeaf2..42d6ec870 100644 --- a/pkg/@eser/writer/deno.json +++ b/pkg/@eser/writer/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/writer", - "version": "4.1.10", + "version": "4.1.11", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/writer/package.json b/pkg/@eser/writer/package.json index 566c95fd9..bda281079 100644 --- a/pkg/@eser/writer/package.json +++ b/pkg/@eser/writer/package.json @@ -1,6 +1,6 @@ { "name": "@eser/writer", - "version": "4.1.10", + "version": "4.1.11", "type": "module", "exports": { ".": "./mod.ts" From 3f766312dd3ae41477fc50b501489bbd199ae29d Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Thu, 19 Mar 2026 19:57:36 +0300 Subject: [PATCH 005/233] fix(ci): skip homebrew/nix jobs when app credentials not configured. --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6fcd9167b..bb8a34a2e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -288,6 +288,7 @@ jobs: update-homebrew: name: Update Homebrew Tap needs: upload-assets + if: secrets.ESER_APP_ID != '' runs-on: ubuntu-latest timeout-minutes: 5 @@ -319,6 +320,7 @@ jobs: update-nix-hashes: name: Update Nix Hashes needs: upload-assets + if: secrets.ESER_APP_ID != '' runs-on: ubuntu-latest timeout-minutes: 5 From 2750d314d8019e7a007cce130f1f77668aa91d25 Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Thu, 19 Mar 2026 22:52:00 +0300 Subject: [PATCH 006/233] fix(ci): allow homebrew/nix update jobs to fail when app credentials missing. --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bb8a34a2e..0415ed43e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -288,9 +288,9 @@ jobs: update-homebrew: name: Update Homebrew Tap needs: upload-assets - if: secrets.ESER_APP_ID != '' runs-on: ubuntu-latest timeout-minutes: 5 + continue-on-error: true permissions: contents: read @@ -320,9 +320,9 @@ jobs: update-nix-hashes: name: Update Nix Hashes needs: upload-assets - if: secrets.ESER_APP_ID != '' runs-on: ubuntu-latest timeout-minutes: 5 + continue-on-error: true permissions: contents: read From 2f81e30e57cdb9395fe21697930538752e66c97f Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Fri, 20 Mar 2026 02:37:23 +0300 Subject: [PATCH 007/233] chore(codebase): release v4.1.12 --- CHANGELOG.md | 7 +++++++ VERSION | 2 +- package.json | 2 +- pkg/@cool/cli/package.json | 2 +- pkg/@cool/lime/deno.json | 2 +- pkg/@cool/lime/package.json | 2 +- pkg/@eser/app-runtime/deno.json | 2 +- pkg/@eser/app-runtime/package.json | 2 +- pkg/@eser/bundler/deno.json | 2 +- pkg/@eser/bundler/package.json | 2 +- pkg/@eser/cache/deno.json | 2 +- pkg/@eser/cache/package.json | 2 +- pkg/@eser/cli/deno.json | 2 +- pkg/@eser/cli/package.json | 2 +- pkg/@eser/codebase/deno.json | 2 +- pkg/@eser/codebase/package.json | 2 +- pkg/@eser/collector/deno.json | 2 +- pkg/@eser/collector/package.json | 2 +- pkg/@eser/config/deno.json | 2 +- pkg/@eser/config/package.json | 2 +- pkg/@eser/crypto/deno.json | 2 +- pkg/@eser/crypto/package.json | 2 +- pkg/@eser/cs/deno.json | 2 +- pkg/@eser/cs/package.json | 2 +- pkg/@eser/di/deno.json | 2 +- pkg/@eser/di/package.json | 2 +- pkg/@eser/events/deno.json | 2 +- pkg/@eser/events/package.json | 2 +- pkg/@eser/fp/deno.json | 2 +- pkg/@eser/fp/package.json | 2 +- pkg/@eser/functions/deno.json | 2 +- pkg/@eser/functions/package.json | 2 +- pkg/@eser/http/deno.json | 2 +- pkg/@eser/http/package.json | 2 +- pkg/@eser/jsx-runtime/deno.json | 2 +- pkg/@eser/jsx-runtime/package.json | 2 +- pkg/@eser/laroux-bundler/deno.json | 2 +- pkg/@eser/laroux-bundler/package.json | 2 +- pkg/@eser/laroux-react/deno.json | 2 +- pkg/@eser/laroux-react/package.json | 2 +- pkg/@eser/laroux-server/deno.json | 2 +- pkg/@eser/laroux-server/package.json | 2 +- pkg/@eser/laroux/deno.json | 2 +- pkg/@eser/laroux/package.json | 2 +- pkg/@eser/logging/deno.json | 2 +- pkg/@eser/logging/package.json | 2 +- pkg/@eser/parsing/deno.json | 2 +- pkg/@eser/parsing/package.json | 2 +- pkg/@eser/primitives/deno.json | 2 +- pkg/@eser/primitives/package.json | 2 +- pkg/@eser/shell/deno.json | 2 +- pkg/@eser/shell/package.json | 2 +- pkg/@eser/standards/deno.json | 2 +- pkg/@eser/standards/package.json | 2 +- pkg/@eser/testing/deno.json | 2 +- pkg/@eser/testing/package.json | 2 +- pkg/@eser/workflows/deno.json | 2 +- pkg/@eser/workflows/package.json | 2 +- pkg/@eser/writer/deno.json | 2 +- pkg/@eser/writer/package.json | 2 +- 60 files changed, 66 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 212d4714f..268a4d585 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 4.1.12 - 2026-03-19 + +### Fixed + +- **ci:** allow homebrew/nix update jobs to fail when app credentials missing. +- **ci:** skip homebrew/nix jobs when app credentials not configured. + ## 4.1.11 - 2026-03-19 ### Fixed diff --git a/VERSION b/VERSION index 152e4522c..b05079e54 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.1.11 +4.1.12 diff --git a/package.json b/package.json index 2f3366455..7fd69c724 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eser/stack", - "version": "4.1.11", + "version": "4.1.12", "private": true, "type": "module", "workspaces": [ diff --git a/pkg/@cool/cli/package.json b/pkg/@cool/cli/package.json index cc52f7f06..9727f3864 100644 --- a/pkg/@cool/cli/package.json +++ b/pkg/@cool/cli/package.json @@ -1,6 +1,6 @@ { "name": "@cool/cli", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@cool/lime/deno.json b/pkg/@cool/lime/deno.json index b4649fd11..aca327fda 100644 --- a/pkg/@cool/lime/deno.json +++ b/pkg/@cool/lime/deno.json @@ -1,6 +1,6 @@ { "name": "@cool/lime", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts" } diff --git a/pkg/@cool/lime/package.json b/pkg/@cool/lime/package.json index f76cea33c..798153d87 100644 --- a/pkg/@cool/lime/package.json +++ b/pkg/@cool/lime/package.json @@ -1,6 +1,6 @@ { "name": "@cool/lime", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/app-runtime/deno.json b/pkg/@eser/app-runtime/deno.json index de44871b6..1db65cd9c 100644 --- a/pkg/@eser/app-runtime/deno.json +++ b/pkg/@eser/app-runtime/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/app-runtime", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/app-runtime/package.json b/pkg/@eser/app-runtime/package.json index ef09e926d..746295261 100644 --- a/pkg/@eser/app-runtime/package.json +++ b/pkg/@eser/app-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@eser/app-runtime", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/bundler/deno.json b/pkg/@eser/bundler/deno.json index 5bc655017..5175efa4e 100644 --- a/pkg/@eser/bundler/deno.json +++ b/pkg/@eser/bundler/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/bundler", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./types": "./types.ts", diff --git a/pkg/@eser/bundler/package.json b/pkg/@eser/bundler/package.json index dd2c21aa9..7686cc99b 100644 --- a/pkg/@eser/bundler/package.json +++ b/pkg/@eser/bundler/package.json @@ -1,6 +1,6 @@ { "name": "@eser/bundler", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/cache/deno.json b/pkg/@eser/cache/deno.json index 0e69c4e7c..5a7e7ed56 100644 --- a/pkg/@eser/cache/deno.json +++ b/pkg/@eser/cache/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cache", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./xdg": "./xdg.ts" diff --git a/pkg/@eser/cache/package.json b/pkg/@eser/cache/package.json index 660757146..4c10bbab3 100644 --- a/pkg/@eser/cache/package.json +++ b/pkg/@eser/cache/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cache", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/cli/deno.json b/pkg/@eser/cli/deno.json index c8b107897..487fe3ade 100644 --- a/pkg/@eser/cli/deno.json +++ b/pkg/@eser/cli/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cli", - "version": "4.1.11", + "version": "4.1.12", "exports": "./main.ts", "imports": { "@std/cli": "jsr:@std/cli@^1.0.25", diff --git a/pkg/@eser/cli/package.json b/pkg/@eser/cli/package.json index 31a70af8c..9130a9e80 100644 --- a/pkg/@eser/cli/package.json +++ b/pkg/@eser/cli/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cli", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": "./main.ts", "bin": { diff --git a/pkg/@eser/codebase/deno.json b/pkg/@eser/codebase/deno.json index 1e5cc078b..f4c2fb937 100644 --- a/pkg/@eser/codebase/deno.json +++ b/pkg/@eser/codebase/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/codebase", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./directive-analysis": "./directive-analysis.ts", diff --git a/pkg/@eser/codebase/package.json b/pkg/@eser/codebase/package.json index 00e32f783..6e7f11c29 100644 --- a/pkg/@eser/codebase/package.json +++ b/pkg/@eser/codebase/package.json @@ -1,6 +1,6 @@ { "name": "@eser/codebase", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/collector/deno.json b/pkg/@eser/collector/deno.json index 4bcf865a0..cf25aaa51 100644 --- a/pkg/@eser/collector/deno.json +++ b/pkg/@eser/collector/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/collector", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/collector/package.json b/pkg/@eser/collector/package.json index 510a08e53..a54d1227d 100644 --- a/pkg/@eser/collector/package.json +++ b/pkg/@eser/collector/package.json @@ -1,6 +1,6 @@ { "name": "@eser/collector", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/config/deno.json b/pkg/@eser/config/deno.json index df263ce1c..e82c75d43 100644 --- a/pkg/@eser/config/deno.json +++ b/pkg/@eser/config/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/config", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./file": "./file/mod.ts", diff --git a/pkg/@eser/config/package.json b/pkg/@eser/config/package.json index b18860277..c3a65172f 100644 --- a/pkg/@eser/config/package.json +++ b/pkg/@eser/config/package.json @@ -1,6 +1,6 @@ { "name": "@eser/config", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/crypto/deno.json b/pkg/@eser/crypto/deno.json index 192e63471..bbabfb948 100644 --- a/pkg/@eser/crypto/deno.json +++ b/pkg/@eser/crypto/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/crypto", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./hash": "./hash.ts" diff --git a/pkg/@eser/crypto/package.json b/pkg/@eser/crypto/package.json index faa92e453..510bca304 100644 --- a/pkg/@eser/crypto/package.json +++ b/pkg/@eser/crypto/package.json @@ -1,6 +1,6 @@ { "name": "@eser/crypto", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/cs/deno.json b/pkg/@eser/cs/deno.json index a74f5d6d9..6ab8d2165 100644 --- a/pkg/@eser/cs/deno.json +++ b/pkg/@eser/cs/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/cs", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./cli": "./cli.ts" diff --git a/pkg/@eser/cs/package.json b/pkg/@eser/cs/package.json index cc84cf2ab..9cb0f6579 100644 --- a/pkg/@eser/cs/package.json +++ b/pkg/@eser/cs/package.json @@ -1,6 +1,6 @@ { "name": "@eser/cs", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/di/deno.json b/pkg/@eser/di/deno.json index 3b555b061..628bfaa4d 100644 --- a/pkg/@eser/di/deno.json +++ b/pkg/@eser/di/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/di", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./container": "./container.ts", diff --git a/pkg/@eser/di/package.json b/pkg/@eser/di/package.json index de94e4a0e..3fc67f8bb 100644 --- a/pkg/@eser/di/package.json +++ b/pkg/@eser/di/package.json @@ -1,6 +1,6 @@ { "name": "@eser/di", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/events/deno.json b/pkg/@eser/events/deno.json index ff7396c93..ad771d696 100644 --- a/pkg/@eser/events/deno.json +++ b/pkg/@eser/events/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/events", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./container": "./container.ts", diff --git a/pkg/@eser/events/package.json b/pkg/@eser/events/package.json index 3c1e6c63b..423c32b58 100644 --- a/pkg/@eser/events/package.json +++ b/pkg/@eser/events/package.json @@ -1,6 +1,6 @@ { "name": "@eser/events", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/fp/deno.json b/pkg/@eser/fp/deno.json index 03afe4162..dcf2cdb03 100644 --- a/pkg/@eser/fp/deno.json +++ b/pkg/@eser/fp/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/fp", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./append-to-array": "./append-to-array.ts", diff --git a/pkg/@eser/fp/package.json b/pkg/@eser/fp/package.json index 3e6e53084..d9508f618 100644 --- a/pkg/@eser/fp/package.json +++ b/pkg/@eser/fp/package.json @@ -1,6 +1,6 @@ { "name": "@eser/fp", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/functions/deno.json b/pkg/@eser/functions/deno.json index 0c61c413e..e6e7f51e7 100644 --- a/pkg/@eser/functions/deno.json +++ b/pkg/@eser/functions/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/functions", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./handler": "./handler.ts", diff --git a/pkg/@eser/functions/package.json b/pkg/@eser/functions/package.json index 781686d26..93fee223a 100644 --- a/pkg/@eser/functions/package.json +++ b/pkg/@eser/functions/package.json @@ -1,6 +1,6 @@ { "name": "@eser/functions", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/http/deno.json b/pkg/@eser/http/deno.json index 68c4ca033..929317f58 100644 --- a/pkg/@eser/http/deno.json +++ b/pkg/@eser/http/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/http", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./middlewares/cors": "./middlewares/cors.ts", diff --git a/pkg/@eser/http/package.json b/pkg/@eser/http/package.json index 816edbe1f..f2cc5616f 100644 --- a/pkg/@eser/http/package.json +++ b/pkg/@eser/http/package.json @@ -1,6 +1,6 @@ { "name": "@eser/http", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/jsx-runtime/deno.json b/pkg/@eser/jsx-runtime/deno.json index 510f20ea5..6f7f09c09 100644 --- a/pkg/@eser/jsx-runtime/deno.json +++ b/pkg/@eser/jsx-runtime/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/jsx-runtime", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./jsx-runtime": "./mod.ts", diff --git a/pkg/@eser/jsx-runtime/package.json b/pkg/@eser/jsx-runtime/package.json index 039bb26b6..2cbe8291d 100644 --- a/pkg/@eser/jsx-runtime/package.json +++ b/pkg/@eser/jsx-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@eser/jsx-runtime", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/laroux-bundler/deno.json b/pkg/@eser/laroux-bundler/deno.json index d1f46adcf..3461d46a3 100644 --- a/pkg/@eser/laroux-bundler/deno.json +++ b/pkg/@eser/laroux-bundler/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-bundler", - "version": "4.1.11", + "version": "4.1.12", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "@std/fs": "jsr:@std/fs@^1.0.21", diff --git a/pkg/@eser/laroux-bundler/package.json b/pkg/@eser/laroux-bundler/package.json index 075f24d43..8db7015a2 100644 --- a/pkg/@eser/laroux-bundler/package.json +++ b/pkg/@eser/laroux-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-bundler", - "version": "4.1.11", + "version": "4.1.12", "description": "Framework-agnostic bundler for the laroux.js framework with hexagonal architecture", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux-react/deno.json b/pkg/@eser/laroux-react/deno.json index 02aa83410..4d28ba16f 100644 --- a/pkg/@eser/laroux-react/deno.json +++ b/pkg/@eser/laroux-react/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-react", - "version": "4.1.11", + "version": "4.1.12", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "react": "npm:react@^19.2.3", diff --git a/pkg/@eser/laroux-react/package.json b/pkg/@eser/laroux-react/package.json index 2cde6da72..fb396cead 100644 --- a/pkg/@eser/laroux-react/package.json +++ b/pkg/@eser/laroux-react/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-react", - "version": "4.1.11", + "version": "4.1.12", "description": "React adapter for the laroux.js framework", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux-server/deno.json b/pkg/@eser/laroux-server/deno.json index 691ab9906..4dc482ab0 100644 --- a/pkg/@eser/laroux-server/deno.json +++ b/pkg/@eser/laroux-server/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-server", - "version": "4.1.11", + "version": "4.1.12", "imports": { "@std/assert": "jsr:@std/assert@^1.0.16", "@std/cli": "jsr:@std/cli@^1.0.25", diff --git a/pkg/@eser/laroux-server/package.json b/pkg/@eser/laroux-server/package.json index a87ab5e24..b1de71a8e 100644 --- a/pkg/@eser/laroux-server/package.json +++ b/pkg/@eser/laroux-server/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux-server", - "version": "4.1.11", + "version": "4.1.12", "description": "Server runtime for the laroux.js framework", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/laroux/deno.json b/pkg/@eser/laroux/deno.json index 8b0b50b94..5ff19eec6 100644 --- a/pkg/@eser/laroux/deno.json +++ b/pkg/@eser/laroux/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./navigation": "./navigation/mod.ts", diff --git a/pkg/@eser/laroux/package.json b/pkg/@eser/laroux/package.json index b4d3a8d88..5b189ca53 100644 --- a/pkg/@eser/laroux/package.json +++ b/pkg/@eser/laroux/package.json @@ -1,6 +1,6 @@ { "name": "@eser/laroux", - "version": "4.1.11", + "version": "4.1.12", "description": "Framework-agnostic core utilities for laroux.js", "license": "Apache-2.0", "type": "module", diff --git a/pkg/@eser/logging/deno.json b/pkg/@eser/logging/deno.json index 00935dbaa..2dbc61f96 100644 --- a/pkg/@eser/logging/deno.json +++ b/pkg/@eser/logging/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/logging", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./logger": "./logger.ts", diff --git a/pkg/@eser/logging/package.json b/pkg/@eser/logging/package.json index f46609466..d85683e20 100644 --- a/pkg/@eser/logging/package.json +++ b/pkg/@eser/logging/package.json @@ -1,6 +1,6 @@ { "name": "@eser/logging", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/parsing/deno.json b/pkg/@eser/parsing/deno.json index 6a8eb051b..fc0a58434 100644 --- a/pkg/@eser/parsing/deno.json +++ b/pkg/@eser/parsing/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/parsing", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/parsing/package.json b/pkg/@eser/parsing/package.json index 34054d4fd..c9e113fd0 100644 --- a/pkg/@eser/parsing/package.json +++ b/pkg/@eser/parsing/package.json @@ -1,6 +1,6 @@ { "name": "@eser/parsing", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts" diff --git a/pkg/@eser/primitives/deno.json b/pkg/@eser/primitives/deno.json index be12af553..3683511ae 100644 --- a/pkg/@eser/primitives/deno.json +++ b/pkg/@eser/primitives/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/primitives", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./functions": "./functions.ts", diff --git a/pkg/@eser/primitives/package.json b/pkg/@eser/primitives/package.json index 35198106d..551133e41 100644 --- a/pkg/@eser/primitives/package.json +++ b/pkg/@eser/primitives/package.json @@ -1,6 +1,6 @@ { "name": "@eser/primitives", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/shell/deno.json b/pkg/@eser/shell/deno.json index 86caf62f1..518602bf1 100644 --- a/pkg/@eser/shell/deno.json +++ b/pkg/@eser/shell/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/shell", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./completions": "./completions/mod.ts", diff --git a/pkg/@eser/shell/package.json b/pkg/@eser/shell/package.json index db47410e8..1788890fa 100644 --- a/pkg/@eser/shell/package.json +++ b/pkg/@eser/shell/package.json @@ -1,6 +1,6 @@ { "name": "@eser/shell", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/standards/deno.json b/pkg/@eser/standards/deno.json index 0986931a3..058f609dd 100644 --- a/pkg/@eser/standards/deno.json +++ b/pkg/@eser/standards/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/standards", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./datetimes": "./datetimes/mod.ts", diff --git a/pkg/@eser/standards/package.json b/pkg/@eser/standards/package.json index 4920dffd6..c30ad0c20 100644 --- a/pkg/@eser/standards/package.json +++ b/pkg/@eser/standards/package.json @@ -1,6 +1,6 @@ { "name": "@eser/standards", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/testing/deno.json b/pkg/@eser/testing/deno.json index 095141264..ae357a5ff 100644 --- a/pkg/@eser/testing/deno.json +++ b/pkg/@eser/testing/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/testing", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./fake-server": "./fake-server.ts", diff --git a/pkg/@eser/testing/package.json b/pkg/@eser/testing/package.json index 2f68f151a..6f058238d 100644 --- a/pkg/@eser/testing/package.json +++ b/pkg/@eser/testing/package.json @@ -1,6 +1,6 @@ { "name": "@eser/testing", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/workflows/deno.json b/pkg/@eser/workflows/deno.json index faa6e81e3..e9a277334 100644 --- a/pkg/@eser/workflows/deno.json +++ b/pkg/@eser/workflows/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/workflows", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts", "./list": "./list.ts", diff --git a/pkg/@eser/workflows/package.json b/pkg/@eser/workflows/package.json index 3eafbe5b5..3a4cfcd3b 100644 --- a/pkg/@eser/workflows/package.json +++ b/pkg/@eser/workflows/package.json @@ -1,6 +1,6 @@ { "name": "@eser/workflows", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts", diff --git a/pkg/@eser/writer/deno.json b/pkg/@eser/writer/deno.json index 42d6ec870..1f9537064 100644 --- a/pkg/@eser/writer/deno.json +++ b/pkg/@eser/writer/deno.json @@ -1,6 +1,6 @@ { "name": "@eser/writer", - "version": "4.1.11", + "version": "4.1.12", "exports": { ".": "./mod.ts" }, diff --git a/pkg/@eser/writer/package.json b/pkg/@eser/writer/package.json index bda281079..e54242f2b 100644 --- a/pkg/@eser/writer/package.json +++ b/pkg/@eser/writer/package.json @@ -1,6 +1,6 @@ { "name": "@eser/writer", - "version": "4.1.11", + "version": "4.1.12", "type": "module", "exports": { ".": "./mod.ts" From 9832c9559bd872be216dcc43a979bb3e7c2ddb58 Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Wed, 25 Mar 2026 18:15:38 +0300 Subject: [PATCH 008/233] feat(streams): introducing @eser/streams. --- .../tooling-standards/references/rules.md | 86 +- .github/ARCHITECTURE.md | 7 +- .manifest.yml | 10 +- README.md | 13 +- TODOS.md | 18 + deno.json | 2 +- deno.lock | 161 +- etc/registry/eser-registry.json | 598 ++++ .../recipes}/cf-workers-app/.gitignore | 0 .../recipes}/cf-workers-app/.npmrc | 0 .../recipes}/cf-workers-app/.prettierrc | 0 .../recipes}/cf-workers-app/package.json | 0 .../recipes}/cf-workers-app/src/index.ts | 0 .../cf-workers-app/test/index.spec.ts | 0 .../cf-workers-app/test/tsconfig.json | 0 .../recipes}/cf-workers-app/tsconfig.json | 0 .../recipes}/cf-workers-app/vitest.config.mts | 0 .../cf-workers-app/worker-configuration.d.ts | 0 .../recipes}/cf-workers-app/wrangler.toml | 0 .../recipes}/cool-lime-app/build.ts | 0 .../recipes}/cool-lime-app/main.ts | 0 .../recipes}/cool-lime-app/manifest.jsonc | 0 .../recipes}/cool-lime-app/manifest.yaml | 0 .../recipes}/cool-lime-app/pkg/app/mod.tsx | 0 etc/registry/recipes/fp-pipe/pipe.ts | 50 + .../recipes}/go-service/Makefile | 0 .../recipes}/go-service/README.md | 0 .../recipes}/go-service/cmd/serve/main.go | 0 .../recipes}/go-service/go.mod.tmpl | 0 .../pkg/api/adapters/appcontext/appcontext.go | 0 .../recipes}/jsx-runtime-app/.npmrc | 0 .../recipes}/jsx-runtime-app/package.json | 0 .../recipes}/jsx-runtime-app/root.test.tsx | 0 .../recipes}/jsx-runtime-app/root.tsx | 0 .../recipes}/jsx-runtime-app/tsconfig.json | 0 .../recipes}/laroux-app/.gitignore | 0 .../recipes}/laroux-app/.npmrc | 0 .../recipes}/laroux-app/laroux.config.ts | 0 .../recipes}/laroux-app/package.json | 0 .../recipes}/laroux-app/public/favicon.svg | 0 .../recipes}/laroux-app/public/llms.txt | 0 .../recipes}/laroux-app/public/robots.txt | 0 .../recipes}/laroux-app/src/app/error.tsx | 0 .../recipes}/laroux-app/src/app/layout.tsx | 0 .../recipes}/laroux-app/src/app/not-found.tsx | 0 .../laroux-app/src/app/routes/home/page.tsx | 0 .../laroux-app/src/app/routes/index.ts | 0 .../laroux-app/src/app/styles/global.css | 0 .../recipes}/laroux-app/tsconfig.json | 0 etc/registry/recipes/library-pkg/README.md | 15 + etc/registry/recipes/library-pkg/deno.json | 9 + etc/registry/recipes/library-pkg/mod.test.ts | 10 + .../recipes}/library-pkg/mod.ts | 9 +- .../recipes}/vanilla-app/main.ts | 0 .../recipes}/vanilla-app/package.json | 0 .../recipes}/vite-app/.eslintrc.cjs | 0 .../recipes}/vite-app/.gitignore | 0 .../recipes}/vite-app/README.md | 0 .../recipes}/vite-app/index.html | 0 .../recipes}/vite-app/package.json | 0 .../recipes}/vite-app/public/vite.svg | 0 .../recipes}/vite-app/src/app.css | 0 .../recipes}/vite-app/src/app.tsx | 0 .../recipes}/vite-app/src/assets/react.svg | 0 .../recipes}/vite-app/src/index.css | 0 .../recipes}/vite-app/src/main.tsx | 0 .../recipes}/vite-app/src/vite-env.d.ts | 0 .../recipes}/vite-app/tsconfig.app.json | 0 .../recipes}/vite-app/tsconfig.json | 0 .../recipes}/vite-app/tsconfig.node.json | 0 .../recipes}/vite-app/vite.config.ts | 0 etc/templates/.gitkeep | 0 .../cf-workers-app/package-lock.json | 2830 ----------------- .../go-service/pkg/api/business/.gitkeep | 0 etc/templates/laroux-app/deno.lock | 845 ----- .../laroux-app/src/components/.gitkeep | 0 etc/templates/library-pkg/README.md | 23 - etc/templates/library-pkg/deno.json | 15 - etc/templates/library-pkg/mod.test.ts | 7 - pkg/@eser/cli/commands/add.ts | 181 ++ pkg/@eser/cli/commands/add_test.ts | 87 + pkg/@eser/cli/commands/clone.ts | 263 ++ pkg/@eser/cli/commands/clone_test.ts | 53 + pkg/@eser/cli/commands/laroux/init.ts | 128 +- pkg/@eser/cli/commands/list.ts | 110 + pkg/@eser/cli/commands/list_test.ts | 93 + pkg/@eser/cli/commands/new.ts | 172 + pkg/@eser/cli/commands/new_test.ts | 46 + pkg/@eser/cli/commands/update.ts | 107 + pkg/@eser/cli/main.ts | 1 + pkg/@eser/cli/package.json | 1 + pkg/@eser/cli/registry.ts | 33 + pkg/@eser/cs/generate.ts | 8 +- pkg/@eser/cs/sync.test.ts | 14 +- pkg/@eser/cs/sync.ts | 6 +- pkg/@eser/{writer => formats}/deno.json | 2 +- pkg/@eser/formats/deserializer.ts | 22 + .../{writer => formats}/format-registry.ts | 21 +- pkg/@eser/formats/formats.test.ts | 553 ++++ pkg/@eser/formats/formats/csv.ts | 151 + pkg/@eser/{writer => formats}/formats/json.ts | 41 +- pkg/@eser/formats/formats/jsonl.ts | 94 + pkg/@eser/formats/formats/toml.ts | 100 + pkg/@eser/formats/formats/yaml.ts | 95 + pkg/@eser/{writer => formats}/mod.ts | 11 +- pkg/@eser/{writer => formats}/package.json | 2 +- pkg/@eser/{writer => formats}/serializer.ts | 4 +- pkg/@eser/{writer => formats}/types.ts | 52 +- pkg/@eser/registry/deno.json | 11 + pkg/@eser/registry/dependency-resolver.ts | 123 + .../registry/dependency-resolver_test.ts | 177 ++ pkg/@eser/registry/mod.ts | 22 + pkg/@eser/registry/package.json | 15 + pkg/@eser/registry/recipe-applier.ts | 404 +++ pkg/@eser/registry/recipe-applier_test.ts | 304 ++ pkg/@eser/registry/registry-fetcher.ts | 339 ++ pkg/@eser/registry/registry-fetcher_test.ts | 71 + pkg/@eser/registry/registry-schema.ts | 357 +++ pkg/@eser/registry/registry-schema_test.ts | 505 +++ pkg/@eser/registry/requires-resolver.ts | 105 + pkg/@eser/registry/requires-resolver_test.ts | 179 ++ pkg/@eser/registry/variable-processor.ts | 94 + pkg/@eser/registry/variable-processor_test.ts | 144 + pkg/@eser/streams/chunk.ts | 24 + pkg/@eser/streams/define-layer.ts | 25 + pkg/@eser/streams/deno.json | 11 + pkg/@eser/streams/layers/decode.ts | 34 + pkg/@eser/streams/layers/encode.ts | 32 + pkg/@eser/streams/layers/filter.ts | 19 + pkg/@eser/streams/layers/map.ts | 20 + pkg/@eser/streams/layers/mod.ts | 8 + pkg/@eser/streams/layers/tap.ts | 18 + pkg/@eser/streams/layers/tee.ts | 25 + pkg/@eser/streams/mod.ts | 38 + pkg/@eser/streams/output.ts | 158 + pkg/@eser/streams/package.json | 13 + pkg/@eser/streams/pipeline.ts | 110 + pkg/@eser/streams/sinks/buffer.ts | 27 + pkg/@eser/streams/sinks/mod.ts | 7 + pkg/@eser/streams/sinks/multiplex.ts | 27 + pkg/@eser/streams/sinks/null.ts | 14 + pkg/@eser/streams/sinks/stdout.ts | 32 + pkg/@eser/streams/sinks/writable.ts | 13 + pkg/@eser/streams/sources/events.ts | 29 + pkg/@eser/streams/sources/mod.ts | 6 + pkg/@eser/streams/sources/readable.ts | 20 + pkg/@eser/streams/sources/stdin.ts | 20 + pkg/@eser/streams/sources/values.ts | 18 + pkg/@eser/streams/streams.test.ts | 601 ++++ pkg/@eser/streams/types.ts | 125 + pkg/@eser/workflows/package.json | 3 + pkg/@eser/writer/README.md | 427 --- pkg/@eser/writer/formats/csv.ts | 74 - pkg/@eser/writer/formats/jsonl.ts | 38 - pkg/@eser/writer/formats/toml.ts | 52 - pkg/@eser/writer/formats/yaml.ts | 46 - pkg/@eser/writer/writer.test.ts | 681 ---- pkg/@eser/writer/writer.ts | 114 - pkg/mod.ts | 3 +- 159 files changed, 7538 insertions(+), 5383 deletions(-) create mode 100644 etc/registry/eser-registry.json rename etc/{templates => registry/recipes}/cf-workers-app/.gitignore (100%) rename etc/{templates => registry/recipes}/cf-workers-app/.npmrc (100%) rename etc/{templates => registry/recipes}/cf-workers-app/.prettierrc (100%) rename etc/{templates => registry/recipes}/cf-workers-app/package.json (100%) rename etc/{templates => registry/recipes}/cf-workers-app/src/index.ts (100%) rename etc/{templates => registry/recipes}/cf-workers-app/test/index.spec.ts (100%) rename etc/{templates => registry/recipes}/cf-workers-app/test/tsconfig.json (100%) rename etc/{templates => registry/recipes}/cf-workers-app/tsconfig.json (100%) rename etc/{templates => registry/recipes}/cf-workers-app/vitest.config.mts (100%) rename etc/{templates => registry/recipes}/cf-workers-app/worker-configuration.d.ts (100%) rename etc/{templates => registry/recipes}/cf-workers-app/wrangler.toml (100%) rename etc/{templates => registry/recipes}/cool-lime-app/build.ts (100%) rename etc/{templates => registry/recipes}/cool-lime-app/main.ts (100%) rename etc/{templates => registry/recipes}/cool-lime-app/manifest.jsonc (100%) rename etc/{templates => registry/recipes}/cool-lime-app/manifest.yaml (100%) rename etc/{templates => registry/recipes}/cool-lime-app/pkg/app/mod.tsx (100%) create mode 100644 etc/registry/recipes/fp-pipe/pipe.ts rename etc/{templates => registry/recipes}/go-service/Makefile (100%) rename etc/{templates => registry/recipes}/go-service/README.md (100%) rename etc/{templates => registry/recipes}/go-service/cmd/serve/main.go (100%) rename etc/{templates => registry/recipes}/go-service/go.mod.tmpl (100%) rename etc/{templates => registry/recipes}/go-service/pkg/api/adapters/appcontext/appcontext.go (100%) rename etc/{templates => registry/recipes}/jsx-runtime-app/.npmrc (100%) rename etc/{templates => registry/recipes}/jsx-runtime-app/package.json (100%) rename etc/{templates => registry/recipes}/jsx-runtime-app/root.test.tsx (100%) rename etc/{templates => registry/recipes}/jsx-runtime-app/root.tsx (100%) rename etc/{templates => registry/recipes}/jsx-runtime-app/tsconfig.json (100%) rename etc/{templates => registry/recipes}/laroux-app/.gitignore (100%) rename etc/{templates => registry/recipes}/laroux-app/.npmrc (100%) rename etc/{templates => registry/recipes}/laroux-app/laroux.config.ts (100%) rename etc/{templates => registry/recipes}/laroux-app/package.json (100%) rename etc/{templates => registry/recipes}/laroux-app/public/favicon.svg (100%) rename etc/{templates => registry/recipes}/laroux-app/public/llms.txt (100%) rename etc/{templates => registry/recipes}/laroux-app/public/robots.txt (100%) rename etc/{templates => registry/recipes}/laroux-app/src/app/error.tsx (100%) rename etc/{templates => registry/recipes}/laroux-app/src/app/layout.tsx (100%) rename etc/{templates => registry/recipes}/laroux-app/src/app/not-found.tsx (100%) rename etc/{templates => registry/recipes}/laroux-app/src/app/routes/home/page.tsx (100%) rename etc/{templates => registry/recipes}/laroux-app/src/app/routes/index.ts (100%) rename etc/{templates => registry/recipes}/laroux-app/src/app/styles/global.css (100%) rename etc/{templates => registry/recipes}/laroux-app/tsconfig.json (100%) create mode 100644 etc/registry/recipes/library-pkg/README.md create mode 100644 etc/registry/recipes/library-pkg/deno.json create mode 100644 etc/registry/recipes/library-pkg/mod.test.ts rename etc/{templates => registry/recipes}/library-pkg/mod.ts (50%) rename etc/{templates => registry/recipes}/vanilla-app/main.ts (100%) rename etc/{templates => registry/recipes}/vanilla-app/package.json (100%) rename etc/{templates => registry/recipes}/vite-app/.eslintrc.cjs (100%) rename etc/{templates => registry/recipes}/vite-app/.gitignore (100%) rename etc/{templates => registry/recipes}/vite-app/README.md (100%) rename etc/{templates => registry/recipes}/vite-app/index.html (100%) rename etc/{templates => registry/recipes}/vite-app/package.json (100%) rename etc/{templates => registry/recipes}/vite-app/public/vite.svg (100%) rename etc/{templates => registry/recipes}/vite-app/src/app.css (100%) rename etc/{templates => registry/recipes}/vite-app/src/app.tsx (100%) rename etc/{templates => registry/recipes}/vite-app/src/assets/react.svg (100%) rename etc/{templates => registry/recipes}/vite-app/src/index.css (100%) rename etc/{templates => registry/recipes}/vite-app/src/main.tsx (100%) rename etc/{templates => registry/recipes}/vite-app/src/vite-env.d.ts (100%) rename etc/{templates => registry/recipes}/vite-app/tsconfig.app.json (100%) rename etc/{templates => registry/recipes}/vite-app/tsconfig.json (100%) rename etc/{templates => registry/recipes}/vite-app/tsconfig.node.json (100%) rename etc/{templates => registry/recipes}/vite-app/vite.config.ts (100%) delete mode 100644 etc/templates/.gitkeep delete mode 100644 etc/templates/cf-workers-app/package-lock.json delete mode 100644 etc/templates/go-service/pkg/api/business/.gitkeep delete mode 100644 etc/templates/laroux-app/deno.lock delete mode 100644 etc/templates/laroux-app/src/components/.gitkeep delete mode 100644 etc/templates/library-pkg/README.md delete mode 100644 etc/templates/library-pkg/deno.json delete mode 100644 etc/templates/library-pkg/mod.test.ts create mode 100644 pkg/@eser/cli/commands/add.ts create mode 100644 pkg/@eser/cli/commands/add_test.ts create mode 100644 pkg/@eser/cli/commands/clone.ts create mode 100644 pkg/@eser/cli/commands/clone_test.ts create mode 100644 pkg/@eser/cli/commands/list.ts create mode 100644 pkg/@eser/cli/commands/list_test.ts create mode 100644 pkg/@eser/cli/commands/new.ts create mode 100644 pkg/@eser/cli/commands/new_test.ts create mode 100644 pkg/@eser/cli/commands/update.ts rename pkg/@eser/{writer => formats}/deno.json (91%) create mode 100644 pkg/@eser/formats/deserializer.ts rename pkg/@eser/{writer => formats}/format-registry.ts (80%) create mode 100644 pkg/@eser/formats/formats.test.ts create mode 100644 pkg/@eser/formats/formats/csv.ts rename pkg/@eser/{writer => formats}/formats/json.ts (56%) create mode 100644 pkg/@eser/formats/formats/jsonl.ts create mode 100644 pkg/@eser/formats/formats/toml.ts create mode 100644 pkg/@eser/formats/formats/yaml.ts rename pkg/@eser/{writer => formats}/mod.ts (90%) rename pkg/@eser/{writer => formats}/package.json (93%) rename pkg/@eser/{writer => formats}/serializer.ts (91%) rename pkg/@eser/{writer => formats}/types.ts (59%) create mode 100644 pkg/@eser/registry/deno.json create mode 100644 pkg/@eser/registry/dependency-resolver.ts create mode 100644 pkg/@eser/registry/dependency-resolver_test.ts create mode 100644 pkg/@eser/registry/mod.ts create mode 100644 pkg/@eser/registry/package.json create mode 100644 pkg/@eser/registry/recipe-applier.ts create mode 100644 pkg/@eser/registry/recipe-applier_test.ts create mode 100644 pkg/@eser/registry/registry-fetcher.ts create mode 100644 pkg/@eser/registry/registry-fetcher_test.ts create mode 100644 pkg/@eser/registry/registry-schema.ts create mode 100644 pkg/@eser/registry/registry-schema_test.ts create mode 100644 pkg/@eser/registry/requires-resolver.ts create mode 100644 pkg/@eser/registry/requires-resolver_test.ts create mode 100644 pkg/@eser/registry/variable-processor.ts create mode 100644 pkg/@eser/registry/variable-processor_test.ts create mode 100644 pkg/@eser/streams/chunk.ts create mode 100644 pkg/@eser/streams/define-layer.ts create mode 100644 pkg/@eser/streams/deno.json create mode 100644 pkg/@eser/streams/layers/decode.ts create mode 100644 pkg/@eser/streams/layers/encode.ts create mode 100644 pkg/@eser/streams/layers/filter.ts create mode 100644 pkg/@eser/streams/layers/map.ts create mode 100644 pkg/@eser/streams/layers/mod.ts create mode 100644 pkg/@eser/streams/layers/tap.ts create mode 100644 pkg/@eser/streams/layers/tee.ts create mode 100644 pkg/@eser/streams/mod.ts create mode 100644 pkg/@eser/streams/output.ts create mode 100644 pkg/@eser/streams/package.json create mode 100644 pkg/@eser/streams/pipeline.ts create mode 100644 pkg/@eser/streams/sinks/buffer.ts create mode 100644 pkg/@eser/streams/sinks/mod.ts create mode 100644 pkg/@eser/streams/sinks/multiplex.ts create mode 100644 pkg/@eser/streams/sinks/null.ts create mode 100644 pkg/@eser/streams/sinks/stdout.ts create mode 100644 pkg/@eser/streams/sinks/writable.ts create mode 100644 pkg/@eser/streams/sources/events.ts create mode 100644 pkg/@eser/streams/sources/mod.ts create mode 100644 pkg/@eser/streams/sources/readable.ts create mode 100644 pkg/@eser/streams/sources/stdin.ts create mode 100644 pkg/@eser/streams/sources/values.ts create mode 100644 pkg/@eser/streams/streams.test.ts create mode 100644 pkg/@eser/streams/types.ts delete mode 100644 pkg/@eser/writer/README.md delete mode 100644 pkg/@eser/writer/formats/csv.ts delete mode 100644 pkg/@eser/writer/formats/jsonl.ts delete mode 100644 pkg/@eser/writer/formats/toml.ts delete mode 100644 pkg/@eser/writer/formats/yaml.ts delete mode 100644 pkg/@eser/writer/writer.test.ts delete mode 100644 pkg/@eser/writer/writer.ts diff --git a/.claude/skills/tooling-standards/references/rules.md b/.claude/skills/tooling-standards/references/rules.md index 1183071fb..a5e59e000 100644 --- a/.claude/skills/tooling-standards/references/rules.md +++ b/.claude/skills/tooling-standards/references/rules.md @@ -37,65 +37,75 @@ npx vitest Scope: JS/TS projects using Deno -Rule: Use package.json for dependencies and -scripts. Use tsconfig.json for TypeScript. Use deno.json only for -formatter/linter configuration. +Rule: Packages need BOTH `deno.json` AND `package.json`. They serve +different roles: -package.json (dependencies and scripts): +- `deno.json` — Package identity for JSR (`name`, `version`, `exports`), plus + formatter/linter config at root level. +- `package.json` — Package identity for npm workspace resolution (`name`, + `version`, `exports`, `devDependencies`). The root `package.json` defines + the workspace glob. + +**Root `package.json` (workspace definition):** ```json { - "dependencies": { - "react": "^19.0.0", - "@std/path": "npm:@jsr/std__path@^1.0.0" - }, - "scripts": { - "dev": "deno run --allow-all main.ts", - "test": "deno test --allow-all" - } + "name": "@eser/stack", + "private": true, + "workspaces": ["pkg/@eser/*", "pkg/@cool/*"], + "scripts": { "cli": "deno run --allow-all ./pkg/@eser/cli/main.ts" } } ``` -tsconfig.json (TypeScript config): +Cross-package imports (e.g., `import * as foo from "@eser/bar/baz"`) resolve +through this npm workspace. Run `deno install` at root after adding a new +package to wire up the graph. + +**Per-package `deno.json`:** ```json { - "compilerOptions": { - "jsx": "react-jsx", - "strict": true - } + "name": "@eser/my-pkg", + "version": "4.1.12", + "exports": { ".": "./mod.ts", "./sub": "./sub.ts" } } ``` -deno.json (formatter/linter only): +**Per-package `package.json` (must mirror exports):** ```json { - "fmt": { - "lineWidth": 80, - "semiColons": true - }, - "lint": { - "rules": { - "exclude": ["no-explicit-any"] - } - } + "name": "@eser/my-pkg", + "version": "4.1.12", + "type": "module", + "exports": { ".": "./mod.ts", "./sub": "./sub.ts" }, + "devDependencies": { "@std/assert": "npm:@jsr/std__assert@^1.0.16" } } ``` -Incorrect (don't use deno.json for dependencies): +**Root `deno.json` (lint/fmt config only, NO workspace key):** ```json { - "imports": { - "react": "npm:react@^19.0.0" - }, - "tasks": { - "dev": "deno run main.ts" - } + "nodeModulesDir": "auto", + "lint": { "rules": { "tags": ["recommended"] } }, + "exclude": [".git", "node_modules/", "etc/templates/"] } ``` +**After adding a new package, ALWAYS run:** + +```bash +deno install # at project root — wires up workspace graph +``` + +Incorrect (don't skip package.json — workspace resolution will fail): + +```json +// Having only deno.json without package.json means other packages +// cannot import via bare specifiers like "@eser/my-pkg/sub" +``` + --- ## Package Registry @@ -424,10 +434,14 @@ Scope: All @eser/* packages Rule: Use `@eser/standards/runtime` for all filesystem, exec, and env access. Never use `Deno.*` directly. Enables cross-runtime (Deno/Node/Bun) and testability. +Exception: CLI-only code (commands, tools that only run in the CLI context) may +use `Deno.*` directly when `@eser/standards/runtime` doesn't expose the needed +API (e.g., `Deno.cwd()`, `Deno.makeTempDir()`). Prefer the abstraction when available. + Correct: ```typescript -import { current } from "@eser/standards/runtime"; -const content = await current.fs.readTextFile(path); +import * as standardsRuntime from "@eser/standards/runtime"; +const content = await standardsRuntime.current.fs.readTextFile(path); ``` Incorrect: diff --git a/.github/ARCHITECTURE.md b/.github/ARCHITECTURE.md index c7c683d65..65d25c16c 100644 --- a/.github/ARCHITECTURE.md +++ b/.github/ARCHITECTURE.md @@ -19,7 +19,7 @@ stack/ │ ├── @eser/ # Core packages (29 packages, published to JSR) │ └── @cool/ # Community packages (2 packages, published to JSR) ├── etc/ -│ ├── templates/ # Project starter templates (library-pkg, go-service) +│ ├── registry/ # Recipe registry (24 recipes: project templates + Go components) │ ├── scripts/ # Automation scripts (version-bump, release-notes) │ └── coverage/ # Test coverage output (gitignored) ├── docs/ # Generated HTML documentation @@ -49,7 +49,6 @@ Layer 0 — Foundation (no internal deps) Layer 1 — Core Utilities (depend on Layer 0) ├── @eser/fp # Functional programming (116+ modules) ├── @eser/crypto # Cryptographic utilities -├── @eser/cs # Computer science utilities └── @eser/parsing # String/stream parsing Layer 2 — Infrastructure (depend on Layers 0-1) @@ -61,9 +60,11 @@ Layer 2 — Infrastructure (depend on Layers 0-1) ├── @eser/http # HTTP utilities ├── @eser/functions # Function utilities ├── @eser/testing # Testing utilities -├── @eser/writer # Output/file writing +├── @eser/formats # Bidirectional format conversion (JSON, YAML, CSV, TOML, JSONL) +├── @eser/streams # Universal I/O streaming with composable middleware ├── @eser/shell # Shell interaction ├── @eser/collector # Data collection +├── @eser/cs # Config storage (Kubernetes ConfigMap/Secret sync) └── @eser/codebase # Codebase analysis/validation Layer 3 — Framework (depend on Layers 0-2) diff --git a/.manifest.yml b/.manifest.yml index d8e662fb8..6b783a3c2 100644 --- a/.manifest.yml +++ b/.manifest.yml @@ -17,8 +17,7 @@ workflows: - validate-merge-conflict - validate-json: exclude: - - "etc/templates/vite-app/tsconfig.app.json" - - "etc/templates/cf-workers-app/tsconfig.json" + - "etc/registry/recipes/" - "tsconfig.json" - validate-toml - validate-yaml: @@ -52,8 +51,7 @@ workflows: - "docs/" - "etc/coverage/" - "etc/temp/" - - "etc/templates/*/Makefile" - - "etc/templates/*/README.md" + - "etc/registry/recipes/" - "Dockerfile" - "LICENSE" - "README.md" @@ -62,7 +60,9 @@ workflows: - "*_test.ts" - "*_test.go" - validate-submodules - - validate-licenses + - validate-licenses: + exclude: + - "etc/registry/recipes/" # Deno checks - shell: diff --git a/README.md b/README.md index 1c96e570a..22f6418d6 100644 --- a/README.md +++ b/README.md @@ -91,12 +91,13 @@ strives to offer you an intuitive and delightful development experience. #### Data & Parsing -| Component | Description | Latest Version | -| ------------------------------------------ | ---------------------------------------------- | ------------------------------------------------------------------------------- | -| 〰️ [@eser/parsing](pkg/@eser/parsing/) | Parsing tools for strings and streams | [![JSR](https://jsr.io/badges/@eser/parsing)](https://jsr.io/@eser/parsing) | -| ✏️ [@eser/writer](pkg/@eser/writer/) | Code and text generation writer | [![JSR](https://jsr.io/badges/@eser/writer)](https://jsr.io/@eser/writer) | -| ⚙️ [@eser/collector](pkg/@eser/collector/) | Module export collector and manifest generator | [![JSR](https://jsr.io/badges/@eser/collector)](https://jsr.io/@eser/collector) | -| 🔬 [@eser/cs](pkg/@eser/cs/) | Computer science data structures | [![JSR](https://jsr.io/badges/@eser/cs)](https://jsr.io/@eser/cs) | +| Component | Description | Latest Version | +| ------------------------------------------ | -------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| 〰️ [@eser/parsing](pkg/@eser/parsing/) | Parsing tools for strings and streams | [![JSR](https://jsr.io/badges/@eser/parsing)](https://jsr.io/@eser/parsing) | +| 🔄 [@eser/formats](pkg/@eser/formats/) | Bidirectional format conversion (JSON, YAML, CSV, TOML, JSONL) | [![JSR](https://jsr.io/badges/@eser/formats)](https://jsr.io/@eser/formats) | +| 🌊 [@eser/streams](pkg/@eser/streams/) | Universal I/O streaming with composable middleware | [![JSR](https://jsr.io/badges/@eser/streams)](https://jsr.io/@eser/streams) | +| ⚙️ [@eser/collector](pkg/@eser/collector/) | Module export collector and manifest generator | [![JSR](https://jsr.io/badges/@eser/collector)](https://jsr.io/@eser/collector) | +| 🗄️ [@eser/cs](pkg/@eser/cs/) | Config storage — Kubernetes ConfigMap/Secret sync | [![JSR](https://jsr.io/badges/@eser/cs)](https://jsr.io/@eser/cs) | #### Web & UI diff --git a/TODOS.md b/TODOS.md index cd024806a..762a3f9f1 100644 --- a/TODOS.md +++ b/TODOS.md @@ -34,3 +34,21 @@ distribution is stable. **Effort:** S per manager (~1 hour each) **Depends on:** Stable binary distribution pipeline + +## P2 — Backpressure-aware web sink defaults + +**What:** When web sinks (httpResponse, webSocket) ship for @eser/streams, +configure sensible timeout and backpressure defaults. + +**Why:** Pipeline timeout (in MVP) handles abort, but web sinks need per-sink +backpressure thresholds and configurable timeout defaults to prevent silent +hangs in production. + +**Context:** The @eser/streams MVP ships with stdout/buffer/null sinks (all +fast). When web sinks arrive, they face real backpressure from network +conditions. The pipeline timeout mechanism provides the abort, but each web sink +needs sensible defaults for buffer size limits and timeout durations. + +**Effort:** S (CC: ~15 min per sink) + +**Depends on:** @eser/streams MVP (pipeline timeout) diff --git a/deno.json b/deno.json index 692662a92..332bf47a7 100644 --- a/deno.json +++ b/deno.json @@ -39,7 +39,7 @@ "apps/", "docs/", "etc/temp/", - "etc/templates/", + "etc/registry/recipes/", "node_modules/", "pkg/@eser/cli/dist/" ] diff --git a/deno.lock b/deno.lock index 3a9a5dc21..101e640bd 100644 --- a/deno.lock +++ b/deno.lock @@ -5,12 +5,10 @@ "jsr:@std/assert@^1.0.17": "1.0.19", "jsr:@std/async@^1.1.0": "1.2.0", "jsr:@std/bytes@^1.0.6": "1.0.6", - "jsr:@std/cli@*": "1.0.28", "jsr:@std/cli@^1.0.25": "1.0.28", "jsr:@std/collections@^1.1.3": "1.1.6", "jsr:@std/csv@^1.0.6": "1.0.6", "jsr:@std/data-structures@^1.0.10": "1.0.10", - "jsr:@std/dotenv@*": "0.225.6", "jsr:@std/dotenv@~0.225.6": "0.225.6", "jsr:@std/encoding@^1.0.10": "1.0.10", "jsr:@std/fmt@^1.0.8": "1.0.9", @@ -20,11 +18,9 @@ "jsr:@std/fs@^1.0.23": "1.0.23", "jsr:@std/internal@^1.0.12": "1.0.12", "jsr:@std/json@^1.0.2": "1.0.3", - "jsr:@std/jsonc@*": "1.0.2", "jsr:@std/jsonc@^1.0.1": "1.0.2", "jsr:@std/jsonc@^1.0.2": "1.0.2", "jsr:@std/media-types@^1.1.0": "1.1.0", - "jsr:@std/path@*": "1.1.4", "jsr:@std/path@^1.1.4": "1.1.4", "jsr:@std/semver@^1.0.7": "1.0.8", "jsr:@std/streams@^1.0.17": "1.0.17", @@ -60,12 +56,11 @@ "npm:@types/react@^19.2.7": "19.2.14", "npm:esbuild@~0.24.2": "0.24.2", "npm:esbuild@~0.27.3": "0.27.3", - "npm:eser@*": "4.1.0", "npm:lightningcss@^1.30.2": "1.31.1", "npm:octokit@^5.0.5": "5.0.5", "npm:react-dom@^19.2.3": "19.2.4_react@19.2.4", "npm:react@^19.2.3": "19.2.4", - "npm:rolldown@latest": "1.0.0-rc.6", + "npm:rolldown@latest": "1.0.0-rc.9", "npm:sharp@~0.33.5": "0.33.5", "npm:tailwindcss@^4.1.18": "4.2.1" }, @@ -114,7 +109,7 @@ "integrity": "3ecbae4ce4fee03b180fa710caff36bb5adb66631c46a6460aaad49515565a37", "dependencies": [ "jsr:@std/internal", - "jsr:@std/path@^1.1.4" + "jsr:@std/path" ] }, "@std/internal@1.0.12": { @@ -161,7 +156,7 @@ "jsr:@std/data-structures", "jsr:@std/fs@^1.0.22", "jsr:@std/internal", - "jsr:@std/path@^1.1.4" + "jsr:@std/path" ] }, "@std/toml@1.0.11": { @@ -178,21 +173,21 @@ } }, "npm": { - "@emnapi/core@1.8.1": { - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "@emnapi/core@1.9.0": { + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", "dependencies": [ "@emnapi/wasi-threads", "tslib" ] }, - "@emnapi/runtime@1.8.1": { - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "@emnapi/runtime@1.9.0": { + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", "dependencies": [ "tslib" ] }, - "@emnapi/wasi-threads@1.1.0": { - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "@emnapi/wasi-threads@1.2.0": { + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dependencies": [ "tslib" ] @@ -942,75 +937,85 @@ "@oxc-project/types@0.115.0": { "integrity": "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==" }, - "@rolldown/binding-android-arm64@1.0.0-rc.6": { - "integrity": "sha512-kvjTSWGcrv+BaR2vge57rsKiYdVR8V8CoS0vgKrc570qRBfty4bT+1X0z3j2TaVV+kAYzA0PjeB9+mdZyqUZlg==", + "@rolldown/binding-android-arm64@1.0.0-rc.9": { + "integrity": "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==", "os": ["android"], "cpu": ["arm64"] }, - "@rolldown/binding-darwin-arm64@1.0.0-rc.6": { - "integrity": "sha512-+tJhD21KvGNtUrpLXrZQlT+j5HZKiEwR2qtcZb3vNOUpvoT9QjEykr75ZW/Kr0W89gose/HVXU6351uVZD8Qvw==", + "@rolldown/binding-darwin-arm64@1.0.0-rc.9": { + "integrity": "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==", "os": ["darwin"], "cpu": ["arm64"] }, - "@rolldown/binding-darwin-x64@1.0.0-rc.6": { - "integrity": "sha512-DKNhjMk38FAWaHwUt1dFR3rA/qRAvn2NUvSG2UGvxvlMxSmN/qqww/j4ABAbXhNRXtGQNmrAINMXRuwHl16ZHg==", + "@rolldown/binding-darwin-x64@1.0.0-rc.9": { + "integrity": "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==", "os": ["darwin"], "cpu": ["x64"] }, - "@rolldown/binding-freebsd-x64@1.0.0-rc.6": { - "integrity": "sha512-8TThsRkCPAnfyMBShxrGdtoOE6h36QepqRQI97iFaQSCRbHFWHcDHppcojZnzXoruuhPnjMEygzaykvPVJsMRg==", + "@rolldown/binding-freebsd-x64@1.0.0-rc.9": { + "integrity": "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==", "os": ["freebsd"], "cpu": ["x64"] }, - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.6": { - "integrity": "sha512-ZfmFoOwPUZCWtGOVC9/qbQzfc0249FrRUOzV2XabSMUV60Crp211OWLQN1zmQAsRIVWRcEwhJ46Z1mXGo/L/nQ==", + "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9": { + "integrity": "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==", "os": ["linux"], "cpu": ["arm"] }, - "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.6": { - "integrity": "sha512-ZsGzbNETxPodGlLTYHaCSGVhNN/rvkMDCJYHdT7PZr5jFJRmBfmDi2awhF64Dt2vxrJqY6VeeYSgOzEbHRsb7Q==", + "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9": { + "integrity": "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==", "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-arm64-musl@1.0.0-rc.6": { - "integrity": "sha512-elPpdevtCdUOqziemR86C4CSCr/5sUxalzDrf/CJdMT+kZt2C556as++qHikNOz0vuFf52h+GJNXZM08eWgGPQ==", + "@rolldown/binding-linux-arm64-musl@1.0.0-rc.9": { + "integrity": "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==", "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-x64-gnu@1.0.0-rc.6": { - "integrity": "sha512-IBwXsf56o3xhzAyaZxdM1CX8UFiBEUFCjiVUgny67Q8vPIqkjzJj0YKhd3TbBHanuxThgBa59f6Pgutg2OGk5A==", + "@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9": { + "integrity": "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==", + "os": ["linux"], + "cpu": ["ppc64"] + }, + "@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9": { + "integrity": "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==", + "os": ["linux"], + "cpu": ["s390x"] + }, + "@rolldown/binding-linux-x64-gnu@1.0.0-rc.9": { + "integrity": "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==", "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-linux-x64-musl@1.0.0-rc.6": { - "integrity": "sha512-vOk7G8V9Zm+8a6PL6JTpCea61q491oYlGtO6CvnsbhNLlKdf0bbCPytFzGQhYmCKZDKkEbmnkcIprTEGCURnwg==", + "@rolldown/binding-linux-x64-musl@1.0.0-rc.9": { + "integrity": "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==", "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-openharmony-arm64@1.0.0-rc.6": { - "integrity": "sha512-ASjEDI4MRv7XCQb2JVaBzfEYO98JKCGrAgoW6M03fJzH/ilCnC43Mb3ptB9q/lzsaahoJyIBoAGKAYEjUvpyvQ==", + "@rolldown/binding-openharmony-arm64@1.0.0-rc.9": { + "integrity": "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==", "os": ["openharmony"], "cpu": ["arm64"] }, - "@rolldown/binding-wasm32-wasi@1.0.0-rc.6": { - "integrity": "sha512-mYa1+h2l6Zc0LvmwUh0oXKKYihnw/1WC73vTqw+IgtfEtv47A+rWzzcWwVDkW73+UDr0d/Ie/HRXoaOY22pQDw==", + "@rolldown/binding-wasm32-wasi@1.0.0-rc.9": { + "integrity": "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==", "dependencies": [ "@napi-rs/wasm-runtime" ], "cpu": ["wasm32"] }, - "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.6": { - "integrity": "sha512-e2ABskbNH3MRUBMjgxaMjYIw11DSwjLJxBII3UgpF6WClGLIh8A20kamc+FKH5vIaFVnYQInmcLYSUVpqMPLow==", + "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9": { + "integrity": "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==", "os": ["win32"], "cpu": ["arm64"] }, - "@rolldown/binding-win32-x64-msvc@1.0.0-rc.6": { - "integrity": "sha512-dJVc3ifhaRXxIEh1xowLohzFrlQXkJ66LepHm+CmSprTWgVrPa8Fx3OL57xwIqDEH9hufcKkDX2v65rS3NZyRA==", + "@rolldown/binding-win32-x64-msvc@1.0.0-rc.9": { + "integrity": "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==", "os": ["win32"], "cpu": ["x64"] }, - "@rolldown/pluginutils@1.0.0-rc.6": { - "integrity": "sha512-Y0+JT8Mi1mmW08K6HieG315XNRu4L0rkfCpA364HtytjgiqYnMYRdFPcxRl+BQQqNXzecL2S9nii+RUpO93XIA==" + "@rolldown/pluginutils@1.0.0-rc.9": { + "integrity": "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==" }, "@tailwindcss/node@4.2.1": { "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", @@ -1150,8 +1155,8 @@ "detect-libc@2.1.2": { "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==" }, - "enhanced-resolve@5.20.0": { - "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", + "enhanced-resolve@5.20.1": { + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dependencies": [ "graceful-fs", "tapable" @@ -1222,15 +1227,6 @@ "scripts": true, "bin": true }, - "eser@4.1.0": { - "integrity": "sha512-YZmNzzpmpiTM3nh7JebHoVq0lq+5NjbgDxd5VU0Iyk2GCrQEXRom6mv5m+CT7u3Ru7ugFJdHatI0bAGPmDB3xg==", - "dependencies": [ - "@tailwindcss/oxide", - "lightningcss", - "tailwindcss" - ], - "bin": true - }, "fast-content-type-parse@3.0.0": { "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==" }, @@ -1353,8 +1349,8 @@ "react@19.2.4": { "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==" }, - "rolldown@1.0.0-rc.6": { - "integrity": "sha512-B8vFPV1ADyegoYfhg+E7RAucYKv0xdVlwYYsIJgfPNeiSxZGWNxts9RqhyGzC11ULK/VaeXyKezGCwpMiH8Ktw==", + "rolldown@1.0.0-rc.9": { + "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==", "dependencies": [ "@oxc-project/types", "@rolldown/pluginutils" @@ -1367,6 +1363,8 @@ "@rolldown/binding-linux-arm-gnueabihf", "@rolldown/binding-linux-arm64-gnu", "@rolldown/binding-linux-arm64-musl", + "@rolldown/binding-linux-ppc64-gnu", + "@rolldown/binding-linux-s390x-gnu", "@rolldown/binding-linux-x64-gnu", "@rolldown/binding-linux-x64-musl", "@rolldown/binding-openharmony-arm64", @@ -1812,6 +1810,7 @@ ], "packageJson": { "dependencies": [ + "npm:@jsr/std__assert@^1.0.16", "npm:@jsr/std__cli@^1.0.25", "npm:@jsr/std__fmt@^1.0.8", "npm:esbuild@~0.27.3" @@ -1936,6 +1935,24 @@ ] } }, + "pkg/@eser/formats": { + "dependencies": [ + "jsr:@std/assert@^1.0.16", + "jsr:@std/csv@^1.0.6", + "jsr:@std/testing@^1.0.16", + "jsr:@std/toml@^1.0.11", + "jsr:@std/yaml@^1.0.10" + ], + "packageJson": { + "dependencies": [ + "npm:@jsr/std__assert@^1.0.16", + "npm:@jsr/std__csv@^1.0.6", + "npm:@jsr/std__testing@^1.0.16", + "npm:@jsr/std__toml@^1.0.11", + "npm:@jsr/std__yaml@^1.0.10" + ] + } + }, "pkg/@eser/fp": { "packageJson": { "dependencies": [ @@ -2061,6 +2078,13 @@ ] } }, + "pkg/@eser/registry": { + "packageJson": { + "dependencies": [ + "npm:@jsr/std__assert@^1.0.16" + ] + } + }, "pkg/@eser/shell": { "dependencies": [ "jsr:@std/cli@^1.0.25" @@ -2088,43 +2112,38 @@ ] } }, - "pkg/@eser/testing": { + "pkg/@eser/streams": { "dependencies": [ - "jsr:@std/assert@^1.0.16" + "jsr:@std/assert@^1.0.16", + "jsr:@std/testing@^1.0.16" ], "packageJson": { "dependencies": [ - "npm:@jsr/std__assert@^1.0.16" + "npm:@jsr/std__assert@^1.0.16", + "npm:@jsr/std__testing@^1.0.16" ] } }, - "pkg/@eser/workflows": { + "pkg/@eser/testing": { "dependencies": [ - "jsr:@std/assert@^1.0.16", - "jsr:@std/cli@^1.0.25", - "jsr:@std/yaml@^1.0.10" + "jsr:@std/assert@^1.0.16" ], "packageJson": { "dependencies": [ - "npm:@jsr/std__cli@^1.0.25", - "npm:@jsr/std__yaml@^1.0.10" + "npm:@jsr/std__assert@^1.0.16" ] } }, - "pkg/@eser/writer": { + "pkg/@eser/workflows": { "dependencies": [ "jsr:@std/assert@^1.0.16", - "jsr:@std/csv@^1.0.6", - "jsr:@std/testing@^1.0.16", - "jsr:@std/toml@^1.0.11", + "jsr:@std/cli@^1.0.25", "jsr:@std/yaml@^1.0.10" ], "packageJson": { "dependencies": [ "npm:@jsr/std__assert@^1.0.16", - "npm:@jsr/std__csv@^1.0.6", - "npm:@jsr/std__testing@^1.0.16", - "npm:@jsr/std__toml@^1.0.11", + "npm:@jsr/std__cli@^1.0.25", "npm:@jsr/std__yaml@^1.0.10" ] } diff --git a/etc/registry/eser-registry.json b/etc/registry/eser-registry.json new file mode 100644 index 000000000..c668840b3 --- /dev/null +++ b/etc/registry/eser-registry.json @@ -0,0 +1,598 @@ +{ + "$schema": "https://eser.live/registry/v1.json", + "name": "eser", + "description": "Eser Ozvataf's personal development ecosystem", + "author": "Eser Ozvataf", + "registryUrl": "https://raw.githubusercontent.com/eser/stack/main/etc/registry", + "recipes": [ + { + "name": "library-pkg", + "description": "Deno library package with tests and README", + "language": "typescript", + "scale": "project", + "tags": ["deno", "library", "typescript", "jsr"], + "files": [ + { "source": "recipes/library-pkg/mod.ts", "target": "mod.ts" }, + { + "source": "recipes/library-pkg/mod.test.ts", + "target": "mod.test.ts" + }, + { "source": "recipes/library-pkg/deno.json", "target": "deno.json" }, + { "source": "recipes/library-pkg/README.md", "target": "README.md" } + ] + }, + { + "name": "fp-pipe", + "description": "Functional pipe and compose utilities", + "language": "typescript", + "scale": "utility", + "tags": ["fp", "functional", "pipe", "compose"], + "files": [ + { "source": "recipes/fp-pipe/pipe.ts", "target": "lib/fp/pipe.ts" } + ], + "dependencies": { + "jsr": ["jsr:@eser/fp@^4.1.0"] + } + }, + { + "name": "laroux-app", + "description": "Laroux.js web application with SSR and React", + "language": "typescript", + "scale": "project", + "tags": ["laroux", "react", "ssr", "web"], + "variables": [ + { + "name": "project_name", + "description": "Project name", + "default": "my-laroux-app" + } + ], + "files": [ + { "source": "recipes/laroux-app/.gitignore", "target": ".gitignore" }, + { "source": "recipes/laroux-app/.npmrc", "target": ".npmrc" }, + { + "source": "recipes/laroux-app/laroux.config.ts", + "target": "laroux.config.ts" + }, + { + "source": "recipes/laroux-app/package.json", + "target": "package.json" + }, + { + "source": "recipes/laroux-app/tsconfig.json", + "target": "tsconfig.json" + }, + { + "source": "recipes/laroux-app/public/favicon.svg", + "target": "public/favicon.svg" + }, + { + "source": "recipes/laroux-app/public/llms.txt", + "target": "public/llms.txt" + }, + { + "source": "recipes/laroux-app/public/robots.txt", + "target": "public/robots.txt" + }, + { + "source": "recipes/laroux-app/src/app/error.tsx", + "target": "src/app/error.tsx" + }, + { + "source": "recipes/laroux-app/src/app/layout.tsx", + "target": "src/app/layout.tsx" + }, + { + "source": "recipes/laroux-app/src/app/not-found.tsx", + "target": "src/app/not-found.tsx" + }, + { + "source": "recipes/laroux-app/src/app/routes/home/page.tsx", + "target": "src/app/routes/home/page.tsx" + }, + { + "source": "recipes/laroux-app/src/app/routes/index.ts", + "target": "src/app/routes/index.ts" + }, + { + "source": "recipes/laroux-app/src/app/styles/global.css", + "target": "src/app/styles/global.css" + } + ], + "dependencies": { + "npm": ["@eser/laroux", "@eser/laroux-server", "@eser/laroux-react"] + } + }, + { + "name": "go-service", + "description": "Go microservice with hexagonal architecture", + "language": "go", + "scale": "project", + "tags": ["go", "hexagonal", "microservice", "api"], + "variables": [ + { + "name": "module_name", + "description": "Go module path", + "default": "github.com/user/service" + } + ], + "files": [ + { + "source": "recipes/go-service/cmd/serve/main.go", + "target": "cmd/serve/main.go" + }, + { + "source": "recipes/go-service/pkg/api/adapters/appcontext/appcontext.go", + "target": "pkg/api/adapters/appcontext/appcontext.go" + }, + { "source": "recipes/go-service/Makefile", "target": "Makefile" }, + { "source": "recipes/go-service/README.md", "target": "README.md" }, + { + "source": "recipes/go-service/go.mod.tmpl", + "target": "go.mod.tmpl" + } + ] + }, + { + "name": "cf-workers-app", + "description": "Cloudflare Workers application with Vitest", + "language": "typescript", + "scale": "project", + "tags": ["cloudflare", "workers", "edge", "serverless"], + "files": [ + { + "source": "recipes/cf-workers-app/.gitignore", + "target": ".gitignore" + }, + { "source": "recipes/cf-workers-app/.npmrc", "target": ".npmrc" }, + { + "source": "recipes/cf-workers-app/.prettierrc", + "target": ".prettierrc" + }, + { + "source": "recipes/cf-workers-app/package.json", + "target": "package.json" + }, + { + "source": "recipes/cf-workers-app/src/index.ts", + "target": "src/index.ts" + }, + { + "source": "recipes/cf-workers-app/test/index.spec.ts", + "target": "test/index.spec.ts" + }, + { + "source": "recipes/cf-workers-app/test/tsconfig.json", + "target": "test/tsconfig.json" + }, + { + "source": "recipes/cf-workers-app/tsconfig.json", + "target": "tsconfig.json" + }, + { + "source": "recipes/cf-workers-app/vitest.config.mts", + "target": "vitest.config.mts" + }, + { + "source": "recipes/cf-workers-app/worker-configuration.d.ts", + "target": "worker-configuration.d.ts" + }, + { + "source": "recipes/cf-workers-app/wrangler.toml", + "target": "wrangler.toml" + } + ], + "dependencies": { + "npm": ["@cloudflare/workers-types", "wrangler"] + } + }, + { + "name": "vite-app", + "description": "React + Vite single-page application", + "language": "typescript", + "scale": "project", + "tags": ["react", "vite", "spa", "frontend"], + "files": [ + { + "source": "recipes/vite-app/.eslintrc.cjs", + "target": ".eslintrc.cjs" + }, + { "source": "recipes/vite-app/.gitignore", "target": ".gitignore" }, + { "source": "recipes/vite-app/README.md", "target": "README.md" }, + { "source": "recipes/vite-app/index.html", "target": "index.html" }, + { + "source": "recipes/vite-app/package.json", + "target": "package.json" + }, + { + "source": "recipes/vite-app/public/vite.svg", + "target": "public/vite.svg" + }, + { "source": "recipes/vite-app/src/app.css", "target": "src/app.css" }, + { "source": "recipes/vite-app/src/app.tsx", "target": "src/app.tsx" }, + { + "source": "recipes/vite-app/src/assets/react.svg", + "target": "src/assets/react.svg" + }, + { + "source": "recipes/vite-app/src/index.css", + "target": "src/index.css" + }, + { + "source": "recipes/vite-app/src/main.tsx", + "target": "src/main.tsx" + }, + { + "source": "recipes/vite-app/src/vite-env.d.ts", + "target": "src/vite-env.d.ts" + }, + { + "source": "recipes/vite-app/tsconfig.app.json", + "target": "tsconfig.app.json" + }, + { + "source": "recipes/vite-app/tsconfig.json", + "target": "tsconfig.json" + }, + { + "source": "recipes/vite-app/tsconfig.node.json", + "target": "tsconfig.node.json" + }, + { + "source": "recipes/vite-app/vite.config.ts", + "target": "vite.config.ts" + } + ], + "dependencies": { + "npm": ["react", "react-dom", "vite", "@vitejs/plugin-react"] + } + }, + { + "name": "cool-lime-app", + "description": "Cool Lime framework application", + "language": "typescript", + "scale": "project", + "tags": ["lime", "deno", "web"], + "files": [ + { + "source": "recipes/cool-lime-app/build.ts", + "target": "build.ts" + }, + { "source": "recipes/cool-lime-app/main.ts", "target": "main.ts" }, + { + "source": "recipes/cool-lime-app/manifest.jsonc", + "target": "manifest.jsonc" + }, + { + "source": "recipes/cool-lime-app/manifest.yaml", + "target": "manifest.yaml" + }, + { + "source": "recipes/cool-lime-app/pkg/app/mod.tsx", + "target": "pkg/app/mod.tsx" + } + ] + }, + { + "name": "jsx-runtime-app", + "description": "JSX server-side rendering application", + "language": "typescript", + "scale": "project", + "tags": ["jsx", "ssr", "typescript"], + "files": [ + { "source": "recipes/jsx-runtime-app/.npmrc", "target": ".npmrc" }, + { + "source": "recipes/jsx-runtime-app/package.json", + "target": "package.json" + }, + { + "source": "recipes/jsx-runtime-app/root.test.tsx", + "target": "root.test.tsx" + }, + { + "source": "recipes/jsx-runtime-app/root.tsx", + "target": "root.tsx" + }, + { + "source": "recipes/jsx-runtime-app/tsconfig.json", + "target": "tsconfig.json" + } + ] + }, + { + "name": "vanilla-app", + "description": "Minimal TypeScript application", + "language": "typescript", + "scale": "project", + "tags": ["minimal", "typescript"], + "files": [ + { "source": "recipes/vanilla-app/main.ts", "target": "main.ts" }, + { + "source": "recipes/vanilla-app/package.json", + "target": "package.json" + } + ] + }, + { + "name": "ajan-lib", + "description": "Ajan core library utilities", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "core"], + "files": [ + { + "source": "lib/", + "target": "pkg/ajan/lib", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-results", + "description": "Ajan result type utilities", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "results"], + "requires": ["ajan-lib"], + "files": [ + { + "source": "results/", + "target": "pkg/ajan/results", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-types", + "description": "Ajan shared type definitions", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "types"], + "files": [ + { + "source": "types/", + "target": "pkg/ajan/types", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-di", + "description": "Ajan dependency injection container", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "di", "dependency-injection"], + "files": [ + { + "source": "di/", + "target": "pkg/ajan/di", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-configfx", + "description": "Ajan configuration management", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "config"], + "requires": ["ajan-lib"], + "files": [ + { + "source": "configfx/", + "target": "pkg/ajan/configfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-connfx", + "description": "Ajan database connection management", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "database", "connections"], + "requires": ["ajan-configfx"], + "files": [ + { + "source": "connfx/", + "target": "pkg/ajan/connfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-datafx", + "description": "Ajan data access layer", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "data", "repository"], + "requires": ["ajan-configfx", "ajan-connfx"], + "files": [ + { + "source": "datafx/", + "target": "pkg/ajan/datafx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-eventsfx", + "description": "Ajan event system", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "events", "pubsub"], + "requires": ["ajan-configfx"], + "files": [ + { + "source": "eventsfx/", + "target": "pkg/ajan/eventsfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-logfx", + "description": "Ajan structured logging", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "logging"], + "requires": ["ajan-configfx"], + "files": [ + { + "source": "logfx/", + "target": "pkg/ajan/logfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-metricsfx", + "description": "Ajan metrics and observability", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "metrics", "observability"], + "requires": ["ajan-configfx"], + "files": [ + { + "source": "metricsfx/", + "target": "pkg/ajan/metricsfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-tracesfx", + "description": "Ajan distributed tracing", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "tracing", "opentelemetry"], + "requires": ["ajan-configfx"], + "files": [ + { + "source": "tracesfx/", + "target": "pkg/ajan/tracesfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-httpfx", + "description": "Ajan HTTP server framework", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "http", "server"], + "requires": ["ajan-lib", "ajan-configfx", "ajan-results"], + "files": [ + { + "source": "httpfx/", + "target": "pkg/ajan/httpfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-grpcfx", + "description": "Ajan gRPC server framework", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "grpc"], + "requires": ["ajan-configfx", "ajan-connfx"], + "files": [ + { + "source": "grpcfx/", + "target": "pkg/ajan/grpcfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-httpclient", + "description": "Ajan HTTP client with retry and timeout", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "http", "client"], + "requires": ["ajan-configfx"], + "files": [ + { + "source": "httpclient/", + "target": "pkg/ajan/httpclient", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + }, + { + "name": "ajan-processfx", + "description": "Ajan process lifecycle management", + "language": "go", + "scale": "utility", + "tags": ["go", "ajan", "process", "lifecycle"], + "files": [ + { + "source": "processfx/", + "target": "pkg/ajan/processfx", + "kind": "folder", + "provider": "github" + } + ], + "dependencies": { + "go": ["github.com/eser/ajan"] + } + } + ] +} diff --git a/etc/templates/cf-workers-app/.gitignore b/etc/registry/recipes/cf-workers-app/.gitignore similarity index 100% rename from etc/templates/cf-workers-app/.gitignore rename to etc/registry/recipes/cf-workers-app/.gitignore diff --git a/etc/templates/cf-workers-app/.npmrc b/etc/registry/recipes/cf-workers-app/.npmrc similarity index 100% rename from etc/templates/cf-workers-app/.npmrc rename to etc/registry/recipes/cf-workers-app/.npmrc diff --git a/etc/templates/cf-workers-app/.prettierrc b/etc/registry/recipes/cf-workers-app/.prettierrc similarity index 100% rename from etc/templates/cf-workers-app/.prettierrc rename to etc/registry/recipes/cf-workers-app/.prettierrc diff --git a/etc/templates/cf-workers-app/package.json b/etc/registry/recipes/cf-workers-app/package.json similarity index 100% rename from etc/templates/cf-workers-app/package.json rename to etc/registry/recipes/cf-workers-app/package.json diff --git a/etc/templates/cf-workers-app/src/index.ts b/etc/registry/recipes/cf-workers-app/src/index.ts similarity index 100% rename from etc/templates/cf-workers-app/src/index.ts rename to etc/registry/recipes/cf-workers-app/src/index.ts diff --git a/etc/templates/cf-workers-app/test/index.spec.ts b/etc/registry/recipes/cf-workers-app/test/index.spec.ts similarity index 100% rename from etc/templates/cf-workers-app/test/index.spec.ts rename to etc/registry/recipes/cf-workers-app/test/index.spec.ts diff --git a/etc/templates/cf-workers-app/test/tsconfig.json b/etc/registry/recipes/cf-workers-app/test/tsconfig.json similarity index 100% rename from etc/templates/cf-workers-app/test/tsconfig.json rename to etc/registry/recipes/cf-workers-app/test/tsconfig.json diff --git a/etc/templates/cf-workers-app/tsconfig.json b/etc/registry/recipes/cf-workers-app/tsconfig.json similarity index 100% rename from etc/templates/cf-workers-app/tsconfig.json rename to etc/registry/recipes/cf-workers-app/tsconfig.json diff --git a/etc/templates/cf-workers-app/vitest.config.mts b/etc/registry/recipes/cf-workers-app/vitest.config.mts similarity index 100% rename from etc/templates/cf-workers-app/vitest.config.mts rename to etc/registry/recipes/cf-workers-app/vitest.config.mts diff --git a/etc/templates/cf-workers-app/worker-configuration.d.ts b/etc/registry/recipes/cf-workers-app/worker-configuration.d.ts similarity index 100% rename from etc/templates/cf-workers-app/worker-configuration.d.ts rename to etc/registry/recipes/cf-workers-app/worker-configuration.d.ts diff --git a/etc/templates/cf-workers-app/wrangler.toml b/etc/registry/recipes/cf-workers-app/wrangler.toml similarity index 100% rename from etc/templates/cf-workers-app/wrangler.toml rename to etc/registry/recipes/cf-workers-app/wrangler.toml diff --git a/etc/templates/cool-lime-app/build.ts b/etc/registry/recipes/cool-lime-app/build.ts similarity index 100% rename from etc/templates/cool-lime-app/build.ts rename to etc/registry/recipes/cool-lime-app/build.ts diff --git a/etc/templates/cool-lime-app/main.ts b/etc/registry/recipes/cool-lime-app/main.ts similarity index 100% rename from etc/templates/cool-lime-app/main.ts rename to etc/registry/recipes/cool-lime-app/main.ts diff --git a/etc/templates/cool-lime-app/manifest.jsonc b/etc/registry/recipes/cool-lime-app/manifest.jsonc similarity index 100% rename from etc/templates/cool-lime-app/manifest.jsonc rename to etc/registry/recipes/cool-lime-app/manifest.jsonc diff --git a/etc/templates/cool-lime-app/manifest.yaml b/etc/registry/recipes/cool-lime-app/manifest.yaml similarity index 100% rename from etc/templates/cool-lime-app/manifest.yaml rename to etc/registry/recipes/cool-lime-app/manifest.yaml diff --git a/etc/templates/cool-lime-app/pkg/app/mod.tsx b/etc/registry/recipes/cool-lime-app/pkg/app/mod.tsx similarity index 100% rename from etc/templates/cool-lime-app/pkg/app/mod.tsx rename to etc/registry/recipes/cool-lime-app/pkg/app/mod.tsx diff --git a/etc/registry/recipes/fp-pipe/pipe.ts b/etc/registry/recipes/fp-pipe/pipe.ts new file mode 100644 index 000000000..917bf5652 --- /dev/null +++ b/etc/registry/recipes/fp-pipe/pipe.ts @@ -0,0 +1,50 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +/** + * Functional pipe utility — compose functions left to right. + * + * @module + */ + +type UnaryFn = (input: T) => R; + +/** + * Pipe a value through a sequence of functions, left to right. + * + * ```typescript + * const result = pipe( + * 5, + * (x) => x * 2, + * (x) => x + 1, + * (x) => `Result: ${x}`, + * ); + * // result === "Result: 11" + * ``` + */ +const pipe = ( + initial: T, + ...fns: ReadonlyArray> +): unknown => { + return fns.reduce((acc, fn) => fn(acc), initial as unknown); +}; + +/** + * Create a composed function from a sequence of functions (left to right). + * + * ```typescript + * const transform = compose( + * (x: number) => x * 2, + * (x: number) => x + 1, + * ); + * transform(5); // 11 + * ``` + */ +const compose = ( + ...fns: ReadonlyArray> +): UnaryFn => { + return (input: T) => pipe(input, ...fns); +}; + +export { compose, pipe }; + +export type { UnaryFn }; diff --git a/etc/templates/go-service/Makefile b/etc/registry/recipes/go-service/Makefile similarity index 100% rename from etc/templates/go-service/Makefile rename to etc/registry/recipes/go-service/Makefile diff --git a/etc/templates/go-service/README.md b/etc/registry/recipes/go-service/README.md similarity index 100% rename from etc/templates/go-service/README.md rename to etc/registry/recipes/go-service/README.md diff --git a/etc/templates/go-service/cmd/serve/main.go b/etc/registry/recipes/go-service/cmd/serve/main.go similarity index 100% rename from etc/templates/go-service/cmd/serve/main.go rename to etc/registry/recipes/go-service/cmd/serve/main.go diff --git a/etc/templates/go-service/go.mod.tmpl b/etc/registry/recipes/go-service/go.mod.tmpl similarity index 100% rename from etc/templates/go-service/go.mod.tmpl rename to etc/registry/recipes/go-service/go.mod.tmpl diff --git a/etc/templates/go-service/pkg/api/adapters/appcontext/appcontext.go b/etc/registry/recipes/go-service/pkg/api/adapters/appcontext/appcontext.go similarity index 100% rename from etc/templates/go-service/pkg/api/adapters/appcontext/appcontext.go rename to etc/registry/recipes/go-service/pkg/api/adapters/appcontext/appcontext.go diff --git a/etc/templates/jsx-runtime-app/.npmrc b/etc/registry/recipes/jsx-runtime-app/.npmrc similarity index 100% rename from etc/templates/jsx-runtime-app/.npmrc rename to etc/registry/recipes/jsx-runtime-app/.npmrc diff --git a/etc/templates/jsx-runtime-app/package.json b/etc/registry/recipes/jsx-runtime-app/package.json similarity index 100% rename from etc/templates/jsx-runtime-app/package.json rename to etc/registry/recipes/jsx-runtime-app/package.json diff --git a/etc/templates/jsx-runtime-app/root.test.tsx b/etc/registry/recipes/jsx-runtime-app/root.test.tsx similarity index 100% rename from etc/templates/jsx-runtime-app/root.test.tsx rename to etc/registry/recipes/jsx-runtime-app/root.test.tsx diff --git a/etc/templates/jsx-runtime-app/root.tsx b/etc/registry/recipes/jsx-runtime-app/root.tsx similarity index 100% rename from etc/templates/jsx-runtime-app/root.tsx rename to etc/registry/recipes/jsx-runtime-app/root.tsx diff --git a/etc/templates/jsx-runtime-app/tsconfig.json b/etc/registry/recipes/jsx-runtime-app/tsconfig.json similarity index 100% rename from etc/templates/jsx-runtime-app/tsconfig.json rename to etc/registry/recipes/jsx-runtime-app/tsconfig.json diff --git a/etc/templates/laroux-app/.gitignore b/etc/registry/recipes/laroux-app/.gitignore similarity index 100% rename from etc/templates/laroux-app/.gitignore rename to etc/registry/recipes/laroux-app/.gitignore diff --git a/etc/templates/laroux-app/.npmrc b/etc/registry/recipes/laroux-app/.npmrc similarity index 100% rename from etc/templates/laroux-app/.npmrc rename to etc/registry/recipes/laroux-app/.npmrc diff --git a/etc/templates/laroux-app/laroux.config.ts b/etc/registry/recipes/laroux-app/laroux.config.ts similarity index 100% rename from etc/templates/laroux-app/laroux.config.ts rename to etc/registry/recipes/laroux-app/laroux.config.ts diff --git a/etc/templates/laroux-app/package.json b/etc/registry/recipes/laroux-app/package.json similarity index 100% rename from etc/templates/laroux-app/package.json rename to etc/registry/recipes/laroux-app/package.json diff --git a/etc/templates/laroux-app/public/favicon.svg b/etc/registry/recipes/laroux-app/public/favicon.svg similarity index 100% rename from etc/templates/laroux-app/public/favicon.svg rename to etc/registry/recipes/laroux-app/public/favicon.svg diff --git a/etc/templates/laroux-app/public/llms.txt b/etc/registry/recipes/laroux-app/public/llms.txt similarity index 100% rename from etc/templates/laroux-app/public/llms.txt rename to etc/registry/recipes/laroux-app/public/llms.txt diff --git a/etc/templates/laroux-app/public/robots.txt b/etc/registry/recipes/laroux-app/public/robots.txt similarity index 100% rename from etc/templates/laroux-app/public/robots.txt rename to etc/registry/recipes/laroux-app/public/robots.txt diff --git a/etc/templates/laroux-app/src/app/error.tsx b/etc/registry/recipes/laroux-app/src/app/error.tsx similarity index 100% rename from etc/templates/laroux-app/src/app/error.tsx rename to etc/registry/recipes/laroux-app/src/app/error.tsx diff --git a/etc/templates/laroux-app/src/app/layout.tsx b/etc/registry/recipes/laroux-app/src/app/layout.tsx similarity index 100% rename from etc/templates/laroux-app/src/app/layout.tsx rename to etc/registry/recipes/laroux-app/src/app/layout.tsx diff --git a/etc/templates/laroux-app/src/app/not-found.tsx b/etc/registry/recipes/laroux-app/src/app/not-found.tsx similarity index 100% rename from etc/templates/laroux-app/src/app/not-found.tsx rename to etc/registry/recipes/laroux-app/src/app/not-found.tsx diff --git a/etc/templates/laroux-app/src/app/routes/home/page.tsx b/etc/registry/recipes/laroux-app/src/app/routes/home/page.tsx similarity index 100% rename from etc/templates/laroux-app/src/app/routes/home/page.tsx rename to etc/registry/recipes/laroux-app/src/app/routes/home/page.tsx diff --git a/etc/templates/laroux-app/src/app/routes/index.ts b/etc/registry/recipes/laroux-app/src/app/routes/index.ts similarity index 100% rename from etc/templates/laroux-app/src/app/routes/index.ts rename to etc/registry/recipes/laroux-app/src/app/routes/index.ts diff --git a/etc/templates/laroux-app/src/app/styles/global.css b/etc/registry/recipes/laroux-app/src/app/styles/global.css similarity index 100% rename from etc/templates/laroux-app/src/app/styles/global.css rename to etc/registry/recipes/laroux-app/src/app/styles/global.css diff --git a/etc/templates/laroux-app/tsconfig.json b/etc/registry/recipes/laroux-app/tsconfig.json similarity index 100% rename from etc/templates/laroux-app/tsconfig.json rename to etc/registry/recipes/laroux-app/tsconfig.json diff --git a/etc/registry/recipes/library-pkg/README.md b/etc/registry/recipes/library-pkg/README.md new file mode 100644 index 000000000..d8accc65d --- /dev/null +++ b/etc/registry/recipes/library-pkg/README.md @@ -0,0 +1,15 @@ +# @scope/package-name + +A Deno library package. + +## Usage + +```typescript +import * as pkg from "@scope/package-name"; + +pkg.greet("World"); // "Hello, World!" +``` + +## License + +Apache-2.0 diff --git a/etc/registry/recipes/library-pkg/deno.json b/etc/registry/recipes/library-pkg/deno.json new file mode 100644 index 000000000..7c3360b70 --- /dev/null +++ b/etc/registry/recipes/library-pkg/deno.json @@ -0,0 +1,9 @@ +{ + "name": "@scope/package-name", + "version": "0.1.0", + "exports": "./mod.ts", + "imports": { + "@std/assert": "jsr:@std/assert@^1.0.16", + "@std/testing": "jsr:@std/testing@^1.0.16" + } +} diff --git a/etc/registry/recipes/library-pkg/mod.test.ts b/etc/registry/recipes/library-pkg/mod.test.ts new file mode 100644 index 000000000..9ae7fd63f --- /dev/null +++ b/etc/registry/recipes/library-pkg/mod.test.ts @@ -0,0 +1,10 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +import * as assert from "@std/assert"; +import * as mod from "./mod.ts"; + +Deno.test("greet returns greeting message", () => { + const result = mod.greet("World"); + + assert.assertEquals(result, "Hello, World!"); +}); diff --git a/etc/templates/library-pkg/mod.ts b/etc/registry/recipes/library-pkg/mod.ts similarity index 50% rename from etc/templates/library-pkg/mod.ts rename to etc/registry/recipes/library-pkg/mod.ts index 810dc97d1..3d7cefe56 100644 --- a/etc/templates/library-pkg/mod.ts +++ b/etc/registry/recipes/library-pkg/mod.ts @@ -1,8 +1,13 @@ // Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. /** + * Main module entry point. + * * @module - * {{PACKAGE_DESCRIPTION}} */ -export {}; +const greet = (name: string): string => { + return `Hello, ${name}!`; +}; + +export { greet }; diff --git a/etc/templates/vanilla-app/main.ts b/etc/registry/recipes/vanilla-app/main.ts similarity index 100% rename from etc/templates/vanilla-app/main.ts rename to etc/registry/recipes/vanilla-app/main.ts diff --git a/etc/templates/vanilla-app/package.json b/etc/registry/recipes/vanilla-app/package.json similarity index 100% rename from etc/templates/vanilla-app/package.json rename to etc/registry/recipes/vanilla-app/package.json diff --git a/etc/templates/vite-app/.eslintrc.cjs b/etc/registry/recipes/vite-app/.eslintrc.cjs similarity index 100% rename from etc/templates/vite-app/.eslintrc.cjs rename to etc/registry/recipes/vite-app/.eslintrc.cjs diff --git a/etc/templates/vite-app/.gitignore b/etc/registry/recipes/vite-app/.gitignore similarity index 100% rename from etc/templates/vite-app/.gitignore rename to etc/registry/recipes/vite-app/.gitignore diff --git a/etc/templates/vite-app/README.md b/etc/registry/recipes/vite-app/README.md similarity index 100% rename from etc/templates/vite-app/README.md rename to etc/registry/recipes/vite-app/README.md diff --git a/etc/templates/vite-app/index.html b/etc/registry/recipes/vite-app/index.html similarity index 100% rename from etc/templates/vite-app/index.html rename to etc/registry/recipes/vite-app/index.html diff --git a/etc/templates/vite-app/package.json b/etc/registry/recipes/vite-app/package.json similarity index 100% rename from etc/templates/vite-app/package.json rename to etc/registry/recipes/vite-app/package.json diff --git a/etc/templates/vite-app/public/vite.svg b/etc/registry/recipes/vite-app/public/vite.svg similarity index 100% rename from etc/templates/vite-app/public/vite.svg rename to etc/registry/recipes/vite-app/public/vite.svg diff --git a/etc/templates/vite-app/src/app.css b/etc/registry/recipes/vite-app/src/app.css similarity index 100% rename from etc/templates/vite-app/src/app.css rename to etc/registry/recipes/vite-app/src/app.css diff --git a/etc/templates/vite-app/src/app.tsx b/etc/registry/recipes/vite-app/src/app.tsx similarity index 100% rename from etc/templates/vite-app/src/app.tsx rename to etc/registry/recipes/vite-app/src/app.tsx diff --git a/etc/templates/vite-app/src/assets/react.svg b/etc/registry/recipes/vite-app/src/assets/react.svg similarity index 100% rename from etc/templates/vite-app/src/assets/react.svg rename to etc/registry/recipes/vite-app/src/assets/react.svg diff --git a/etc/templates/vite-app/src/index.css b/etc/registry/recipes/vite-app/src/index.css similarity index 100% rename from etc/templates/vite-app/src/index.css rename to etc/registry/recipes/vite-app/src/index.css diff --git a/etc/templates/vite-app/src/main.tsx b/etc/registry/recipes/vite-app/src/main.tsx similarity index 100% rename from etc/templates/vite-app/src/main.tsx rename to etc/registry/recipes/vite-app/src/main.tsx diff --git a/etc/templates/vite-app/src/vite-env.d.ts b/etc/registry/recipes/vite-app/src/vite-env.d.ts similarity index 100% rename from etc/templates/vite-app/src/vite-env.d.ts rename to etc/registry/recipes/vite-app/src/vite-env.d.ts diff --git a/etc/templates/vite-app/tsconfig.app.json b/etc/registry/recipes/vite-app/tsconfig.app.json similarity index 100% rename from etc/templates/vite-app/tsconfig.app.json rename to etc/registry/recipes/vite-app/tsconfig.app.json diff --git a/etc/templates/vite-app/tsconfig.json b/etc/registry/recipes/vite-app/tsconfig.json similarity index 100% rename from etc/templates/vite-app/tsconfig.json rename to etc/registry/recipes/vite-app/tsconfig.json diff --git a/etc/templates/vite-app/tsconfig.node.json b/etc/registry/recipes/vite-app/tsconfig.node.json similarity index 100% rename from etc/templates/vite-app/tsconfig.node.json rename to etc/registry/recipes/vite-app/tsconfig.node.json diff --git a/etc/templates/vite-app/vite.config.ts b/etc/registry/recipes/vite-app/vite.config.ts similarity index 100% rename from etc/templates/vite-app/vite.config.ts rename to etc/registry/recipes/vite-app/vite.config.ts diff --git a/etc/templates/.gitkeep b/etc/templates/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/etc/templates/cf-workers-app/package-lock.json b/etc/templates/cf-workers-app/package-lock.json deleted file mode 100644 index c44f7383f..000000000 --- a/etc/templates/cf-workers-app/package-lock.json +++ /dev/null @@ -1,2830 +0,0 @@ -{ - "name": "cf-workers-app", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "cf-workers-app", - "version": "0.0.0", - "devDependencies": { - "@cloudflare/vitest-pool-workers": "^0.13.0", - "@cloudflare/workers-types": "^4.20260313.1", - "typescript": "^5.5.2", - "vitest": "^4.1.0", - "wrangler": "^4.73.0" - } - }, - "node_modules/@cloudflare/kv-asset-handler": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.2.tgz", - "integrity": "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==", - "dev": true, - "license": "MIT OR Apache-2.0", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@cloudflare/unenv-preset": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.15.0.tgz", - "integrity": "sha512-EGYmJaGZKWl+X8tXxcnx4v2bOZSjQeNI5dWFeXivgX9+YCT69AkzHHwlNbVpqtEUTbew8eQurpyOpeN8fg00nw==", - "dev": true, - "license": "MIT OR Apache-2.0", - "peerDependencies": { - "unenv": "2.0.0-rc.24", - "workerd": "1.20260301.1 || ~1.20260302.1 || ~1.20260303.1 || ~1.20260304.1 || >1.20260305.0 <2.0.0-0" - }, - "peerDependenciesMeta": { - "workerd": { - "optional": true - } - } - }, - "node_modules/@cloudflare/vitest-pool-workers": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.13.0.tgz", - "integrity": "sha512-Q20e4+EOhyl3JZ6i8Xzg6N6KKKvGFKaWXiFsehfi291RA6bxLJQDftYWzGlldX1iU2NBZkz9z7GEPCS2gzR6PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cjs-module-lexer": "^1.2.3", - "esbuild": "0.27.3", - "miniflare": "4.20260312.0", - "wrangler": "4.73.0", - "zod": "^3.25.76" - }, - "peerDependencies": { - "@vitest/runner": "^4.1.0", - "@vitest/snapshot": "^4.1.0", - "vitest": "^4.1.0" - } - }, - "node_modules/@cloudflare/workerd-darwin-64": { - "version": "1.20260312.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260312.1.tgz", - "integrity": "sha512-HUAtDWaqUduS6yasV6+NgsK7qBpP1qGU49ow/Wb117IHjYp+PZPUGReDYocpB4GOMRoQlvdd4L487iFxzdARpw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/@cloudflare/workerd-darwin-arm64": { - "version": "1.20260312.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260312.1.tgz", - "integrity": "sha512-DOn7TPTHSxJYfi4m4NYga/j32wOTqvJf/pY4Txz5SDKWIZHSTXFyGz2K4B+thoPWLop/KZxGoyTv7db0mk/qyw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/@cloudflare/workerd-linux-64": { - "version": "1.20260312.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260312.1.tgz", - "integrity": "sha512-TdkIh3WzPXYHuvz7phAtFEEvAxvFd30tHrm4gsgpw0R0F5b8PtoM3hfL2uY7EcBBWVYUBtkY2ahDYFfufnXw/g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/@cloudflare/workerd-linux-arm64": { - "version": "1.20260312.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260312.1.tgz", - "integrity": "sha512-kNauZhL569Iy94t844OMwa1zP6zKFiL3xiJ4tGLS+TFTEfZ3pZsRH6lWWOtkXkjTyCmBEOog0HSEKjIV4oAffw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/@cloudflare/workerd-windows-64": { - "version": "1.20260312.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260312.1.tgz", - "integrity": "sha512-5dBrlSK+nMsZy5bYQpj8t9iiQNvCRlkm9GGvswJa9vVU/1BNO4BhJMlqOLWT24EmFyApZ+kaBiPJMV8847NDTg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/@cloudflare/workers-types": { - "version": "4.20260313.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20260313.1.tgz", - "integrity": "sha512-jMEeX3RKfOSVqqXRKr/ulgglcTloeMzSH3FdzIfqJHtvc12/ELKd5Ldsg8ZHahKX/4eRxYdw3kbzb8jLXbq/jQ==", - "dev": true, - "license": "MIT OR Apache-2.0" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@emnapi/core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", - "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", - "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/colour": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", - "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", - "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", - "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", - "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", - "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", - "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", - "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", - "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-riscv64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", - "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.7.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - } - }, - "node_modules/@oxc-project/runtime": { - "version": "0.115.0", - "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.115.0.tgz", - "integrity": "sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.115.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.115.0.tgz", - "integrity": "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/@poppinss/colors": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", - "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^4.1.5" - } - }, - "node_modules/@poppinss/dumper": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", - "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@poppinss/colors": "^4.1.5", - "@sindresorhus/is": "^7.0.2", - "supports-color": "^10.0.0" - } - }, - "node_modules/@poppinss/exception": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", - "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.9.tgz", - "integrity": "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.9.tgz", - "integrity": "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.9.tgz", - "integrity": "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.9.tgz", - "integrity": "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.9.tgz", - "integrity": "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.9.tgz", - "integrity": "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.9.tgz", - "integrity": "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.9.tgz", - "integrity": "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.9.tgz", - "integrity": "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.9.tgz", - "integrity": "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.9.tgz", - "integrity": "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.9.tgz", - "integrity": "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.9.tgz", - "integrity": "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.9.tgz", - "integrity": "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.9.tgz", - "integrity": "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.9.tgz", - "integrity": "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sindresorhus/is": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", - "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@speed-highlight/core": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.14.tgz", - "integrity": "sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vitest/expect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz", - "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.1.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.0", - "@vitest/utils": "4.1.0", - "chai": "^6.2.2", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz", - "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.1.0", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/pretty-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz", - "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz", - "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.1.0", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz", - "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.0", - "@vitest/utils": "4.1.0", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz", - "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz", - "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.0", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/blake3-wasm": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", - "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", - "dev": true, - "license": "MIT" - }, - "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", - "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/error-stack-parser-es": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", - "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/miniflare": { - "version": "4.20260312.0", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260312.0.tgz", - "integrity": "sha512-pieP2rfXynPT6VRINYaiHe/tfMJ4c5OIhqRlIdLF6iZ9g5xgpEmvimvIgMpgAdDJuFlrLcwDUi8MfAo2R6dt/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "0.8.1", - "sharp": "^0.34.5", - "undici": "7.18.2", - "workerd": "1.20260312.1", - "ws": "8.18.0", - "youch": "4.1.0-beta.10" - }, - "bin": { - "miniflare": "bootstrap.js" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT" - }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/rolldown": { - "version": "1.0.0-rc.9", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.9.tgz", - "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.115.0", - "@rolldown/pluginutils": "1.0.0-rc.9" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0-rc.9", - "@rolldown/binding-darwin-arm64": "1.0.0-rc.9", - "@rolldown/binding-darwin-x64": "1.0.0-rc.9", - "@rolldown/binding-freebsd-x64": "1.0.0-rc.9", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.9", - "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.9", - "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.9", - "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.9", - "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.9", - "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.9", - "@rolldown/binding-linux-x64-musl": "1.0.0-rc.9", - "@rolldown/binding-openharmony-arm64": "1.0.0-rc.9", - "@rolldown/binding-wasm32-wasi": "1.0.0-rc.9", - "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.9", - "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.9" - } - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", - "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.2", - "semver": "^7.7.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.5", - "@img/sharp-darwin-x64": "0.34.5", - "@img/sharp-libvips-darwin-arm64": "1.2.4", - "@img/sharp-libvips-darwin-x64": "1.2.4", - "@img/sharp-libvips-linux-arm": "1.2.4", - "@img/sharp-libvips-linux-arm64": "1.2.4", - "@img/sharp-libvips-linux-ppc64": "1.2.4", - "@img/sharp-libvips-linux-riscv64": "1.2.4", - "@img/sharp-libvips-linux-s390x": "1.2.4", - "@img/sharp-libvips-linux-x64": "1.2.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", - "@img/sharp-libvips-linuxmusl-x64": "1.2.4", - "@img/sharp-linux-arm": "0.34.5", - "@img/sharp-linux-arm64": "0.34.5", - "@img/sharp-linux-ppc64": "0.34.5", - "@img/sharp-linux-riscv64": "0.34.5", - "@img/sharp-linux-s390x": "0.34.5", - "@img/sharp-linux-x64": "0.34.5", - "@img/sharp-linuxmusl-arm64": "0.34.5", - "@img/sharp-linuxmusl-x64": "0.34.5", - "@img/sharp-wasm32": "0.34.5", - "@img/sharp-win32-arm64": "0.34.5", - "@img/sharp-win32-ia32": "0.34.5", - "@img/sharp-win32-x64": "0.34.5" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", - "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", - "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", - "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz", - "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/unenv": { - "version": "2.0.0-rc.24", - "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", - "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pathe": "^2.0.3" - } - }, - "node_modules/vite": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz", - "integrity": "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/runtime": "0.115.0", - "lightningcss": "^1.32.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.8", - "rolldown": "1.0.0-rc.9", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.0.0-alpha.31", - "esbuild": "^0.27.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz", - "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "4.1.0", - "@vitest/mocker": "4.1.0", - "@vitest/pretty-format": "4.1.0", - "@vitest/runner": "4.1.0", - "@vitest/snapshot": "4.1.0", - "@vitest/spy": "4.1.0", - "@vitest/utils": "4.1.0", - "es-module-lexer": "^2.0.0", - "expect-type": "^1.3.0", - "magic-string": "^0.30.21", - "obug": "^2.1.1", - "pathe": "^2.0.3", - "picomatch": "^4.0.3", - "std-env": "^4.0.0-rc.1", - "tinybench": "^2.9.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@opentelemetry/api": "^1.9.0", - "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.0", - "@vitest/browser-preview": "4.1.0", - "@vitest/browser-webdriverio": "4.1.0", - "@vitest/ui": "4.1.0", - "happy-dom": "*", - "jsdom": "*", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser-playwright": { - "optional": true - }, - "@vitest/browser-preview": { - "optional": true - }, - "@vitest/browser-webdriverio": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "vite": { - "optional": false - } - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/workerd": { - "version": "1.20260312.1", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260312.1.tgz", - "integrity": "sha512-nNpPkw9jaqo79B+iBCOiksx+N62xC+ETIfyzofUEdY3cSOHJg6oNnVSHm7vHevzVblfV76c8Gr0cXHEapYMBEg==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "bin": { - "workerd": "bin/workerd" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20260312.1", - "@cloudflare/workerd-darwin-arm64": "1.20260312.1", - "@cloudflare/workerd-linux-64": "1.20260312.1", - "@cloudflare/workerd-linux-arm64": "1.20260312.1", - "@cloudflare/workerd-windows-64": "1.20260312.1" - } - }, - "node_modules/wrangler": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.73.0.tgz", - "integrity": "sha512-VJXsqKDFCp6OtFEHXITSOR5kh95JOknwPY8m7RyQuWJQguSybJy43m4vhoCSt42prutTef7eeuw7L4V4xiynGw==", - "dev": true, - "license": "MIT OR Apache-2.0", - "dependencies": { - "@cloudflare/kv-asset-handler": "0.4.2", - "@cloudflare/unenv-preset": "2.15.0", - "blake3-wasm": "2.1.5", - "esbuild": "0.27.3", - "miniflare": "4.20260312.0", - "path-to-regexp": "6.3.0", - "unenv": "2.0.0-rc.24", - "workerd": "1.20260312.1" - }, - "bin": { - "wrangler": "bin/wrangler.js", - "wrangler2": "bin/wrangler.js" - }, - "engines": { - "node": ">=20.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@cloudflare/workers-types": "^4.20260312.1" - }, - "peerDependenciesMeta": { - "@cloudflare/workers-types": { - "optional": true - } - } - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/youch": { - "version": "4.1.0-beta.10", - "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", - "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@poppinss/colors": "^4.1.5", - "@poppinss/dumper": "^0.6.4", - "@speed-highlight/core": "^1.2.7", - "cookie": "^1.0.2", - "youch-core": "^0.3.3" - } - }, - "node_modules/youch-core": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", - "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@poppinss/exception": "^1.2.2", - "error-stack-parser-es": "^1.0.5" - } - }, - "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/etc/templates/go-service/pkg/api/business/.gitkeep b/etc/templates/go-service/pkg/api/business/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/etc/templates/laroux-app/deno.lock b/etc/templates/laroux-app/deno.lock deleted file mode 100644 index 536b811c2..000000000 --- a/etc/templates/laroux-app/deno.lock +++ /dev/null @@ -1,845 +0,0 @@ -{ - "version": "5", - "specifiers": { - "npm:@jsr/eser__laroux-react@^4.0.43": "4.0.43", - "npm:@jsr/eser__laroux-server@^4.0.43": "4.0.43_react@19.2.3", - "npm:@jsr/eser__laroux@^4.0.43": "4.0.43", - "npm:@jsr/eser__logging@^4.0.43": "4.0.43", - "npm:@types/react@^19.2.7": "19.2.7", - "npm:react-dom@^19.2.3": "19.2.3_react@19.2.3", - "npm:react@^19.2.3": "19.2.3", - "npm:tailwindcss@^4.1.18": "4.1.18" - }, - "npm": { - "@emnapi/core@1.8.1": { - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "dependencies": [ - "@emnapi/wasi-threads", - "tslib" - ] - }, - "@emnapi/runtime@1.8.1": { - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", - "dependencies": [ - "tslib" - ] - }, - "@emnapi/wasi-threads@1.1.0": { - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dependencies": [ - "tslib" - ] - }, - "@img/sharp-darwin-arm64@0.33.5": { - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", - "optionalDependencies": [ - "@img/sharp-libvips-darwin-arm64" - ], - "os": ["darwin"], - "cpu": ["arm64"] - }, - "@img/sharp-darwin-x64@0.33.5": { - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", - "optionalDependencies": [ - "@img/sharp-libvips-darwin-x64" - ], - "os": ["darwin"], - "cpu": ["x64"] - }, - "@img/sharp-libvips-darwin-arm64@1.0.4": { - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", - "os": ["darwin"], - "cpu": ["arm64"] - }, - "@img/sharp-libvips-darwin-x64@1.0.4": { - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", - "os": ["darwin"], - "cpu": ["x64"] - }, - "@img/sharp-libvips-linux-arm64@1.0.4": { - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@img/sharp-libvips-linux-arm@1.0.5": { - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", - "os": ["linux"], - "cpu": ["arm"] - }, - "@img/sharp-libvips-linux-s390x@1.0.4": { - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", - "os": ["linux"], - "cpu": ["s390x"] - }, - "@img/sharp-libvips-linux-x64@1.0.4": { - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": { - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@img/sharp-libvips-linuxmusl-x64@1.0.4": { - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@img/sharp-linux-arm64@0.33.5": { - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "optionalDependencies": [ - "@img/sharp-libvips-linux-arm64" - ], - "os": ["linux"], - "cpu": ["arm64"] - }, - "@img/sharp-linux-arm@0.33.5": { - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "optionalDependencies": [ - "@img/sharp-libvips-linux-arm" - ], - "os": ["linux"], - "cpu": ["arm"] - }, - "@img/sharp-linux-s390x@0.33.5": { - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", - "optionalDependencies": [ - "@img/sharp-libvips-linux-s390x" - ], - "os": ["linux"], - "cpu": ["s390x"] - }, - "@img/sharp-linux-x64@0.33.5": { - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "optionalDependencies": [ - "@img/sharp-libvips-linux-x64" - ], - "os": ["linux"], - "cpu": ["x64"] - }, - "@img/sharp-linuxmusl-arm64@0.33.5": { - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "optionalDependencies": [ - "@img/sharp-libvips-linuxmusl-arm64" - ], - "os": ["linux"], - "cpu": ["arm64"] - }, - "@img/sharp-linuxmusl-x64@0.33.5": { - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "optionalDependencies": [ - "@img/sharp-libvips-linuxmusl-x64" - ], - "os": ["linux"], - "cpu": ["x64"] - }, - "@img/sharp-wasm32@0.33.5": { - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", - "dependencies": [ - "@emnapi/runtime" - ], - "cpu": ["wasm32"] - }, - "@img/sharp-win32-ia32@0.33.5": { - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", - "os": ["win32"], - "cpu": ["ia32"] - }, - "@img/sharp-win32-x64@0.33.5": { - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "os": ["win32"], - "cpu": ["x64"] - }, - "@jridgewell/gen-mapping@0.3.13": { - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dependencies": [ - "@jridgewell/sourcemap-codec", - "@jridgewell/trace-mapping" - ] - }, - "@jridgewell/remapping@2.3.5": { - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dependencies": [ - "@jridgewell/gen-mapping", - "@jridgewell/trace-mapping" - ] - }, - "@jridgewell/resolve-uri@3.1.2": { - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" - }, - "@jridgewell/sourcemap-codec@1.5.5": { - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" - }, - "@jridgewell/trace-mapping@0.3.31": { - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dependencies": [ - "@jridgewell/resolve-uri", - "@jridgewell/sourcemap-codec" - ] - }, - "@jsr/eser__bundler@4.0.43": { - "integrity": "sha512-9u8gTw4fPLOwVGuN2d2wqzVo1aXl5T2zoYfhsT3VzcozqBqMz46cOSwHEwggwDxHAdPX0ho3Psrd3zL6HNXX/g==", - "dependencies": [ - "@jsr/eser__logging", - "@jsr/eser__standards", - "@jsr/std__encoding", - "@jsr/std__fmt", - "@jsr/std__fs", - "@tailwindcss/node", - "@tailwindcss/oxide", - "lightningcss", - "rolldown" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__bundler/4.0.43.tgz" - }, - "@jsr/eser__codebase@4.0.43": { - "integrity": "sha512-AswXIKKwijAAAzlML/Uc+Y0Ch5J+o/oQqgGIuUECTnf3HyA8ZJD32AjI7PU+CL9Cgc7RIkeN9xd1a835oGpfEQ==", - "dependencies": [ - "@jsr/eser__config", - "@jsr/eser__fp", - "@jsr/eser__functions", - "@jsr/eser__shell", - "@jsr/eser__standards", - "@jsr/std__cli", - "@jsr/std__fmt", - "@jsr/std__fs", - "@jsr/std__path", - "@jsr/std__semver", - "@jsr/std__tar", - "@jsr/std__yaml" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__codebase/4.0.43.tgz" - }, - "@jsr/eser__collector@4.0.43": { - "integrity": "sha512-2gyn0bqiAb0Kb+JCl5gpCQnMWJHCFCHTCcXmHFAfPlLu0lNpd3xCKrbXbPKO+aF3+YT2mBOh/Qm1sjfrdFQ5Ew==", - "dependencies": [ - "@jsr/eser__logging", - "@jsr/eser__shell", - "@jsr/eser__standards", - "@jsr/std__fs", - "@jsr/std__path" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__collector/4.0.43.tgz" - }, - "@jsr/eser__config@4.0.43": { - "integrity": "sha512-Pdsk3QyMwKgkjwTdQlM+xFPF1FnMKFKjvIOkSBDLvn+fgt+oKlabBYtpFB87K7hrfhi7FPLyRByp54S5rmuDGw==", - "dependencies": [ - "@jsr/eser__primitives", - "@jsr/eser__standards", - "@jsr/std__dotenv", - "@jsr/std__jsonc", - "@jsr/std__toml", - "@jsr/std__yaml" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__config/4.0.43.tgz" - }, - "@jsr/eser__fp@4.0.43": { - "integrity": "sha512-Yhc6paRVKPMwWPW3nHCg/CiLdW9xqpRWFyEkxApzF6tHCAOxFjgeNzTTpAUWsyAo9mrS7wrs7Un9+3CeZZKQRg==", - "dependencies": [ - "@jsr/eser__primitives" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__fp/4.0.43.tgz" - }, - "@jsr/eser__functions@4.0.43": { - "integrity": "sha512-xYwvv68A07JwfkDpa6jgIjm/gY5RPG2xtPwf2wRxCzpq1eg5jvF/5Zn4DFu9UYmrdTCk4HhflEQrDyVjMz6JeQ==", - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__functions/4.0.43.tgz" - }, - "@jsr/eser__http@4.0.43": { - "integrity": "sha512-Xm3JRKVIcmPzqgC7NIg77LXRGsrb94X22tuwCTpKL1e+7yldESbi03TpjYepMo+sjSTAhiVFkPE6p9cz8a980g==", - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__http/4.0.43.tgz" - }, - "@jsr/eser__laroux-bundler@4.0.43": { - "integrity": "sha512-iZH87J0lJWc9DpnxgQLj8pPaQFfCNbGmjBGM28pcHGbQ99+wdsMx/yfgrbXfOUKS1GW3r2TNyxvdxS7PTuR2Hg==", - "dependencies": [ - "@jsr/eser__bundler", - "@jsr/eser__codebase", - "@jsr/eser__collector", - "@jsr/eser__laroux", - "@jsr/eser__logging", - "@jsr/eser__standards", - "@jsr/std__fs", - "@jsr/std__ulid", - "@tailwindcss/oxide", - "lightningcss", - "sharp", - "tailwindcss" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__laroux-bundler/4.0.43.tgz" - }, - "@jsr/eser__laroux-react@4.0.43": { - "integrity": "sha512-hCwF3k0bAra8k7Q4SqxuzwUiHTpK5RfWFogaIv2IrYuDCKTD0yNyVUUQtkFbZuAk54OuRc4F0L/5GCaKm6k1Sw==", - "dependencies": [ - "@jsr/eser__laroux", - "@jsr/eser__laroux-bundler", - "@jsr/eser__logging", - "react" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__laroux-react/4.0.43.tgz" - }, - "@jsr/eser__laroux-server@4.0.43_react@19.2.3": { - "integrity": "sha512-HSECu8JPow6Kx8EmFpwYj5of6n7fy89PHQtWG1mRCg+3LjmcwfoV8ibw3GIfkCFz0LzFGNdWkJc3VTSUz4/ODA==", - "dependencies": [ - "@jsr/eser__fp", - "@jsr/eser__http", - "@jsr/eser__laroux", - "@jsr/eser__laroux-bundler", - "@jsr/eser__laroux-react", - "@jsr/eser__logging", - "@jsr/eser__standards", - "@jsr/std__media-types", - "@jsr/std__path", - "react", - "react-dom" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__laroux-server/4.0.43.tgz" - }, - "@jsr/eser__laroux@4.0.43": { - "integrity": "sha512-d1La1W1+c9QoD4ZTRKTaJ8ZOMfUqqITgBHKuISPj1FiAi1eSAdxsv3ydsHHNj2HWpdjC0grrGhmFtxsiwjptOg==", - "dependencies": [ - "@jsr/eser__standards" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__laroux/4.0.43.tgz" - }, - "@jsr/eser__logging@4.0.43": { - "integrity": "sha512-/ODXhpfFUTqNUsl+PBPmQMxn6uXaEa9odRf5K2BXEuT+WgVp6MIDeQhW7PBp6DtiW1EDKnEf1zdXlHleLdN4ag==", - "dependencies": [ - "@jsr/eser__primitives", - "@jsr/eser__standards", - "@opentelemetry/api" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__logging/4.0.43.tgz" - }, - "@jsr/eser__primitives@4.0.43": { - "integrity": "sha512-+td+2RtZnWYwIq56itfLa8CvEjZeUyCbfkh+C1qXuIUKltc9fWvDU/63pZ0c03LGba8u/Jgi6UiYRR++ZmMT7w==", - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__primitives/4.0.43.tgz" - }, - "@jsr/eser__shell@4.0.43": { - "integrity": "sha512-/BiAj+Gcq5knmSn4mk/13NoutrXP7Ve/I/X/DkSh1GD6sXvkY2lKa5qtPkVKAhpe8gQOl56KH3OygGizwRbugQ==", - "dependencies": [ - "@jsr/eser__functions", - "@jsr/eser__standards", - "@jsr/std__cli" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__shell/4.0.43.tgz" - }, - "@jsr/eser__standards@4.0.43": { - "integrity": "sha512-mms6ActFa+twrLVVlR3EtuzVXzvNF2taRk35luvAryt38LV6ZRClqUyD/fZ2NT5KBdu9vGCV+eTUfVZTgCofAg==", - "dependencies": [ - "@jsr/eser__primitives", - "@jsr/std__path", - "@jsr/std__semver" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/eser__standards/4.0.43.tgz" - }, - "@jsr/std__bytes@1.0.6": { - "integrity": "sha512-St6yKggjFGhxS52IFLJWvkchRFbAKg2Xh8UxA4S1EGz7GJ2Ui+ssDDldj/w2c8vCxvl6qgR0HaYbKeFJNqujmA==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__bytes/1.0.6.tgz" - }, - "@jsr/std__cli@1.0.25": { - "integrity": "sha512-2t7VjuQJ/tgs8DvmBjqAd1Tcdr1Zf30tqp3QW37R4eZEm17NCKFg1SLquotV+sdnWqkALneR4WTdX3pwWhdf+w==", - "dependencies": [ - "@jsr/std__internal" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__cli/1.0.25.tgz" - }, - "@jsr/std__collections@1.1.3": { - "integrity": "sha512-jGG6mv3IjOyxm6PyT1YVbLyAlZL+Gow6LOpBw+84qb1nkdJY0+t6bi7ICEqAwUz87cNjBS0P+yZQ5HHclJhsfw==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__collections/1.1.3.tgz" - }, - "@jsr/std__dotenv@0.225.6": { - "integrity": "sha512-rqh5RrHccbyzmP4v1/vqUyYy4dqopjTRgW8bJqk2ZXTKBbvpmMjPxJ+xy+YAk6XnEvtPCPAgqbFhHWcomjnX+w==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__dotenv/0.225.6.tgz" - }, - "@jsr/std__encoding@1.0.10": { - "integrity": "sha512-WK2njnDTyKefroRNk2Ooq7GStp6Y0ccAvr4To+Z/zecRAGe7+OSvH9DbiaHpAKwEi2KQbmpWMOYsdNt+TsdmSw==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__encoding/1.0.10.tgz" - }, - "@jsr/std__fmt@1.0.8": { - "integrity": "sha512-miZHzj9OgjuajrcMKzpqNVwFb9O71UHZzV/FHVq0E0Uwmv/1JqXgmXAoBNPrn+MP0fHT3mMgaZ6XvQO7dam67Q==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__fmt/1.0.8.tgz" - }, - "@jsr/std__fs@1.0.21": { - "integrity": "sha512-k/agrcKGm6KD89ci3AEyRmu3wRWf9JZNliOF4ZUxagTHiySmxjiKU3Lk+d2ksRtwEi7oWlLGS0AVM9Lciwc/xg==", - "dependencies": [ - "@jsr/std__internal", - "@jsr/std__path" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__fs/1.0.21.tgz" - }, - "@jsr/std__internal@1.0.12": { - "integrity": "sha512-6xReMW9p+paJgqoFRpOE2nogJFvzPfaLHLIlyADYjKMUcwDyjKZxryIbgcU+gxiTygn8yCjld1HoI0ET4/iZeA==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__internal/1.0.12.tgz" - }, - "@jsr/std__json@1.0.2": { - "integrity": "sha512-6d7R77+6NBf/OwA/8pT6uI3UkME+nkdertGjB7ni4J+2izuDu8AjbUH9aRvj8XqU3LQsqqsIRD4a3DvprMQDWA==", - "dependencies": [ - "@jsr/std__streams" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__json/1.0.2.tgz" - }, - "@jsr/std__jsonc@1.0.2": { - "integrity": "sha512-Lva9lY0UPvvgmS8INUHU8Tqijq2SPfdlnSAvofOYUBiB6ALPxo0rTMznRlY5Wt30nMW+rhMTha1x5RGpMBKUoQ==", - "dependencies": [ - "@jsr/std__json" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__jsonc/1.0.2.tgz" - }, - "@jsr/std__media-types@1.1.0": { - "integrity": "sha512-dHvaxHL7ENWnltgL653uo3KnKFse3ZbopZop2gqsT7yrscx7irZEClu5Cba7gMPPRk4Lg1FbriNcaBViM2RSBw==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__media-types/1.1.0.tgz" - }, - "@jsr/std__path@1.1.4": { - "integrity": "sha512-SK4u9H6NVTfolhPdlvdYXfNFefy1W04AEHWJydryYbk+xqzNiVmr5o7TLJLJFqwHXuwMRhwrn+mcYeUfS0YFaA==", - "dependencies": [ - "@jsr/std__internal" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__path/1.1.4.tgz" - }, - "@jsr/std__semver@1.0.7": { - "integrity": "sha512-/WpDSNegE6lI50L1+VnItLkuuQlZK8e8QbxrjV1sH+3YqiH+sQ/Tx3yYvewkKVVSwcidQUlqSIHSPrhay1zLCg==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__semver/1.0.7.tgz" - }, - "@jsr/std__streams@1.0.16": { - "integrity": "sha512-8vQHEDIpAr5m9upZEcF1UO2ylZCJsOs5mlsXaJNehQmSm8Iiz/XaKtb73Fh6fj8Ybc2jNw2zyi9CLfqd3Ph6mA==", - "dependencies": [ - "@jsr/std__bytes" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__streams/1.0.16.tgz" - }, - "@jsr/std__tar@0.1.9": { - "integrity": "sha512-xqGl8vhdXnuCrJD/9cQfY3R8BnkvR3sQnZWncMnK799cWpA3Z84l9Y9qwEmeMud0FYHSb2xJZXoqAeWaVxHbVg==", - "dependencies": [ - "@jsr/std__streams" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__tar/0.1.9.tgz" - }, - "@jsr/std__toml@1.0.11": { - "integrity": "sha512-+LZAizoPAPwMDmRZr86/xPrbO8E0Oq0BJ70mr1fNMobJ/6X6v15Jk16ZClFGukWgzBMd8ggiMWnzp24+N3VNZg==", - "dependencies": [ - "@jsr/std__collections" - ], - "tarball": "https://npm.jsr.io/~/11/@jsr/std__toml/1.0.11.tgz" - }, - "@jsr/std__ulid@1.0.0": { - "integrity": "sha512-RvVolUwRoFtoSuYZROBmhCYEIuI4xsxeHjGGbJQZVDCBnDBJwfm16vOJyE1Va9+BnTl1iW7o1nCloBI+EQAWVg==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__ulid/1.0.0.tgz" - }, - "@jsr/std__yaml@1.0.10": { - "integrity": "sha512-1WIM023Kvi48pvPE3UO5YcieambLgywUooLhAkkaObIcMB77F/YP2ILdl+vNfik+vElkl9znmuST9AZo8mbCpA==", - "tarball": "https://npm.jsr.io/~/11/@jsr/std__yaml/1.0.10.tgz" - }, - "@napi-rs/wasm-runtime@1.1.1": { - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dependencies": [ - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util" - ] - }, - "@opentelemetry/api@1.9.0": { - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" - }, - "@oxc-project/types@0.107.0": { - "integrity": "sha512-QFDRbYfV2LVx8tyqtyiah3jQPUj1mK2+RYwxyFWyGoys6XJnwTdlzO6rdNNHOPorHAu5Uo34oWRKcvNpbJarmQ==" - }, - "@rolldown/binding-android-arm64@1.0.0-beta.59": { - "integrity": "sha512-6yLLgyswYwiCfls9+hoNFY9F8TQdwo15hpXDHzlAR0X/GojeKF+AuNcXjYNbOJ4zjl/5D6lliE8CbpB5t1OWIQ==", - "os": ["android"], - "cpu": ["arm64"] - }, - "@rolldown/binding-darwin-arm64@1.0.0-beta.59": { - "integrity": "sha512-hqGXRc162qCCIOAcHN2Cw4eXiVTwYsMFLOhAy1IG2CxY+dwc/l4Ga+dLPkLor3Ikqy5WDn+7kxHbbh6EmshEpQ==", - "os": ["darwin"], - "cpu": ["arm64"] - }, - "@rolldown/binding-darwin-x64@1.0.0-beta.59": { - "integrity": "sha512-ezvvGuhteE15JmMhJW0wS7BaXmhwLy1YHeEwievYaPC1PgGD86wgBKfOpHr9tSKllAXbCe0BeeMvasscWLhKdA==", - "os": ["darwin"], - "cpu": ["x64"] - }, - "@rolldown/binding-freebsd-x64@1.0.0-beta.59": { - "integrity": "sha512-4fhKVJiEYVd5n6no/mrL3LZ9kByfCGwmONOrdtvx8DJGDQhehH/q3RfhG3V/4jGKhpXgbDjpIjkkFdybCTcgew==", - "os": ["freebsd"], - "cpu": ["x64"] - }, - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59": { - "integrity": "sha512-T3Y52sW6JAhvIqArBw+wtjNU1Ieaz4g0NBxyjSJoW971nZJBZygNlSYx78G4cwkCmo1dYTciTPDOnQygLV23pA==", - "os": ["linux"], - "cpu": ["arm"] - }, - "@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59": { - "integrity": "sha512-NIW40jQDSQap2KDdmm9z3B/4OzWJ6trf8dwx3FD74kcQb3v34ThsBFTtzE5KjDuxnxgUlV+DkAu+XgSMKrgufw==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@rolldown/binding-linux-arm64-musl@1.0.0-beta.59": { - "integrity": "sha512-CCKEk+H+8c0WGe/8n1E20n85Tq4Pv+HNAbjP1KfUXW+01aCWSMjU56ChNrM2tvHnXicfm7QRNoZyfY8cWh7jLQ==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@rolldown/binding-linux-x64-gnu@1.0.0-beta.59": { - "integrity": "sha512-VlfwJ/HCskPmQi8R0JuAFndySKVFX7yPhE658o27cjSDWWbXVtGkSbwaxstii7Q+3Rz87ZXN+HLnb1kd4R9Img==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@rolldown/binding-linux-x64-musl@1.0.0-beta.59": { - "integrity": "sha512-kuO92hTRyGy0Ts3Nsqll0rfO8eFsEJe9dGQGktkQnZ2hrJrDVN0y419dMgKy/gB2S2o7F2dpWhpfQOBehZPwVA==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@rolldown/binding-openharmony-arm64@1.0.0-beta.59": { - "integrity": "sha512-PXAebvNL4sYfCqi8LdY4qyFRacrRoiPZLo3NoUmiTxm7MPtYYR8CNtBGNokqDmMuZIQIecRaD/jbmFAIDz7DxQ==", - "os": ["openharmony"], - "cpu": ["arm64"] - }, - "@rolldown/binding-wasm32-wasi@1.0.0-beta.59": { - "integrity": "sha512-yJoklQg7XIZq8nAg0bbkEXcDK6sfpjxQGxpg2Nd6ERNtvg+eOaEBRgPww0BVTrYFQzje1pB5qPwC2VnJHT3koQ==", - "dependencies": [ - "@napi-rs/wasm-runtime" - ], - "cpu": ["wasm32"] - }, - "@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59": { - "integrity": "sha512-ljZ4+McmCbIuZwEBaoGtiG8Rq2nJjaXEnLEIx+usWetXn1ECjXY0LAhkELxOV6ytv4ensEmoJJ8nXg47hRMjlw==", - "os": ["win32"], - "cpu": ["arm64"] - }, - "@rolldown/binding-win32-x64-msvc@1.0.0-beta.59": { - "integrity": "sha512-bMY4tTIwbdZljW+xe/ln1hvs0SRitahQSXfWtvgAtIzgSX9Ar7KqJzU7lRm33YTRFIHLULRi53yNjw9nJGd6uQ==", - "os": ["win32"], - "cpu": ["x64"] - }, - "@rolldown/pluginutils@1.0.0-beta.59": { - "integrity": "sha512-aoh6LAJRyhtazs98ydgpNOYstxUlsOV1KJXcpf/0c0vFcUA8uyd/hwKRhqE/AAPNqAho9RliGsvitCoOzREoVA==" - }, - "@tailwindcss/node@4.1.18": { - "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", - "dependencies": [ - "@jridgewell/remapping", - "enhanced-resolve", - "jiti", - "lightningcss", - "magic-string", - "source-map-js", - "tailwindcss" - ] - }, - "@tailwindcss/oxide-android-arm64@4.1.18": { - "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", - "os": ["android"], - "cpu": ["arm64"] - }, - "@tailwindcss/oxide-darwin-arm64@4.1.18": { - "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", - "os": ["darwin"], - "cpu": ["arm64"] - }, - "@tailwindcss/oxide-darwin-x64@4.1.18": { - "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", - "os": ["darwin"], - "cpu": ["x64"] - }, - "@tailwindcss/oxide-freebsd-x64@4.1.18": { - "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", - "os": ["freebsd"], - "cpu": ["x64"] - }, - "@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18": { - "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", - "os": ["linux"], - "cpu": ["arm"] - }, - "@tailwindcss/oxide-linux-arm64-gnu@4.1.18": { - "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@tailwindcss/oxide-linux-arm64-musl@4.1.18": { - "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@tailwindcss/oxide-linux-x64-gnu@4.1.18": { - "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@tailwindcss/oxide-linux-x64-musl@4.1.18": { - "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@tailwindcss/oxide-wasm32-wasi@4.1.18": { - "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", - "cpu": ["wasm32"] - }, - "@tailwindcss/oxide-win32-arm64-msvc@4.1.18": { - "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", - "os": ["win32"], - "cpu": ["arm64"] - }, - "@tailwindcss/oxide-win32-x64-msvc@4.1.18": { - "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", - "os": ["win32"], - "cpu": ["x64"] - }, - "@tailwindcss/oxide@4.1.18": { - "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", - "optionalDependencies": [ - "@tailwindcss/oxide-android-arm64", - "@tailwindcss/oxide-darwin-arm64", - "@tailwindcss/oxide-darwin-x64", - "@tailwindcss/oxide-freebsd-x64", - "@tailwindcss/oxide-linux-arm-gnueabihf", - "@tailwindcss/oxide-linux-arm64-gnu", - "@tailwindcss/oxide-linux-arm64-musl", - "@tailwindcss/oxide-linux-x64-gnu", - "@tailwindcss/oxide-linux-x64-musl", - "@tailwindcss/oxide-wasm32-wasi", - "@tailwindcss/oxide-win32-arm64-msvc", - "@tailwindcss/oxide-win32-x64-msvc" - ] - }, - "@tybys/wasm-util@0.10.1": { - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dependencies": [ - "tslib" - ] - }, - "@types/react@19.2.7": { - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", - "dependencies": [ - "csstype" - ] - }, - "color-convert@2.0.1": { - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": [ - "color-name" - ] - }, - "color-name@1.1.4": { - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "color-string@1.9.1": { - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": [ - "color-name", - "simple-swizzle" - ] - }, - "color@4.2.3": { - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": [ - "color-convert", - "color-string" - ] - }, - "csstype@3.2.3": { - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" - }, - "detect-libc@2.1.2": { - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==" - }, - "enhanced-resolve@5.18.4": { - "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", - "dependencies": [ - "graceful-fs", - "tapable" - ] - }, - "graceful-fs@4.2.11": { - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "is-arrayish@0.3.4": { - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==" - }, - "jiti@2.6.1": { - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "bin": true - }, - "lightningcss-android-arm64@1.30.2": { - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", - "os": ["android"], - "cpu": ["arm64"] - }, - "lightningcss-darwin-arm64@1.30.2": { - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", - "os": ["darwin"], - "cpu": ["arm64"] - }, - "lightningcss-darwin-x64@1.30.2": { - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", - "os": ["darwin"], - "cpu": ["x64"] - }, - "lightningcss-freebsd-x64@1.30.2": { - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", - "os": ["freebsd"], - "cpu": ["x64"] - }, - "lightningcss-linux-arm-gnueabihf@1.30.2": { - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", - "os": ["linux"], - "cpu": ["arm"] - }, - "lightningcss-linux-arm64-gnu@1.30.2": { - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "lightningcss-linux-arm64-musl@1.30.2": { - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "lightningcss-linux-x64-gnu@1.30.2": { - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", - "os": ["linux"], - "cpu": ["x64"] - }, - "lightningcss-linux-x64-musl@1.30.2": { - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", - "os": ["linux"], - "cpu": ["x64"] - }, - "lightningcss-win32-arm64-msvc@1.30.2": { - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", - "os": ["win32"], - "cpu": ["arm64"] - }, - "lightningcss-win32-x64-msvc@1.30.2": { - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", - "os": ["win32"], - "cpu": ["x64"] - }, - "lightningcss@1.30.2": { - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", - "dependencies": [ - "detect-libc" - ], - "optionalDependencies": [ - "lightningcss-android-arm64", - "lightningcss-darwin-arm64", - "lightningcss-darwin-x64", - "lightningcss-freebsd-x64", - "lightningcss-linux-arm-gnueabihf", - "lightningcss-linux-arm64-gnu", - "lightningcss-linux-arm64-musl", - "lightningcss-linux-x64-gnu", - "lightningcss-linux-x64-musl", - "lightningcss-win32-arm64-msvc", - "lightningcss-win32-x64-msvc" - ] - }, - "magic-string@0.30.21": { - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dependencies": [ - "@jridgewell/sourcemap-codec" - ] - }, - "react-dom@19.2.3_react@19.2.3": { - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", - "dependencies": [ - "react", - "scheduler" - ] - }, - "react@19.2.3": { - "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==" - }, - "rolldown@1.0.0-beta.59": { - "integrity": "sha512-Slm000Gd8/AO9z4Kxl4r8mp/iakrbAuJ1L+7ddpkNxgQ+Vf37WPvY63l3oeyZcfuPD1DRrUYBsRPIXSOhvOsmw==", - "dependencies": [ - "@oxc-project/types", - "@rolldown/pluginutils" - ], - "optionalDependencies": [ - "@rolldown/binding-android-arm64", - "@rolldown/binding-darwin-arm64", - "@rolldown/binding-darwin-x64", - "@rolldown/binding-freebsd-x64", - "@rolldown/binding-linux-arm-gnueabihf", - "@rolldown/binding-linux-arm64-gnu", - "@rolldown/binding-linux-arm64-musl", - "@rolldown/binding-linux-x64-gnu", - "@rolldown/binding-linux-x64-musl", - "@rolldown/binding-openharmony-arm64", - "@rolldown/binding-wasm32-wasi", - "@rolldown/binding-win32-arm64-msvc", - "@rolldown/binding-win32-x64-msvc" - ], - "bin": true - }, - "scheduler@0.27.0": { - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==" - }, - "semver@7.7.3": { - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "bin": true - }, - "sharp@0.33.5": { - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", - "dependencies": [ - "color", - "detect-libc", - "semver" - ], - "optionalDependencies": [ - "@img/sharp-darwin-arm64", - "@img/sharp-darwin-x64", - "@img/sharp-libvips-darwin-arm64", - "@img/sharp-libvips-darwin-x64", - "@img/sharp-libvips-linux-arm", - "@img/sharp-libvips-linux-arm64", - "@img/sharp-libvips-linux-s390x", - "@img/sharp-libvips-linux-x64", - "@img/sharp-libvips-linuxmusl-arm64", - "@img/sharp-libvips-linuxmusl-x64", - "@img/sharp-linux-arm", - "@img/sharp-linux-arm64", - "@img/sharp-linux-s390x", - "@img/sharp-linux-x64", - "@img/sharp-linuxmusl-arm64", - "@img/sharp-linuxmusl-x64", - "@img/sharp-wasm32", - "@img/sharp-win32-ia32", - "@img/sharp-win32-x64" - ], - "scripts": true - }, - "simple-swizzle@0.2.4": { - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "dependencies": [ - "is-arrayish" - ] - }, - "source-map-js@1.2.1": { - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" - }, - "tailwindcss@4.1.18": { - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==" - }, - "tapable@2.3.0": { - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==" - }, - "tslib@2.8.1": { - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - } - }, - "workspace": { - "packageJson": { - "dependencies": [ - "npm:@jsr/eser__laroux-react@^4.0.43", - "npm:@jsr/eser__laroux-server@^4.0.43", - "npm:@jsr/eser__laroux@^4.0.43", - "npm:@jsr/eser__logging@^4.0.43", - "npm:@types/react@^19.2.7", - "npm:react-dom@^19.2.3", - "npm:react@^19.2.3", - "npm:tailwindcss@^4.1.18" - ] - } - } -} diff --git a/etc/templates/laroux-app/src/components/.gitkeep b/etc/templates/laroux-app/src/components/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/etc/templates/library-pkg/README.md b/etc/templates/library-pkg/README.md deleted file mode 100644 index 5c7c1c17c..000000000 --- a/etc/templates/library-pkg/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# @eser/{{PACKAGE_NAME}} - -{{PACKAGE_DESCRIPTION}} - -## Installation - -```bash -# Deno (JSR) -deno add jsr:@eser/{{PACKAGE_NAME}} - -# Node.js (via JSR npm compatibility) -npx jsr add @eser/{{PACKAGE_NAME}} -``` - -## Usage - -```typescript -import {} from "@eser/{{PACKAGE_NAME}}"; -``` - -## License - -Apache-2.0. See [LICENSE](../../LICENSE) for details. diff --git a/etc/templates/library-pkg/deno.json b/etc/templates/library-pkg/deno.json deleted file mode 100644 index a2b3f0ff0..000000000 --- a/etc/templates/library-pkg/deno.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@eser/{{PACKAGE_NAME}}", - "version": "0.0.0", - "exports": { - ".": "./mod.ts" - }, - "publish": { - "include": [ - "mod.ts", - "*.ts", - "README.md", - "LICENSE" - ] - } -} diff --git a/etc/templates/library-pkg/mod.test.ts b/etc/templates/library-pkg/mod.test.ts deleted file mode 100644 index 3b77c1571..000000000 --- a/etc/templates/library-pkg/mod.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. - -import { assert } from "@std/assert"; - -Deno.test("{{PACKAGE_NAME}} / module loads", () => { - assert(true, "module should load without errors"); -}); diff --git a/pkg/@eser/cli/commands/add.ts b/pkg/@eser/cli/commands/add.ts new file mode 100644 index 000000000..fe21e418d --- /dev/null +++ b/pkg/@eser/cli/commands/add.ts @@ -0,0 +1,181 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +/** + * Add command — apply a recipe from the registry to the current project. + * + * Usage: + * eser kit add [--registry ] [--dry-run] [--force] + * [--skip-existing] [--verbose] [--local] + * [--var key=value ...] + * + * @module + */ + +import * as fmtColors from "@eser/shell/formatting/colors"; +import * as results from "@eser/primitives/results"; +import * as cliParseArgs from "@std/cli/parse-args"; +import * as shellArgs from "@eser/shell/args"; +import * as registryFetcher from "@eser/registry/fetcher"; +import * as recipeApplier from "@eser/registry/applier"; +import * as dependencyResolver from "@eser/registry/resolver"; + +const parseVarFlags = (varFlags: string[]): Record => { + const variables: Record = {}; + + for (const v of varFlags) { + const [key, ...valueParts] = String(v).split("="); + if (key !== undefined && key !== "") { + variables[key] = valueParts.join("="); + } + } + + return variables; +}; + +export const main = async ( + cliArgs?: readonly string[], +): Promise> => { + const parsed = cliParseArgs.parseArgs(cliArgs as string[] ?? [], { + string: ["registry", "var"], + boolean: ["dry-run", "force", "skip-existing", "verbose", "local"], + collect: ["var"], + }); + + const recipeName = parsed._[0] as string | undefined; + const registryUrl = parsed["registry"] as string | undefined; + const dryRun = parsed["dry-run"] === true; + const force = parsed["force"] === true; + const skipExisting = parsed["skip-existing"] === true; + const verbose = parsed["verbose"] === true; + const local = parsed["local"] === true; + const variables = parseVarFlags(parsed["var"] as string[]); + + if (recipeName === undefined) { + // deno-lint-ignore no-console + console.log( + "Usage: eser kit add [--registry ] [--dry-run] [--var key=value]", + ); + // deno-lint-ignore no-console + console.log("\nRun `eser kit list` to see available recipes."); + return results.ok(undefined); + } + + try { + // Fetch registry (with local auto-detection) + const manifest = await registryFetcher.fetchRegistry(registryUrl, { + verbose, + local, + }); + + // Find recipe + const recipe = manifest.recipes.find((r) => r.name === recipeName); + + if (recipe === undefined) { + // deno-lint-ignore no-console + console.error( + fmtColors.red( + `Recipe '${recipeName}' not found. Run \`eser kit list\` to see available recipes.`, + ), + ); + return results.fail({ exitCode: 1 }); + } + + // Detect project type and check for language mismatch + const cwd = Deno.cwd(); + const project = await dependencyResolver.detectProjectType(cwd); + const depInfo = dependencyResolver.getDependencyInstructions( + recipe, + project, + ); + + for (const warning of depInfo.warnings) { + // deno-lint-ignore no-console + console.warn(fmtColors.yellow(`Warning: ${warning}`)); + } + + if (dryRun) { + // deno-lint-ignore no-console + console.log( + fmtColors.cyan(`\nDry run: ${recipe.name} (${recipe.description})\n`), + ); + } else { + // deno-lint-ignore no-console + console.log(fmtColors.cyan(`\nAdding ${recipe.name}...\n`)); + } + + // Apply recipe chain (resolves requires automatically) + const chainResult = await recipeApplier.applyRecipeChain( + recipeName, + manifest.recipes, + { + cwd, + registryUrl: manifest.registryUrl, + force, + skipExisting, + dryRun, + verbose, + variables, + }, + ); + + // Summary + const verb = dryRun ? "Would write" : "Added"; + let totalWritten = 0; + let totalSkipped = 0; + + for (const entry of chainResult.recipes) { + totalWritten += entry.result.written.length; + totalSkipped += entry.result.skipped.length; + } + + // deno-lint-ignore no-console + console.log( + fmtColors.green(`\n✓ ${verb} ${totalWritten} file(s)`), + ); + + if (chainResult.recipes.length > 1) { + // deno-lint-ignore no-console + console.log( + fmtColors.dim( + ` Applied ${chainResult.recipes.length} recipes (including dependencies)`, + ), + ); + } + + if (totalSkipped > 0) { + // deno-lint-ignore no-console + console.log( + fmtColors.dim(` Skipped ${totalSkipped} existing file(s)`), + ); + } + + // Show written files from the target recipe (not deps) + const targetResult = chainResult.recipes.find( + (r) => r.name === recipeName, + ); + + if (targetResult !== undefined) { + for (const file of targetResult.result.written) { + // deno-lint-ignore no-console + console.log(` → ${file}`); + } + } + + // Print dependency instructions + if (depInfo.instructions.length > 0) { + // deno-lint-ignore no-console + console.log(fmtColors.dim("\nDependencies:")); + for (const instruction of depInfo.instructions) { + // deno-lint-ignore no-console + console.log(fmtColors.dim(` Run: ${instruction}`)); + } + } + + return results.ok(undefined); + } catch (error) { + const msg = error instanceof Error ? error.message : String(error); + // deno-lint-ignore no-console + console.error(fmtColors.red(`Error: ${msg}`)); + return results.fail({ exitCode: 1 }); + } +}; diff --git a/pkg/@eser/cli/commands/add_test.ts b/pkg/@eser/cli/commands/add_test.ts new file mode 100644 index 000000000..bec143eea --- /dev/null +++ b/pkg/@eser/cli/commands/add_test.ts @@ -0,0 +1,87 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +import * as assert from "@std/assert"; +import * as results from "@eser/primitives/results"; +import { main } from "./add.ts"; + +const REGISTRY_PATH = new URL( + "../../../../etc/registry/eser-registry.json", + import.meta.url, +).pathname; + +Deno.test("add — shows usage when no recipe specified", async () => { + const logs: string[] = []; + const origLog = console.log; + console.log = (msg: string) => logs.push(String(msg)); + + try { + const result = await main(["--registry", REGISTRY_PATH]); + + assert.assertEquals(results.isOk(result), true); + const output = logs.join("\n"); + assert.assertStringIncludes(output, "Usage:"); + } finally { + console.log = origLog; + } +}); + +Deno.test("add — reports error for unknown recipe", async () => { + const errors: string[] = []; + const origError = console.error; + console.error = (msg: string) => errors.push(String(msg)); + + try { + const result = await main([ + "nonexistent", + "--registry", + REGISTRY_PATH, + ]); + + assert.assertEquals(results.isOk(result), false); + assert.assertStringIncludes(errors.join("\n"), "not found"); + } finally { + console.error = origError; + } +}); + +Deno.test("add — dry-run does not write files", async () => { + const tmpDir = await Deno.makeTempDir(); + const origCwd = Deno.cwd(); + + try { + Deno.chdir(tmpDir); + + const logs: string[] = []; + const origLog = console.log; + console.log = (msg: string) => logs.push(String(msg)); + + try { + const result = await main([ + "fp-pipe", + "--registry", + REGISTRY_PATH, + "--dry-run", + ]); + + assert.assertEquals(results.isOk(result), true); + const output = logs.join("\n"); + assert.assertStringIncludes(output, "Would write"); + } finally { + console.log = origLog; + } + + // Verify no files were written + let fileExists = false; + try { + await Deno.stat(`${tmpDir}/lib/fp/pipe.ts`); + fileExists = true; + } catch { + // expected + } + + assert.assertEquals(fileExists, false); + } finally { + Deno.chdir(origCwd); + await Deno.remove(tmpDir, { recursive: true }); + } +}); diff --git a/pkg/@eser/cli/commands/clone.ts b/pkg/@eser/cli/commands/clone.ts new file mode 100644 index 000000000..23727fad4 --- /dev/null +++ b/pkg/@eser/cli/commands/clone.ts @@ -0,0 +1,263 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +/** + * Clone command — apply a recipe from any GitHub repo. + * + * Fetches a recipe.json from the target repository and applies it + * using the same infrastructure as registered recipes. No central + * registry entry required. + * + * Usage: + * eser kit clone [--recipe ] [--name ] + * [--var key=value ...] [--force] + * [--dry-run] [--verbose] + * + * Specifier formats: + * eser/ajan → github.com/eser/ajan (default branch) + * gh:eser/ajan#v1.0 → github.com/eser/ajan at tag v1.0 + * gh:eser/ajan#main → github.com/eser/ajan at branch main + * + * @module + */ + +import * as fmtColors from "@eser/shell/formatting/colors"; +import * as results from "@eser/primitives/results"; +import * as cliParseArgs from "@std/cli/parse-args"; +import * as shellArgs from "@eser/shell/args"; +import * as registryFetcher from "@eser/registry/fetcher"; +import * as recipeApplier from "@eser/registry/applier"; +import * as dependencyResolver from "@eser/registry/resolver"; + +// ============================================================================= +// Specifier parsing +// ============================================================================= + +interface ParsedSpecifier { + readonly owner: string; + readonly repo: string; + readonly ref: string; +} + +/** + * Parse a GitHub specifier into owner/repo/ref. + * + * Supported formats: + * "eser/ajan" → { owner: "eser", repo: "ajan", ref: "main" } + * "gh:eser/ajan" → { owner: "eser", repo: "ajan", ref: "main" } + * "gh:eser/ajan#v1.0" → { owner: "eser", repo: "ajan", ref: "v1.0" } + */ +const parseSpecifier = (specifier: string): ParsedSpecifier | undefined => { + // Strip gh: prefix if present + const cleaned = specifier.replace(/^gh:/, ""); + + // Split on # for ref + const [repoPath, ref] = cleaned.split("#"); + if (repoPath === undefined) return undefined; + + // Split on / for owner/repo + const parts = repoPath.split("/"); + if (parts.length !== 2 || parts[0] === "" || parts[1] === "") { + return undefined; + } + + return { + owner: parts[0]!, + repo: parts[1]!, + ref: ref ?? "main", + }; +}; + +// ============================================================================= +// Command +// ============================================================================= + +export const main = async ( + cliArgs?: readonly string[], +): Promise> => { + const parsed = cliParseArgs.parseArgs(cliArgs as string[] ?? [], { + string: ["recipe", "name", "var"], + boolean: ["force", "dry-run", "skip-existing", "verbose"], + collect: ["var"], + alias: { p: "name" }, + }); + + const specifierRaw = parsed._[0] as string | undefined; + const recipePath = (parsed["recipe"] as string | undefined) ?? "recipe.json"; + const projectName = parsed["name"] as string | undefined; + const force = parsed["force"] === true; + const dryRun = parsed["dry-run"] === true; + const skipExisting = parsed["skip-existing"] === true; + const verbose = parsed["verbose"] === true; + + // Parse --var flags + const variables: Record = {}; + for (const v of (parsed["var"] as string[])) { + const [key, ...valueParts] = String(v).split("="); + if (key !== undefined && key !== "") { + variables[key] = valueParts.join("="); + } + } + + if (specifierRaw === undefined) { + // deno-lint-ignore no-console + console.log(`Usage: eser kit clone [options] + +Specifier formats: + eser/ajan GitHub repo (default branch) + gh:eser/ajan#v1.0 GitHub repo at specific tag/branch + +Options: + --recipe Path to recipe.json in the repo (default: recipe.json) + --name, -p Target directory (default: current directory) + --var key=value Template variable (repeatable) + --force Overwrite existing files + --dry-run Preview without writing + --verbose Show detailed output`); + return results.ok(undefined); + } + + // Parse specifier + const spec = parseSpecifier(specifierRaw); + + if (spec === undefined) { + // deno-lint-ignore no-console + console.error( + fmtColors.red( + `Invalid specifier: '${specifierRaw}'. Use format: owner/repo or gh:owner/repo#ref`, + ), + ); + return results.fail({ exitCode: 1 }); + } + + try { + // deno-lint-ignore no-console + console.log( + fmtColors.cyan( + `\nCloning from ${spec.owner}/${spec.repo}@${spec.ref}...\n`, + ), + ); + + if (verbose) { + // deno-lint-ignore no-console + console.log( + fmtColors.dim( + ` Fetching ${recipePath} from ${spec.owner}/${spec.repo}@${spec.ref}`, + ), + ); + } + + // Fetch recipe.json from the repo + const recipe = await registryFetcher.fetchRecipeFromRepo( + spec.owner, + spec.repo, + spec.ref, + recipePath, + ); + + // deno-lint-ignore no-console + console.log( + ` Recipe: ${fmtColors.bold(recipe.name)} — ${recipe.description}`, + ); + + // Determine target directory + let targetDir = Deno.cwd(); + + if (projectName !== undefined) { + targetDir = `${Deno.cwd()}/${projectName}`; + try { + await Deno.mkdir(targetDir, { recursive: true }); + } catch { + // deno-lint-ignore no-console + console.error( + fmtColors.red(`Could not create directory: ${targetDir}`), + ); + return results.fail({ exitCode: 1 }); + } + } + + // Inject project_name variable if --name is set + if ( + projectName !== undefined && variables["project_name"] === undefined + ) { + variables["project_name"] = projectName; + } + + // Build the registry URL (raw GitHub content for this repo/ref) + const registryUrl = + `https://raw.githubusercontent.com/${spec.owner}/${spec.repo}/${spec.ref}`; + + // Apply the recipe + if (dryRun) { + // deno-lint-ignore no-console + console.log(fmtColors.dim("\n Dry run — no files will be written\n")); + } + + const result = await recipeApplier.applyRecipe(recipe, { + cwd: targetDir, + registryUrl, + force, + skipExisting, + dryRun, + verbose, + variables, + }); + + // Summary + const verb = dryRun ? "Would write" : "Cloned"; + // deno-lint-ignore no-console + console.log( + fmtColors.green( + `\n✓ ${verb} ${result.written.length} file(s) from ${recipe.name}`, + ), + ); + + if (result.skipped.length > 0) { + // deno-lint-ignore no-console + console.log( + fmtColors.dim(` Skipped ${result.skipped.length} existing file(s)`), + ); + } + + for (const file of result.written) { + // deno-lint-ignore no-console + console.log(` → ${file}`); + } + + // Post-install results + if (result.postInstallRan.length > 0) { + // deno-lint-ignore no-console + console.log(fmtColors.dim("\nPost-install:")); + for (const cmd of result.postInstallRan) { + // deno-lint-ignore no-console + console.log(fmtColors.dim(` ✓ ${cmd}`)); + } + } + + // Dependency instructions + const project = await dependencyResolver.detectProjectType(targetDir); + const depInfo = dependencyResolver.getDependencyInstructions( + recipe, + project, + ); + + if (depInfo.instructions.length > 0) { + // deno-lint-ignore no-console + console.log(fmtColors.dim("\nDependencies:")); + for (const instruction of depInfo.instructions) { + // deno-lint-ignore no-console + console.log(fmtColors.dim(` Run: ${instruction}`)); + } + } + + return results.ok(undefined); + } catch (error) { + const msg = error instanceof Error ? error.message : String(error); + // deno-lint-ignore no-console + console.error(fmtColors.red(`Error: ${msg}`)); + return results.fail({ exitCode: 1 }); + } +}; + +export { parseSpecifier }; + +export type { ParsedSpecifier }; diff --git a/pkg/@eser/cli/commands/clone_test.ts b/pkg/@eser/cli/commands/clone_test.ts new file mode 100644 index 000000000..f6a56dbad --- /dev/null +++ b/pkg/@eser/cli/commands/clone_test.ts @@ -0,0 +1,53 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +import * as assert from "@std/assert"; +import { parseSpecifier } from "./clone.ts"; + +Deno.test("parseSpecifier — owner/repo format", () => { + const result = parseSpecifier("eser/ajan"); + + assert.assertExists(result); + assert.assertEquals(result!.owner, "eser"); + assert.assertEquals(result!.repo, "ajan"); + assert.assertEquals(result!.ref, "main"); +}); + +Deno.test("parseSpecifier — gh: prefix", () => { + const result = parseSpecifier("gh:eser/ajan"); + + assert.assertExists(result); + assert.assertEquals(result!.owner, "eser"); + assert.assertEquals(result!.repo, "ajan"); + assert.assertEquals(result!.ref, "main"); +}); + +Deno.test("parseSpecifier — gh: prefix with ref", () => { + const result = parseSpecifier("gh:eser/ajan#v1.0"); + + assert.assertExists(result); + assert.assertEquals(result!.owner, "eser"); + assert.assertEquals(result!.repo, "ajan"); + assert.assertEquals(result!.ref, "v1.0"); +}); + +Deno.test("parseSpecifier — branch ref", () => { + const result = parseSpecifier("eser/stack#dev"); + + assert.assertExists(result); + assert.assertEquals(result!.ref, "dev"); +}); + +Deno.test("parseSpecifier — returns undefined for invalid format", () => { + assert.assertEquals(parseSpecifier("just-a-name"), undefined); + assert.assertEquals(parseSpecifier(""), undefined); + assert.assertEquals(parseSpecifier("/repo"), undefined); + assert.assertEquals(parseSpecifier("owner/"), undefined); +}); + +Deno.test("parseSpecifier — handles complex repo names", () => { + const result = parseSpecifier("eser/laroux-template-minimal"); + + assert.assertExists(result); + assert.assertEquals(result!.owner, "eser"); + assert.assertEquals(result!.repo, "laroux-template-minimal"); +}); diff --git a/pkg/@eser/cli/commands/laroux/init.ts b/pkg/@eser/cli/commands/laroux/init.ts index 6536fdc6c..cdf33051e 100644 --- a/pkg/@eser/cli/commands/laroux/init.ts +++ b/pkg/@eser/cli/commands/laroux/init.ts @@ -3,7 +3,8 @@ /** * laroux init command handler * - * Creates a new laroux.js project from template using scaffolding + * Creates a new laroux.js project from a registry recipe or + * a remote GitHub template via the clone mechanism. * * @module */ @@ -11,7 +12,8 @@ import * as fmtColors from "@eser/shell/formatting/colors"; import * as results from "@eser/primitives/results"; import * as shellArgs from "@eser/shell/args"; -import * as scaffolding from "@eser/codebase/scaffolding"; +import * as registryFetcher from "@eser/registry/fetcher"; +import * as recipeApplier from "@eser/registry/applier"; const TEMPLATES = ["minimal", "blog", "dashboard", "docs"] as const; type TemplateName = typeof TEMPLATES[number]; @@ -42,52 +44,108 @@ export const initHandler = async ( // deno-lint-ignore no-console console.log(fmtColors.dim(` Template: ${templateName}`)); - // Build the GitHub specifier for the template - // Templates are hosted at gh:eser/laroux-template-{name} - const specifier = `gh:eser/laroux-template-${templateName}`; + // Try the registry first (for the "laroux-app" recipe if it matches "minimal") + // Fall back to GitHub clone for specific templates + const specOwner = "eser"; + const specRepo = `laroux-template-${templateName}`; + const specRef = "main"; - // Get other flags const force = (ctx.flags["force"] as boolean) ?? false; - const skipPostInstall = (ctx.flags["no-install"] as boolean) ?? false; const noGit = (ctx.flags["no-git"] as boolean) ?? false; - // deno-lint-ignore no-console - console.log(fmtColors.dim(` Fetching from ${specifier}...\n`)); - - const scaffoldResult = await results.tryCatchAsync( - () => - scaffolding.scaffold({ - specifier, - targetDir: folder, - force, - skipPostInstall: skipPostInstall || noGit, // Skip git init if --no-git - interactive: true, - }), - (error) => ({ message: (error as Error).message }), - ); - - if (scaffoldResult._tag === "Fail") { + // Create target directory + const targetDir = `${Deno.cwd()}/${folder}`; + try { + await Deno.mkdir(targetDir, { recursive: true }); + } catch { return results.fail({ - message: fmtColors.red( - `\nScaffolding failed: ${scaffoldResult.error.message}`, - ), + message: fmtColors.red(`\nCould not create directory: ${targetDir}`), exitCode: 1, }); } - const result = scaffoldResult.value; - // deno-lint-ignore no-console - console.log(fmtColors.green(`\n🎉 Project created successfully!`)); + console.log( + fmtColors.dim(` Fetching from gh:${specOwner}/${specRepo}...\n`), + ); + + try { + // Try to fetch recipe.json from the template repo + const recipe = await results.tryCatchAsync( + () => + registryFetcher.fetchRecipeFromRepo( + specOwner, + specRepo, + specRef, + "recipe.json", + ), + () => undefined, + ); + + if (recipe._tag === "Ok" && recipe.value !== undefined) { + // Recipe found — use the structured recipe applier + const repoUrl = + `https://raw.githubusercontent.com/${specOwner}/${specRepo}/${specRef}`; + + const result = await recipeApplier.applyRecipe(recipe.value, { + cwd: targetDir, + registryUrl: repoUrl, + force, + variables: { project_name: folder }, + }); + + // deno-lint-ignore no-console + console.log(fmtColors.green(`\n🎉 Project created successfully!`)); + // deno-lint-ignore no-console + console.log( + fmtColors.dim(` ${result.written.length} files written`), + ); + } else { + // No recipe.json — fall back to the legacy scaffolding system + const scaffolding = await import("@eser/codebase/scaffolding"); + const specifier = `gh:${specOwner}/${specRepo}`; + + const scaffoldResult = await results.tryCatchAsync( + () => + scaffolding.scaffold({ + specifier, + targetDir: folder, + force, + skipPostInstall: noGit, + interactive: true, + }), + (error) => ({ message: (error as Error).message }), + ); + + if (scaffoldResult._tag === "Fail") { + return results.fail({ + message: fmtColors.red( + `\nScaffolding failed: ${scaffoldResult.error.message}`, + ), + exitCode: 1, + }); + } + + const result = scaffoldResult.value; - // Show applied variables if any - if (Object.keys(result.variables).length > 0) { - // deno-lint-ignore no-console - console.log("\nVariables applied:"); - for (const [key, value] of Object.entries(result.variables)) { // deno-lint-ignore no-console - console.log(` ${fmtColors.dim(key)}: ${value}`); + console.log(fmtColors.green(`\n🎉 Project created successfully!`)); + + if (Object.keys(result.variables).length > 0) { + // deno-lint-ignore no-console + console.log("\nVariables applied:"); + for (const [key, value] of Object.entries(result.variables)) { + // deno-lint-ignore no-console + console.log(` ${fmtColors.dim(key)}: ${value}`); + } + } } + } catch (error) { + const msg = error instanceof Error ? error.message : String(error); + return results.fail({ + message: fmtColors.red(`\nFailed: ${msg}`), + exitCode: 1, + }); } // Print next steps diff --git a/pkg/@eser/cli/commands/list.ts b/pkg/@eser/cli/commands/list.ts new file mode 100644 index 000000000..548a79a93 --- /dev/null +++ b/pkg/@eser/cli/commands/list.ts @@ -0,0 +1,110 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +/** + * List command — browse available recipes from the registry. + * + * Usage: + * eser kit list [--language ] [--scale ] [--tag ] [--registry ] + * + * @module + */ + +import * as fmtColors from "@eser/shell/formatting/colors"; +import * as results from "@eser/primitives/results"; +import * as cliParseArgs from "@std/cli/parse-args"; +import * as shellArgs from "@eser/shell/args"; +import * as registryFetcher from "@eser/registry/fetcher"; +import * as registrySchema from "@eser/registry/schema"; + +const SCALE_ORDER: readonly registrySchema.RecipeScale[] = [ + "project", + "structure", + "utility", +]; + +const SCALE_LABELS: Record = { + project: "PROJECTS", + structure: "STRUCTURES", + utility: "UTILITIES", +}; + +export const main = async ( + cliArgs?: readonly string[], +): Promise> => { + const flags = cliParseArgs.parseArgs(cliArgs as string[] ?? [], { + string: ["registry", "language", "scale", "tag"], + boolean: ["local"], + }); + + const registryUrl = flags["registry"] as string | undefined; + const local = flags["local"] === true; + const languageFilter = flags["language"] as string | undefined; + const scaleFilter = flags["scale"] as string | undefined; + const tagFilter = flags["tag"] as string | undefined; + + try { + const manifest = await registryFetcher.fetchRegistry(registryUrl, { + local, + }); + + let recipes = [...manifest.recipes]; + + // Apply filters + if (languageFilter !== undefined) { + recipes = recipes.filter((r) => r.language === languageFilter); + } + if (scaleFilter !== undefined) { + recipes = recipes.filter((r) => r.scale === scaleFilter); + } + if (tagFilter !== undefined) { + recipes = recipes.filter((r) => + r.tags !== undefined && r.tags.includes(tagFilter) + ); + } + + if (recipes.length === 0) { + // deno-lint-ignore no-console + console.log("No recipes found matching your filters."); + // deno-lint-ignore no-console + console.log( + "Run `eser kit list` without filters to see all recipes.", + ); + return results.ok(undefined); + } + + // Group by scale + // deno-lint-ignore no-console + console.log( + fmtColors.bold(`${manifest.name} — ${manifest.description}\n`), + ); + + for (const scale of SCALE_ORDER) { + const group = recipes.filter((r) => r.scale === scale); + + if (group.length === 0) { + continue; + } + + // deno-lint-ignore no-console + console.log(fmtColors.cyan(SCALE_LABELS[scale])); + + for (const recipe of group) { + const lang = fmtColors.dim(`[${recipe.language}]`); + // deno-lint-ignore no-console + console.log( + ` ${recipe.name.padEnd(20)} ${recipe.description} ${lang}`, + ); + } + + // deno-lint-ignore no-console + console.log(); + } + + return results.ok(undefined); + } catch (error) { + const msg = error instanceof Error ? error.message : String(error); + // deno-lint-ignore no-console + console.error(fmtColors.red(`Error: ${msg}`)); + return results.fail({ exitCode: 1 }); + } +}; diff --git a/pkg/@eser/cli/commands/list_test.ts b/pkg/@eser/cli/commands/list_test.ts new file mode 100644 index 000000000..bd9e298d1 --- /dev/null +++ b/pkg/@eser/cli/commands/list_test.ts @@ -0,0 +1,93 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +import * as assert from "@std/assert"; +import * as results from "@eser/primitives/results"; +import { main } from "./list.ts"; + +const REGISTRY_PATH = new URL( + "../../../../etc/registry/eser-registry.json", + import.meta.url, +).pathname; + +Deno.test("list — lists all recipes from local registry", async () => { + const logs: string[] = []; + const origLog = console.log; + console.log = (msg: string) => logs.push(String(msg)); + + try { + const result = await main(["--registry", REGISTRY_PATH]); + + assert.assertEquals(results.isOk(result), true); + const output = logs.join("\n"); + assert.assertStringIncludes(output, "library-pkg"); + assert.assertStringIncludes(output, "fp-pipe"); + assert.assertStringIncludes(output, "PROJECTS"); + assert.assertStringIncludes(output, "UTILITIES"); + } finally { + console.log = origLog; + } +}); + +Deno.test("list — filters by language", async () => { + const logs: string[] = []; + const origLog = console.log; + console.log = (msg: string) => logs.push(String(msg)); + + try { + const result = await main([ + "--registry", + REGISTRY_PATH, + "--language", + "typescript", + ]); + + assert.assertEquals(results.isOk(result), true); + const output = logs.join("\n"); + assert.assertStringIncludes(output, "library-pkg"); + } finally { + console.log = origLog; + } +}); + +Deno.test("list — shows empty message for no matches", async () => { + const logs: string[] = []; + const origLog = console.log; + console.log = (msg: string) => logs.push(String(msg)); + + try { + const result = await main([ + "--registry", + REGISTRY_PATH, + "--language", + "rust", + ]); + + assert.assertEquals(results.isOk(result), true); + const output = logs.join("\n"); + assert.assertStringIncludes(output, "No recipes found"); + } finally { + console.log = origLog; + } +}); + +Deno.test("list — filters by scale", async () => { + const logs: string[] = []; + const origLog = console.log; + console.log = (msg: string) => logs.push(String(msg)); + + try { + const result = await main([ + "--registry", + REGISTRY_PATH, + "--scale", + "utility", + ]); + + assert.assertEquals(results.isOk(result), true); + const output = logs.join("\n"); + assert.assertStringIncludes(output, "fp-pipe"); + assert.assertEquals(output.includes("library-pkg"), false); + } finally { + console.log = origLog; + } +}); diff --git a/pkg/@eser/cli/commands/new.ts b/pkg/@eser/cli/commands/new.ts new file mode 100644 index 000000000..015ec9b0b --- /dev/null +++ b/pkg/@eser/cli/commands/new.ts @@ -0,0 +1,172 @@ +// Copyright 2023-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license. + +/** + * New command — scaffold a new project from a registry template. + * + * Filters the registry to `scale: "project"` recipes only and + * creates a new project directory. + * + * Usage: + * eser kit new