From d6f28e9c5507e8cb2645af56f4885db447de34e1 Mon Sep 17 00:00:00 2001 From: u0b002 Date: Mon, 4 May 2026 21:39:06 +0300 Subject: [PATCH 1/2] chore: nest TypeScript SDK under packages/ts/ - Move core, oauth2, logger, browser-storage to packages/ts/ for parity with packages/dart/ - Point npm workspaces and Makefile/package scripts at packages/ts/* - Update poc/ts-vue file: deps, README, dart-parity, architecture tree, Dart parity comments Closes #31 Co-authored-by: Cursor --- Makefile | 24 ++--- README.md | 8 +- docs/architecture.md | 52 +++++----- docs/dart-parity.md | 4 +- docs/github-issue-1-body-issue-only.md | 4 +- docs/github-issue-1-body.md | 4 +- docs/github-issue-dart-full-parity-body.md | 2 +- package-lock.json | 98 ++++++++++--------- package.json | 10 +- packages/dart/morph_core/README.md | 2 +- .../lib/src/client/auth_handle.dart | 2 +- .../lib/src/client/host_client.dart | 2 +- .../lib/src/config/exchange_sources.dart | 2 +- .../lib/src/config/interpolate_config.dart | 2 +- .../lib/src/config/list_auth_ids.dart | 2 +- .../lib/src/config/validate_config.dart | 2 +- .../lib/src/errors/morph_errors.dart | 2 +- .../lib/src/http/host_pipeline.dart | 2 +- .../lib/src/runtime/morph_runtime.dart | 2 +- .../lib/src/runtime/plugin_install.dart | 2 +- .../morph_core/lib/src/util/duration_ms.dart | 2 +- .../dart/morph_core/lib/src/util/expiry.dart | 2 +- .../morph_core/lib/src/util/jwt_utils.dart | 2 +- .../lib/src/util/oauth_authorize.dart | 2 +- .../morph_core/lib/src/util/oauth_state.dart | 2 +- .../lib/src/util/resolve_endpoint.dart | 2 +- .../dart/morph_logger/lib/create_logger.dart | 6 +- .../dart/morph_logger/lib/logger_plugin.dart | 2 +- .../morph_oauth2/lib/src/oauth2_plugin.dart | 4 +- .../morph_oauth2/lib/src/oauth_callbacks.dart | 2 +- .../morph_oauth2/lib/src/token_lifecycle.dart | 2 +- .../morph_oauth2/lib/src/token_vault.dart | 2 +- .../{ => ts}/browser-storage/package.json | 0 .../browser-storage/src/browserStorage.ts | 0 .../{ => ts}/browser-storage/src/index.ts | 0 .../{ => ts}/browser-storage/tsconfig.json | 0 .../{ => ts}/browser-storage/vite.config.ts | 0 packages/{ => ts}/core/package.json | 0 .../{ => ts}/core/src/client/AuthHandle.ts | 0 .../{ => ts}/core/src/client/HostClient.ts | 0 .../{ => ts}/core/src/client/MorphClient.ts | 0 .../{ => ts}/core/src/config/interpolate.ts | 0 packages/{ => ts}/core/src/config/validate.ts | 0 packages/{ => ts}/core/src/errors.ts | 0 .../{ => ts}/core/src/http/hostPipeline.ts | 0 packages/{ => ts}/core/src/index.ts | 0 packages/{ => ts}/core/src/runtime.ts | 0 packages/{ => ts}/core/src/types.ts | 0 packages/{ => ts}/core/src/util/duration.ts | 0 .../{ => ts}/core/src/util/exchangeSources.ts | 0 packages/{ => ts}/core/src/util/expiry.ts | 0 packages/{ => ts}/core/src/util/httpTrace.ts | 0 packages/{ => ts}/core/src/util/jwt.ts | 0 .../{ => ts}/core/src/util/normalizeOrigin.ts | 0 .../{ => ts}/core/src/util/oauthAuthorize.ts | 0 .../{ => ts}/core/src/util/oauthReturn.ts | 0 packages/{ => ts}/core/src/util/oauthState.ts | 0 packages/{ => ts}/core/src/util/url.ts | 0 packages/{ => ts}/core/tsconfig.json | 0 packages/{ => ts}/core/vite.config.ts | 0 packages/{ => ts}/logger/package.json | 0 packages/{ => ts}/logger/src/index.ts | 0 packages/{ => ts}/logger/tsconfig.json | 0 packages/{ => ts}/logger/vite.config.ts | 0 packages/{ => ts}/oauth2/package.json | 0 packages/{ => ts}/oauth2/src/index.ts | 0 .../{ => ts}/oauth2/src/oauth/tokenHttp.ts | 0 .../oauth2/src/tokens/tokenLifecycle.ts | 0 .../{ => ts}/oauth2/src/tokens/tokenVault.ts | 0 packages/{ => ts}/oauth2/src/util/duration.ts | 0 .../oauth2/src/util/exchangeSources.ts | 0 packages/{ => ts}/oauth2/src/util/expiry.ts | 0 .../{ => ts}/oauth2/src/util/interpolate.ts | 0 .../{ => ts}/oauth2/src/util/listAuthIds.ts | 0 .../oauth2/src/util/normalizeOrigin.ts | 0 .../oauth2/src/util/oauthAuthorize.ts | 0 .../{ => ts}/oauth2/src/util/oauthReturn.ts | 0 .../{ => ts}/oauth2/src/util/oauthState.ts | 0 packages/{ => ts}/oauth2/src/util/url.ts | 0 packages/{ => ts}/oauth2/tsconfig.json | 0 packages/{ => ts}/oauth2/vite.config.ts | 0 poc/ts-vue/package.json | 8 +- 82 files changed, 141 insertions(+), 125 deletions(-) rename packages/{ => ts}/browser-storage/package.json (100%) rename packages/{ => ts}/browser-storage/src/browserStorage.ts (100%) rename packages/{ => ts}/browser-storage/src/index.ts (100%) rename packages/{ => ts}/browser-storage/tsconfig.json (100%) rename packages/{ => ts}/browser-storage/vite.config.ts (100%) rename packages/{ => ts}/core/package.json (100%) rename packages/{ => ts}/core/src/client/AuthHandle.ts (100%) rename packages/{ => ts}/core/src/client/HostClient.ts (100%) rename packages/{ => ts}/core/src/client/MorphClient.ts (100%) rename packages/{ => ts}/core/src/config/interpolate.ts (100%) rename packages/{ => ts}/core/src/config/validate.ts (100%) rename packages/{ => ts}/core/src/errors.ts (100%) rename packages/{ => ts}/core/src/http/hostPipeline.ts (100%) rename packages/{ => ts}/core/src/index.ts (100%) rename packages/{ => ts}/core/src/runtime.ts (100%) rename packages/{ => ts}/core/src/types.ts (100%) rename packages/{ => ts}/core/src/util/duration.ts (100%) rename packages/{ => ts}/core/src/util/exchangeSources.ts (100%) rename packages/{ => ts}/core/src/util/expiry.ts (100%) rename packages/{ => ts}/core/src/util/httpTrace.ts (100%) rename packages/{ => ts}/core/src/util/jwt.ts (100%) rename packages/{ => ts}/core/src/util/normalizeOrigin.ts (100%) rename packages/{ => ts}/core/src/util/oauthAuthorize.ts (100%) rename packages/{ => ts}/core/src/util/oauthReturn.ts (100%) rename packages/{ => ts}/core/src/util/oauthState.ts (100%) rename packages/{ => ts}/core/src/util/url.ts (100%) rename packages/{ => ts}/core/tsconfig.json (100%) rename packages/{ => ts}/core/vite.config.ts (100%) rename packages/{ => ts}/logger/package.json (100%) rename packages/{ => ts}/logger/src/index.ts (100%) rename packages/{ => ts}/logger/tsconfig.json (100%) rename packages/{ => ts}/logger/vite.config.ts (100%) rename packages/{ => ts}/oauth2/package.json (100%) rename packages/{ => ts}/oauth2/src/index.ts (100%) rename packages/{ => ts}/oauth2/src/oauth/tokenHttp.ts (100%) rename packages/{ => ts}/oauth2/src/tokens/tokenLifecycle.ts (100%) rename packages/{ => ts}/oauth2/src/tokens/tokenVault.ts (100%) rename packages/{ => ts}/oauth2/src/util/duration.ts (100%) rename packages/{ => ts}/oauth2/src/util/exchangeSources.ts (100%) rename packages/{ => ts}/oauth2/src/util/expiry.ts (100%) rename packages/{ => ts}/oauth2/src/util/interpolate.ts (100%) rename packages/{ => ts}/oauth2/src/util/listAuthIds.ts (100%) rename packages/{ => ts}/oauth2/src/util/normalizeOrigin.ts (100%) rename packages/{ => ts}/oauth2/src/util/oauthAuthorize.ts (100%) rename packages/{ => ts}/oauth2/src/util/oauthReturn.ts (100%) rename packages/{ => ts}/oauth2/src/util/oauthState.ts (100%) rename packages/{ => ts}/oauth2/src/util/url.ts (100%) rename packages/{ => ts}/oauth2/tsconfig.json (100%) rename packages/{ => ts}/oauth2/vite.config.ts (100%) diff --git a/Makefile b/Makefile index 861c954..df140de 100644 --- a/Makefile +++ b/Makefile @@ -13,18 +13,18 @@ help: ## Show available targets # --------------------------------------------------------------------------- install: ## Install all npm dependencies (packages + vue + mock-api) - cd packages/core && npm install - cd packages/oauth2 && npm install - cd packages/browser-storage && npm install - cd packages/logger && npm install + cd packages/ts/core && npm install + cd packages/ts/oauth2 && npm install + cd packages/ts/browser-storage && npm install + cd packages/ts/logger && npm install cd poc/ts-vue && npm install cd poc/mock-api && npm install build: ## Build all SDK packages (core → oauth2 → browser-storage → logger) - cd packages/core && npm run build - cd packages/oauth2 && npm run build - cd packages/browser-storage && npm run build - cd packages/logger && npm run build + cd packages/ts/core && npm run build + cd packages/ts/oauth2 && npm run build + cd packages/ts/browser-storage && npm run build + cd packages/ts/logger && npm run build dart-get: ## Dart: pub get (packages/dart/morph_core) cd packages/dart/morph_core && dart pub get @@ -105,10 +105,10 @@ stop: down ## Alias for 'down' # --------------------------------------------------------------------------- clean: ## Remove node_modules and dist artefacts - rm -rf packages/core/node_modules packages/core/dist - rm -rf packages/oauth2/node_modules packages/oauth2/dist - rm -rf packages/browser-storage/node_modules packages/browser-storage/dist - rm -rf packages/logger/node_modules packages/logger/dist + rm -rf packages/ts/core/node_modules packages/ts/core/dist + rm -rf packages/ts/oauth2/node_modules packages/ts/oauth2/dist + rm -rf packages/ts/browser-storage/node_modules packages/ts/browser-storage/dist + rm -rf packages/ts/logger/node_modules packages/ts/logger/dist rm -rf poc/ts-vue/node_modules poc/ts-vue/dist rm -rf poc/mock-api/node_modules rm -rf packages/dart/morph_core/.dart_tool diff --git a/README.md b/README.md index 6c6e4a8..4547228 100644 --- a/README.md +++ b/README.md @@ -71,10 +71,10 @@ See **[docs/README.md](docs/README.md)** for the full documentation index. | Path | Package | Role | |------|---------|------| -| `packages/core/` | `@morph/core` | Types, config, HTTP pipeline, MorphClient, AuthHandle | -| `packages/oauth2/` | `@morph/oauth2` | TokenLifecycle, TokenVault, OAuth helpers | -| `packages/browser-storage/` | `@morph/browser-storage` | sessionStorage / localStorage adapters | -| `packages/logger/` | `@morph/logger` | Structured logging and HTTP trace plugin | +| `packages/ts/core/` | `@morph/core` | Types, config, HTTP pipeline, MorphClient, AuthHandle | +| `packages/ts/oauth2/` | `@morph/oauth2` | TokenLifecycle, TokenVault, OAuth helpers | +| `packages/ts/browser-storage/` | `@morph/browser-storage` | sessionStorage / localStorage adapters | +| `packages/ts/logger/` | `@morph/logger` | Structured logging and HTTP trace plugin | | `packages/dart/morph_core/` | `morph_core` | **Dart** — config validation + indexes (parity with TS `validate.ts`); runtime/OAuth TBD — [docs/dart-parity.md](docs/dart-parity.md) | | `poc/ts-vue/` | | Vue 3 demo app | | `poc/keycloak/` | | Docker Keycloak realm + setup/test scripts | diff --git a/docs/architecture.md b/docs/architecture.md index 8cb1f08..7dec123 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -156,29 +156,35 @@ The `allowedAuth` list enables **request-time validation**: if a request through ``` morph-api-client/ ├── packages/ -│ ├── core/ # @morph/core — types, config, HTTP pipeline, client facades -│ │ └── src/ -│ │ ├── client/ # MorphClient, HostClient, AuthHandle -│ │ ├── config/ # validate (CtxRef, hostByKey), interpolate ($variable) -│ │ ├── http/ # HostPipeline (depends on AuthPlugin interface) -│ │ ├── util/ # jwt, expiry, url, duration, httpTrace, oauthState -│ │ ├── runtime.ts # MorphRuntime coordinator -│ │ ├── types.ts # Public interfaces (AuthPlugin, StorageProvider, …) -│ │ ├── errors.ts # Error classes -│ │ └── index.ts # Public exports -│ ├── oauth2/ # @morph/oauth2 — OAuth2 token lifecycle plugin -│ │ └── src/ -│ │ ├── tokens/ # TokenLifecycle (implements AuthPlugin), TokenVault -│ │ ├── oauth/ # tokenHttp (grant HTTP) -│ │ ├── util/ # interpolate, expiry, exchangeSources -│ │ └── index.ts # oauth2Plugin() MorphPlugin factory -│ ├── browser-storage/ # @morph/browser-storage — browser storage adapters -│ │ └── src/ -│ │ ├── browserStorage.ts # createBrowserSessionStorage, createBrowserLocalStorage -│ │ └── index.ts # browserStoragePlugin() MorphPlugin factory -│ └── logger/ # @morph/logger — structured logging plugin -│ └── src/ -│ └── index.ts # loggerPlugin() MorphPlugin factory +│ ├── ts/ # TypeScript npm workspaces (@morph/*) +│ │ ├── core/ # @morph/core — types, config, HTTP pipeline, client facades +│ │ │ └── src/ +│ │ │ ├── client/ # MorphClient, HostClient, AuthHandle +│ │ │ ├── config/ # validate (CtxRef, hostByKey), interpolate ($variable) +│ │ │ ├── http/ # HostPipeline (depends on AuthPlugin interface) +│ │ │ ├── util/ # jwt, expiry, url, duration, httpTrace, oauthState +│ │ │ ├── runtime.ts # MorphRuntime coordinator +│ │ │ ├── types.ts # Public interfaces (AuthPlugin, StorageProvider, …) +│ │ │ ├── errors.ts # Error classes +│ │ │ └── index.ts # Public exports +│ │ ├── oauth2/ # @morph/oauth2 — OAuth2 token lifecycle plugin +│ │ │ └── src/ +│ │ │ ├── tokens/ # TokenLifecycle (implements AuthPlugin), TokenVault +│ │ │ ├── oauth/ # tokenHttp (grant HTTP) +│ │ │ ├── util/ # interpolate, expiry, exchangeSources +│ │ │ └── index.ts # oauth2Plugin() MorphPlugin factory +│ │ ├── browser-storage/ # @morph/browser-storage — browser storage adapters +│ │ │ └── src/ +│ │ │ ├── browserStorage.ts +│ │ │ └── index.ts # browserStoragePlugin() MorphPlugin factory +│ │ └── logger/ # @morph/logger — structured logging plugin +│ │ └── src/ +│ │ └── index.ts # loggerPlugin() MorphPlugin factory +│ └── dart/ # Dart Pub packages (morph_*), parity with TS track +│ ├── morph_core/ +│ ├── morph_oauth2/ +│ ├── morph_logger/ +│ └── morph_storage/ ├── poc/ │ ├── ts-vue/ # Vue 3 PoC app │ ├── keycloak/ # Docker Keycloak realm diff --git a/docs/dart-parity.md b/docs/dart-parity.md index 8d91d23..a372681 100644 --- a/docs/dart-parity.md +++ b/docs/dart-parity.md @@ -1,7 +1,7 @@ # Dart / Flutter SDK parity -The TypeScript implementation is the reference (`packages/core`, `packages/oauth2`, -`packages/browser-storage`, `packages/logger`). **Dart/Flutter parity** is tracked on +The TypeScript implementation is the reference (`packages/ts/core`, `packages/ts/oauth2`, +`packages/ts/browser-storage`, `packages/ts/logger`). **Dart/Flutter parity** is tracked on GitHub: - **[issue #1](https://github.com/burgan-tech/morph-api-client/issues/1)** — scaffold (`morph_core`, CI entry). - **[issue #3](https://github.com/burgan-tech/morph-api-client/issues/3)** — **full Dart/TS feature parity** (remaining gaps). diff --git a/docs/github-issue-1-body-issue-only.md b/docs/github-issue-1-body-issue-only.md index 2187e19..e2de29f 100644 --- a/docs/github-issue-1-body-issue-only.md +++ b/docs/github-issue-1-body-issue-only.md @@ -20,8 +20,8 @@ Local run: `make dart-all` or `cd packages/dart/morph_core && dart pub get && da ## Later phases (sub-issues or checklist) -- [ ] Strongly typed `MorphConfig` / `MorphOptions` aligned with `packages/core/src/types.ts` -- [ ] Runtime + topological plugin install (parity with `packages/core/src/runtime.ts`) +- [ ] Strongly typed `MorphConfig` / `MorphOptions` aligned with `packages/ts/core/src/types.ts` +- [ ] Runtime + topological plugin install (parity with `packages/ts/core/src/runtime.ts`) - [ ] Port `@morph/oauth2` (new package e.g. `packages/dart/morph_oauth2` or `lib/src/oauth2/`) - [ ] Storage adapters (Flutter / VM) per `docs/platform-adapters.md` - [ ] Logger / HTTP trace hooks diff --git a/docs/github-issue-1-body.md b/docs/github-issue-1-body.md index 4006f66..4fdf59c 100644 --- a/docs/github-issue-1-body.md +++ b/docs/github-issue-1-body.md @@ -23,8 +23,8 @@ Local run: `make dart-all` or `cd packages/dart/morph_core && dart pub get && da ## Later phases (sub-issues or checklist) -- [ ] Strongly typed `MorphConfig` / `MorphOptions` aligned with `packages/core/src/types.ts` -- [ ] Runtime + topological plugin install (parity with `packages/core/src/runtime.ts`) +- [ ] Strongly typed `MorphConfig` / `MorphOptions` aligned with `packages/ts/core/src/types.ts` +- [ ] Runtime + topological plugin install (parity with `packages/ts/core/src/runtime.ts`) - [ ] Port `@morph/oauth2` (new package e.g. `packages/dart/morph_oauth2` or `lib/src/oauth2/`) - [ ] Storage adapters (Flutter / VM) per `docs/platform-adapters.md` - [ ] Logger / HTTP trace hooks diff --git a/docs/github-issue-dart-full-parity-body.md b/docs/github-issue-dart-full-parity-body.md index 453ad19..1c642c2 100644 --- a/docs/github-issue-dart-full-parity-body.md +++ b/docs/github-issue-dart-full-parity-body.md @@ -1,6 +1,6 @@ ## Goal -Deliver a **Dart/Flutter Morph API Client** with **functional parity** to the existing TypeScript implementation (`packages/core`, `packages/oauth2`, `packages/browser-storage`, `packages/logger`): same **JSON configuration schema**, same **OAuth2 / multi-context token lifecycle**, **HTTP pipeline behavior** (auth resolution, retry, trace, 401 recovery), and **plugin composition** (`provides` / `requires`, `provideAuth` / `provideStorage`, logger chaining). +Deliver a **Dart/Flutter Morph API Client** with **functional parity** to the existing TypeScript implementation (`packages/ts/core`, `packages/ts/oauth2`, `packages/ts/browser-storage`, `packages/ts/logger`): same **JSON configuration schema**, same **OAuth2 / multi-context token lifecycle**, **HTTP pipeline behavior** (auth resolution, retry, trace, 401 recovery), and **plugin composition** (`provides` / `requires`, `provideAuth` / `provideStorage`, logger chaining). Foundation: Phase 1 scaffold in `packages/dart/morph_core` ([#1](https://github.com/burgan-tech/morph-api-client/issues/1), base branch **`f/plugin`**). diff --git a/package-lock.json b/package-lock.json index 506ff17..bcf933d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "morph-api-client-repo", "workspaces": [ - "packages/*" + "packages/ts/*" ] }, "core": { @@ -553,19 +553,19 @@ } }, "node_modules/@morph/browser-storage": { - "resolved": "packages/browser-storage", + "resolved": "packages/ts/browser-storage", "link": true }, "node_modules/@morph/core": { - "resolved": "packages/core", + "resolved": "packages/ts/core", "link": true }, "node_modules/@morph/logger": { - "resolved": "packages/logger", + "resolved": "packages/ts/logger", "link": true }, "node_modules/@morph/oauth2": { - "resolved": "packages/oauth2", + "resolved": "packages/ts/oauth2", "link": true }, "node_modules/@rollup/pluginutils": { @@ -683,9 +683,6 @@ "arm" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -700,9 +697,6 @@ "arm" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -717,9 +711,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -734,9 +725,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -751,9 +739,6 @@ "loong64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -768,9 +753,6 @@ "loong64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -785,9 +767,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -802,9 +781,6 @@ "ppc64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -819,9 +795,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -836,9 +809,6 @@ "riscv64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -853,9 +823,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -870,9 +837,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -887,9 +851,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1998,6 +1959,7 @@ "packages/browser-storage": { "name": "@morph/browser-storage", "version": "0.1.0", + "extraneous": true, "dependencies": { "@morph/core": "^0.1.0" }, @@ -2010,6 +1972,7 @@ "packages/core": { "name": "@morph/core", "version": "0.1.0", + "extraneous": true, "devDependencies": { "typescript": "^5.4.5", "vite": "^5.2.11", @@ -2019,6 +1982,7 @@ "packages/logger": { "name": "@morph/logger", "version": "0.1.0", + "extraneous": true, "dependencies": { "@morph/core": "^0.1.0" }, @@ -2029,6 +1993,52 @@ } }, "packages/oauth2": { + "name": "@morph/oauth2", + "version": "0.1.0", + "extraneous": true, + "dependencies": { + "@morph/core": "^0.1.0" + }, + "devDependencies": { + "typescript": "^5.4.5", + "vite": "^5.2.11", + "vite-plugin-dts": "^3.9.1" + } + }, + "packages/ts/browser-storage": { + "name": "@morph/browser-storage", + "version": "0.1.0", + "dependencies": { + "@morph/core": "^0.1.0" + }, + "devDependencies": { + "typescript": "^5.4.5", + "vite": "^5.2.11", + "vite-plugin-dts": "^3.9.1" + } + }, + "packages/ts/core": { + "name": "@morph/core", + "version": "0.1.0", + "devDependencies": { + "typescript": "^5.4.5", + "vite": "^5.2.11", + "vite-plugin-dts": "^3.9.1" + } + }, + "packages/ts/logger": { + "name": "@morph/logger", + "version": "0.1.0", + "dependencies": { + "@morph/core": "^0.1.0" + }, + "devDependencies": { + "typescript": "^5.4.5", + "vite": "^5.2.11", + "vite-plugin-dts": "^3.9.1" + } + }, + "packages/ts/oauth2": { "name": "@morph/oauth2", "version": "0.1.0", "dependencies": { diff --git a/package.json b/package.json index 6a793bd..96add7e 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,14 @@ "private": true, "description": "Morph API Client — TS SDK packages + PoC apps", "workspaces": [ - "packages/*" + "packages/ts/*" ], "scripts": { "dev": "npm run dev --prefix poc/ts-vue -- --host 127.0.0.1", - "build:core": "npm run build --prefix packages/core", - "build:oauth2": "npm run build --prefix packages/oauth2", - "build:storage": "npm run build --prefix packages/browser-storage", - "build:logger": "npm run build --prefix packages/logger", + "build:core": "npm run build --prefix packages/ts/core", + "build:oauth2": "npm run build --prefix packages/ts/oauth2", + "build:storage": "npm run build --prefix packages/ts/browser-storage", + "build:logger": "npm run build --prefix packages/ts/logger", "build:packages": "npm run build:core && npm run build:oauth2 && npm run build:storage && npm run build:logger", "build:vue": "npm run build --prefix poc/ts-vue", "build": "npm run build:packages && npm run build:vue" diff --git a/packages/dart/morph_core/README.md b/packages/dart/morph_core/README.md index 7860b54..7a83d0c 100644 --- a/packages/dart/morph_core/README.md +++ b/packages/dart/morph_core/README.md @@ -6,7 +6,7 @@ Dart port of **`@morph/core`** (Morph API Client). See ## Implemented (vs TypeScript) - **`validateAndIndexConfig`** — same validation rules and indexes as - `packages/core/src/config/validate.ts` (throws **`ConfigValidationError`** with + `packages/ts/core/src/config/validate.ts` (throws **`ConfigValidationError`** with aggregated messages). - **`normalizeExchangeSources`**, **`listAuthIdsForProvider`** — parity with TS helpers. - **`MorphClient.init`** — runs config validation, then throws **`UnimplementedError`** diff --git a/packages/dart/morph_core/lib/src/client/auth_handle.dart b/packages/dart/morph_core/lib/src/client/auth_handle.dart index 676b83b..198f1d8 100644 --- a/packages/dart/morph_core/lib/src/client/auth_handle.dart +++ b/packages/dart/morph_core/lib/src/client/auth_handle.dart @@ -3,7 +3,7 @@ import '../runtime/morph_runtime.dart'; import '../types/morph_surface.dart'; import '../util/jwt_utils.dart'; -/// Parity: [`AuthHandle`](packages/core/src/client/AuthHandle.ts). +/// Parity: [`AuthHandle`](packages/ts/core/src/client/AuthHandle.ts). final class AuthHandle { AuthHandle(this._rt, this.authId); diff --git a/packages/dart/morph_core/lib/src/client/host_client.dart b/packages/dart/morph_core/lib/src/client/host_client.dart index c824adc..e0ea1ca 100644 --- a/packages/dart/morph_core/lib/src/client/host_client.dart +++ b/packages/dart/morph_core/lib/src/client/host_client.dart @@ -2,7 +2,7 @@ import '../runtime/morph_runtime.dart'; import '../types/morph_surface.dart'; import '../types/morph_types.dart'; -/// Parity: [`HostClient`](packages/core/src/client/HostClient.ts). +/// Parity: [`HostClient`](packages/ts/core/src/client/HostClient.ts). final class HostClient { HostClient(this._rt, this.host); diff --git a/packages/dart/morph_core/lib/src/config/exchange_sources.dart b/packages/dart/morph_core/lib/src/config/exchange_sources.dart index 3f5d3a3..090e273 100644 --- a/packages/dart/morph_core/lib/src/config/exchange_sources.dart +++ b/packages/dart/morph_core/lib/src/config/exchange_sources.dart @@ -1,6 +1,6 @@ import 'package:morph_core/src/types/morph_types.dart'; -/// Parity with TS [normalizeExchangeSources](packages/core/src/util/exchangeSources.ts). +/// Parity with TS [normalizeExchangeSources](packages/ts/core/src/util/exchangeSources.ts). List normalizeExchangeSourcesFromTokenBlock(TokenBlock token) { final ex = token.exchangeSource; if (ex == null) return []; diff --git a/packages/dart/morph_core/lib/src/config/interpolate_config.dart b/packages/dart/morph_core/lib/src/config/interpolate_config.dart index 2542c63..86a8838 100644 --- a/packages/dart/morph_core/lib/src/config/interpolate_config.dart +++ b/packages/dart/morph_core/lib/src/config/interpolate_config.dart @@ -1,6 +1,6 @@ final _varPattern = RegExp(r'\$([a-zA-Z_][a-zA-Z0-9_]*)'); -/// Replaces `$variable` tokens (parity: [packages/core/src/config/interpolate.ts]). +/// Replaces `$variable` tokens (parity: [packages/ts/core/src/config/interpolate.ts]). String interpolateString( String template, Map variables, [ diff --git a/packages/dart/morph_core/lib/src/config/list_auth_ids.dart b/packages/dart/morph_core/lib/src/config/list_auth_ids.dart index 5e577c4..4606527 100644 --- a/packages/dart/morph_core/lib/src/config/list_auth_ids.dart +++ b/packages/dart/morph_core/lib/src/config/list_auth_ids.dart @@ -1,6 +1,6 @@ import 'package:morph_core/src/config/resolved_morph_config.dart'; -/// Parity with TS [listAuthIdsForProvider](packages/core/src/config/validate.ts). +/// Parity with TS [listAuthIdsForProvider](packages/ts/core/src/config/validate.ts). List listAuthIdsForProvider(String providerKey, ResolvedMorphConfig resolved) { final ctxs = resolved.contextsByProvider[providerKey] ?? []; final pIndex = resolved.config.providers.indexWhere((x) => x.key == providerKey); diff --git a/packages/dart/morph_core/lib/src/config/validate_config.dart b/packages/dart/morph_core/lib/src/config/validate_config.dart index 86695e5..0bdfdd2 100644 --- a/packages/dart/morph_core/lib/src/config/validate_config.dart +++ b/packages/dart/morph_core/lib/src/config/validate_config.dart @@ -8,7 +8,7 @@ import 'package:morph_core/src/types/morph_types.dart'; /// Accepts a [MorphConfig] or a JSON [Map] (converted via [MorphConfig.fromJson]). /// /// Throws [ConfigValidationError] when validation fails with the same error strings as -/// [@morph/core](https://github.com/burgan-tech/morph-api-client/blob/f/plugin/packages/core/src/config/validate.ts). +/// [@morph/core](https://github.com/burgan-tech/morph-api-client/blob/f/plugin/packages/ts/core/src/config/validate.ts). ResolvedMorphConfig validateAndIndexConfig(dynamic raw) { final MorphConfig config; if (raw is MorphConfig) { diff --git a/packages/dart/morph_core/lib/src/errors/morph_errors.dart b/packages/dart/morph_core/lib/src/errors/morph_errors.dart index a57b0e4..e63dfc1 100644 --- a/packages/dart/morph_core/lib/src/errors/morph_errors.dart +++ b/packages/dart/morph_core/lib/src/errors/morph_errors.dart @@ -1,4 +1,4 @@ -// Core errors mirroring `@morph/core` packages/core/src/errors.ts. +// Core errors mirroring `@morph/core` packages/ts/core/src/errors.ts. final class ConfigValidationError implements Exception { ConfigValidationError(this.errors) : assert(errors.isNotEmpty); diff --git a/packages/dart/morph_core/lib/src/http/host_pipeline.dart b/packages/dart/morph_core/lib/src/http/host_pipeline.dart index 6a27275..c04dcb3 100644 --- a/packages/dart/morph_core/lib/src/http/host_pipeline.dart +++ b/packages/dart/morph_core/lib/src/http/host_pipeline.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:morph_core/morph_core.dart'; -/// HTTP host pipeline parity with `packages/core/src/http/hostPipeline.ts`. +/// HTTP host pipeline parity with `packages/ts/core/src/http/hostPipeline.ts`. final class HostPipeline { HostPipeline({ required ResolvedMorphConfig resolved, diff --git a/packages/dart/morph_core/lib/src/runtime/morph_runtime.dart b/packages/dart/morph_core/lib/src/runtime/morph_runtime.dart index 8310274..46651bb 100644 --- a/packages/dart/morph_core/lib/src/runtime/morph_runtime.dart +++ b/packages/dart/morph_core/lib/src/runtime/morph_runtime.dart @@ -30,7 +30,7 @@ final class ParsedAuthProvider extends ParsedAuthRef { final String providerKey; } -/// Parity: [`MorphRuntime`](/packages/core/src/runtime.ts). +/// Parity: [`MorphRuntime`](/packages/ts/core/src/runtime.ts). final class MorphRuntime { MorphRuntime( this.resolved, diff --git a/packages/dart/morph_core/lib/src/runtime/plugin_install.dart b/packages/dart/morph_core/lib/src/runtime/plugin_install.dart index b7293cd..d7faa33 100644 --- a/packages/dart/morph_core/lib/src/runtime/plugin_install.dart +++ b/packages/dart/morph_core/lib/src/runtime/plugin_install.dart @@ -2,7 +2,7 @@ import '../config/resolved_morph_config.dart'; import '../types/morph_surface.dart'; /// Topological install order for plugins whose [MorphPlugin.requires] reference -/// [MorphPlugin.provides] from other plugins (parity `packages/core/src/runtime.ts`). +/// [MorphPlugin.provides] from other plugins (parity `packages/ts/core/src/runtime.ts`). List topoSortPlugins(List plugins) { if (plugins.isEmpty) return []; diff --git a/packages/dart/morph_core/lib/src/util/duration_ms.dart b/packages/dart/morph_core/lib/src/util/duration_ms.dart index a8f9934..df3fcbb 100644 --- a/packages/dart/morph_core/lib/src/util/duration_ms.dart +++ b/packages/dart/morph_core/lib/src/util/duration_ms.dart @@ -7,7 +7,7 @@ const Map _unitMs = { }; /// Parses strings like `"200ms"`, `"10s"`, `"30d"` into milliseconds. -/// Parity: [packages/core/src/util/duration.ts](packages/core/src/util/duration.ts). +/// Parity: [packages/ts/core/src/util/duration.ts](packages/ts/core/src/util/duration.ts). int parseDurationMs(String? input, [int? fallbackMs]) { if (input == null || input.trim().isEmpty) { if (fallbackMs != null) return fallbackMs; diff --git a/packages/dart/morph_core/lib/src/util/expiry.dart b/packages/dart/morph_core/lib/src/util/expiry.dart index 070799f..7401620 100644 --- a/packages/dart/morph_core/lib/src/util/expiry.dart +++ b/packages/dart/morph_core/lib/src/util/expiry.dart @@ -1,7 +1,7 @@ import 'package:morph_core/src/util/duration_ms.dart'; import 'package:morph_core/src/util/jwt_utils.dart'; -/// Parity [packages/oauth2/src/util/expiry.ts]. +/// Parity [packages/ts/oauth2/src/util/expiry.ts]. int? computeExpiresAt(String accessToken, int? expiresIn, String? maxTtl) { final fromJwt = getJwtExpirySeconds(accessToken); final now = DateTime.now().millisecondsSinceEpoch ~/ 1000; diff --git a/packages/dart/morph_core/lib/src/util/jwt_utils.dart b/packages/dart/morph_core/lib/src/util/jwt_utils.dart index 16a6524..127d2b2 100644 --- a/packages/dart/morph_core/lib/src/util/jwt_utils.dart +++ b/packages/dart/morph_core/lib/src/util/jwt_utils.dart @@ -9,7 +9,7 @@ String _base64UrlDecode(String s) { return utf8.decode(base64Decode(b64)); } -/// Parity: [packages/core/src/util/jwt.ts](packages/core/src/util/jwt.ts). +/// Parity: [packages/ts/core/src/util/jwt.ts](packages/ts/core/src/util/jwt.ts). JwtPayload decodeJwtPayload(String token) { final parts = token.split('.'); if (parts.length < 2) throw FormatException('Invalid JWT format'); diff --git a/packages/dart/morph_core/lib/src/util/oauth_authorize.dart b/packages/dart/morph_core/lib/src/util/oauth_authorize.dart index 0ff4c26..9260b97 100644 --- a/packages/dart/morph_core/lib/src/util/oauth_authorize.dart +++ b/packages/dart/morph_core/lib/src/util/oauth_authorize.dart @@ -1,7 +1,7 @@ import 'package:morph_core/src/util/resolve_endpoint.dart'; /// Builds an OAuth 2.0 authorization redirect URL. -/// Parity: [packages/core/src/util/oauthAuthorize.ts](packages/core/src/util/oauthAuthorize.ts). +/// Parity: [packages/ts/core/src/util/oauthAuthorize.ts](packages/ts/core/src/util/oauthAuthorize.ts). String buildOAuth2AuthorizationUrl({ required String baseUrl, required String authorizationPath, diff --git a/packages/dart/morph_core/lib/src/util/oauth_state.dart b/packages/dart/morph_core/lib/src/util/oauth_state.dart index fddefda..f3747db 100644 --- a/packages/dart/morph_core/lib/src/util/oauth_state.dart +++ b/packages/dart/morph_core/lib/src/util/oauth_state.dart @@ -4,7 +4,7 @@ import 'dart:math'; const _prefix = 'morph1.'; /// Encodes [authId] into OAuth state (URL-safe base64 payload). -/// Parity: [packages/core/src/util/oauthState.ts](packages/core/src/util/oauthState.ts). +/// Parity: [packages/ts/core/src/util/oauthState.ts](packages/ts/core/src/util/oauthState.ts). String encodeOAuthState(String authId) { final n = '${DateTime.now().microsecondsSinceEpoch}-${Random.secure().nextInt(4294967295)}'; final payload = jsonEncode({'a': authId, 'n': n}); diff --git a/packages/dart/morph_core/lib/src/util/resolve_endpoint.dart b/packages/dart/morph_core/lib/src/util/resolve_endpoint.dart index 8854c95..e7cad9a 100644 --- a/packages/dart/morph_core/lib/src/util/resolve_endpoint.dart +++ b/packages/dart/morph_core/lib/src/util/resolve_endpoint.dart @@ -1,4 +1,4 @@ -/// Combines base URL and path/absolute URL (parity: [packages/core/src/util/url.ts]). +/// Combines base URL and path/absolute URL (parity: [packages/ts/core/src/util/url.ts]). String resolveEndpoint(String baseUrl, String endpoint) { if (RegExp(r'^https?:\/\/', caseSensitive: false).hasMatch(endpoint)) { return endpoint; diff --git a/packages/dart/morph_logger/lib/create_logger.dart b/packages/dart/morph_logger/lib/create_logger.dart index 8c06232..1253b8f 100644 --- a/packages/dart/morph_logger/lib/create_logger.dart +++ b/packages/dart/morph_logger/lib/create_logger.dart @@ -2,7 +2,7 @@ import 'dart:developer' as dev; import 'package:morph_core/morph_core.dart'; -/// Same level names as TS [`LogLevel`](/packages/logger/src/index.ts). +/// Same level names as TS [`LogLevel`](/packages/ts/logger/src/index.ts). typedef LogLevel = String; const Map _levelOrder = { @@ -12,7 +12,7 @@ const Map _levelOrder = { 'error': 3, }; -/// Parity [`LoggerPluginOptions`](/packages/logger/src/index.ts). +/// Parity [`LoggerPluginOptions`](/packages/ts/logger/src/index.ts). final class LoggerPluginOptions { const LoggerPluginOptions({ this.level = 'info', @@ -59,7 +59,7 @@ MorphLogFn _defaultLog(String prefix, LogLevel minLevel) { }; } -/// Returns a [`MorphLogFn`] (TS [`createLogger`](/packages/logger/src/index.ts)). +/// Returns a [`MorphLogFn`] (TS [`createLogger`](/packages/ts/logger/src/index.ts)). MorphLogFn createLogger([LoggerPluginOptions opts = const LoggerPluginOptions()]) { return opts.onLog ?? _defaultLog(opts.prefix, opts.level); } diff --git a/packages/dart/morph_logger/lib/logger_plugin.dart b/packages/dart/morph_logger/lib/logger_plugin.dart index f70ec5d..69c8edf 100644 --- a/packages/dart/morph_logger/lib/logger_plugin.dart +++ b/packages/dart/morph_logger/lib/logger_plugin.dart @@ -2,7 +2,7 @@ import 'package:morph_core/morph_core.dart'; import 'create_logger.dart'; -/// Parity [`loggerPlugin`](/packages/logger/src/index.ts). +/// Parity [`loggerPlugin`](/packages/ts/logger/src/index.ts). MorphPlugin loggerPlugin([LoggerPluginOptions? opts]) => _LoggerMorphPlugin(opts ?? const LoggerPluginOptions()); diff --git a/packages/dart/morph_oauth2/lib/src/oauth2_plugin.dart b/packages/dart/morph_oauth2/lib/src/oauth2_plugin.dart index 491775c..ee7b4c4 100644 --- a/packages/dart/morph_oauth2/lib/src/oauth2_plugin.dart +++ b/packages/dart/morph_oauth2/lib/src/oauth2_plugin.dart @@ -3,7 +3,7 @@ import 'package:morph_core/morph_core.dart'; import 'oauth_callbacks.dart'; import 'token_lifecycle.dart'; -/// Options for [oauth2Plugin] ([`OAuth2PluginOptions`](../packages/oauth2/src/index.ts) parity). +/// Options for [oauth2Plugin]. TS parity: [`OAuth2PluginOptions`](/packages/ts/oauth2/src/index.ts). final class OAuth2PluginOptions { const OAuth2PluginOptions({ this.storage, @@ -38,7 +38,7 @@ MorphLogFn? _resolveLogFn(Object? logger, MorphPluginContext ctx) { return ctx.options.onLog; } -/// OAuth2 auth plugin parity with TS [`oauth2Plugin`](../packages/oauth2/src/index.ts). +/// OAuth2 auth plugin parity with TS [`oauth2Plugin`](/packages/ts/oauth2/src/index.ts). MorphPlugin oauth2Plugin([OAuth2PluginOptions? opts]) => _OAuth2MorphPlugin(opts ?? const OAuth2PluginOptions()); diff --git a/packages/dart/morph_oauth2/lib/src/oauth_callbacks.dart b/packages/dart/morph_oauth2/lib/src/oauth_callbacks.dart index 4eb15be..dd52adf 100644 --- a/packages/dart/morph_oauth2/lib/src/oauth_callbacks.dart +++ b/packages/dart/morph_oauth2/lib/src/oauth_callbacks.dart @@ -13,7 +13,7 @@ final class MorphOAuthCallbacksPartial { final void Function(String authId, TokenSet? tokens)? onTokenChange; } -/// Callbacks matching TS [`MorphCallbacks`](../packages/core/src/types.ts). +/// Callbacks matching TS [`MorphCallbacks`](/packages/ts/core/src/types.ts). final class MorphOAuthCallbacks { MorphOAuthCallbacks({ required this.onAuthRequired, diff --git a/packages/dart/morph_oauth2/lib/src/token_lifecycle.dart b/packages/dart/morph_oauth2/lib/src/token_lifecycle.dart index 30fe39c..c6ac278 100644 --- a/packages/dart/morph_oauth2/lib/src/token_lifecycle.dart +++ b/packages/dart/morph_oauth2/lib/src/token_lifecycle.dart @@ -27,7 +27,7 @@ const _grantTokenExchange = 'urn:ietf:params:oauth:grant-type:token-exchange'; const _accessTokenSubjectType = 'urn:ietf:params:oauth:token-type:access_token'; -/// Implements [`AuthPlugin`] — parity `packages/oauth2/src/tokens/tokenLifecycle.ts`. +/// Implements [`AuthPlugin`] — parity `packages/ts/oauth2/src/tokens/tokenLifecycle.ts`. final class TokenLifecycle implements AuthPlugin { TokenLifecycle( this.resolved, diff --git a/packages/dart/morph_oauth2/lib/src/token_vault.dart b/packages/dart/morph_oauth2/lib/src/token_vault.dart index ddbd1e4..1ed7ea8 100644 --- a/packages/dart/morph_oauth2/lib/src/token_vault.dart +++ b/packages/dart/morph_oauth2/lib/src/token_vault.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'package:morph_core/morph_core.dart'; -/// Path manifest JSON stored beside token blobs (`packages/oauth2/src/tokens/tokenVault.ts`). +/// Path manifest JSON stored beside token blobs (`packages/ts/oauth2/src/tokens/tokenVault.ts`). final class PathManifest { PathManifest({required this.accessKey, this.refreshKey}); factory PathManifest.fromJson(Map m) => diff --git a/packages/browser-storage/package.json b/packages/ts/browser-storage/package.json similarity index 100% rename from packages/browser-storage/package.json rename to packages/ts/browser-storage/package.json diff --git a/packages/browser-storage/src/browserStorage.ts b/packages/ts/browser-storage/src/browserStorage.ts similarity index 100% rename from packages/browser-storage/src/browserStorage.ts rename to packages/ts/browser-storage/src/browserStorage.ts diff --git a/packages/browser-storage/src/index.ts b/packages/ts/browser-storage/src/index.ts similarity index 100% rename from packages/browser-storage/src/index.ts rename to packages/ts/browser-storage/src/index.ts diff --git a/packages/browser-storage/tsconfig.json b/packages/ts/browser-storage/tsconfig.json similarity index 100% rename from packages/browser-storage/tsconfig.json rename to packages/ts/browser-storage/tsconfig.json diff --git a/packages/browser-storage/vite.config.ts b/packages/ts/browser-storage/vite.config.ts similarity index 100% rename from packages/browser-storage/vite.config.ts rename to packages/ts/browser-storage/vite.config.ts diff --git a/packages/core/package.json b/packages/ts/core/package.json similarity index 100% rename from packages/core/package.json rename to packages/ts/core/package.json diff --git a/packages/core/src/client/AuthHandle.ts b/packages/ts/core/src/client/AuthHandle.ts similarity index 100% rename from packages/core/src/client/AuthHandle.ts rename to packages/ts/core/src/client/AuthHandle.ts diff --git a/packages/core/src/client/HostClient.ts b/packages/ts/core/src/client/HostClient.ts similarity index 100% rename from packages/core/src/client/HostClient.ts rename to packages/ts/core/src/client/HostClient.ts diff --git a/packages/core/src/client/MorphClient.ts b/packages/ts/core/src/client/MorphClient.ts similarity index 100% rename from packages/core/src/client/MorphClient.ts rename to packages/ts/core/src/client/MorphClient.ts diff --git a/packages/core/src/config/interpolate.ts b/packages/ts/core/src/config/interpolate.ts similarity index 100% rename from packages/core/src/config/interpolate.ts rename to packages/ts/core/src/config/interpolate.ts diff --git a/packages/core/src/config/validate.ts b/packages/ts/core/src/config/validate.ts similarity index 100% rename from packages/core/src/config/validate.ts rename to packages/ts/core/src/config/validate.ts diff --git a/packages/core/src/errors.ts b/packages/ts/core/src/errors.ts similarity index 100% rename from packages/core/src/errors.ts rename to packages/ts/core/src/errors.ts diff --git a/packages/core/src/http/hostPipeline.ts b/packages/ts/core/src/http/hostPipeline.ts similarity index 100% rename from packages/core/src/http/hostPipeline.ts rename to packages/ts/core/src/http/hostPipeline.ts diff --git a/packages/core/src/index.ts b/packages/ts/core/src/index.ts similarity index 100% rename from packages/core/src/index.ts rename to packages/ts/core/src/index.ts diff --git a/packages/core/src/runtime.ts b/packages/ts/core/src/runtime.ts similarity index 100% rename from packages/core/src/runtime.ts rename to packages/ts/core/src/runtime.ts diff --git a/packages/core/src/types.ts b/packages/ts/core/src/types.ts similarity index 100% rename from packages/core/src/types.ts rename to packages/ts/core/src/types.ts diff --git a/packages/core/src/util/duration.ts b/packages/ts/core/src/util/duration.ts similarity index 100% rename from packages/core/src/util/duration.ts rename to packages/ts/core/src/util/duration.ts diff --git a/packages/core/src/util/exchangeSources.ts b/packages/ts/core/src/util/exchangeSources.ts similarity index 100% rename from packages/core/src/util/exchangeSources.ts rename to packages/ts/core/src/util/exchangeSources.ts diff --git a/packages/core/src/util/expiry.ts b/packages/ts/core/src/util/expiry.ts similarity index 100% rename from packages/core/src/util/expiry.ts rename to packages/ts/core/src/util/expiry.ts diff --git a/packages/core/src/util/httpTrace.ts b/packages/ts/core/src/util/httpTrace.ts similarity index 100% rename from packages/core/src/util/httpTrace.ts rename to packages/ts/core/src/util/httpTrace.ts diff --git a/packages/core/src/util/jwt.ts b/packages/ts/core/src/util/jwt.ts similarity index 100% rename from packages/core/src/util/jwt.ts rename to packages/ts/core/src/util/jwt.ts diff --git a/packages/core/src/util/normalizeOrigin.ts b/packages/ts/core/src/util/normalizeOrigin.ts similarity index 100% rename from packages/core/src/util/normalizeOrigin.ts rename to packages/ts/core/src/util/normalizeOrigin.ts diff --git a/packages/core/src/util/oauthAuthorize.ts b/packages/ts/core/src/util/oauthAuthorize.ts similarity index 100% rename from packages/core/src/util/oauthAuthorize.ts rename to packages/ts/core/src/util/oauthAuthorize.ts diff --git a/packages/core/src/util/oauthReturn.ts b/packages/ts/core/src/util/oauthReturn.ts similarity index 100% rename from packages/core/src/util/oauthReturn.ts rename to packages/ts/core/src/util/oauthReturn.ts diff --git a/packages/core/src/util/oauthState.ts b/packages/ts/core/src/util/oauthState.ts similarity index 100% rename from packages/core/src/util/oauthState.ts rename to packages/ts/core/src/util/oauthState.ts diff --git a/packages/core/src/util/url.ts b/packages/ts/core/src/util/url.ts similarity index 100% rename from packages/core/src/util/url.ts rename to packages/ts/core/src/util/url.ts diff --git a/packages/core/tsconfig.json b/packages/ts/core/tsconfig.json similarity index 100% rename from packages/core/tsconfig.json rename to packages/ts/core/tsconfig.json diff --git a/packages/core/vite.config.ts b/packages/ts/core/vite.config.ts similarity index 100% rename from packages/core/vite.config.ts rename to packages/ts/core/vite.config.ts diff --git a/packages/logger/package.json b/packages/ts/logger/package.json similarity index 100% rename from packages/logger/package.json rename to packages/ts/logger/package.json diff --git a/packages/logger/src/index.ts b/packages/ts/logger/src/index.ts similarity index 100% rename from packages/logger/src/index.ts rename to packages/ts/logger/src/index.ts diff --git a/packages/logger/tsconfig.json b/packages/ts/logger/tsconfig.json similarity index 100% rename from packages/logger/tsconfig.json rename to packages/ts/logger/tsconfig.json diff --git a/packages/logger/vite.config.ts b/packages/ts/logger/vite.config.ts similarity index 100% rename from packages/logger/vite.config.ts rename to packages/ts/logger/vite.config.ts diff --git a/packages/oauth2/package.json b/packages/ts/oauth2/package.json similarity index 100% rename from packages/oauth2/package.json rename to packages/ts/oauth2/package.json diff --git a/packages/oauth2/src/index.ts b/packages/ts/oauth2/src/index.ts similarity index 100% rename from packages/oauth2/src/index.ts rename to packages/ts/oauth2/src/index.ts diff --git a/packages/oauth2/src/oauth/tokenHttp.ts b/packages/ts/oauth2/src/oauth/tokenHttp.ts similarity index 100% rename from packages/oauth2/src/oauth/tokenHttp.ts rename to packages/ts/oauth2/src/oauth/tokenHttp.ts diff --git a/packages/oauth2/src/tokens/tokenLifecycle.ts b/packages/ts/oauth2/src/tokens/tokenLifecycle.ts similarity index 100% rename from packages/oauth2/src/tokens/tokenLifecycle.ts rename to packages/ts/oauth2/src/tokens/tokenLifecycle.ts diff --git a/packages/oauth2/src/tokens/tokenVault.ts b/packages/ts/oauth2/src/tokens/tokenVault.ts similarity index 100% rename from packages/oauth2/src/tokens/tokenVault.ts rename to packages/ts/oauth2/src/tokens/tokenVault.ts diff --git a/packages/oauth2/src/util/duration.ts b/packages/ts/oauth2/src/util/duration.ts similarity index 100% rename from packages/oauth2/src/util/duration.ts rename to packages/ts/oauth2/src/util/duration.ts diff --git a/packages/oauth2/src/util/exchangeSources.ts b/packages/ts/oauth2/src/util/exchangeSources.ts similarity index 100% rename from packages/oauth2/src/util/exchangeSources.ts rename to packages/ts/oauth2/src/util/exchangeSources.ts diff --git a/packages/oauth2/src/util/expiry.ts b/packages/ts/oauth2/src/util/expiry.ts similarity index 100% rename from packages/oauth2/src/util/expiry.ts rename to packages/ts/oauth2/src/util/expiry.ts diff --git a/packages/oauth2/src/util/interpolate.ts b/packages/ts/oauth2/src/util/interpolate.ts similarity index 100% rename from packages/oauth2/src/util/interpolate.ts rename to packages/ts/oauth2/src/util/interpolate.ts diff --git a/packages/oauth2/src/util/listAuthIds.ts b/packages/ts/oauth2/src/util/listAuthIds.ts similarity index 100% rename from packages/oauth2/src/util/listAuthIds.ts rename to packages/ts/oauth2/src/util/listAuthIds.ts diff --git a/packages/oauth2/src/util/normalizeOrigin.ts b/packages/ts/oauth2/src/util/normalizeOrigin.ts similarity index 100% rename from packages/oauth2/src/util/normalizeOrigin.ts rename to packages/ts/oauth2/src/util/normalizeOrigin.ts diff --git a/packages/oauth2/src/util/oauthAuthorize.ts b/packages/ts/oauth2/src/util/oauthAuthorize.ts similarity index 100% rename from packages/oauth2/src/util/oauthAuthorize.ts rename to packages/ts/oauth2/src/util/oauthAuthorize.ts diff --git a/packages/oauth2/src/util/oauthReturn.ts b/packages/ts/oauth2/src/util/oauthReturn.ts similarity index 100% rename from packages/oauth2/src/util/oauthReturn.ts rename to packages/ts/oauth2/src/util/oauthReturn.ts diff --git a/packages/oauth2/src/util/oauthState.ts b/packages/ts/oauth2/src/util/oauthState.ts similarity index 100% rename from packages/oauth2/src/util/oauthState.ts rename to packages/ts/oauth2/src/util/oauthState.ts diff --git a/packages/oauth2/src/util/url.ts b/packages/ts/oauth2/src/util/url.ts similarity index 100% rename from packages/oauth2/src/util/url.ts rename to packages/ts/oauth2/src/util/url.ts diff --git a/packages/oauth2/tsconfig.json b/packages/ts/oauth2/tsconfig.json similarity index 100% rename from packages/oauth2/tsconfig.json rename to packages/ts/oauth2/tsconfig.json diff --git a/packages/oauth2/vite.config.ts b/packages/ts/oauth2/vite.config.ts similarity index 100% rename from packages/oauth2/vite.config.ts rename to packages/ts/oauth2/vite.config.ts diff --git a/poc/ts-vue/package.json b/poc/ts-vue/package.json index 3cb5105..2168bf3 100644 --- a/poc/ts-vue/package.json +++ b/poc/ts-vue/package.json @@ -9,10 +9,10 @@ "preview": "vite preview" }, "dependencies": { - "@morph/core": "file:../../packages/core", - "@morph/oauth2": "file:../../packages/oauth2", - "@morph/browser-storage": "file:../../packages/browser-storage", - "@morph/logger": "file:../../packages/logger", + "@morph/core": "file:../../packages/ts/core", + "@morph/oauth2": "file:../../packages/ts/oauth2", + "@morph/browser-storage": "file:../../packages/ts/browser-storage", + "@morph/logger": "file:../../packages/ts/logger", "vue": "^3.5.30", "vue-router": "^4.5.0" }, From fc19639c4c2e38a7733ae424d714d9b80ad2b55c Mon Sep 17 00:00:00 2001 From: u0b002 Date: Mon, 4 May 2026 22:02:23 +0300 Subject: [PATCH 2/2] docs: align architecture project tree (Gemini review) - Align branch comments and restore browserStorage.ts description - Regenerate package-lock.json after clean npm install (remove extraneous entries) Co-authored-by: Cursor --- docs/architecture.md | 28 ++-- package-lock.json | 342 +++++++++++++++++++------------------------ 2 files changed, 161 insertions(+), 209 deletions(-) diff --git a/docs/architecture.md b/docs/architecture.md index 7dec123..e178f08 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -160,26 +160,26 @@ morph-api-client/ │ │ ├── core/ # @morph/core — types, config, HTTP pipeline, client facades │ │ │ └── src/ │ │ │ ├── client/ # MorphClient, HostClient, AuthHandle -│ │ │ ├── config/ # validate (CtxRef, hostByKey), interpolate ($variable) -│ │ │ ├── http/ # HostPipeline (depends on AuthPlugin interface) -│ │ │ ├── util/ # jwt, expiry, url, duration, httpTrace, oauthState -│ │ │ ├── runtime.ts # MorphRuntime coordinator -│ │ │ ├── types.ts # Public interfaces (AuthPlugin, StorageProvider, …) -│ │ │ ├── errors.ts # Error classes -│ │ │ └── index.ts # Public exports +│ │ │ ├── config/ # validate (CtxRef, hostByKey), interpolate ($variable) +│ │ │ ├── http/ # HostPipeline (depends on AuthPlugin interface) +│ │ │ ├── util/ # jwt, expiry, url, duration, httpTrace, oauthState +│ │ │ ├── runtime.ts # MorphRuntime coordinator +│ │ │ ├── types.ts # Public interfaces (AuthPlugin, StorageProvider, …) +│ │ │ ├── errors.ts # Error classes +│ │ │ └── index.ts # Public exports │ │ ├── oauth2/ # @morph/oauth2 — OAuth2 token lifecycle plugin │ │ │ └── src/ -│ │ │ ├── tokens/ # TokenLifecycle (implements AuthPlugin), TokenVault -│ │ │ ├── oauth/ # tokenHttp (grant HTTP) -│ │ │ ├── util/ # interpolate, expiry, exchangeSources -│ │ │ └── index.ts # oauth2Plugin() MorphPlugin factory +│ │ │ ├── tokens/ # TokenLifecycle (implements AuthPlugin), TokenVault +│ │ │ ├── oauth/ # tokenHttp (grant HTTP) +│ │ │ ├── util/ # interpolate, expiry, exchangeSources +│ │ │ └── index.ts # oauth2Plugin() MorphPlugin factory │ │ ├── browser-storage/ # @morph/browser-storage — browser storage adapters │ │ │ └── src/ -│ │ │ ├── browserStorage.ts -│ │ │ └── index.ts # browserStoragePlugin() MorphPlugin factory +│ │ │ ├── browserStorage.ts # createBrowserSessionStorage, createBrowserLocalStorage +│ │ │ └── index.ts # browserStoragePlugin() MorphPlugin factory │ │ └── logger/ # @morph/logger — structured logging plugin │ │ └── src/ -│ │ └── index.ts # loggerPlugin() MorphPlugin factory +│ │ └── index.ts # loggerPlugin() MorphPlugin factory │ └── dart/ # Dart Pub packages (morph_*), parity with TS track │ ├── morph_core/ │ ├── morph_oauth2/ diff --git a/package-lock.json b/package-lock.json index bcf933d..d4d3374 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,6 @@ "packages/ts/*" ] }, - "core": { - "name": "morph-api-client", - "version": "0.1.0", - "extraneous": true, - "devDependencies": { - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vite-plugin-dts": "^3.9.1" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -40,9 +30,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", "dev": true, "license": "MIT", "dependencies": { @@ -592,9 +582,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", - "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.3.tgz", + "integrity": "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==", "cpu": [ "arm" ], @@ -606,9 +596,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", - "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.3.tgz", + "integrity": "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==", "cpu": [ "arm64" ], @@ -620,9 +610,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", - "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.3.tgz", + "integrity": "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==", "cpu": [ "arm64" ], @@ -634,9 +624,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", - "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.3.tgz", + "integrity": "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==", "cpu": [ "x64" ], @@ -648,9 +638,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", - "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.3.tgz", + "integrity": "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==", "cpu": [ "arm64" ], @@ -662,9 +652,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", - "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.3.tgz", + "integrity": "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==", "cpu": [ "x64" ], @@ -676,9 +666,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", - "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.3.tgz", + "integrity": "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==", "cpu": [ "arm" ], @@ -690,9 +680,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", - "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.3.tgz", + "integrity": "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==", "cpu": [ "arm" ], @@ -704,9 +694,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", - "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.3.tgz", + "integrity": "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==", "cpu": [ "arm64" ], @@ -718,9 +708,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", - "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.3.tgz", + "integrity": "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==", "cpu": [ "arm64" ], @@ -732,9 +722,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", - "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.3.tgz", + "integrity": "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==", "cpu": [ "loong64" ], @@ -746,9 +736,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", - "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.3.tgz", + "integrity": "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==", "cpu": [ "loong64" ], @@ -760,9 +750,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", - "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.3.tgz", + "integrity": "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==", "cpu": [ "ppc64" ], @@ -774,9 +764,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", - "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.3.tgz", + "integrity": "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==", "cpu": [ "ppc64" ], @@ -788,9 +778,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", - "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.3.tgz", + "integrity": "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==", "cpu": [ "riscv64" ], @@ -802,9 +792,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", - "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.3.tgz", + "integrity": "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==", "cpu": [ "riscv64" ], @@ -816,9 +806,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", - "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.3.tgz", + "integrity": "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==", "cpu": [ "s390x" ], @@ -830,9 +820,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", - "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.3.tgz", + "integrity": "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==", "cpu": [ "x64" ], @@ -844,9 +834,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", - "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.3.tgz", + "integrity": "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==", "cpu": [ "x64" ], @@ -858,9 +848,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", - "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.3.tgz", + "integrity": "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==", "cpu": [ "x64" ], @@ -872,9 +862,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", - "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.3.tgz", + "integrity": "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==", "cpu": [ "arm64" ], @@ -886,9 +876,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", - "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.3.tgz", + "integrity": "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==", "cpu": [ "arm64" ], @@ -900,9 +890,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", - "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.3.tgz", + "integrity": "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==", "cpu": [ "ia32" ], @@ -914,9 +904,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", - "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.3.tgz", + "integrity": "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==", "cpu": [ "x64" ], @@ -928,9 +918,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", - "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.3.tgz", + "integrity": "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==", "cpu": [ "x64" ], @@ -1053,28 +1043,28 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.32", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.32.tgz", - "integrity": "sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==", + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.33.tgz", + "integrity": "sha512-3PZLQwFw4Za3TC8t0FvTy3wI16Kt+pmwcgNZca4Pj9iWL2E72a/gZlpBtAJvEdDMdCxdG/qq0C7PN0bsJuv0Rw==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.29.2", - "@vue/shared": "3.5.32", + "@vue/shared": "3.5.33", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.32", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.32.tgz", - "integrity": "sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==", + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.33.tgz", + "integrity": "sha512-PXq0yrfCLzzL07rbXO4awtXY1Z06LG2eu6Adg3RJFa/j3Cii217XxxLXG22N330gw7GmALCY0Z8RgXEviwgpjA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.32", - "@vue/shared": "3.5.32" + "@vue/compiler-core": "3.5.33", + "@vue/shared": "3.5.33" } }, "node_modules/@vue/language-core": { @@ -1104,9 +1094,9 @@ } }, "node_modules/@vue/language-core/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -1130,9 +1120,9 @@ } }, "node_modules/@vue/shared": { - "version": "3.5.32", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.32.tgz", - "integrity": "sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==", + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.33.tgz", + "integrity": "sha512-5vR2QIlmaLG77Ygd4pMP6+SGQ5yox9VhtnbDWTy9DzMzdmeLxZ1QqxrywEZ9sa1AVubfIJyaCG3ytyWU81ufcQ==", "dev": true, "license": "MIT" }, @@ -1171,9 +1161,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -1244,6 +1234,16 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -1362,9 +1362,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dev": true, "license": "MIT", "dependencies": { @@ -1515,9 +1515,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "dev": true, "funding": [ { @@ -1568,9 +1568,9 @@ } }, "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "dev": true, "funding": [ { @@ -1607,12 +1607,13 @@ } }, "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", "dependencies": { + "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" @@ -1628,9 +1629,9 @@ } }, "node_modules/rollup": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", - "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.3.tgz", + "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", "dev": true, "license": "MIT", "dependencies": { @@ -1644,31 +1645,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.1", - "@rollup/rollup-android-arm64": "4.60.1", - "@rollup/rollup-darwin-arm64": "4.60.1", - "@rollup/rollup-darwin-x64": "4.60.1", - "@rollup/rollup-freebsd-arm64": "4.60.1", - "@rollup/rollup-freebsd-x64": "4.60.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", - "@rollup/rollup-linux-arm-musleabihf": "4.60.1", - "@rollup/rollup-linux-arm64-gnu": "4.60.1", - "@rollup/rollup-linux-arm64-musl": "4.60.1", - "@rollup/rollup-linux-loong64-gnu": "4.60.1", - "@rollup/rollup-linux-loong64-musl": "4.60.1", - "@rollup/rollup-linux-ppc64-gnu": "4.60.1", - "@rollup/rollup-linux-ppc64-musl": "4.60.1", - "@rollup/rollup-linux-riscv64-gnu": "4.60.1", - "@rollup/rollup-linux-riscv64-musl": "4.60.1", - "@rollup/rollup-linux-s390x-gnu": "4.60.1", - "@rollup/rollup-linux-x64-gnu": "4.60.1", - "@rollup/rollup-linux-x64-musl": "4.60.1", - "@rollup/rollup-openbsd-x64": "4.60.1", - "@rollup/rollup-openharmony-arm64": "4.60.1", - "@rollup/rollup-win32-arm64-msvc": "4.60.1", - "@rollup/rollup-win32-ia32-msvc": "4.60.1", - "@rollup/rollup-win32-x64-gnu": "4.60.1", - "@rollup/rollup-win32-x64-msvc": "4.60.1", + "@rollup/rollup-android-arm-eabi": "4.60.3", + "@rollup/rollup-android-arm64": "4.60.3", + "@rollup/rollup-darwin-arm64": "4.60.3", + "@rollup/rollup-darwin-x64": "4.60.3", + "@rollup/rollup-freebsd-arm64": "4.60.3", + "@rollup/rollup-freebsd-x64": "4.60.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", + "@rollup/rollup-linux-arm-musleabihf": "4.60.3", + "@rollup/rollup-linux-arm64-gnu": "4.60.3", + "@rollup/rollup-linux-arm64-musl": "4.60.3", + "@rollup/rollup-linux-loong64-gnu": "4.60.3", + "@rollup/rollup-linux-loong64-musl": "4.60.3", + "@rollup/rollup-linux-ppc64-gnu": "4.60.3", + "@rollup/rollup-linux-ppc64-musl": "4.60.3", + "@rollup/rollup-linux-riscv64-gnu": "4.60.3", + "@rollup/rollup-linux-riscv64-musl": "4.60.3", + "@rollup/rollup-linux-s390x-gnu": "4.60.3", + "@rollup/rollup-linux-x64-gnu": "4.60.3", + "@rollup/rollup-linux-x64-musl": "4.60.3", + "@rollup/rollup-openbsd-x64": "4.60.3", + "@rollup/rollup-openharmony-arm64": "4.60.3", + "@rollup/rollup-win32-arm64-msvc": "4.60.3", + "@rollup/rollup-win32-ia32-msvc": "4.60.3", + "@rollup/rollup-win32-x64-gnu": "4.60.3", + "@rollup/rollup-win32-x64-msvc": "4.60.3", "fsevents": "~2.3.2" } }, @@ -1956,55 +1957,6 @@ "commander": "^9.4.1" } }, - "packages/browser-storage": { - "name": "@morph/browser-storage", - "version": "0.1.0", - "extraneous": true, - "dependencies": { - "@morph/core": "^0.1.0" - }, - "devDependencies": { - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vite-plugin-dts": "^3.9.1" - } - }, - "packages/core": { - "name": "@morph/core", - "version": "0.1.0", - "extraneous": true, - "devDependencies": { - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vite-plugin-dts": "^3.9.1" - } - }, - "packages/logger": { - "name": "@morph/logger", - "version": "0.1.0", - "extraneous": true, - "dependencies": { - "@morph/core": "^0.1.0" - }, - "devDependencies": { - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vite-plugin-dts": "^3.9.1" - } - }, - "packages/oauth2": { - "name": "@morph/oauth2", - "version": "0.1.0", - "extraneous": true, - "dependencies": { - "@morph/core": "^0.1.0" - }, - "devDependencies": { - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vite-plugin-dts": "^3.9.1" - } - }, "packages/ts/browser-storage": { "name": "@morph/browser-storage", "version": "0.1.0",