diff --git a/.changeset/dry-beans-itch.md b/.changeset/dry-beans-itch.md new file mode 100644 index 0000000..a79fb61 --- /dev/null +++ b/.changeset/dry-beans-itch.md @@ -0,0 +1,7 @@ +--- +"monarch-orm": minor +--- + +Relations now use typed field references instead of plain strings for `from` and `to` fields. + +Relations also support default population options via `.options()`, which apply whenever a relation is populated with `true` and can be overridden per query. diff --git a/.changeset/purple-pens-scream.md b/.changeset/purple-pens-scream.md new file mode 100644 index 0000000..23fcece --- /dev/null +++ b/.changeset/purple-pens-scream.md @@ -0,0 +1,7 @@ +--- +"monarch-orm": minor +--- + +The `many` relation now supports all field type combinations: single→single, single→array, array→single, and array→array. + +The `refs` relation has been removed. Use `many` with an array `from` field instead. diff --git a/.changeset/witty-needles-punch.md b/.changeset/witty-needles-punch.md new file mode 100644 index 0000000..b6ffac9 --- /dev/null +++ b/.changeset/witty-needles-punch.md @@ -0,0 +1,5 @@ +--- +"monarch-orm": minor +--- + +Bumped minimum required MongoDB driver version to `>= 7.0.0`. diff --git a/.prettierignore b/.prettierignore index 2e1fa2d..fa78f6c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,3 @@ -*.md \ No newline at end of file +*.md +package.json +pnpm-lock.yaml \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 1a00976..ba38081 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,11 @@ { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, "js/ts.tsdk.path": "node_modules/typescript/lib" } diff --git a/README.md b/README.md index 6125160..23b26b0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Type-safe MongoDB collections, schema parsing, relations, and query helpers for - **Strongly Typed:** Infer schema inputs and outputs for queries and collection methods. - **Flexible Schemas:** Use transforms, defaults, validation, virtuals, renames, and default omit rules. -- **Typed Relations:** Define one, many, and refs relations with typed population support. +- **Typed Relations:** Define one and many relations with typed population support. - **Familiar MongoDB Access:** Use typed query methods, operators, aggregation, and raw collection access. - **Collection Initialization:** Automatically initialize collections with indexes and JSON Schema validation, or do it manually. @@ -111,39 +111,111 @@ Use `withRelations()` on a schemas object to define typed relations. ```ts const schemas = defineSchemas({ userSchema, postSchema }); -const schemasWithRelations = schemas.withRelations((s) => ({ +const schemasWithRelations = schemas.withRelations((r) => ({ users: { - posts: s.users.$many.posts({ from: "_id", to: "authorId" }), + posts: r.many.posts({ from: r.users._id, to: r.posts.authorId }), }, posts: { - author: s.posts.$one.users({ from: "authorId", to: "_id" }), - contributors: s.posts.$refs.users({ from: "contributorIds", to: "_id" }), + author: r.one.users({ from: r.posts.authorId, to: r.users._id }), + contributors: r.many.users({ from: r.posts.contributorIds, to: r.users._id }), }, })); ``` #### One relations -Use `$one` when a local field points to a single document in another collection. +Use `one` when a single local field points to a single document in another collection. ```ts -author: s.posts.$one.users({ from: "authorId", to: "_id" }) +const userSchema = createSchema("users", { name: string() }); +const postSchema = createSchema("posts", { + title: string(), + authorId: objectId(), +}); + +const schemas = defineSchemas({ userSchema, postSchema }); + +schemas.withRelations((r) => ({ + posts: { + author: r.one.users({ from: r.posts.authorId, to: r.users._id }), + }, +})); ``` #### Many relations -Use `$many` when one document relates to many documents in another collection by matching a local field against a foreign field. +Use `many` when one document relates to many documents in another collection. The `from` and `to` fields can each be a single value or an array, so you can model different relation patterns: + +- **single → single** — a foreign key on the target side (`user._id` → `post.authorId`) +- **single → array** — the target embeds a list of references (`post._id` → `tag.postIds`) +- **array → single** — the source embeds a list of references (`post.tagIds` → `tag._id`) +- **array → array** — match documents that share any element between two arrays (`post.tagIds` → `event.tagIds`) ```ts -posts: s.users.$many.posts({ from: "_id", to: "authorId" }) +const userSchema = createSchema("users", { name: string() }); +const postSchema = createSchema("posts", { + title: string(), + authorId: objectId(), + tagIds: array(objectId()).default([]), +}); +const tagSchema = createSchema("tags", { + name: string(), + postIds: array(objectId()).default([]), +}); +const eventSchema = createSchema("events", { + name: string(), + tagIds: array(objectId()).default([]), +}); + +const schemas = defineSchemas({ userSchema, postSchema, tagSchema, eventSchema }); + +schemas.withRelations((r) => ({ + users: { + // single → single: all posts where post.authorId equals user._id + posts: r.many.posts({ from: r.users._id, to: r.posts.authorId }), + }, + posts: { + // single → array: all tags where post._id appears in tag.postIds + taggedBy: r.many.tags({ from: r.posts._id, to: r.tags.postIds }), + // array → single: all tags where tag._id appears in post.tagIds + tags: r.many.tags({ from: r.posts.tagIds, to: r.tags._id }), + // array → array: all events where event.tagIds shares any value with post.tagIds + relatedEvents: r.many.events({ from: r.posts.tagIds, to: r.events.tagIds }), + }, +})); ``` -#### Refs relations +#### Default relation options + +Call `.options()` on any relation to set default population behavior. These defaults apply whenever the relation is populated with `true`. They can always be overridden by passing explicit options at query time. + +```ts +const schemasWithRelations = schemas.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.authorId }).options({ + sort: { createdAt: -1 }, + limit: 10, + select: { title: true, createdAt: true }, + }), + }, + posts: { + author: r.one.users({ from: r.posts.authorId, to: r.users._id }).options({ + omit: { passwordHash: true }, + }), + }, +})); +``` -Use `$refs` when a local array field stores multiple references to another collection. +With these defaults in place, populating with `true` applies them automatically: ```ts -contributors: s.posts.$refs.users({ from: "contributorIds", to: "_id" }) +// applies sort, limit, and select from the relation definition +const users = await db.collections.users.find().populate({ posts: true }); + +// override the defaults for this query +const users2 = await db.collections.users.find().populate({ + posts: { sort: { title: 1 }, limit: 5 }, +}); ``` ### Schema Groups @@ -159,9 +231,9 @@ const userSchema = createSchema("users", { tutorId: objectId().optional(), }); -const userGroup = defineSchemas({ userSchema }).withRelations((s) => ({ +const userGroup = defineSchemas({ userSchema }).withRelations((r) => ({ users: { - tutor: s.users.$one.users({ from: "tutorId", to: "_id" }), + tutor: r.one.users({ from: r.users.tutorId, to: r.users._id }), }, })); @@ -175,9 +247,9 @@ const categorySchema = createSchema("categories", { parentId: objectId().optional(), }); -const contentGroup = defineSchemas({ postSchema, categorySchema }).withRelations((s) => ({ +const contentGroup = defineSchemas({ postSchema, categorySchema }).withRelations((r) => ({ categories: { - parent: s.categories.$one.categories({ from: "parentId", to: "_id" }), + parent: r.one.categories({ from: r.categories.parentId, to: r.categories._id }), }, })); @@ -187,12 +259,12 @@ const schemas = mergeSchemas(userGroup, contentGroup); You can also add cross-group relations after merging: ```ts -const schemasWithCrossGroupRelations = schemas.withRelations((s) => ({ +const schemasWithCrossGroupRelations = schemas.withRelations((r) => ({ users: { - posts: s.users.$many.posts({ from: "_id", to: "authorId" }), + posts: r.many.posts({ from: r.users._id, to: r.posts.authorId }), }, posts: { - author: s.posts.$one.users({ from: "authorId", to: "_id" }), + author: r.one.users({ from: r.posts.authorId, to: r.users._id }), }, })); ``` diff --git a/package.json b/package.json index 9dd32cd..a1471a7 100644 --- a/package.json +++ b/package.json @@ -9,37 +9,37 @@ "exports": { ".": { "require": { - "types": "./dist/index.d.cts", + "types": "./dist/index.d.ts", "default": "./dist/index.cjs" }, "import": { - "types": "./dist/index.d.mts", + "types": "./dist/index.d.ts", "default": "./dist/index.mjs" } }, "./types": { "require": { - "types": "./dist/types/index.d.cts", + "types": "./dist/types/index.d.ts", "default": "./dist/types/index.cjs" }, "import": { - "types": "./dist/types/index.d.mts", + "types": "./dist/types/index.d.ts", "default": "./dist/types/index.mjs" } }, "./operators": { "require": { - "types": "./dist/operators/index.d.cts", + "types": "./dist/operators/index.d.ts", "default": "./dist/operators/index.cjs" }, "import": { - "types": "./dist/operators/index.d.mts", + "types": "./dist/operators/index.d.ts", "default": "./dist/operators/index.mjs" } } }, "scripts": { - "build": "tsdown", + "build": "tsdown && tsc", "release": "pnpm run build && changeset publish", "check": "tsc && pnpm run format", "format": "prettier . --check", @@ -74,11 +74,11 @@ }, "homepage": "https://github.com/monarch-orm/monarch#readme", "peerDependencies": { - "mongodb": ">= 6.0.0" + "mongodb": ">= 7.0.0" }, "devDependencies": { "@changesets/cli": "^2.29.8", - "@types/node": "^20.19.27", + "@types/node": "^25.5.2", "@vitest/coverage-v8": "^4.0.16", "mongodb-memory-server": "^11.0.1", "prettier": "^3.7.4", @@ -87,4 +87,4 @@ "typescript": "^5.9.3", "vitest": "^4.0.16" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dbe74d8..087aaab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,947 +1,746 @@ -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: + .: dependencies: mongodb: - specifier: ">= 6.0.0" - version: 6.13.0(socks@2.8.4) + specifier: '>= 7.0.0' + version: 7.1.1 devDependencies: - "@changesets/cli": + '@changesets/cli': specifier: ^2.29.8 - version: 2.29.8(@types/node@20.19.27) - "@types/node": - specifier: ^20.19.27 - version: 20.19.27 - "@vitest/coverage-v8": + version: 2.30.0(@types/node@25.5.2) + '@types/node': + specifier: ^25.5.2 + version: 25.5.2 + '@vitest/coverage-v8': specifier: ^4.0.16 - version: 4.0.16(vitest@4.0.16(@types/node@20.19.27)) + version: 4.1.3(vitest@4.1.3) mongodb-memory-server: specifier: ^11.0.1 version: 11.0.1 prettier: specifier: ^3.7.4 - version: 3.7.4 + version: 3.8.1 prettier-plugin-organize-imports: specifier: ^4.3.0 - version: 4.3.0(prettier@3.7.4)(typescript@5.9.3) + version: 4.3.0(prettier@3.8.1)(typescript@5.9.3) tsdown: specifier: ^0.18.3 - version: 0.18.3(typescript@5.9.3) + version: 0.18.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 vitest: specifier: ^4.0.16 - version: 4.0.16(@types/node@20.19.27) + version: 4.1.3(@types/node@25.5.2)(@vitest/coverage-v8@4.1.3)(vite@8.0.7(@types/node@25.5.2)) packages: - "@babel/generator@7.28.5": - resolution: - { integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== } - engines: { node: ">=6.9.0" } - - "@babel/helper-string-parser@7.27.1": - resolution: - { integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-identifier@7.28.5": - resolution: - { integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.28.5": - resolution: - { integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== } - engines: { node: ">=6.0.0" } - hasBin: true - "@babel/runtime@7.28.4": - resolution: - { integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== } - engines: { node: ">=6.9.0" } + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} - "@babel/types@7.28.5": - resolution: - { integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== } - engines: { node: ">=6.9.0" } + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} - "@bcoe/v8-coverage@1.0.2": - resolution: - { integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA== } - engines: { node: ">=18" } + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} - "@changesets/apply-release-plan@7.0.14": - resolution: - { integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA== } + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true - "@changesets/assemble-release-plan@6.0.9": - resolution: - { integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ== } + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} - "@changesets/changelog-git@0.2.1": - resolution: - { integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q== } + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} - "@changesets/cli@2.29.8": - resolution: - { integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA== } - hasBin: true + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} - "@changesets/config@3.1.2": - resolution: - { integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog== } + '@changesets/apply-release-plan@7.1.0': + resolution: {integrity: sha512-yq8ML3YS7koKQ/9bk1PqO0HMzApIFNwjlwCnwFEXMzNe8NpzeeYYKCmnhWJGkN8g7E51MnWaSbqRcTcdIxUgnQ==} - "@changesets/errors@0.2.0": - resolution: - { integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow== } + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} - "@changesets/get-dependents-graph@2.1.3": - resolution: - { integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ== } + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - "@changesets/get-release-plan@4.0.14": - resolution: - { integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g== } + '@changesets/cli@2.30.0': + resolution: {integrity: sha512-5D3Nk2JPqMI1wK25pEymeWRSlSMdo5QOGlyfrKg0AOufrUcjEE3RQgaCpHoBiM31CSNrtSgdJ0U6zL1rLDDfBA==} + hasBin: true - "@changesets/get-version-range-type@0.4.0": - resolution: - { integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ== } + '@changesets/config@3.1.3': + resolution: {integrity: sha512-vnXjcey8YgBn2L1OPWd3ORs0bGC4LoYcK/ubpgvzNVr53JXV5GiTVj7fWdMRsoKUH7hhhMAQnsJUqLr21EncNw==} - "@changesets/git@3.0.4": - resolution: - { integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw== } + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - "@changesets/logger@0.1.1": - resolution: - { integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg== } + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} - "@changesets/parse@0.4.2": - resolution: - { integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA== } + '@changesets/get-release-plan@4.0.15': + resolution: {integrity: sha512-Q04ZaRPuEVZtA+auOYgFaVQQSA98dXiVe/yFaZfY7hoSmQICHGvP0TF4u3EDNHWmmCS4ekA/XSpKlSM2PyTS2g==} - "@changesets/pre@2.0.2": - resolution: - { integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug== } + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - "@changesets/read@0.6.6": - resolution: - { integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg== } + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} - "@changesets/should-skip-package@0.1.2": - resolution: - { integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw== } + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - "@changesets/types@4.1.0": - resolution: - { integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== } + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} - "@changesets/types@6.1.0": - resolution: - { integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA== } + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - "@changesets/write@0.4.0": - resolution: - { integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q== } + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} - "@emnapi/core@1.7.1": - resolution: - { integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg== } + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} - "@emnapi/runtime@1.7.1": - resolution: - { integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA== } + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - "@emnapi/wasi-threads@1.1.0": - resolution: - { integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== } + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} - "@esbuild/aix-ppc64@0.24.2": - resolution: - { integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== } - engines: { node: ">=18" } - cpu: [ppc64] - os: [aix] + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - "@esbuild/android-arm64@0.24.2": - resolution: - { integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== } - engines: { node: ">=18" } - cpu: [arm64] - os: [android] + '@emnapi/core@1.9.1': + resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} - "@esbuild/android-arm@0.24.2": - resolution: - { integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== } - engines: { node: ">=18" } - cpu: [arm] - os: [android] + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} - "@esbuild/android-x64@0.24.2": - resolution: - { integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== } - engines: { node: ">=18" } - cpu: [x64] - os: [android] + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} - "@esbuild/darwin-arm64@0.24.2": - resolution: - { integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== } - engines: { node: ">=18" } - cpu: [arm64] - os: [darwin] + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} - "@esbuild/darwin-x64@0.24.2": - resolution: - { integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== } - engines: { node: ">=18" } - cpu: [x64] - os: [darwin] + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} - "@esbuild/freebsd-arm64@0.24.2": - resolution: - { integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== } - engines: { node: ">=18" } - cpu: [arm64] - os: [freebsd] + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - "@esbuild/freebsd-x64@0.24.2": - resolution: - { integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== } - engines: { node: ">=18" } - cpu: [x64] - os: [freebsd] + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true - "@esbuild/linux-arm64@0.24.2": - resolution: - { integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== } - engines: { node: ">=18" } - cpu: [arm64] - os: [linux] + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - "@esbuild/linux-arm@0.24.2": - resolution: - { integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== } - engines: { node: ">=18" } - cpu: [arm] - os: [linux] + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - "@esbuild/linux-ia32@0.24.2": - resolution: - { integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== } - engines: { node: ">=18" } - cpu: [ia32] - os: [linux] + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - "@esbuild/linux-loong64@0.24.2": - resolution: - { integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== } - engines: { node: ">=18" } - cpu: [loong64] - os: [linux] + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - "@esbuild/linux-mips64el@0.24.2": - resolution: - { integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== } - engines: { node: ">=18" } - cpu: [mips64el] - os: [linux] + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - "@esbuild/linux-ppc64@0.24.2": - resolution: - { integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== } - engines: { node: ">=18" } - cpu: [ppc64] - os: [linux] + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - "@esbuild/linux-riscv64@0.24.2": - resolution: - { integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== } - engines: { node: ">=18" } - cpu: [riscv64] - os: [linux] + '@mongodb-js/saslprep@1.4.6': + resolution: {integrity: sha512-y+x3H1xBZd38n10NZF/rEBlvDOOMQ6LKUTHqr8R9VkJ+mmQOYtJFxIlkkK8fZrtOiL6VixbOBWMbZGBdal3Z1g==} - "@esbuild/linux-s390x@0.24.2": - resolution: - { integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== } - engines: { node: ">=18" } - cpu: [s390x] - os: [linux] + '@napi-rs/wasm-runtime@1.1.3': + resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 - "@esbuild/linux-x64@0.24.2": - resolution: - { integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== } - engines: { node: ">=18" } - cpu: [x64] - os: [linux] + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} - "@esbuild/netbsd-arm64@0.24.2": - resolution: - { integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== } - engines: { node: ">=18" } - cpu: [arm64] - os: [netbsd] + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - "@esbuild/netbsd-x64@0.24.2": - resolution: - { integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== } - engines: { node: ">=18" } - cpu: [x64] - os: [netbsd] + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} - "@esbuild/openbsd-arm64@0.24.2": - resolution: - { integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== } - engines: { node: ">=18" } - cpu: [arm64] - os: [openbsd] + '@oxc-project/types@0.103.0': + resolution: {integrity: sha512-bkiYX5kaXWwUessFRSoXFkGIQTmc6dLGdxuRTrC+h8PSnIdZyuXHHlLAeTmOue5Br/a0/a7dHH0Gca6eXn9MKg==} - "@esbuild/openbsd-x64@0.24.2": - resolution: - { integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== } - engines: { node: ">=18" } - cpu: [x64] - os: [openbsd] + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} - "@esbuild/sunos-x64@0.24.2": - resolution: - { integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== } - engines: { node: ">=18" } - cpu: [x64] - os: [sunos] + '@oxc-project/types@0.123.0': + resolution: {integrity: sha512-YtECP/y8Mj1lSHiUWGSRzy/C6teUKlS87dEfuVKT09LgQbUsBW1rNg+MiJ4buGu3yuADV60gbIvo9/HplA56Ew==} - "@esbuild/win32-arm64@0.24.2": - resolution: - { integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== } - engines: { node: ">=18" } + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@rolldown/binding-android-arm64@1.0.0-beta.57': + resolution: {integrity: sha512-GoOVDy8bjw9z1K30Oo803nSzXJS/vWhFijFsW3kzvZCO8IZwFnNa6pGctmbbJstKl3Fv6UBwyjJQN6msejW0IQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [win32] + os: [android] - "@esbuild/win32-ia32@0.24.2": - resolution: - { integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== } - engines: { node: ">=18" } - cpu: [ia32] - os: [win32] + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - "@esbuild/win32-x64@0.24.2": - resolution: - { integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== } - engines: { node: ">=18" } - cpu: [x64] - os: [win32] + '@rolldown/binding-android-arm64@1.0.0-rc.13': + resolution: {integrity: sha512-5ZiiecKH2DXAVJTNN13gNMUcCDg4Jy8ZjbXEsPnqa248wgOVeYRX0iqXXD5Jz4bI9BFHgKsI2qmyJynstbmr+g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - "@inquirer/external-editor@1.0.3": - resolution: - { integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA== } - engines: { node: ">=18" } - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true + '@rolldown/binding-darwin-arm64@1.0.0-beta.57': + resolution: {integrity: sha512-9c4FOhRGpl+PX7zBK5p17c5efpF9aSpTPgyigv57hXf5NjQUaJOOiejPLAtFiKNBIfm5Uu6yFkvLKzOafNvlTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - "@jridgewell/gen-mapping@0.3.13": - resolution: - { integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== } - - "@jridgewell/resolve-uri@3.1.2": - resolution: - { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== } - engines: { node: ">=6.0.0" } - - "@jridgewell/sourcemap-codec@1.5.0": - resolution: - { integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== } - - "@jridgewell/sourcemap-codec@1.5.5": - resolution: - { integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== } - - "@jridgewell/trace-mapping@0.3.25": - resolution: - { integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== } - - "@jridgewell/trace-mapping@0.3.31": - resolution: - { integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== } - - "@manypkg/find-root@1.1.0": - resolution: - { integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== } - - "@manypkg/get-packages@1.1.3": - resolution: - { integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== } - - "@mongodb-js/saslprep@1.2.0": - resolution: - { integrity: sha512-+ywrb0AqkfaYuhHs6LxKWgqbh3I72EpEgESCw37o+9qPx9WTCkgDm2B+eMrwehGtHBWHFU4GXvnSCNiFhhausg== } - - "@mongodb-js/saslprep@1.4.4": - resolution: - { integrity: sha512-p7X/ytJDIdwUfFL/CLOhKgdfJe1Fa8uw9seJYvdOmnP9JBWGWHW69HkOixXS6Wy9yvGf1MbhcS6lVmrhy4jm2g== } - - "@napi-rs/wasm-runtime@1.1.1": - resolution: - { integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A== } - - "@nodelib/fs.scandir@2.1.5": - resolution: - { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } - engines: { node: ">= 8" } - - "@nodelib/fs.stat@2.0.5": - resolution: - { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } - engines: { node: ">= 8" } - - "@nodelib/fs.walk@1.2.8": - resolution: - { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } - engines: { node: ">= 8" } - - "@oxc-project/types@0.103.0": - resolution: - { integrity: sha512-bkiYX5kaXWwUessFRSoXFkGIQTmc6dLGdxuRTrC+h8PSnIdZyuXHHlLAeTmOue5Br/a0/a7dHH0Gca6eXn9MKg== } - - "@quansync/fs@1.0.0": - resolution: - { integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ== } - - "@rolldown/binding-android-arm64@1.0.0-beta.57": - resolution: - { integrity: sha512-GoOVDy8bjw9z1K30Oo803nSzXJS/vWhFijFsW3kzvZCO8IZwFnNa6pGctmbbJstKl3Fv6UBwyjJQN6msejW0IQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [android] + os: [darwin] - "@rolldown/binding-darwin-arm64@1.0.0-beta.57": - resolution: - { integrity: sha512-9c4FOhRGpl+PX7zBK5p17c5efpF9aSpTPgyigv57hXf5NjQUaJOOiejPLAtFiKNBIfm5Uu6yFkvLKzOafNvlTw== } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-darwin-arm64@1.0.0-rc.13': + resolution: {integrity: sha512-tz/v/8G77seu8zAB3A5sK3UFoOl06zcshEzhUO62sAEtrEuW/H1CcyoupOrD+NbQJytYgA4CppXPzlrmp4JZKA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - "@rolldown/binding-darwin-x64@1.0.0-beta.57": - resolution: - { integrity: sha512-6RsB8Qy4LnGqNGJJC/8uWeLWGOvbRL/KG5aJ8XXpSEupg/KQtlBEiFaYU/Ma5Usj1s+bt3ItkqZYAI50kSplBA== } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-darwin-x64@1.0.0-beta.57': + resolution: {integrity: sha512-6RsB8Qy4LnGqNGJJC/8uWeLWGOvbRL/KG5aJ8XXpSEupg/KQtlBEiFaYU/Ma5Usj1s+bt3ItkqZYAI50kSplBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - "@rolldown/binding-freebsd-x64@1.0.0-beta.57": - resolution: - { integrity: sha512-uA9kG7+MYkHTbqwv67Tx+5GV5YcKd33HCJIi0311iYBd25yuwyIqvJfBdt1VVB8tdOlyTb9cPAgfCki8nhwTQg== } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-darwin-x64@1.0.0-rc.13': + resolution: {integrity: sha512-8DakphqOz8JrMYWTJmWA+vDJxut6LijZ8Xcdc4flOlAhU7PNVwo2MaWBF9iXjJAPo5rC/IxEFZDhJ3GC7NHvug==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.57': + resolution: {integrity: sha512-uA9kG7+MYkHTbqwv67Tx+5GV5YcKd33HCJIi0311iYBd25yuwyIqvJfBdt1VVB8tdOlyTb9cPAgfCki8nhwTQg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.57": - resolution: - { integrity: sha512-3KkS0cHsllT2T+Te+VZMKHNw6FPQihYsQh+8J4jkzwgvAQpbsbXmrqhkw3YU/QGRrD8qgcOvBr6z5y6Jid+rmw== } - engines: { node: ^20.19.0 || >=22.12.0 } - cpu: [arm] - os: [linux] + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - "@rolldown/binding-linux-arm64-gnu@1.0.0-beta.57": - resolution: - { integrity: sha512-A3/wu1RgsHhqP3rVH2+sM81bpk+Qd2XaHTl8LtX5/1LNR7QVBFBCpAoiXwjTdGnI5cMdBVi7Z1pi52euW760Fw== } - engines: { node: ^20.19.0 || >=22.12.0 } - cpu: [arm64] - os: [linux] + '@rolldown/binding-freebsd-x64@1.0.0-rc.13': + resolution: {integrity: sha512-4wBQFfjDuXYN/SVI8inBF3Aa+isq40rc6VMFbk5jcpolUBTe5cYnMsHZ51nFWsx3PVyyNN3vgoESki0Hmr/4BA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - "@rolldown/binding-linux-arm64-musl@1.0.0-beta.57": - resolution: - { integrity: sha512-d0kIVezTQtazpyWjiJIn5to8JlwfKITDqwsFv0Xc6s31N16CD2PC/Pl2OtKgS7n8WLOJbfqgIp5ixYzTAxCqMg== } - engines: { node: ^20.19.0 || >=22.12.0 } - cpu: [arm64] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.57': + resolution: {integrity: sha512-3KkS0cHsllT2T+Te+VZMKHNw6FPQihYsQh+8J4jkzwgvAQpbsbXmrqhkw3YU/QGRrD8qgcOvBr6z5y6Jid+rmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] os: [linux] - "@rolldown/binding-linux-x64-gnu@1.0.0-beta.57": - resolution: - { integrity: sha512-E199LPijo98yrLjPCmETx8EF43sZf9t3guSrLee/ej1rCCc3zDVTR4xFfN9BRAapGVl7/8hYqbbiQPTkv73kUg== } - engines: { node: ^20.19.0 || >=22.12.0 } - cpu: [x64] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] os: [linux] - "@rolldown/binding-linux-x64-musl@1.0.0-beta.57": - resolution: - { integrity: sha512-++EQDpk/UJ33kY/BNsh7A7/P1sr/jbMuQ8cE554ZIy+tCUWCivo9zfyjDUoiMdnxqX6HLJEqqGnbGQOvzm2OMQ== } - engines: { node: ^20.19.0 || >=22.12.0 } - cpu: [x64] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13': + resolution: {integrity: sha512-JW/e4yPIXLms+jmnbwwy5LA/LxVwZUWLN8xug+V200wzaVi5TEGIWQlh8o91gWYFxW609euI98OCCemmWGuPrw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] os: [linux] - "@rolldown/binding-openharmony-arm64@1.0.0-beta.57": - resolution: - { integrity: sha512-voDEBcNqxbUv/GeXKFtxXVWA+H45P/8Dec4Ii/SbyJyGvCqV1j+nNHfnFUIiRQ2Q40DwPe/djvgYBs9PpETiMA== } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.57': + resolution: {integrity: sha512-A3/wu1RgsHhqP3rVH2+sM81bpk+Qd2XaHTl8LtX5/1LNR7QVBFBCpAoiXwjTdGnI5cMdBVi7Z1pi52euW760Fw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [openharmony] - - "@rolldown/binding-wasm32-wasi@1.0.0-beta.57": - resolution: - { integrity: sha512-bRhcF7NLlCnpkzLVlVhrDEd0KH22VbTPkPTbMjlYvqhSmarxNIq5vtlQS8qmV7LkPKHrNLWyJW/V/sOyFba26Q== } - engines: { node: ">=14.0.0" } - cpu: [wasm32] + os: [linux] - "@rolldown/binding-win32-arm64-msvc@1.0.0-beta.57": - resolution: - { integrity: sha512-rnDVGRks2FQ2hgJ2g15pHtfxqkGFGjJQUDWzYznEkE8Ra2+Vag9OffxdbJMZqBWXHVM0iS4dv8qSiEn7bO+n1Q== } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [win32] - - "@rolldown/binding-win32-x64-msvc@1.0.0-beta.57": - resolution: - { integrity: sha512-OqIUyNid1M4xTj6VRXp/Lht/qIP8fo25QyAZlCP+p6D2ATCEhyW4ZIFLnC9zAGN/HMbXoCzvwfa8Jjg/8J4YEg== } - engines: { node: ^20.19.0 || >=22.12.0 } - cpu: [x64] - os: [win32] - - "@rolldown/pluginutils@1.0.0-beta.57": - resolution: - { integrity: sha512-aQNelgx14tGA+n2tNSa9x6/jeoCL9fkDeCei7nOKnHx0fEFRRMu5ReiITo+zZD5TzWDGGRjbSYCs93IfRIyTuQ== } - - "@rollup/rollup-android-arm-eabi@4.34.8": - resolution: - { integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw== } - cpu: [arm] - os: [android] + os: [linux] - "@rollup/rollup-android-arm64@4.34.8": - resolution: - { integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q== } + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-ZfKWpXiUymDnavepCaM6KG/uGydJ4l2nBmMxg60Ci4CbeefpqjPWpfaZM7PThOhk2dssqBAcwLc6rAyr0uTdXg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [android] + os: [linux] - "@rollup/rollup-darwin-arm64@4.34.8": - resolution: - { integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q== } + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.57': + resolution: {integrity: sha512-d0kIVezTQtazpyWjiJIn5to8JlwfKITDqwsFv0Xc6s31N16CD2PC/Pl2OtKgS7n8WLOJbfqgIp5ixYzTAxCqMg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [darwin] - - "@rollup/rollup-darwin-x64@4.34.8": - resolution: - { integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw== } - cpu: [x64] - os: [darwin] + os: [linux] - "@rollup/rollup-freebsd-arm64@4.34.8": - resolution: - { integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA== } + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [freebsd] + os: [linux] - "@rollup/rollup-freebsd-x64@4.34.8": - resolution: - { integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q== } - cpu: [x64] - os: [freebsd] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.13': + resolution: {integrity: sha512-bmRg3O6Z0gq9yodKKWCIpnlH051sEfdVwt+6m5UDffAQMUUqU0xjnQqqAUm+Gu7ofAAly9DqiQDtKu2nPDEABA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] - "@rollup/rollup-linux-arm-gnueabihf@4.34.8": - resolution: - { integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g== } - cpu: [arm] + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-arm-musleabihf@4.34.8": - resolution: - { integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA== } - cpu: [arm] + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-8Wtnbw4k7pMYN9B/mOEAsQ8HOiq7AZ31Ig4M9BKn2So4xRaFEhtCSa4ZJaOutOWq50zpgR4N5+L/opnlaCx8wQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-arm64-gnu@4.34.8": - resolution: - { integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A== } - cpu: [arm64] + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] os: [linux] - "@rollup/rollup-linux-arm64-musl@4.34.8": - resolution: - { integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q== } - cpu: [arm64] + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-D/0Nlo8mQuxSMohNJUF2lDXWRsFDsHldfRRgD9bRgktj+EndGPj4DOV37LqDKPYS+osdyhZEH7fTakTAEcW7qg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] os: [linux] - "@rollup/rollup-linux-loongarch64-gnu@4.34.8": - resolution: - { integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ== } - cpu: [loong64] + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.57': + resolution: {integrity: sha512-E199LPijo98yrLjPCmETx8EF43sZf9t3guSrLee/ej1rCCc3zDVTR4xFfN9BRAapGVl7/8hYqbbiQPTkv73kUg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] os: [linux] - "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": - resolution: - { integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw== } - cpu: [ppc64] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] os: [linux] - "@rollup/rollup-linux-riscv64-gnu@4.34.8": - resolution: - { integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw== } - cpu: [riscv64] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-eRrPvat2YaVQcwwKi/JzOP6MKf1WRnOCr+VaI3cTWz3ZoLcP/654z90lVCJ4dAuMEpPdke0n+qyAqXDZdIC4rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] os: [linux] - "@rollup/rollup-linux-s390x-gnu@4.34.8": - resolution: - { integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA== } - cpu: [s390x] + '@rolldown/binding-linux-x64-musl@1.0.0-beta.57': + resolution: {integrity: sha512-++EQDpk/UJ33kY/BNsh7A7/P1sr/jbMuQ8cE554ZIy+tCUWCivo9zfyjDUoiMdnxqX6HLJEqqGnbGQOvzm2OMQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-gnu@4.34.8": - resolution: - { integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA== } + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-musl@4.34.8": - resolution: - { integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ== } + '@rolldown/binding-linux-x64-musl@1.0.0-rc.13': + resolution: {integrity: sha512-PsdONiFRp8hR8KgVjTWjZ9s7uA3uueWL0t74/cKHfM4dR5zXYv4AjB8BvA+QDToqxAFg4ZkcVEqeu5F7inoz5w==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - "@rollup/rollup-win32-arm64-msvc@4.34.8": - resolution: - { integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ== } + '@rolldown/binding-openharmony-arm64@1.0.0-beta.57': + resolution: {integrity: sha512-voDEBcNqxbUv/GeXKFtxXVWA+H45P/8Dec4Ii/SbyJyGvCqV1j+nNHfnFUIiRQ2Q40DwPe/djvgYBs9PpETiMA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.13': + resolution: {integrity: sha512-hCNXgC5dI3TVOLrPT++PKFNZ+1EtS0mLQwfXXXSUD/+rGlB65gZDwN/IDuxLpQP4x8RYYHqGomlUXzpO8aVI2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.57': + resolution: {integrity: sha512-bRhcF7NLlCnpkzLVlVhrDEd0KH22VbTPkPTbMjlYvqhSmarxNIq5vtlQS8qmV7LkPKHrNLWyJW/V/sOyFba26Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.13': + resolution: {integrity: sha512-viLS5C5et8NFtLWw9Sw3M/w4vvnVkbWkO7wSNh3C+7G1+uCkGpr6PcjNDSFcNtmXY/4trjPBqUfcOL+P3sWy/g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.57': + resolution: {integrity: sha512-rnDVGRks2FQ2hgJ2g15pHtfxqkGFGjJQUDWzYznEkE8Ra2+Vag9OffxdbJMZqBWXHVM0iS4dv8qSiEn7bO+n1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13': + resolution: {integrity: sha512-Fqa3Tlt1xL4wzmAYxGNFV36Hb+VfPc9PYU+E25DAnswXv3ODDu/yyWjQDbXMo5AGWkQVjLgQExuVu8I/UaZhPQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.34.8": - resolution: - { integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w== } - cpu: [ia32] + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.57': + resolution: {integrity: sha512-OqIUyNid1M4xTj6VRXp/Lht/qIP8fo25QyAZlCP+p6D2ATCEhyW4ZIFLnC9zAGN/HMbXoCzvwfa8Jjg/8J4YEg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.34.8": - resolution: - { integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g== } + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.13': + resolution: {integrity: sha512-/pLI5kPkGEi44TDlnbio3St/5gUFeN51YWNAk/Gnv6mEQBOahRBh52qVFVBpmrnU01n2yysvBML9Ynu7K4kGAQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - "@standard-schema/spec@1.1.0": - resolution: - { integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== } + '@rolldown/pluginutils@1.0.0-beta.57': + resolution: {integrity: sha512-aQNelgx14tGA+n2tNSa9x6/jeoCL9fkDeCei7nOKnHx0fEFRRMu5ReiITo+zZD5TzWDGGRjbSYCs93IfRIyTuQ==} - "@tybys/wasm-util@0.10.1": - resolution: - { integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== } + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} - "@types/chai@5.2.3": - resolution: - { integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== } + '@rolldown/pluginutils@1.0.0-rc.13': + resolution: {integrity: sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==} - "@types/deep-eql@4.0.2": - resolution: - { integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== } + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - "@types/estree@1.0.6": - resolution: - { integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== } + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - "@types/node@12.20.55": - resolution: - { integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== } + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - "@types/node@20.19.27": - resolution: - { integrity: sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug== } + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - "@types/webidl-conversions@7.0.3": - resolution: - { integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== } + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - "@types/whatwg-url@11.0.5": - resolution: - { integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== } + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - "@types/whatwg-url@13.0.0": - resolution: - { integrity: sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q== } + '@types/node@25.5.2': + resolution: {integrity: sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==} - "@vitest/coverage-v8@4.0.16": - resolution: - { integrity: sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A== } + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@13.0.0': + resolution: {integrity: sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==} + + '@vitest/coverage-v8@4.1.3': + resolution: {integrity: sha512-/MBdrkA8t6hbdCWFKs09dPik774xvs4Z6L4bycdCxYNLHM8oZuRyosumQMG19LUlBsB6GeVpL1q4kFFazvyKGA==} peerDependencies: - "@vitest/browser": 4.0.16 - vitest: 4.0.16 + '@vitest/browser': 4.1.3 + vitest: 4.1.3 peerDependenciesMeta: - "@vitest/browser": + '@vitest/browser': optional: true - "@vitest/expect@4.0.16": - resolution: - { integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA== } + '@vitest/expect@4.1.3': + resolution: {integrity: sha512-CW8Q9KMtXDGHj0vCsqui0M5KqRsu0zm0GNDW7Gd3U7nZ2RFpPKSCpeCXoT+/+5zr1TNlsoQRDEz+LzZUyq6gnQ==} - "@vitest/mocker@4.0.16": - resolution: - { integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg== } + '@vitest/mocker@4.1.3': + resolution: {integrity: sha512-XN3TrycitDQSzGRnec/YWgoofkYRhouyVQj4YNsJ5r/STCUFqMrP4+oxEv3e7ZbLi4og5kIHrZwekDJgw6hcjw==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - "@vitest/pretty-format@4.0.16": - resolution: - { integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA== } + '@vitest/pretty-format@4.1.3': + resolution: {integrity: sha512-hYqqwuMbpkkBodpRh4k4cQSOELxXky1NfMmQvOfKvV8zQHz8x8Dla+2wzElkMkBvSAJX5TRGHJAQvK0TcOafwg==} - "@vitest/runner@4.0.16": - resolution: - { integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q== } + '@vitest/runner@4.1.3': + resolution: {integrity: sha512-VwgOz5MmT0KhlUj40h02LWDpUBVpflZ/b7xZFA25F29AJzIrE+SMuwzFf0b7t4EXdwRNX61C3B6auIXQTR3ttA==} - "@vitest/snapshot@4.0.16": - resolution: - { integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA== } + '@vitest/snapshot@4.1.3': + resolution: {integrity: sha512-9l+k/J9KG5wPJDX9BcFFzhhwNjwkRb8RsnYhaT1vPY7OufxmQFc9sZzScRCPTiETzl37mrIWVY9zxzmdVeJwDQ==} - "@vitest/spy@4.0.16": - resolution: - { integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw== } + '@vitest/spy@4.1.3': + resolution: {integrity: sha512-ujj5Uwxagg4XUIfAUyRQxAg631BP6e9joRiN99mr48Bg9fRs+5mdUElhOoZ6rP5mBr8Bs3lmrREnkrQWkrsTCw==} - "@vitest/utils@4.0.16": - resolution: - { integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA== } + '@vitest/utils@4.1.3': + resolution: {integrity: sha512-Pc/Oexse/khOWsGB+w3q4yzA4te7W4gpZZAvk+fr8qXfTURZUMj5i7kuxsNK5mP/dEB6ao3jfr0rs17fHhbHdw==} agent-base@7.1.4: - resolution: - { integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== } - engines: { node: ">= 14" } + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} ansi-colors@4.1.3: - resolution: - { integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== } - engines: { node: ">=6" } + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} ansi-regex@5.0.1: - resolution: - { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } - engines: { node: ">=8" } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansis@4.2.0: - resolution: - { integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig== } - engines: { node: ">=14" } + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} argparse@1.0.10: - resolution: - { integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== } + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: - resolution: - { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} array-union@2.1.0: - resolution: - { integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== } - engines: { node: ">=8" } + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} assertion-error@2.0.1: - resolution: - { integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== } - engines: { node: ">=12" } + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} ast-kit@2.2.0: - resolution: - { integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw== } - engines: { node: ">=20.19.0" } + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} - ast-v8-to-istanbul@0.3.10: - resolution: - { integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ== } + ast-v8-to-istanbul@1.0.0: + resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} async-mutex@0.5.0: - resolution: - { integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA== } + resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} - b4a@1.7.3: - resolution: - { integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q== } + b4a@1.8.0: + resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} peerDependencies: - react-native-b4a: "*" + react-native-b4a: '*' peerDependenciesMeta: react-native-b4a: optional: true bare-events@2.8.2: - resolution: - { integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ== } + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} peerDependencies: - bare-abort-controller: "*" + bare-abort-controller: '*' peerDependenciesMeta: bare-abort-controller: optional: true + bare-fs@4.6.0: + resolution: {integrity: sha512-2YkS7NuiJceSEbyEOdSNLE9tsGd+f4+f7C+Nik/MCk27SYdwIMPT/yRKvg++FZhQXgk0KWJKJyXX9RhVV0RGqA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.8.7: + resolution: {integrity: sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.12.0: + resolution: {integrity: sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==} + peerDependencies: + bare-abort-controller: '*' + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.4.0: + resolution: {integrity: sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==} + better-path-resolve@1.0.0: - resolution: - { integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== } - engines: { node: ">=4" } + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} birpc@4.0.0: - resolution: - { integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw== } + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} braces@3.0.3: - resolution: - { integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== } - engines: { node: ">=8" } + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} - bson@6.10.2: - resolution: - { integrity: sha512-5afhLTjqDSA3akH56E+/2J6kTDuSIlBxyXPdQslj9hcIgOUE378xdOfZvC/9q3LifJNI6KR/juZ+d0NRNYBwXg== } - engines: { node: ">=16.20.1" } - - bson@7.0.0: - resolution: - { integrity: sha512-Kwc6Wh4lQ5OmkqqKhYGKIuELXl+EPYSCObVE6bWsp1T/cGkOCBN0I8wF/T44BiuhHyNi1mmKVPXk60d41xZ7kw== } - engines: { node: ">=20.19.0" } + bson@7.2.0: + resolution: {integrity: sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ==} + engines: {node: '>=20.19.0'} buffer-crc32@0.2.13: - resolution: - { integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== } + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} cac@6.7.14: - resolution: - { integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== } - engines: { node: ">=8" } + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} camelcase@6.3.0: - resolution: - { integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== } - engines: { node: ">=10" } + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} chai@6.2.2: - resolution: - { integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg== } - engines: { node: ">=18" } + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chardet@2.1.1: - resolution: - { integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ== } - - ci-info@3.9.0: - resolution: - { integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== } - engines: { node: ">=8" } + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} commondir@1.0.1: - resolution: - { integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== } + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cross-spawn@7.0.6: - resolution: - { integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== } - engines: { node: ">= 8" } - - debug@4.4.0: - resolution: - { integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} debug@4.4.3: - resolution: - { integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true - defu@6.1.4: - resolution: - { integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== } + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} detect-indent@6.1.0: - resolution: - { integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== } - engines: { node: ">=8" } + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} dir-glob@3.0.1: - resolution: - { integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== } - engines: { node: ">=8" } + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dts-resolver@2.1.3: - resolution: - { integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw== } - engines: { node: ">=20.19.0" } + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} + engines: {node: '>=20.19.0'} peerDependencies: - oxc-resolver: ">=11.0.0" + oxc-resolver: '>=11.0.0' peerDependenciesMeta: oxc-resolver: optional: true empathic@2.0.0: - resolution: - { integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA== } - engines: { node: ">=14" } + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} enquirer@2.4.1: - resolution: - { integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== } - engines: { node: ">=8.6" } - - es-module-lexer@1.7.0: - resolution: - { integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== } - - esbuild@0.24.2: - resolution: - { integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== } - engines: { node: ">=18" } - hasBin: true + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} esprima@4.0.1: - resolution: - { integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== } - engines: { node: ">=4" } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true estree-walker@3.0.3: - resolution: - { integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== } + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} events-universal@1.0.1: - resolution: - { integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw== } + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} expect-type@1.3.0: - resolution: - { integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA== } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} extendable-error@0.1.7: - resolution: - { integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== } + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} fast-fifo@1.3.2: - resolution: - { integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== } + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} fast-glob@3.3.3: - resolution: - { integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== } - engines: { node: ">=8.6.0" } + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} fastq@1.20.1: - resolution: - { integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== } + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fdir@6.5.0: - resolution: - { integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -949,288 +748,266 @@ packages: optional: true fill-range@7.1.1: - resolution: - { integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== } - engines: { node: ">=8" } + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} find-cache-dir@3.3.2: - resolution: - { integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== } - engines: { node: ">=8" } + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} find-up@4.1.0: - resolution: - { integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== } - engines: { node: ">=8" } + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} follow-redirects@1.15.11: - resolution: - { integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} peerDependencies: - debug: "*" + debug: '*' peerDependenciesMeta: debug: optional: true fs-extra@7.0.1: - resolution: - { integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== } - engines: { node: ">=6 <7 || >=8" } + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} fs-extra@8.1.0: - resolution: - { integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== } - engines: { node: ">=6 <7 || >=8" } + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} fsevents@2.3.3: - resolution: - { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - get-tsconfig@4.13.0: - resolution: - { integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ== } + get-tsconfig@4.13.7: + resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} glob-parent@5.1.2: - resolution: - { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } - engines: { node: ">= 6" } + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} globby@11.1.0: - resolution: - { integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== } - engines: { node: ">=10" } + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} graceful-fs@4.2.11: - resolution: - { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} has-flag@4.0.0: - resolution: - { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } - engines: { node: ">=8" } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - hookable@6.0.1: - resolution: - { integrity: sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw== } + hookable@6.1.0: + resolution: {integrity: sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==} html-escaper@2.0.2: - resolution: - { integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== } + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} https-proxy-agent@7.0.6: - resolution: - { integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== } - engines: { node: ">= 14" } + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} human-id@4.1.3: - resolution: - { integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q== } + resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} hasBin: true - iconv-lite@0.7.1: - resolution: - { integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw== } - engines: { node: ">=0.10.0" } + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} ignore@5.3.2: - resolution: - { integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== } - engines: { node: ">= 4" } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} import-without-cache@0.2.5: - resolution: - { integrity: sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A== } - engines: { node: ">=20.19.0" } - - ip-address@9.0.5: - resolution: - { integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== } - engines: { node: ">= 12" } + resolution: {integrity: sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A==} + engines: {node: '>=20.19.0'} is-extglob@2.1.1: - resolution: - { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} is-glob@4.0.3: - resolution: - { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} is-number@7.0.0: - resolution: - { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } - engines: { node: ">=0.12.0" } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} is-subdir@1.2.0: - resolution: - { integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== } - engines: { node: ">=4" } + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} is-windows@1.0.2: - resolution: - { integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} isexe@2.0.0: - resolution: - { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} istanbul-lib-coverage@3.2.2: - resolution: - { integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== } - engines: { node: ">=8" } + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} istanbul-lib-report@3.0.1: - resolution: - { integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== } - engines: { node: ">=10" } - - istanbul-lib-source-maps@5.0.6: - resolution: - { integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== } - engines: { node: ">=10" } + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} istanbul-reports@3.2.0: - resolution: - { integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== } - engines: { node: ">=8" } + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} - js-tokens@9.0.1: - resolution: - { integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ== } + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} js-yaml@3.14.2: - resolution: - { integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== } + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.1: - resolution: - { integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== } + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsbn@1.1.0: - resolution: - { integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== } - jsesc@3.1.0: - resolution: - { integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== } - engines: { node: ">=6" } + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true jsonfile@4.0.0: - resolution: - { integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== } + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} locate-path@5.0.0: - resolution: - { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== } - engines: { node: ">=8" } + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} lodash.startcase@4.4.0: - resolution: - { integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== } + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} magic-string@0.30.21: - resolution: - { integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== } + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.1: - resolution: - { integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw== } + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@3.1.0: - resolution: - { integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== } - engines: { node: ">=8" } + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} make-dir@4.0.0: - resolution: - { integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== } - engines: { node: ">=10" } + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} memory-pager@1.5.0: - resolution: - { integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== } + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} merge2@1.4.1: - resolution: - { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } - engines: { node: ">= 8" } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} micromatch@4.0.8: - resolution: - { integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} - mongodb-connection-string-url@3.0.2: - resolution: - { integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA== } - - mongodb-connection-string-url@7.0.0: - resolution: - { integrity: sha512-irhhjRVLE20hbkRl4zpAYLnDMM+zIZnp0IDB9akAFFUZp/3XdOfwwddc7y6cNvF2WCEtfTYRwYbIfYa2kVY0og== } - engines: { node: ">=20.19.0" } + mongodb-connection-string-url@7.0.1: + resolution: {integrity: sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ==} + engines: {node: '>=20.19.0'} mongodb-memory-server-core@11.0.1: - resolution: - { integrity: sha512-IcIb2S9Xf7Lmz43Z1ZujMqNg7PU5Q7yn+4wOnu7l6pfeGPkEmlqzV1hIbroVx8s4vXhPB1oMGC1u8clW7aj3Xw== } - engines: { node: ">=20.19.0" } + resolution: {integrity: sha512-IcIb2S9Xf7Lmz43Z1ZujMqNg7PU5Q7yn+4wOnu7l6pfeGPkEmlqzV1hIbroVx8s4vXhPB1oMGC1u8clW7aj3Xw==} + engines: {node: '>=20.19.0'} mongodb-memory-server@11.0.1: - resolution: - { integrity: sha512-nUlKovSJZBh7q5hPsewFRam9H66D08Ne18nyknkNalfXMPtK1Og3kOcuqQhcX88x/pghSZPIJHrLbxNFW3OWiw== } - engines: { node: ">=20.19.0" } - - mongodb@6.13.0: - resolution: - { integrity: sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q== } - engines: { node: ">=16.20.1" } - peerDependencies: - "@aws-sdk/credential-providers": ^3.188.0 - "@mongodb-js/zstd": ^1.1.0 || ^2.0.0 - gcp-metadata: ^5.2.0 - kerberos: ^2.0.1 - mongodb-client-encryption: ">=6.0.0 <7" - snappy: ^7.2.2 - socks: ^2.7.1 - peerDependenciesMeta: - "@aws-sdk/credential-providers": - optional: true - "@mongodb-js/zstd": - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true + resolution: {integrity: sha512-nUlKovSJZBh7q5hPsewFRam9H66D08Ne18nyknkNalfXMPtK1Og3kOcuqQhcX88x/pghSZPIJHrLbxNFW3OWiw==} + engines: {node: '>=20.19.0'} - mongodb@7.0.0: - resolution: - { integrity: sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg== } - engines: { node: ">=20.19.0" } + mongodb@7.1.1: + resolution: {integrity: sha512-067DXiMjcpYQl6bGjWQoTUEE9UoRViTtKFcoqX7z08I+iDZv/emH1g8XEFiO3qiDfXAheT5ozl1VffDTKhIW/w==} + engines: {node: '>=20.19.0'} peerDependencies: - "@aws-sdk/credential-providers": ^3.806.0 - "@mongodb-js/zstd": ^7.0.0 + '@aws-sdk/credential-providers': ^3.806.0 + '@mongodb-js/zstd': ^7.0.0 gcp-metadata: ^7.0.1 kerberos: ^7.0.0 - mongodb-client-encryption: ">=7.0.0 <7.1.0" + mongodb-client-encryption: '>=7.0.0 <7.1.0' snappy: ^7.3.2 socks: ^2.8.6 peerDependenciesMeta: - "@aws-sdk/credential-providers": + '@aws-sdk/credential-providers': optional: true - "@mongodb-js/zstd": + '@mongodb-js/zstd': optional: true gcp-metadata: optional: true @@ -1244,187 +1021,152 @@ packages: optional: true mri@1.2.0: - resolution: - { integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== } - engines: { node: ">=4" } + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} ms@2.1.3: - resolution: - { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.8: - resolution: - { integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true new-find-package-json@2.0.0: - resolution: - { integrity: sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew== } - engines: { node: ">=12.22.0" } + resolution: {integrity: sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==} + engines: {node: '>=12.22.0'} obug@2.1.1: - resolution: - { integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== } + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} outdent@0.5.0: - resolution: - { integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== } + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} p-filter@2.1.0: - resolution: - { integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== } - engines: { node: ">=8" } + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} p-limit@2.3.0: - resolution: - { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== } - engines: { node: ">=6" } + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} p-locate@4.1.0: - resolution: - { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== } - engines: { node: ">=8" } + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} p-map@2.1.0: - resolution: - { integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== } - engines: { node: ">=6" } + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} p-try@2.2.0: - resolution: - { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== } - engines: { node: ">=6" } + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} package-manager-detector@0.2.11: - resolution: - { integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ== } + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} path-exists@4.0.0: - resolution: - { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } - engines: { node: ">=8" } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-key@3.1.1: - resolution: - { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } - engines: { node: ">=8" } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} path-type@4.0.0: - resolution: - { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== } - engines: { node: ">=8" } + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} pathe@2.0.3: - resolution: - { integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== } + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} pend@1.2.0: - resolution: - { integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== } + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} picocolors@1.1.1: - resolution: - { integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== } + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: - { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } - engines: { node: ">=8.6" } + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: - { integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== } - engines: { node: ">=12" } + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} pify@4.0.1: - resolution: - { integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== } - engines: { node: ">=6" } + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} pkg-dir@4.2.0: - resolution: - { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } - engines: { node: ">=8" } + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} - postcss@8.5.2: - resolution: - { integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== } - engines: { node: ^10 || ^12 || >=14 } + postcss@8.5.9: + resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + engines: {node: ^10 || ^12 || >=14} prettier-plugin-organize-imports@4.3.0: - resolution: - { integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw== } + resolution: {integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==} peerDependencies: - prettier: ">=2.0" - typescript: ">=2.9" + prettier: '>=2.0' + typescript: '>=2.9' vue-tsc: ^2.1.0 || 3 peerDependenciesMeta: vue-tsc: optional: true prettier@2.8.8: - resolution: - { integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} hasBin: true - prettier@3.7.4: - resolution: - { integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA== } - engines: { node: ">=14" } + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} + engines: {node: '>=14'} hasBin: true punycode@2.3.1: - resolution: - { integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== } - engines: { node: ">=6" } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} quansync@0.2.11: - resolution: - { integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA== } + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} quansync@1.0.0: - resolution: - { integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA== } + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} queue-microtask@1.2.3: - resolution: - { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} read-yaml-file@1.1.0: - resolution: - { integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== } - engines: { node: ">=6" } + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} resolve-from@5.0.0: - resolution: - { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } - engines: { node: ">=8" } + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} resolve-pkg-maps@1.0.0: - resolution: - { integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== } + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} reusify@1.1.0: - resolution: - { integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rolldown-plugin-dts@0.20.0: - resolution: - { integrity: sha512-cLAY1kN2ilTYMfZcFlGWbXnu6Nb+8uwUBsi+Mjbh4uIx7IN8uMOmJ7RxrrRgPsO4H7eSz3E+JwGoL1gyugiyUA== } - engines: { node: ">=20.19.0" } + resolution: {integrity: sha512-cLAY1kN2ilTYMfZcFlGWbXnu6Nb+8uwUBsi+Mjbh4uIx7IN8uMOmJ7RxrrRgPsO4H7eSz3E+JwGoL1gyugiyUA==} + engines: {node: '>=20.19.0'} peerDependencies: - "@ts-macro/tsc": ^0.3.6 - "@typescript/native-preview": ">=7.0.0-dev.20250601.1" + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20250601.1' rolldown: ^1.0.0-beta.57 typescript: ^5.0.0 vue-tsc: ~3.2.0 peerDependenciesMeta: - "@ts-macro/tsc": + '@ts-macro/tsc': optional: true - "@typescript/native-preview": + '@typescript/native-preview': optional: true typescript: optional: true @@ -1432,192 +1174,143 @@ packages: optional: true rolldown@1.0.0-beta.57: - resolution: - { integrity: sha512-lMMxcNN71GMsSko8RyeTaFoATHkCh4IWU7pYF73ziMYjhHZWfVesC6GQ+iaJCvZmVjvgSks9Ks1aaqEkBd8udg== } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-lMMxcNN71GMsSko8RyeTaFoATHkCh4IWU7pYF73ziMYjhHZWfVesC6GQ+iaJCvZmVjvgSks9Ks1aaqEkBd8udg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.34.8: - resolution: - { integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ== } - engines: { node: ">=18.0.0", npm: ">=8.0.0" } + rolldown@1.0.0-rc.13: + resolution: {integrity: sha512-bvVj8YJmf0rq4pSFmH7laLa6pYrhghv3PRzrCdRAr23g66zOKVJ4wkvFtgohtPLWmthgg8/rkaqRHrpUEh0Zbw==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true run-parallel@1.2.0: - resolution: - { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} safer-buffer@2.1.2: - resolution: - { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== } + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} semver@6.3.1: - resolution: - { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: - { integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== } - engines: { node: ">=10" } - hasBin: true - - semver@7.7.3: - resolution: - { integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== } - engines: { node: ">=10" } + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} hasBin: true shebang-command@2.0.0: - resolution: - { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } - engines: { node: ">=8" } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: - { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } - engines: { node: ">=8" } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} siginfo@2.0.0: - resolution: - { integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== } + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} signal-exit@4.1.0: - resolution: - { integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== } - engines: { node: ">=14" } + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} slash@3.0.0: - resolution: - { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== } - engines: { node: ">=8" } - - smart-buffer@4.2.0: - resolution: - { integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== } - engines: { node: ">= 6.0.0", npm: ">= 3.0.0" } - - socks@2.8.4: - resolution: - { integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== } - engines: { node: ">= 10.0.0", npm: ">= 3.0.0" } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} source-map-js@1.2.1: - resolution: - { integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} sparse-bitfield@3.0.3: - resolution: - { integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== } + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} spawndamnit@3.0.1: - resolution: - { integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg== } + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} sprintf-js@1.0.3: - resolution: - { integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== } - - sprintf-js@1.1.3: - resolution: - { integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== } + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} stackback@0.0.2: - resolution: - { integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== } + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.10.0: - resolution: - { integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== } + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} - streamx@2.23.0: - resolution: - { integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg== } + streamx@2.25.0: + resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} strip-ansi@6.0.1: - resolution: - { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} strip-bom@3.0.0: - resolution: - { integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== } - engines: { node: ">=4" } + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} supports-color@7.2.0: - resolution: - { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } - engines: { node: ">=8" } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} - tar-stream@3.1.7: - resolution: - { integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== } + tar-stream@3.1.8: + resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} + + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} term-size@2.2.1: - resolution: - { integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== } - engines: { node: ">=8" } + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} - text-decoder@1.2.3: - resolution: - { integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA== } + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} tinybench@2.9.0: - resolution: - { integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== } + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.0.2: - resolution: - { integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== } - engines: { node: ">=18" } + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: - { integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== } - engines: { node: ">=12.0.0" } + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} - tinyrainbow@3.0.3: - resolution: - { integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q== } - engines: { node: ">=14.0.0" } + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} to-regex-range@5.0.1: - resolution: - { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } - engines: { node: ">=8.0" } - - tr46@5.0.0: - resolution: - { integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== } - engines: { node: ">=18" } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} tr46@5.1.1: - resolution: - { integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== } - engines: { node: ">=18" } + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} tree-kill@1.2.2: - resolution: - { integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== } + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - tsdown@0.18.3: - resolution: - { integrity: sha512-OVFzktKDTglFAUh/WO8WamBUbZoBlJ9m7NgZZrVyIKe32BfXBeRZ+soFFpuOGVP8g8OU4tOLOpTyPTELWvcTFw== } - engines: { node: ">=20.19.0" } + tsdown@0.18.4: + resolution: {integrity: sha512-J/tRS6hsZTkvqmt4+xdELUCkQYDuUCXgBv0fw3ImV09WPGbEKfsPD65E+WUjSu3E7Z6tji9XZ1iWs8rbGqB/ZA==} + engines: {node: '>=20.19.0'} hasBin: true peerDependencies: - "@arethetypeswrong/core": ^0.18.1 - "@vitejs/devtools": "*" + '@arethetypeswrong/core': ^0.18.1 + '@vitejs/devtools': '*' publint: ^0.3.0 typescript: ^5.0.0 unplugin-lightningcss: ^0.4.0 unplugin-unused: ^0.5.0 peerDependenciesMeta: - "@arethetypeswrong/core": + '@arethetypeswrong/core': optional: true - "@vitejs/devtools": + '@vitejs/devtools': optional: true publint: optional: true @@ -1629,32 +1322,26 @@ packages: optional: true tslib@2.8.1: - resolution: - { integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== } + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} typescript@5.9.3: - resolution: - { integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== } - engines: { node: ">=14.17" } + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} hasBin: true - unconfig-core@7.4.2: - resolution: - { integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg== } + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} - undici-types@6.21.0: - resolution: - { integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== } + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} universalify@0.1.2: - resolution: - { integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== } - engines: { node: ">= 4.0.0" } - - unrun@0.2.21: - resolution: - { integrity: sha512-VuwI4YKtwBpDvM7hCEop2Im/ezS82dliqJpkh9pvS6ve8HcUsBDvESHxMmUfImXR03GkmfdDynyrh/pUJnlguw== } - engines: { node: ">=20.19.0" } + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + unrun@0.2.34: + resolution: {integrity: sha512-LyaghRBR++r7svhDK6tnDz2XaYHWdneBOA0jbS8wnRsHerI9MFljX4fIiTgbbNbEVzZ0C9P1OjWLLe1OqoaaEw==} + engines: {node: '>=20.19.0'} hasBin: true peerDependencies: synckit: ^0.11.11 @@ -1662,32 +1349,34 @@ packages: synckit: optional: true - vite@6.1.0: - resolution: - { integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ== } - engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } + vite@8.0.7: + resolution: {integrity: sha512-P1PbweD+2/udplnThz3btF4cf6AgPky7kk23RtHUkJIU5BIxwPprhRGmOAHs6FTI7UiGbTNrgNP6jSYD6JaRnw==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: ">=1.21.0" - less: "*" - lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 || ^0.28.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": + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -1703,35 +1392,41 @@ packages: yaml: optional: true - vitest@4.0.16: - resolution: - { integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q== } - engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 } + vitest@4.1.3: + resolution: {integrity: sha512-DBc4Tx0MPNsqb9isoyOq00lHftVx/KIU44QOm2q59npZyLUkENn8TMFsuzuO+4U2FUa9rgbbPt3udrP25GcjXw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: - "@edge-runtime/vm": "*" - "@opentelemetry/api": ^1.9.0 - "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 - "@vitest/browser-playwright": 4.0.16 - "@vitest/browser-preview": 4.0.16 - "@vitest/browser-webdriverio": 4.0.16 - "@vitest/ui": 4.0.16 - happy-dom: "*" - jsdom: "*" + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.3 + '@vitest/browser-preview': 4.1.3 + '@vitest/browser-webdriverio': 4.1.3 + '@vitest/coverage-istanbul': 4.1.3 + '@vitest/coverage-v8': 4.1.3 + '@vitest/ui': 4.1.3 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: - "@edge-runtime/vm": + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': optional: true - "@opentelemetry/api": + '@vitest/browser-playwright': optional: true - "@types/node": + '@vitest/browser-preview': optional: true - "@vitest/browser-playwright": + '@vitest/browser-webdriverio': optional: true - "@vitest/browser-preview": + '@vitest/coverage-istanbul': optional: true - "@vitest/browser-webdriverio": + '@vitest/coverage-v8': optional: true - "@vitest/ui": + '@vitest/ui': optional: true happy-dom: optional: true @@ -1739,562 +1434,537 @@ packages: optional: true webidl-conversions@7.0.0: - resolution: - { integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== } - engines: { node: ">=12" } - - whatwg-url@14.1.1: - resolution: - { integrity: sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ== } - engines: { node: ">=18" } + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} whatwg-url@14.2.0: - resolution: - { integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== } - engines: { node: ">=18" } + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} which@2.0.2: - resolution: - { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } - engines: { node: ">= 8" } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true why-is-node-running@2.3.0: - resolution: - { integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== } - engines: { node: ">=8" } + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} hasBin: true - yauzl@3.2.0: - resolution: - { integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w== } - engines: { node: ">=12" } + yauzl@3.3.0: + resolution: {integrity: sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==} + engines: {node: '>=12'} snapshots: - "@babel/generator@7.28.5": + + '@babel/generator@7.29.1': dependencies: - "@babel/parser": 7.28.5 - "@babel/types": 7.28.5 - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - "@babel/helper-string-parser@7.27.1": {} + '@babel/helper-string-parser@7.27.1': {} - "@babel/helper-validator-identifier@7.28.5": {} + '@babel/helper-validator-identifier@7.28.5': {} - "@babel/parser@7.28.5": + '@babel/parser@7.29.2': dependencies: - "@babel/types": 7.28.5 + '@babel/types': 7.29.0 - "@babel/runtime@7.28.4": {} + '@babel/runtime@7.29.2': {} - "@babel/types@7.28.5": + '@babel/types@7.29.0': dependencies: - "@babel/helper-string-parser": 7.27.1 - "@babel/helper-validator-identifier": 7.28.5 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - "@bcoe/v8-coverage@1.0.2": {} + '@bcoe/v8-coverage@1.0.2': {} - "@changesets/apply-release-plan@7.0.14": + '@changesets/apply-release-plan@7.1.0': dependencies: - "@changesets/config": 3.1.2 - "@changesets/get-version-range-type": 0.4.0 - "@changesets/git": 3.0.4 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/config': 3.1.3 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 fs-extra: 7.0.1 lodash.startcase: 4.4.0 outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.3 - - "@changesets/assemble-release-plan@6.0.9": - dependencies: - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 - semver: 7.7.3 - - "@changesets/changelog-git@0.2.1": - dependencies: - "@changesets/types": 6.1.0 - - "@changesets/cli@2.29.8(@types/node@20.19.27)": - dependencies: - "@changesets/apply-release-plan": 7.0.14 - "@changesets/assemble-release-plan": 6.0.9 - "@changesets/changelog-git": 0.2.1 - "@changesets/config": 3.1.2 - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/get-release-plan": 4.0.14 - "@changesets/git": 3.0.4 - "@changesets/logger": 0.1.1 - "@changesets/pre": 2.0.2 - "@changesets/read": 0.6.6 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@changesets/write": 0.4.0 - "@inquirer/external-editor": 1.0.3(@types/node@20.19.27) - "@manypkg/get-packages": 1.1.3 + semver: 7.7.4 + + '@changesets/assemble-release-plan@6.0.9': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.7.4 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.30.0(@types/node@25.5.2)': + dependencies: + '@changesets/apply-release-plan': 7.1.0 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.15 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@25.5.2) + '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 - ci-info: 3.9.0 enquirer: 2.4.1 fs-extra: 7.0.1 mri: 1.2.0 - p-limit: 2.3.0 package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.3 + semver: 7.7.4 spawndamnit: 3.0.1 term-size: 2.2.1 transitivePeerDependencies: - - "@types/node" + - '@types/node' - "@changesets/config@3.1.2": + '@changesets/config@3.1.3': dependencies: - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/logger": 0.1.1 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.8 - "@changesets/errors@0.2.0": + '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - "@changesets/get-dependents-graph@2.1.3": + '@changesets/get-dependents-graph@2.1.3': dependencies: - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.3 + semver: 7.7.4 - "@changesets/get-release-plan@4.0.14": + '@changesets/get-release-plan@4.0.15': dependencies: - "@changesets/assemble-release-plan": 6.0.9 - "@changesets/config": 3.1.2 - "@changesets/pre": 2.0.2 - "@changesets/read": 0.6.6 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.3 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 - "@changesets/get-version-range-type@0.4.0": {} + '@changesets/get-version-range-type@0.4.0': {} - "@changesets/git@3.0.4": + '@changesets/git@3.0.4': dependencies: - "@changesets/errors": 0.2.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 micromatch: 4.0.8 spawndamnit: 3.0.1 - "@changesets/logger@0.1.1": + '@changesets/logger@0.1.1': dependencies: picocolors: 1.1.1 - "@changesets/parse@0.4.2": + '@changesets/parse@0.4.3': dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 js-yaml: 4.1.1 - "@changesets/pre@2.0.2": + '@changesets/pre@2.0.2': dependencies: - "@changesets/errors": 0.2.0 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - "@changesets/read@0.6.6": + '@changesets/read@0.6.7': dependencies: - "@changesets/git": 3.0.4 - "@changesets/logger": 0.1.1 - "@changesets/parse": 0.4.2 - "@changesets/types": 6.1.0 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.3 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 picocolors: 1.1.1 - "@changesets/should-skip-package@0.1.2": + '@changesets/should-skip-package@0.1.2': dependencies: - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 - "@changesets/types@4.1.0": {} + '@changesets/types@4.1.0': {} - "@changesets/types@6.1.0": {} + '@changesets/types@6.1.0': {} - "@changesets/write@0.4.0": + '@changesets/write@0.4.0': dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 human-id: 4.1.3 prettier: 2.8.8 - "@emnapi/core@1.7.1": + '@emnapi/core@1.9.1': dependencies: - "@emnapi/wasi-threads": 1.1.0 + '@emnapi/wasi-threads': 1.2.0 tslib: 2.8.1 optional: true - "@emnapi/runtime@1.7.1": + '@emnapi/core@1.9.2': dependencies: + '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - "@emnapi/wasi-threads@1.1.0": + '@emnapi/runtime@1.9.1': dependencies: tslib: 2.8.1 optional: true - "@esbuild/aix-ppc64@0.24.2": - optional: true - - "@esbuild/android-arm64@0.24.2": - optional: true - - "@esbuild/android-arm@0.24.2": - optional: true - - "@esbuild/android-x64@0.24.2": - optional: true - - "@esbuild/darwin-arm64@0.24.2": - optional: true - - "@esbuild/darwin-x64@0.24.2": - optional: true - - "@esbuild/freebsd-arm64@0.24.2": - optional: true - - "@esbuild/freebsd-x64@0.24.2": - optional: true - - "@esbuild/linux-arm64@0.24.2": - optional: true - - "@esbuild/linux-arm@0.24.2": - optional: true - - "@esbuild/linux-ia32@0.24.2": - optional: true - - "@esbuild/linux-loong64@0.24.2": - optional: true - - "@esbuild/linux-mips64el@0.24.2": - optional: true - - "@esbuild/linux-ppc64@0.24.2": - optional: true - - "@esbuild/linux-riscv64@0.24.2": - optional: true - - "@esbuild/linux-s390x@0.24.2": - optional: true - - "@esbuild/linux-x64@0.24.2": - optional: true - - "@esbuild/netbsd-arm64@0.24.2": - optional: true - - "@esbuild/netbsd-x64@0.24.2": - optional: true - - "@esbuild/openbsd-arm64@0.24.2": - optional: true - - "@esbuild/openbsd-x64@0.24.2": - optional: true - - "@esbuild/sunos-x64@0.24.2": - optional: true - - "@esbuild/win32-arm64@0.24.2": + '@emnapi/runtime@1.9.2': + dependencies: + tslib: 2.8.1 optional: true - "@esbuild/win32-ia32@0.24.2": + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 optional: true - "@esbuild/win32-x64@0.24.2": + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 optional: true - "@inquirer/external-editor@1.0.3(@types/node@20.19.27)": + '@inquirer/external-editor@1.0.3(@types/node@25.5.2)': dependencies: chardet: 2.1.1 - iconv-lite: 0.7.1 + iconv-lite: 0.7.2 optionalDependencies: - "@types/node": 20.19.27 + '@types/node': 25.5.2 - "@jridgewell/gen-mapping@0.3.13": + '@jridgewell/gen-mapping@0.3.13': dependencies: - "@jridgewell/sourcemap-codec": 1.5.0 - "@jridgewell/trace-mapping": 0.3.31 - - "@jridgewell/resolve-uri@3.1.2": {} + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/sourcemap-codec@1.5.0": {} + '@jridgewell/resolve-uri@3.1.2': {} - "@jridgewell/sourcemap-codec@1.5.5": {} + '@jridgewell/sourcemap-codec@1.5.5': {} - "@jridgewell/trace-mapping@0.3.25": + '@jridgewell/trace-mapping@0.3.31': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.0 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - "@jridgewell/trace-mapping@0.3.31": + '@manypkg/find-root@1.1.0': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.0 - - "@manypkg/find-root@1.1.0": - dependencies: - "@babel/runtime": 7.28.4 - "@types/node": 12.20.55 + '@babel/runtime': 7.29.2 + '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 - "@manypkg/get-packages@1.1.3": + '@manypkg/get-packages@1.1.3': dependencies: - "@babel/runtime": 7.28.4 - "@changesets/types": 4.1.0 - "@manypkg/find-root": 1.1.0 + '@babel/runtime': 7.29.2 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - "@mongodb-js/saslprep@1.2.0": + '@mongodb-js/saslprep@1.4.6': dependencies: sparse-bitfield: 3.0.3 - "@mongodb-js/saslprep@1.4.4": + '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': dependencies: - sparse-bitfield: 3.0.3 + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@tybys/wasm-util': 0.10.1 + optional: true - "@napi-rs/wasm-runtime@1.1.1": + '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - "@emnapi/core": 1.7.1 - "@emnapi/runtime": 1.7.1 - "@tybys/wasm-util": 0.10.1 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.1 optional: true - "@nodelib/fs.scandir@2.1.5": + '@nodelib/fs.scandir@2.1.5': dependencies: - "@nodelib/fs.stat": 2.0.5 + '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - "@nodelib/fs.stat@2.0.5": {} + '@nodelib/fs.stat@2.0.5': {} - "@nodelib/fs.walk@1.2.8": + '@nodelib/fs.walk@1.2.8': dependencies: - "@nodelib/fs.scandir": 2.1.5 + '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - "@oxc-project/types@0.103.0": {} + '@oxc-project/types@0.103.0': {} + + '@oxc-project/types@0.122.0': {} - "@quansync/fs@1.0.0": + '@oxc-project/types@0.123.0': {} + + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 - "@rolldown/binding-android-arm64@1.0.0-beta.57": + '@rolldown/binding-android-arm64@1.0.0-beta.57': optional: true - "@rolldown/binding-darwin-arm64@1.0.0-beta.57": + '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true - "@rolldown/binding-darwin-x64@1.0.0-beta.57": + '@rolldown/binding-android-arm64@1.0.0-rc.13': optional: true - "@rolldown/binding-freebsd-x64@1.0.0-beta.57": + '@rolldown/binding-darwin-arm64@1.0.0-beta.57': optional: true - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.57": + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': optional: true - "@rolldown/binding-linux-arm64-gnu@1.0.0-beta.57": + '@rolldown/binding-darwin-arm64@1.0.0-rc.13': optional: true - "@rolldown/binding-linux-arm64-musl@1.0.0-beta.57": + '@rolldown/binding-darwin-x64@1.0.0-beta.57': optional: true - "@rolldown/binding-linux-x64-gnu@1.0.0-beta.57": + '@rolldown/binding-darwin-x64@1.0.0-rc.12': optional: true - "@rolldown/binding-linux-x64-musl@1.0.0-beta.57": + '@rolldown/binding-darwin-x64@1.0.0-rc.13': optional: true - "@rolldown/binding-openharmony-arm64@1.0.0-beta.57": + '@rolldown/binding-freebsd-x64@1.0.0-beta.57': optional: true - "@rolldown/binding-wasm32-wasi@1.0.0-beta.57": - dependencies: - "@napi-rs/wasm-runtime": 1.1.1 + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': optional: true - "@rolldown/binding-win32-arm64-msvc@1.0.0-beta.57": + '@rolldown/binding-freebsd-x64@1.0.0-rc.13': optional: true - "@rolldown/binding-win32-x64-msvc@1.0.0-beta.57": + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.57': optional: true - "@rolldown/pluginutils@1.0.0-beta.57": {} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + optional: true - "@rollup/rollup-android-arm-eabi@4.34.8": + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13': optional: true - "@rollup/rollup-android-arm64@4.34.8": + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.57': optional: true - "@rollup/rollup-darwin-arm64@4.34.8": + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': optional: true - "@rollup/rollup-darwin-x64@4.34.8": + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13': optional: true - "@rollup/rollup-freebsd-arm64@4.34.8": + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.57': optional: true - "@rollup/rollup-freebsd-x64@4.34.8": + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.34.8": + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.13': optional: true - "@rollup/rollup-linux-arm-musleabihf@4.34.8": + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': optional: true - "@rollup/rollup-linux-arm64-gnu@4.34.8": + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13': optional: true - "@rollup/rollup-linux-arm64-musl@4.34.8": + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': optional: true - "@rollup/rollup-linux-loongarch64-gnu@4.34.8": + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13': optional: true - "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.57': optional: true - "@rollup/rollup-linux-riscv64-gnu@4.34.8": + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': optional: true - "@rollup/rollup-linux-s390x-gnu@4.34.8": + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.13': optional: true - "@rollup/rollup-linux-x64-gnu@4.34.8": + '@rolldown/binding-linux-x64-musl@1.0.0-beta.57': optional: true - "@rollup/rollup-linux-x64-musl@4.34.8": + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': optional: true - "@rollup/rollup-win32-arm64-msvc@4.34.8": + '@rolldown/binding-linux-x64-musl@1.0.0-rc.13': optional: true - "@rollup/rollup-win32-ia32-msvc@4.34.8": + '@rolldown/binding-openharmony-arm64@1.0.0-beta.57': optional: true - "@rollup/rollup-win32-x64-msvc@4.34.8": + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - "@standard-schema/spec@1.1.0": {} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.13': + optional: true - "@tybys/wasm-util@0.10.1": + '@rolldown/binding-wasm32-wasi@1.0.0-beta.57(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - tslib: 2.8.1 + '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true - "@types/chai@5.2.3": + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - "@types/deep-eql": 4.0.2 - assertion-error: 2.0.1 + '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.13': + dependencies: + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.57': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.57': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.13': + optional: true - "@types/deep-eql@4.0.2": {} + '@rolldown/pluginutils@1.0.0-beta.57': {} - "@types/estree@1.0.6": {} + '@rolldown/pluginutils@1.0.0-rc.12': {} - "@types/node@12.20.55": {} + '@rolldown/pluginutils@1.0.0-rc.13': {} - "@types/node@20.19.27": + '@standard-schema/spec@1.1.0': {} + + '@tybys/wasm-util@0.10.1': dependencies: - undici-types: 6.21.0 + tslib: 2.8.1 + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} - "@types/webidl-conversions@7.0.3": {} + '@types/estree@1.0.8': {} - "@types/whatwg-url@11.0.5": + '@types/node@12.20.55': {} + + '@types/node@25.5.2': dependencies: - "@types/webidl-conversions": 7.0.3 + undici-types: 7.18.2 + + '@types/webidl-conversions@7.0.3': {} - "@types/whatwg-url@13.0.0": + '@types/whatwg-url@13.0.0': dependencies: - "@types/webidl-conversions": 7.0.3 + '@types/webidl-conversions': 7.0.3 - "@vitest/coverage-v8@4.0.16(vitest@4.0.16(@types/node@20.19.27))": + '@vitest/coverage-v8@4.1.3(vitest@4.1.3)': dependencies: - "@bcoe/v8-coverage": 1.0.2 - "@vitest/utils": 4.0.16 - ast-v8-to-istanbul: 0.3.10 + '@bcoe/v8-coverage': 1.0.2 + '@vitest/utils': 4.1.3 + ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magicast: 0.5.1 + magicast: 0.5.2 obug: 2.1.1 - std-env: 3.10.0 - tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@20.19.27) - transitivePeerDependencies: - - supports-color + std-env: 4.0.0 + tinyrainbow: 3.1.0 + vitest: 4.1.3(@types/node@25.5.2)(@vitest/coverage-v8@4.1.3)(vite@8.0.7(@types/node@25.5.2)) - "@vitest/expect@4.0.16": + '@vitest/expect@4.1.3': dependencies: - "@standard-schema/spec": 1.1.0 - "@types/chai": 5.2.3 - "@vitest/spy": 4.0.16 - "@vitest/utils": 4.0.16 + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.3 + '@vitest/utils': 4.1.3 chai: 6.2.2 - tinyrainbow: 3.0.3 + tinyrainbow: 3.1.0 - "@vitest/mocker@4.0.16(vite@6.1.0(@types/node@20.19.27))": + '@vitest/mocker@4.1.3(vite@8.0.7(@types/node@25.5.2))': dependencies: - "@vitest/spy": 4.0.16 + '@vitest/spy': 4.1.3 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.1.0(@types/node@20.19.27) + vite: 8.0.7(@types/node@25.5.2) - "@vitest/pretty-format@4.0.16": + '@vitest/pretty-format@4.1.3': dependencies: - tinyrainbow: 3.0.3 + tinyrainbow: 3.1.0 - "@vitest/runner@4.0.16": + '@vitest/runner@4.1.3': dependencies: - "@vitest/utils": 4.0.16 + '@vitest/utils': 4.1.3 pathe: 2.0.3 - "@vitest/snapshot@4.0.16": + '@vitest/snapshot@4.1.3': dependencies: - "@vitest/pretty-format": 4.0.16 + '@vitest/pretty-format': 4.1.3 + '@vitest/utils': 4.1.3 magic-string: 0.30.21 pathe: 2.0.3 - "@vitest/spy@4.0.16": {} + '@vitest/spy@4.1.3': {} - "@vitest/utils@4.0.16": + '@vitest/utils@4.1.3': dependencies: - "@vitest/pretty-format": 4.0.16 - tinyrainbow: 3.0.3 + '@vitest/pretty-format': 4.1.3 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 agent-base@7.1.4: {} @@ -2316,23 +1986,53 @@ snapshots: ast-kit@2.2.0: dependencies: - "@babel/parser": 7.28.5 + '@babel/parser': 7.29.2 pathe: 2.0.3 - ast-v8-to-istanbul@0.3.10: + ast-v8-to-istanbul@1.0.0: dependencies: - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 - js-tokens: 9.0.1 + js-tokens: 10.0.0 async-mutex@0.5.0: dependencies: tslib: 2.8.1 - b4a@1.7.3: {} + b4a@1.8.0: {} bare-events@2.8.2: {} + bare-fs@4.6.0: + dependencies: + bare-events: 2.8.2 + bare-path: 3.0.0 + bare-stream: 2.12.0(bare-events@2.8.2) + bare-url: 2.4.0 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + bare-os@3.8.7: {} + + bare-path@3.0.0: + dependencies: + bare-os: 3.8.7 + + bare-stream@2.12.0(bare-events@2.8.2): + dependencies: + streamx: 2.25.0 + teex: 1.0.1 + optionalDependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - react-native-b4a + + bare-url@2.4.0: + dependencies: + bare-path: 3.0.0 + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -2343,9 +2043,7 @@ snapshots: dependencies: fill-range: 7.1.1 - bson@6.10.2: {} - - bson@7.0.0: {} + bson@7.2.0: {} buffer-crc32@0.2.13: {} @@ -2357,28 +2055,26 @@ snapshots: chardet@2.1.1: {} - ci-info@3.9.0: {} - commondir@1.0.1: {} + convert-source-map@2.0.0: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 - defu@6.1.4: {} + defu@6.1.7: {} detect-indent@6.1.0: {} + detect-libc@2.1.2: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -2392,41 +2088,13 @@ snapshots: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - es-module-lexer@1.7.0: {} - - esbuild@0.24.2: - optionalDependencies: - "@esbuild/aix-ppc64": 0.24.2 - "@esbuild/android-arm": 0.24.2 - "@esbuild/android-arm64": 0.24.2 - "@esbuild/android-x64": 0.24.2 - "@esbuild/darwin-arm64": 0.24.2 - "@esbuild/darwin-x64": 0.24.2 - "@esbuild/freebsd-arm64": 0.24.2 - "@esbuild/freebsd-x64": 0.24.2 - "@esbuild/linux-arm": 0.24.2 - "@esbuild/linux-arm64": 0.24.2 - "@esbuild/linux-ia32": 0.24.2 - "@esbuild/linux-loong64": 0.24.2 - "@esbuild/linux-mips64el": 0.24.2 - "@esbuild/linux-ppc64": 0.24.2 - "@esbuild/linux-riscv64": 0.24.2 - "@esbuild/linux-s390x": 0.24.2 - "@esbuild/linux-x64": 0.24.2 - "@esbuild/netbsd-arm64": 0.24.2 - "@esbuild/netbsd-x64": 0.24.2 - "@esbuild/openbsd-arm64": 0.24.2 - "@esbuild/openbsd-x64": 0.24.2 - "@esbuild/sunos-x64": 0.24.2 - "@esbuild/win32-arm64": 0.24.2 - "@esbuild/win32-ia32": 0.24.2 - "@esbuild/win32-x64": 0.24.2 + es-module-lexer@2.0.0: {} esprima@4.0.1: {} estree-walker@3.0.3: dependencies: - "@types/estree": 1.0.6 + '@types/estree': 1.0.8 events-universal@1.0.1: dependencies: @@ -2442,8 +2110,8 @@ snapshots: fast-glob@3.3.3: dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 @@ -2452,9 +2120,9 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fill-range@7.1.1: dependencies: @@ -2490,7 +2158,7 @@ snapshots: fsevents@2.3.3: optional: true - get-tsconfig@4.13.0: + get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 @@ -2511,7 +2179,7 @@ snapshots: has-flag@4.0.0: {} - hookable@6.0.1: {} + hookable@6.1.0: {} html-escaper@2.0.2: {} @@ -2524,7 +2192,7 @@ snapshots: human-id@4.1.3: {} - iconv-lite@0.7.1: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -2532,12 +2200,6 @@ snapshots: import-without-cache@0.2.5: {} - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - optional: true - is-extglob@2.1.1: {} is-glob@4.0.3: @@ -2562,20 +2224,12 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.6: - dependencies: - "@jridgewell/trace-mapping": 0.3.25 - debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - js-tokens@9.0.1: {} + js-tokens@10.0.0: {} js-yaml@3.14.2: dependencies: @@ -2586,15 +2240,61 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@1.1.0: - optional: true - jsesc@3.1.0: {} jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + 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 + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -2603,12 +2303,12 @@ snapshots: magic-string@0.30.21: dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.5.1: + magicast@0.5.2: dependencies: - "@babel/parser": 7.28.5 - "@babel/types": 7.28.5 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 source-map-js: 1.2.1 make-dir@3.1.0: @@ -2617,7 +2317,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.4 memory-pager@1.5.0: {} @@ -2626,16 +2326,11 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 - - mongodb-connection-string-url@3.0.2: - dependencies: - "@types/whatwg-url": 11.0.5 - whatwg-url: 14.1.1 + picomatch: 2.3.2 - mongodb-connection-string-url@7.0.0: + mongodb-connection-string-url@7.0.1: dependencies: - "@types/whatwg-url": 13.0.0 + '@types/whatwg-url': 13.0.0 whatwg-url: 14.2.0 mongodb-memory-server-core@11.0.1: @@ -2646,16 +2341,17 @@ snapshots: find-cache-dir: 3.3.2 follow-redirects: 1.15.11(debug@4.4.3) https-proxy-agent: 7.0.6 - mongodb: 7.0.0 + mongodb: 7.1.1 new-find-package-json: 2.0.0 - semver: 7.7.3 - tar-stream: 3.1.7 + semver: 7.7.4 + tar-stream: 3.1.8 tslib: 2.8.1 - yauzl: 3.2.0 + yauzl: 3.3.0 transitivePeerDependencies: - - "@aws-sdk/credential-providers" - - "@mongodb-js/zstd" + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' - bare-abort-controller + - bare-buffer - gcp-metadata - kerberos - mongodb-client-encryption @@ -2669,9 +2365,10 @@ snapshots: mongodb-memory-server-core: 11.0.1 tslib: 2.8.1 transitivePeerDependencies: - - "@aws-sdk/credential-providers" - - "@mongodb-js/zstd" + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' - bare-abort-controller + - bare-buffer - gcp-metadata - kerberos - mongodb-client-encryption @@ -2680,25 +2377,17 @@ snapshots: - socks - supports-color - mongodb@6.13.0(socks@2.8.4): + mongodb@7.1.1: dependencies: - "@mongodb-js/saslprep": 1.2.0 - bson: 6.10.2 - mongodb-connection-string-url: 3.0.2 - optionalDependencies: - socks: 2.8.4 - - mongodb@7.0.0: - dependencies: - "@mongodb-js/saslprep": 1.4.4 - bson: 7.0.0 - mongodb-connection-string-url: 7.0.0 + '@mongodb-js/saslprep': 1.4.6 + bson: 7.2.0 + mongodb-connection-string-url: 7.0.1 mri@1.2.0: {} ms@2.1.3: {} - nanoid@3.3.8: {} + nanoid@3.3.11: {} new-find-package-json@2.0.0: dependencies: @@ -2742,9 +2431,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} pify@4.0.1: {} @@ -2752,20 +2441,20 @@ snapshots: dependencies: find-up: 4.1.0 - postcss@8.5.2: + postcss@8.5.9: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 - prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3): + prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3): dependencies: - prettier: 3.7.4 + prettier: 3.8.1 typescript: 5.9.3 prettier@2.8.8: {} - prettier@3.7.4: {} + prettier@3.8.1: {} punycode@2.3.1: {} @@ -2788,65 +2477,88 @@ snapshots: reusify@1.1.0: {} - rolldown-plugin-dts@0.20.0(rolldown@1.0.0-beta.57)(typescript@5.9.3): + rolldown-plugin-dts@0.20.0(rolldown@1.0.0-beta.57(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(typescript@5.9.3): dependencies: - "@babel/generator": 7.28.5 - "@babel/parser": 7.28.5 - "@babel/types": 7.28.5 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 ast-kit: 2.2.0 birpc: 4.0.0 dts-resolver: 2.1.3 - get-tsconfig: 4.13.0 + get-tsconfig: 4.13.7 obug: 2.1.1 - rolldown: 1.0.0-beta.57 + rolldown: 1.0.0-beta.57(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver - rolldown@1.0.0-beta.57: + rolldown@1.0.0-beta.57(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: - "@oxc-project/types": 0.103.0 - "@rolldown/pluginutils": 1.0.0-beta.57 + '@oxc-project/types': 0.103.0 + '@rolldown/pluginutils': 1.0.0-beta.57 optionalDependencies: - "@rolldown/binding-android-arm64": 1.0.0-beta.57 - "@rolldown/binding-darwin-arm64": 1.0.0-beta.57 - "@rolldown/binding-darwin-x64": 1.0.0-beta.57 - "@rolldown/binding-freebsd-x64": 1.0.0-beta.57 - "@rolldown/binding-linux-arm-gnueabihf": 1.0.0-beta.57 - "@rolldown/binding-linux-arm64-gnu": 1.0.0-beta.57 - "@rolldown/binding-linux-arm64-musl": 1.0.0-beta.57 - "@rolldown/binding-linux-x64-gnu": 1.0.0-beta.57 - "@rolldown/binding-linux-x64-musl": 1.0.0-beta.57 - "@rolldown/binding-openharmony-arm64": 1.0.0-beta.57 - "@rolldown/binding-wasm32-wasi": 1.0.0-beta.57 - "@rolldown/binding-win32-arm64-msvc": 1.0.0-beta.57 - "@rolldown/binding-win32-x64-msvc": 1.0.0-beta.57 - - rollup@4.34.8: - dependencies: - "@types/estree": 1.0.6 + '@rolldown/binding-android-arm64': 1.0.0-beta.57 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.57 + '@rolldown/binding-darwin-x64': 1.0.0-beta.57 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.57 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.57 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.57 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.57 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.57 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.57 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.57 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.57(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.57 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.57 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + rolldown@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): + dependencies: + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.12 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.34.8 - "@rollup/rollup-android-arm64": 4.34.8 - "@rollup/rollup-darwin-arm64": 4.34.8 - "@rollup/rollup-darwin-x64": 4.34.8 - "@rollup/rollup-freebsd-arm64": 4.34.8 - "@rollup/rollup-freebsd-x64": 4.34.8 - "@rollup/rollup-linux-arm-gnueabihf": 4.34.8 - "@rollup/rollup-linux-arm-musleabihf": 4.34.8 - "@rollup/rollup-linux-arm64-gnu": 4.34.8 - "@rollup/rollup-linux-arm64-musl": 4.34.8 - "@rollup/rollup-linux-loongarch64-gnu": 4.34.8 - "@rollup/rollup-linux-powerpc64le-gnu": 4.34.8 - "@rollup/rollup-linux-riscv64-gnu": 4.34.8 - "@rollup/rollup-linux-s390x-gnu": 4.34.8 - "@rollup/rollup-linux-x64-gnu": 4.34.8 - "@rollup/rollup-linux-x64-musl": 4.34.8 - "@rollup/rollup-win32-arm64-msvc": 4.34.8 - "@rollup/rollup-win32-ia32-msvc": 4.34.8 - "@rollup/rollup-win32-x64-msvc": 4.34.8 - fsevents: 2.3.3 + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + rolldown@1.0.0-rc.13: + dependencies: + '@oxc-project/types': 0.123.0 + '@rolldown/pluginutils': 1.0.0-rc.13 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.13 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.13 + '@rolldown/binding-darwin-x64': 1.0.0-rc.13 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.13 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.13 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.13 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.13 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.13 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.13 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.13 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.13 run-parallel@1.2.0: dependencies: @@ -2856,9 +2568,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} - - semver@7.7.3: {} + semver@7.7.4: {} shebang-command@2.0.0: dependencies: @@ -2872,15 +2582,6 @@ snapshots: slash@3.0.0: {} - smart-buffer@4.2.0: - optional: true - - socks@2.8.4: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - optional: true - source-map-js@1.2.1: {} sparse-bitfield@3.0.3: @@ -2894,18 +2595,15 @@ snapshots: sprintf-js@1.0.3: {} - sprintf-js@1.1.3: - optional: true - stackback@0.0.2: {} - std-env@3.10.0: {} + std-env@4.0.0: {} - streamx@2.23.0: + streamx@2.25.0: dependencies: events-universal: 1.0.1 fast-fifo: 1.3.2 - text-decoder: 1.2.3 + text-decoder: 1.2.7 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -2920,71 +2618,78 @@ snapshots: dependencies: has-flag: 4.0.0 - tar-stream@3.1.7: + tar-stream@3.1.8: dependencies: - b4a: 1.7.3 + b4a: 1.8.0 + bare-fs: 4.6.0 fast-fifo: 1.3.2 - streamx: 2.23.0 + streamx: 2.25.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + teex@1.0.1: + dependencies: + streamx: 2.25.0 transitivePeerDependencies: - bare-abort-controller - react-native-b4a term-size@2.2.1: {} - text-decoder@1.2.3: + text-decoder@1.2.7: dependencies: - b4a: 1.7.3 + b4a: 1.8.0 transitivePeerDependencies: - react-native-b4a tinybench@2.9.0: {} - tinyexec@1.0.2: {} + tinyexec@1.1.1: {} - tinyglobby@0.2.15: + tinyglobby@0.2.16: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 - tinyrainbow@3.0.3: {} + tinyrainbow@3.1.0: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - tr46@5.0.0: - dependencies: - punycode: 2.3.1 - tr46@5.1.1: dependencies: punycode: 2.3.1 tree-kill@1.2.2: {} - tsdown@0.18.3(typescript@5.9.3): + tsdown@0.18.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(typescript@5.9.3): dependencies: ansis: 4.2.0 cac: 6.7.14 - defu: 6.1.4 + defu: 6.1.7 empathic: 2.0.0 - hookable: 6.0.1 + hookable: 6.1.0 import-without-cache: 0.2.5 obug: 2.1.1 - picomatch: 4.0.3 - rolldown: 1.0.0-beta.57 - rolldown-plugin-dts: 0.20.0(rolldown@1.0.0-beta.57)(typescript@5.9.3) - semver: 7.7.3 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 + picomatch: 4.0.4 + rolldown: 1.0.0-beta.57(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown-plugin-dts: 0.20.0(rolldown@1.0.0-beta.57(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(typescript@5.9.3) + semver: 7.7.4 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 tree-kill: 1.2.2 - unconfig-core: 7.4.2 - unrun: 0.2.21 + unconfig-core: 7.5.0 + unrun: 0.2.34(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - - "@ts-macro/tsc" - - "@typescript/native-preview" + - '@emnapi/core' + - '@emnapi/runtime' + - '@ts-macro/tsc' + - '@typescript/native-preview' - oxc-resolver - synckit - vue-tsc @@ -2993,72 +2698,63 @@ snapshots: typescript@5.9.3: {} - unconfig-core@7.4.2: + unconfig-core@7.5.0: dependencies: - "@quansync/fs": 1.0.0 + '@quansync/fs': 1.0.0 quansync: 1.0.0 - undici-types@6.21.0: {} + undici-types@7.18.2: {} universalify@0.1.2: {} - unrun@0.2.21: + unrun@0.2.34(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: - rolldown: 1.0.0-beta.57 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - vite@6.1.0(@types/node@20.19.27): + vite@8.0.7(@types/node@25.5.2): dependencies: - esbuild: 0.24.2 - postcss: 8.5.2 - rollup: 4.34.8 + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.9 + rolldown: 1.0.0-rc.13 + tinyglobby: 0.2.16 optionalDependencies: - "@types/node": 20.19.27 + '@types/node': 25.5.2 fsevents: 2.3.3 - vitest@4.0.16(@types/node@20.19.27): + vitest@4.1.3(@types/node@25.5.2)(@vitest/coverage-v8@4.1.3)(vite@8.0.7(@types/node@25.5.2)): dependencies: - "@vitest/expect": 4.0.16 - "@vitest/mocker": 4.0.16(vite@6.1.0(@types/node@20.19.27)) - "@vitest/pretty-format": 4.0.16 - "@vitest/runner": 4.0.16 - "@vitest/snapshot": 4.0.16 - "@vitest/spy": 4.0.16 - "@vitest/utils": 4.0.16 - es-module-lexer: 1.7.0 + '@vitest/expect': 4.1.3 + '@vitest/mocker': 4.1.3(vite@8.0.7(@types/node@25.5.2)) + '@vitest/pretty-format': 4.1.3 + '@vitest/runner': 4.1.3 + '@vitest/snapshot': 4.1.3 + '@vitest/spy': 4.1.3 + '@vitest/utils': 4.1.3 + 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: 3.10.0 + picomatch: 4.0.4 + std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 6.1.0(@types/node@20.19.27) + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.7(@types/node@25.5.2) why-is-node-running: 2.3.0 optionalDependencies: - "@types/node": 20.19.27 + '@types/node': 25.5.2 + '@vitest/coverage-v8': 4.1.3(vitest@4.1.3) transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml webidl-conversions@7.0.0: {} - whatwg-url@14.1.1: - dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-url@14.2.0: dependencies: tr46: 5.1.1 @@ -3073,7 +2769,7 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - yauzl@3.2.0: + yauzl@3.3.0: dependencies: buffer-crc32: 0.2.13 pend: 1.2.0 diff --git a/src/collection/collection.ts b/src/collection/collection.ts index 49066bb..5f42153 100644 --- a/src/collection/collection.ts +++ b/src/collection/collection.ts @@ -9,7 +9,7 @@ import { ObjectId, type WithoutId, } from "mongodb"; -import type { AnyRelations } from "../relations/relations"; +import type { AnyRelation } from "../relations/relations"; import { type AnySchema, Schema } from "../schema/schema"; import type { DistinctFilter, Filter, InferSchemaData, InferSchemaInput, UpdateFilter } from "../schema/type-helpers"; import { MonarchObjectId } from "../types/objectId"; @@ -35,7 +35,7 @@ import { UpdateOneQuery } from "./query/update-one"; * Collection interface for MongoDB operations. * */ -export class Collection> { +export class Collection>> { protected collection: MongoCollection>; /** @@ -48,7 +48,7 @@ export class Collection, - protected relations: TDbRelations, + protected relations: TRelations, public readonly schema: TSchema, ) { this.collection = db.collection>(this.schema.name); diff --git a/src/collection/population.ts b/src/collection/population.ts index b48b96f..3a397a2 100644 --- a/src/collection/population.ts +++ b/src/collection/population.ts @@ -1,8 +1,8 @@ import type { Sort as MongoSort } from "mongodb"; import { MonarchError } from "../errors"; -import type { AnyRelation, AnyRelations } from "../relations/relations"; +import { Relation, type AnyRelation } from "../relations/relations"; import type { Population, PopulationOptions } from "../relations/type-helpers"; -import { type AnySchema, Schema } from "../schema/schema"; +import { Schema, type AnySchema } from "../schema/schema"; import { hashString, mapOneOrArray } from "../utils/misc"; import { addExtraInputsToProjection, makePopulationProjection, makeProjection } from "./projection"; import type { Meta } from "./types/expressions"; @@ -27,10 +27,10 @@ function createPopulationVarGenerator() { return (relation: AnyRelation): string => { const key = [ relation.relation, - relation.schema.schema.name, - relation.schema.field, - relation.target.schema.name, - relation.target.field, + relation.schemaField.schema.name, + relation.schemaField.field, + relation.targetField.schema.name, + relation.targetField.field, ].join("_"); const base = `mn_${hashString(key)}`; @@ -43,7 +43,7 @@ function createPopulationVarGenerator() { export function addPopulations( pipeline: PipelineStage[], opts: { - relations: Record; + relations: Record>; population: Population; schema: AnySchema; nextVar?: (relation: AnyRelation) => string; @@ -61,16 +61,18 @@ export function addPopulations( throw new MonarchError(`No relations found for schema '${opts.schema.name}'`); } - const _options = options === true ? {} : (options as PopulationOptions); + const _options = + options === true ? (Relation.options(relation) ?? {}) : (options as PopulationOptions); // get population projection or fallback to schema omit projection const projection = - makePopulationProjection(_options) ?? makeProjection("omit", Schema.options(relation.target.schema)?.omit ?? {}); + makePopulationProjection(_options) ?? + makeProjection("omit", Schema.options(relation.targetField.schema)?.omit ?? {}); // ensure required fields are in projection const extras = addExtraInputsToProjection( projection, - Schema.options(relation.target.schema)?.virtuals, + Schema.options(relation.targetField.schema)?.virtuals, _options.populate, ); @@ -88,7 +90,7 @@ export function addPopulations( ? addPopulations(populationPipeline, { population: _options.populate, relations: opts.relations, - schema: relation.target.schema, + schema: relation.targetField.schema, nextVar, }) : undefined; @@ -133,11 +135,11 @@ export function expandPopulations(opts: { populations: population.populations, projection: population.projection, extras: population.extras, - schema: population.relation.target.schema, + schema: population.relation.targetField.schema, doc, }); } - return Schema.output(population.relation.target.schema, doc, population.projection, population.extras); + return Schema.output(population.relation.targetField.schema, doc, population.projection, population.extras); }); delete populatedDoc[population.fieldVariable]; } @@ -156,15 +158,15 @@ function addPopulationPipeline( }, ): { fieldVariable: string } { const { relation } = opts; - const collectionName = relation.target.schema.name; + const collectionName = relation.targetField.schema.name; const fieldVariable = opts.nextVar(relation); - if (relation.relation === "refs") { + if (relation.relation === "many") { pipeline.push({ $lookup: { from: collectionName, - localField: relation.schema.field, - foreignField: relation.target.field, + localField: relation.schemaField.field, + foreignField: relation.targetField.field, as: fieldVariable, pipeline: opts.populationPipeline, }, @@ -182,58 +184,23 @@ function addPopulationPipeline( }); } - if (relation.relation === "many") { - pipeline.push({ - $lookup: { - from: collectionName, - let: { - [fieldVariable]: `$${relation.schema.field}`, - }, - pipeline: [ - { - $match: { - $expr: { - $and: [ - { $ne: [`$$${fieldVariable}`, null] }, - { $eq: [`$${relation.target.field}`, `$$${fieldVariable}`] }, - ], - }, - }, - }, - ...(opts.populationPipeline ?? []), - ], - as: fieldVariable, - }, - }); - } - if (relation.relation === "one") { pipeline.push({ $lookup: { from: collectionName, - let: { - [fieldVariable]: `$${relation.schema.field}`, - }, - pipeline: [ - { - $match: { - $expr: { - $eq: [`$${relation.target.field}`, `$$${fieldVariable}`], - }, - }, - }, - ...(opts.populationPipeline ?? []), - ], + localField: relation.schemaField.field, + foreignField: relation.targetField.field, as: fieldVariable, + pipeline: opts.populationPipeline, }, }); - // Unwind the populated field if it's a single relation + // Unwind the single result, or null if no match pipeline.push({ $set: { [fieldVariable]: { $cond: { - if: { $gt: [{ $size: `$${fieldVariable}` }, 0] }, // Skip population if value is null - then: { $arrayElemAt: [`$${fieldVariable}`, 0] }, // Unwind the first populated result + if: { $gt: [{ $size: `$${fieldVariable}` }, 0] }, + then: { $arrayElemAt: [`$${fieldVariable}`, 0] }, else: null, }, }, diff --git a/src/collection/query/find-one.ts b/src/collection/query/find-one.ts index 5430fc0..bcb31cb 100644 --- a/src/collection/query/find-one.ts +++ b/src/collection/query/find-one.ts @@ -1,5 +1,5 @@ import type { FindOptions, Collection as MongoCollection, Filter as MongoFilter } from "mongodb"; -import type { AnyRelations } from "../../relations/relations"; +import type { AnyRelation } from "../../relations/relations"; import type { InferRelationObjectPopulation, Population } from "../../relations/type-helpers"; import { type AnySchema, Schema } from "../../schema/schema"; import type { Filter, InferSchemaData, InferSchemaOmit, InferSchemaOutput } from "../../schema/type-helpers"; @@ -15,19 +15,19 @@ import { Query, type QueryOutput } from "./base"; */ export class FindOneQuery< TSchema extends AnySchema, - TDbRelations extends Record, + TRelations extends Record>, TPopulate extends Record = {}, TOutput = InferSchemaOutput, TOmit extends ["omit" | "select", keyof any] = ["omit", InferSchemaOmit], > extends Query | null> { private _projection: Projection>; - private _population: Population = {}; + private _population: Population = {}; constructor( schema: TSchema, collection: MongoCollection>, readyPromise: Promise, - private _relations: TDbRelations, + private _relations: TRelations, private _filter: Filter, private _options: FindOptions = {}, ) { @@ -54,7 +54,7 @@ export class FindOneQuery< */ public omit>>(projection: TProjection) { this._projection = makeProjection("omit", projection); - return this as FindOneQuery]>; + return this as FindOneQuery]>; } /** @@ -65,7 +65,7 @@ export class FindOneQuery< */ public select>>(projection: TProjection) { this._projection = makeProjection("select", projection); - return this as FindOneQuery]>; + return this as FindOneQuery]>; } /** @@ -74,12 +74,12 @@ export class FindOneQuery< * @param population - Relation population config * @returns FindOneQuery instance */ - public populate>(population: TPopulation) { + public populate>(population: TPopulation) { this._population = population; return this as FindOneQuery< TSchema, - TDbRelations, - InferRelationObjectPopulation, + TRelations, + InferRelationObjectPopulation, TOutput, TOmit >; diff --git a/src/collection/query/find.ts b/src/collection/query/find.ts index c780114..f3df2c4 100644 --- a/src/collection/query/find.ts +++ b/src/collection/query/find.ts @@ -5,7 +5,7 @@ import type { Filter as MongoFilter, Sort as MongoSort, } from "mongodb"; -import type { AnyRelations } from "../../relations/relations"; +import type { AnyRelation } from "../../relations/relations"; import type { InferRelationObjectPopulation, Population } from "../../relations/type-helpers"; import { type AnySchema, Schema } from "../../schema/schema"; import type { Filter, InferSchemaData, InferSchemaOmit, InferSchemaOutput } from "../../schema/type-helpers"; @@ -21,19 +21,19 @@ import { Query, type QueryOutput } from "./base"; */ export class FindQuery< TSchema extends AnySchema, - TDbRelations extends Record, + TRelations extends Record>, TPopulate extends Record = {}, TOutput = InferSchemaOutput, TOmit extends ["omit" | "select", keyof any] = ["omit", InferSchemaOmit], > extends Query[]> { private _projection: Projection>; - private _population: Population = {}; + private _population: Population = {}; constructor( schema: TSchema, collection: MongoCollection>, readyPromise: Promise, - private _relations: TDbRelations, + private _relations: TRelations, private _filter: Filter, private _options: FindOptions = {}, ) { @@ -93,7 +93,7 @@ export class FindQuery< */ public omit>>(projection: TProjection) { this._projection = makeProjection("omit", projection); - return this as FindQuery]>; + return this as FindQuery]>; } /** @@ -104,7 +104,7 @@ export class FindQuery< */ public select>>(projection: TProjection) { this._projection = makeProjection("select", projection); - return this as FindQuery]>; + return this as FindQuery]>; } /** @@ -113,12 +113,12 @@ export class FindQuery< * @param population - Relation population config * @returns FindQuery instance */ - public populate>(population: TPopulation) { + public populate>(population: TPopulation) { this._population = population; return this as FindQuery< TSchema, - TDbRelations, - InferRelationObjectPopulation, + TRelations, + InferRelationObjectPopulation, TOutput, TOmit >; diff --git a/src/database.ts b/src/database.ts index 86e703d..29f0ce9 100644 --- a/src/database.ts +++ b/src/database.ts @@ -94,7 +94,7 @@ export class Database> { * * @param options - Init options */ - public async initialize(options?: InitOptions) { + public async initialize(options?: InitOptions): Promise { const promises: Promise[] = []; const collections = Object.values(this.collections).map((c: Collection): CollectionInit => { const resolver = createAsyncResolver(); @@ -102,7 +102,7 @@ export class Database> { return { schema: c.schema, defaultValidation: this.options?.validation, resolver }; }); initializeCollections(this.db, collections, options); - return Promise.all(promises); + return Promise.all(promises).then(() => undefined); } /** @@ -126,7 +126,7 @@ export class Database> { * @returns Array of collection keys */ public listCollections() { - return Object.keys(this.collections) as (keyof this["collections"])[]; + return Object.keys(this.collections) as Extract[]; } } diff --git a/src/index.ts b/src/index.ts index fe48e21..90267d1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -23,6 +23,13 @@ export { ObjectId } from "mongodb"; export { Collection } from "./collection/collection"; export { createClient, createDatabase, Database, type DatabaseOptions } from "./database"; export { MonarchError, MonarchParseError } from "./errors"; +export { + mergeRelations, + Relation, + RelationField, + type RelationsFn, + type SchemasRelations, +} from "./relations/relations"; export { createSchema, createShape, defineSchemas, mergeSchemas, Schema, Schemas } from "./schema/schema"; export type { Condition, diff --git a/src/relations/relations.ts b/src/relations/relations.ts index 321db37..edb81d5 100644 --- a/src/relations/relations.ts +++ b/src/relations/relations.ts @@ -1,60 +1,87 @@ +import type { ObjectId } from "mongodb"; import { type AnySchema } from "../schema/schema"; -import type { MergeN1 } from "../utils/type-helpers"; -import type { SchemaRelatableField } from "./type-helpers"; +import type { InferSchemaData, InferSchemaInput } from "../schema/type-helpers"; +import type { ExtractIfArray, Index, Merge, MergeN1, OrArray } from "../utils/type-helpers"; +import type { PopulationOptions, RelationPopulationOptions } from "./type-helpers"; -export type AnyRelation = Relation; to: RelationField }>; +export type AnyRelation = Relation; /** * Defines a relationship between two schemas. * */ -export type Relation< - TRelation extends "one" | "many" | "refs", - TOptions extends { from: RelationField; to: RelationField }, -> = { - relation: TRelation; - schema: TOptions["from"]; - target: TOptions["to"]; -}; +export class Relation< + TRelation extends "one" | "many", + TFields extends { + from: AnyRelationField; + to: AnyRelationField; + }, + TOptions extends PopulationOptions | undefined, + TRelations extends Record>, +> { + constructor( + public relation: TRelation, + public schemaField: TFields["from"], + public targetField: TFields["to"], + protected _options: TOptions, + ) {} + + public options>(options: TOptions) { + const relation = this as unknown as Relation; + relation._options = options; + return relation; + } + + public static options(relation: T): PopulationOptions | undefined { + return relation._options; + } +} + +export type AnyRelationField = RelationField; -export class RelationField { +export class RelationField { constructor( public schema: TSchema, public field: TField, + public type?: TType, ) {} } export type SchemasRelations> = { - [K in keyof TSchemas]?: Record>; + [K in keyof TSchemas]?: Record< + string, + Relation; to: AnyRelationField }, any, any> + >; }; -export type AnyRelations = Record; - export function mergeRelations< TSchemas extends Record, - TRelations extends Record | undefined>, + TRelations extends Record>, T extends SchemasRelations, ->(schemas: TSchemas, relations: TRelations, fn: RelationsFn) { - const input = new Proxy({} as SchemaRelations, { - get: (_target, schemaKey: string) => { - return new Proxy({} as SchemaRelations[string], { - get: (_target, relation: "$one" | "$many" | "$refs") => { - return new Proxy({} as Record>, { - get: (_target, targetKey: string) => { - return (options: Parameters>[0]): AnyRelation => ({ - relation: relation.slice(1), - schema: new RelationField(schemas[schemaKey]!, options.from), - target: new RelationField(schemas[targetKey]!, options.to), - }); - }, - }); +>(schemas: TSchemas, relations: TRelations, fn: RelationsFn) { + const input = new Proxy({} as RelationsBuilder, { + get: (_target, relationKey: string) => { + if (relationKey === "one" || relationKey === "many") { + // relation fns + return new Proxy({} as Record>, { + get: (_target, _targetSchema: string) => { + return (fields: Parameters>[0]): AnyRelation => { + return new Relation(relationKey, fields.from, fields.to, undefined); + }; + }, + }); + } + // schema fields + return new Proxy({} as Record, { + get: (_target, schemaField: string) => { + return new RelationField(schemas[relationKey]!, schemaField); }, }); }, }); const output = fn(input); - const mergedRelations: Record = { ...relations }; + const mergedRelations: Record | undefined> = { ...relations }; for (const [key, relations] of Object.entries(output)) { if (key in mergedRelations) { mergedRelations[key] = { ...mergedRelations[key], ...relations }; @@ -68,40 +95,82 @@ export function mergeRelations< export type RelationsFn< TSchemas extends Record, - TRelations extends Record | undefined>, -> = (s: SchemaRelations) => keyof TRelations extends keyof TSchemas ? TRelations : never; + TRelations extends Record>, + TNewRelations extends SchemasRelations, +> = (r: RelationsBuilder) => keyof TNewRelations extends keyof TSchemas ? TNewRelations : never; -type SchemaRelations> = { - [SchemaKey in keyof TSchemas]: { +type RelationsBuilder< + TSchemas extends Record, + TRelations extends Record>, +> = Merge< + { /** Defines a one-to-one relationship. */ - $one: SchemaOne; + one: SchemaOne; /** Defines a one-to-many relationship. */ - $many: SchemaMany; - /** Defines an embedded relationship. */ - $refs: SchemaRefs; - }; -}; + many: SchemaMany; + }, + { + [K in keyof TSchemas]: SchemaFields; + } +>; -type SchemaOne> = { - [TargetK in keyof TSchemas]: One; +type SchemaFields = { + [K in keyof InferSchemaInput as NonNullable[K]> extends + | string + | number + | ObjectId + | Array + ? K + : never]-?: RelationField[K]>, T>; }; -type SchemaMany> = { - [TargetK in keyof TSchemas]: Many; + +type SchemaOne< + TSchemas extends Record, + TRelations extends Record>, +> = { + [TargetK in keyof TSchemas]: One; }; -type SchemaRefs> = { - [TargetK in keyof TSchemas]: Refs; +type SchemaMany< + TSchemas extends Record, + TRelations extends Record>, +> = { + [TargetK in keyof TSchemas]: Many; }; -type One = RelationFn<"one", TSchema, TTarget>; -type Many = RelationFn<"many", TSchema, TTarget>; -type Refs = RelationFn<"refs", TSchema, TTarget>; +type One>> = RelationFn< + "one", + TTarget, + TRelations +>; +type Many>> = RelationFn< + "many", + TTarget, + TRelations +>; -type RelationFn = < - const TSchemaField extends SchemaRelatableField, - const TTargetField extends SchemaRelatableField, ->(options: { +type RelationFn< + TRelation extends "one" | "many", + TTarget extends AnySchema, + TRelations extends Record>, +> = < + TSchemaField extends RelationField< + any, + // one does not accept array fields + TRelation extends "many" ? OrArray : string | number | ObjectId, + AnySchema + >, + TTargetField extends RelationField< + any, + // target field type must match schema field type + // one does not accept array fields + TRelation extends "many" + ? OrArray, TSchemaField["field"]>>>> + : ExtractIfArray, TSchemaField["field"]>>>, + TTarget + >, +>(fields: { /** Local field defined in source schema */ from: TSchemaField; /** Foreign field defined in target schema */ to: TTargetField; -}) => Relation; to: RelationField }>; +}) => Relation; diff --git a/src/relations/type-helpers.ts b/src/relations/type-helpers.ts index 498fd60..7def1f1 100644 --- a/src/relations/type-helpers.ts +++ b/src/relations/type-helpers.ts @@ -1,66 +1,57 @@ -import type { ObjectId } from "mongodb"; import type { Limit, Skip, Sort } from "../collection/types/pipeline-stage"; import type { BoolProjection, WithProjection } from "../collection/types/query-options"; -import type { AnySchema } from "../schema/schema"; -import type { InferSchemaInput, InferSchemaOmit, InferSchemaOutput } from "../schema/type-helpers"; +import type { InferSchemaOmit, InferSchemaOutput } from "../schema/type-helpers"; import type { ExtractIfArray, Index, Merge, Pretty } from "../utils/type-helpers"; -import type { AnyRelation, AnyRelations, Relation, RelationField } from "./relations"; - -type ValidRelationFieldType = TRelation extends "refs" - ? Array - : string | number | ObjectId; -export type SchemaRelatableField = keyof { - [K in keyof InferSchemaInput as NonNullable[K]> extends ValidRelationFieldType - ? K - : never]: unknown; -}; +import type { AnyRelation, AnyRelationField, Relation } from "./relations"; export type PopulationBaseOptions< T, - TDbRelations extends Record, - TName extends keyof TDbRelations, + TRelations extends Record>, + TName extends keyof TRelations, > = | { omit?: BoolProjection; select?: never; - populate?: Population; + populate?: Population; } | { omit?: never; select?: BoolProjection; - populate?: Population; + populate?: Population; }; export type PopulationOptions< T, - TDbRelations extends Record, - TName extends keyof TDbRelations, -> = { + TRelations extends Record>, + TName extends keyof TRelations, +> = PopulationBaseOptions & { limit?: Limit["$limit"]; skip?: Skip["$skip"]; sort?: Sort["$sort"]; -} & PopulationBaseOptions; -type _RelationPopulationOptions, TRelation extends AnyRelation> = - TRelation extends Relation<"one", { from: any; to: infer TTarget extends RelationField }> - ? PopulationBaseOptions< - InferRelationPopulation, - TDbRelations, - TTarget["schema"]["name"] +}; +export type RelationPopulationOptions< + TRelations extends Record>, + TRelation extends "one" | "many", + TTargetField extends AnyRelationField, +> = TRelation extends "one" + ? PopulationBaseOptions< + InferRelationPopulation, + TRelations, + TTargetField["schema"]["name"] + > + : TRelation extends "many" + ? PopulationOptions< + ExtractIfArray>, + TRelations, + TTargetField["schema"]["name"] > - : TRelation extends Relation<"many", { from: any; to: infer TTarget extends RelationField }> - ? PopulationOptions< - ExtractIfArray>, - TDbRelations, - TTarget["schema"]["name"] - > - : TRelation extends Relation<"refs", { from: any; to: infer TTarget extends RelationField }> - ? PopulationOptions< - ExtractIfArray>, - TDbRelations, - TTarget["schema"]["name"] - > - : never; -export type Population, TName extends keyof TDbRelations> = { - [K in keyof TDbRelations[TName]]?: _RelationPopulationOptions | true; + : never; +export type Population< + TRelations extends Record>, + TName extends keyof TRelations, +> = { + [K in keyof TRelations[TName]]?: + | RelationPopulationOptions + | true; }; type WithRelationPopulation< @@ -74,60 +65,58 @@ type WithRelationPopulation< : WithProjection<"omit", TDefaultOmit, T>; type WithNestedPopulate< T, - TDbRelations extends Record, - TName extends keyof TDbRelations, + TRelations extends Record>, + TName extends keyof TRelations, TPopulationOptions extends PopulationOptions | true | undefined, > = TPopulationOptions extends PopulationOptions ? TPopulationOptions["populate"] extends Population - ? Pretty>> + ? Pretty>> : T : T; export type InferRelationPopulation< - TDbRelations extends Record, - TRelation extends AnyRelation, + TRelations extends Record>, + TRelation extends "one" | "many", + TTargetField extends AnyRelationField, TPopulationOptions extends PopulationOptions | true | undefined, -> = - TRelation extends Relation<"one", { from: any; to: infer TTarget extends RelationField }> +> = TRelation extends "one" + ? WithNestedPopulate< + WithRelationPopulation< + InferSchemaOutput, + TPopulationOptions, + InferSchemaOmit + >, + TRelations, + TTargetField["schema"]["name"], + TPopulationOptions + > | null + : TRelation extends "many" ? WithNestedPopulate< WithRelationPopulation< - InferSchemaOutput, + InferSchemaOutput, TPopulationOptions, - InferSchemaOmit + InferSchemaOmit >, - TDbRelations, - TTarget["schema"]["name"], + TRelations, + TTargetField["schema"]["name"], TPopulationOptions - > | null - : TRelation extends Relation<"many", { from: any; to: infer TTarget extends RelationField }> - ? WithNestedPopulate< - WithRelationPopulation< - InferSchemaOutput, - TPopulationOptions, - InferSchemaOmit - >, - TDbRelations, - TTarget["schema"]["name"], - TPopulationOptions - >[] - : TRelation extends Relation<"refs", { from: any; to: infer TTarget extends RelationField }> - ? WithNestedPopulate< - WithRelationPopulation< - InferSchemaOutput, - TPopulationOptions, - InferSchemaOmit - >, - TDbRelations, - TTarget["schema"]["name"], - TPopulationOptions - >[] - : never; + >[] + : never; export type InferRelationObjectPopulation< - TDbRelations extends Record, - TName extends keyof TDbRelations, - TPopulation extends Population, + TRelations extends Record>, + TName extends keyof TRelations, + TPopulation extends Population, > = { - [K in keyof TPopulation]: InferRelationPopulation, TPopulation[K]>; + [K in keyof TPopulation]: InferRelationPopulation< + TRelations, + Index["relation"], + Index["targetField"], + TPopulation[K] extends true + ? Index extends Relation + ? TOptions + : true + : TPopulation[K] + >; }; diff --git a/src/schema/schema.ts b/src/schema/schema.ts index 0585cda..5cabe36 100644 --- a/src/schema/schema.ts +++ b/src/schema/schema.ts @@ -277,7 +277,7 @@ export function createShape>(types export class Schemas< TSchemas extends Record, - TRelations extends Record | undefined> = {}, + TRelations extends Record> = {}, > { constructor( public schemas: TSchemas, @@ -286,7 +286,7 @@ export class Schemas< this.withRelations = this.withRelations.bind(this); } - public withRelations>(fn: RelationsFn) { + public withRelations>(fn: RelationsFn) { const mergedRelations = mergeRelations(this.schemas, this.relations, fn); return new Schemas(this.schemas, mergedRelations); } diff --git a/src/schema/type-helpers.ts b/src/schema/type-helpers.ts index dbcc61c..2dd313e 100644 --- a/src/schema/type-helpers.ts +++ b/src/schema/type-helpers.ts @@ -33,7 +33,7 @@ import type { InferTypeInput, InferTypeOutput, } from "../types/type-helpers"; -import type { IdFirst, IsNever, Merge, Pretty, TrueKeys } from "../utils/type-helpers"; +import type { IdFirst, IsNever, Merge, OptionalIdFirst, Pretty, TrueKeys } from "../utils/type-helpers"; import type { AnySchema, Schema } from "./schema"; import type { InferVirtualOutput } from "./virtuals"; @@ -45,7 +45,7 @@ export type WithOptionalObjectId = T extends { _id: MonarchObjectId } : T; export type InferSchemaInput = Pretty< - _InferTypeObjectInput>> + OptionalIdFirst<_InferTypeObjectInput>>> >; export type _InferSchemaData = _InferTypeObjectOutput>; export type InferSchemaData = Pretty<_InferSchemaData>; diff --git a/src/type-helpers.ts b/src/type-helpers.ts index aecfa26..d423ae7 100644 --- a/src/type-helpers.ts +++ b/src/type-helpers.ts @@ -1,7 +1,7 @@ import { Collection } from "./collection/collection"; import type { BoolProjection, WithProjection } from "./collection/types/query-options"; import type { Database } from "./database"; -import { type AnyRelations } from "./relations/relations"; +import { type AnyRelation } from "./relations/relations"; import type { InferRelationObjectPopulation, Population, PopulationBaseOptions } from "./relations/type-helpers"; import type { AnySchema } from "./schema/schema"; import type { InferSchemaInput, InferSchemaOmit, InferSchemaOutput } from "./schema/type-helpers"; @@ -9,7 +9,7 @@ import type { IdFirst, Merge, Pretty } from "./utils/type-helpers"; export type DbCollections< TSchemas extends Record, - TRelations extends Record, + TRelations extends Record>, > = { [K in keyof TSchemas]: Collection; } & {}; diff --git a/src/utils/type-helpers.ts b/src/utils/type-helpers.ts index 3223d00..c859c6d 100644 --- a/src/utils/type-helpers.ts +++ b/src/utils/type-helpers.ts @@ -14,6 +14,7 @@ export type MergeN1All = T extends [...infer Head, infer Tail] export type Index = K extends keyof T ? T[K] : never; export type IsNever = [T] extends [never] ? true : false; export type ExtractIfArray = T extends (infer U)[] ? U : T; +export type OrArray = T | T[]; export type TrueKeys = keyof { [K in keyof T as T[K] extends true ? K : never]: T[K]; }; @@ -22,3 +23,4 @@ export type KnownObjectKeys = { [K in keyof T as KnownKey]: T[K] }; export type RequiredObject = { [K in keyof T as undefined extends T[K] ? never : K]: Exclude }; export type IdFirst = "_id" extends keyof T ? { _id: T["_id"] } & Omit : T; +export type OptionalIdFirst = "_id" extends keyof T ? { _id?: T["_id"] } & Omit : T; diff --git a/tests/relations/groups.test.ts b/tests/relations/groups.test.ts index aa16355..96f86c9 100644 --- a/tests/relations/groups.test.ts +++ b/tests/relations/groups.test.ts @@ -25,9 +25,9 @@ describe("schema groups", async () => { tutorId: objectId().optional(), }); - const userGroup = defineSchemas({ UserSchema }).withRelations((s) => ({ + const userGroup = defineSchemas({ UserSchema }).withRelations((r) => ({ users: { - tutor: s.users.$one.users({ from: "tutorId", to: "_id" }), + tutor: r.one.users({ from: r.users.tutorId, to: r.users._id }), }, })); @@ -42,9 +42,9 @@ describe("schema groups", async () => { parentId: objectId().optional(), }); - const contentGroup = defineSchemas({ PostSchema, CategorySchema }).withRelations((s) => ({ + const contentGroup = defineSchemas({ PostSchema, CategorySchema }).withRelations((r) => ({ categories: { - parent: s.categories.$one.categories({ from: "parentId", to: "_id" }), + parent: r.one.categories({ from: r.categories.parentId, to: r.categories._id }), }, })); @@ -52,12 +52,12 @@ describe("schema groups", async () => { const mergedGroups = mergeSchemas(userGroup, contentGroup); // Merged: with cross-group relations added after merge - const withCrossGroupRelations = mergedGroups.withRelations((s) => ({ + const withCrossGroupRelations = mergedGroups.withRelations((r) => ({ users: { - posts: s.users.$many.posts({ from: "_id", to: "authorId" }), + posts: r.many.posts({ from: r.users._id, to: r.posts.authorId }), }, posts: { - author: s.posts.$one.users({ from: "authorId", to: "_id" }), + author: r.one.users({ from: r.posts.authorId, to: r.users._id }), }, })); @@ -147,15 +147,15 @@ describe("schema groups", async () => { mentorId: objectId().optional(), }); - const groupA = defineSchemas({ UsersSchema }).withRelations((s) => ({ + const groupA = defineSchemas({ UsersSchema }).withRelations((r) => ({ users: { - tutor: s.users.$one.users({ from: "tutorId", to: "_id" }), + tutor: r.one.users({ from: r.users.tutorId, to: r.users._id }), }, })); - const groupB = defineSchemas({ UsersSchema }).withRelations((s) => ({ + const groupB = defineSchemas({ UsersSchema }).withRelations((r) => ({ users: { - mentor: s.users.$one.users({ from: "mentorId", to: "_id" }), + mentor: r.one.users({ from: r.users.mentorId, to: r.users._id }), }, })); @@ -185,15 +185,15 @@ describe("schema groups", async () => { mentorId: objectId().optional(), }); - const groupA = defineSchemas({ UsersSchema }).withRelations((s) => ({ + const groupA = defineSchemas({ UsersSchema }).withRelations((r) => ({ users: { - person: s.users.$one.users({ from: "tutorId", to: "_id" }), + person: r.one.users({ from: r.users.tutorId, to: r.users._id }), }, })); - const groupB = defineSchemas({ UsersSchema }).withRelations((s) => ({ + const groupB = defineSchemas({ UsersSchema }).withRelations((r) => ({ users: { - person: s.users.$one.users({ from: "mentorId", to: "_id" }), + person: r.one.users({ from: r.users.mentorId, to: r.users._id }), }, })); diff --git a/tests/relations/many.test.ts b/tests/relations/many.test.ts index f74ba21..a4e4415 100644 --- a/tests/relations/many.test.ts +++ b/tests/relations/many.test.ts @@ -1,6 +1,6 @@ import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"; import { createDatabase, createSchema, defineSchemas } from "../../src"; -import { boolean, date, objectId, string } from "../../src/types"; +import { array, boolean, date, objectId, string } from "../../src/types"; import { createMockDatabase } from "../mock"; describe("many relation tests", async () => { @@ -39,23 +39,23 @@ describe("many relation tests", async () => { }); const schemas = defineSchemas({ UserSchema, PostSchema, BookSchema }); - const relations = schemas.withRelations((s) => ({ + const relations = schemas.withRelations((r) => ({ users: { - tutor: s.users.$one.users({ from: "tutor", to: "_id" }), - posts: s.users.$many.posts({ from: "_id", to: "author" }), - books: s.users.$many.books({ from: "_id", to: "author" }), + tutor: r.one.users({ from: r.users.tutor, to: r.users._id }), + posts: r.many.posts({ from: r.users._id, to: r.posts.author }), + books: r.many.books({ from: r.users._id, to: r.books.author }), }, posts: { - author: s.posts.$one.users({ from: "author", to: "_id" }), + author: r.one.users({ from: r.posts.author, to: r.users._id }), }, books: { - author: s.books.$one.users({ from: "author", to: "_id" }), + author: r.one.users({ from: r.books.author, to: r.users._id }), }, })); return createDatabase(client.db(), relations); }; - it("should populate many relation (posts)", async () => { + it("should populate a many relation across collections", async () => { const { collections } = setupSchemasAndCollections(); const user = await collections.users.insertOne({ @@ -95,7 +95,7 @@ describe("many relation tests", async () => { expect(populatedUsers[1].tutor).toStrictEqual(user); }); - it("should handle multiple many relations with same field", async () => { + it("should populate multiple many relations to different collections", async () => { const { collections } = setupSchemasAndCollections(); const user = await collections.users.insertOne({ @@ -123,7 +123,7 @@ describe("many relation tests", async () => { expect(populatedUser?.books?.[0]?.title).toBe("Book 1"); }); - it("should handle deep nested populations with many relations", async () => { + it("should support deep nested population across many and one relations", async () => { const PostSchemaWithEditor = createSchema("posts", { title: string(), contents: string(), @@ -143,14 +143,14 @@ describe("many relation tests", async () => { }); const schemas = defineSchemas({ UserSchemaForEditor, PostSchemaWithEditor, BookSchemaDeep }); - const relations = schemas.withRelations((s) => ({ + const relations = schemas.withRelations((r) => ({ users: { - posts: s.users.$many.posts({ from: "_id", to: "author" }), - books: s.users.$many.books({ from: "_id", to: "author" }), + posts: r.many.posts({ from: r.users._id, to: r.posts.author }), + books: r.many.books({ from: r.users._id, to: r.books.author }), }, posts: { - author: s.posts.$one.users({ from: "author", to: "_id" }), - editor: s.posts.$one.users({ from: "editor", to: "_id" }), + author: r.one.users({ from: r.posts.author, to: r.users._id }), + editor: r.one.users({ from: r.posts.editor, to: r.users._id }), }, })); const db = createDatabase(client.db(), relations); @@ -203,4 +203,132 @@ describe("many relation tests", async () => { expect(populatedUser?.posts?.[0]?.editor?.posts).toHaveLength(1); expect(populatedUser?.books?.[0]?.title).toBe("Book 1"); }); + + describe("field type combinations", () => { + const PostSchema = createSchema("posts", { + title: string(), + contents: string(), + tagIds: array(objectId()).default([]), + }); + + const TagSchema = createSchema("tags", { + name: string(), + primaryPostId: objectId().optional(), + postIds: array(objectId()).default([]), + }); + + it("single → single", async () => { + const schemas = defineSchemas({ PostSchema, TagSchema }); + const relations = schemas.withRelations((r) => ({ + posts: { + tags: r.many.tags({ from: r.posts._id, to: r.tags.primaryPostId }), + }, + })); + const db = createDatabase(client.db(), relations); + + const post1 = await db.collections.posts.insertOne({ title: "Post 1", contents: "Content 1" }); + const post2 = await db.collections.posts.insertOne({ title: "Post 2", contents: "Content 2" }); + + await db.collections.tags.insertOne({ name: "TypeScript", primaryPostId: post1._id }); + await db.collections.tags.insertOne({ name: "MongoDB", primaryPostId: post1._id }); + await db.collections.tags.insertOne({ name: "Unrelated" }); + + const populatedPost1 = await db.collections.posts.findById(post1._id).populate({ tags: true }); + expect(populatedPost1?.tags).toHaveLength(2); + expect(populatedPost1?.tags.map((t) => t.name)).toEqual(expect.arrayContaining(["TypeScript", "MongoDB"])); + + const populatedPost2 = await db.collections.posts.findById(post2._id).populate({ tags: true }); + expect(populatedPost2?.tags).toHaveLength(0); + }); + + it("single → array", async () => { + const schemas = defineSchemas({ PostSchema, TagSchema }); + const relations = schemas.withRelations((r) => ({ + posts: { + tags: r.many.tags({ from: r.posts._id, to: r.tags.postIds }), + }, + })); + const db = createDatabase(client.db(), relations); + + const post1 = await db.collections.posts.insertOne({ title: "Post 1", contents: "Content 1" }); + const post2 = await db.collections.posts.insertOne({ title: "Post 2", contents: "Content 2" }); + const post3 = await db.collections.posts.insertOne({ title: "Post 3", contents: "Content 3" }); + + await db.collections.tags.insertOne({ name: "TypeScript", postIds: [post1._id, post2._id] }); + await db.collections.tags.insertOne({ name: "MongoDB", postIds: [post2._id, post3._id] }); + await db.collections.tags.insertOne({ name: "Unrelated", postIds: [] }); + + const populatedPost1 = await db.collections.posts.findById(post1._id).populate({ tags: true }); + expect(populatedPost1?.tags).toHaveLength(1); + expect(populatedPost1?.tags[0].name).toBe("TypeScript"); + + const populatedPost2 = await db.collections.posts.findById(post2._id).populate({ tags: true }); + expect(populatedPost2?.tags).toHaveLength(2); + expect(populatedPost2?.tags.map((t) => t.name)).toEqual(expect.arrayContaining(["TypeScript", "MongoDB"])); + + const populatedPost3 = await db.collections.posts.findById(post3._id).populate({ tags: true }); + expect(populatedPost3?.tags).toHaveLength(1); + expect(populatedPost3?.tags[0].name).toBe("MongoDB"); + }); + + it("array → single", async () => { + const schemas = defineSchemas({ PostSchema, TagSchema }); + const relations = schemas.withRelations((r) => ({ + tags: { + posts: r.many.posts({ from: r.tags.postIds, to: r.posts._id }), + }, + })); + const db = createDatabase(client.db(), relations); + + const post1 = await db.collections.posts.insertOne({ title: "Post 1", contents: "Content 1" }); + const post2 = await db.collections.posts.insertOne({ title: "Post 2", contents: "Content 2" }); + const post3 = await db.collections.posts.insertOne({ title: "Post 3", contents: "Content 3" }); + + const tsTag = await db.collections.tags.insertOne({ name: "TypeScript", postIds: [post1._id, post2._id] }); + const mongoTag = await db.collections.tags.insertOne({ name: "MongoDB", postIds: [post2._id, post3._id] }); + const emptyTag = await db.collections.tags.insertOne({ name: "Unrelated", postIds: [] }); + + const populatedTsTag = await db.collections.tags.findById(tsTag._id).populate({ posts: true }); + expect(populatedTsTag?.posts).toHaveLength(2); + expect(populatedTsTag?.posts.map((p) => p.title)).toEqual(expect.arrayContaining(["Post 1", "Post 2"])); + + const populatedMongoTag = await db.collections.tags.findById(mongoTag._id).populate({ posts: true }); + expect(populatedMongoTag?.posts).toHaveLength(2); + expect(populatedMongoTag?.posts.map((p) => p.title)).toEqual(expect.arrayContaining(["Post 2", "Post 3"])); + + const populatedEmptyTag = await db.collections.tags.findById(emptyTag._id).populate({ posts: true }); + expect(populatedEmptyTag?.posts).toHaveLength(0); + }); + + it("array → array", async () => { + // Find events that share at least one tag with a post. + const EventSchema = createSchema("events", { + name: string(), + tagIds: array(objectId()).default([]), + }); + + const schemas = defineSchemas({ PostSchema, EventSchema }); + const relations = schemas.withRelations((r) => ({ + posts: { + relatedEvents: r.many.events({ from: r.posts.tagIds, to: r.events.tagIds }), + }, + })); + const db = createDatabase(client.db(), relations); + + const { ObjectId } = await import("mongodb"); + const tag1 = new ObjectId(); + const tag2 = new ObjectId(); + const tag3 = new ObjectId(); + + const post = await db.collections.posts.insertOne({ title: "Post", contents: "...", tagIds: [tag1, tag2] }); + + await db.collections.events.insertOne({ name: "Event A", tagIds: [tag1, tag3] }); // shares tag1 + await db.collections.events.insertOne({ name: "Event B", tagIds: [tag2] }); // shares tag2 + await db.collections.events.insertOne({ name: "Event C", tagIds: [tag3] }); // shares nothing + + const populated = await db.collections.posts.findById(post._id).populate({ relatedEvents: true }); + expect(populated?.relatedEvents).toHaveLength(2); + expect(populated?.relatedEvents.map((e) => e.name)).toEqual(expect.arrayContaining(["Event A", "Event B"])); + }); + }); }); diff --git a/tests/relations/one.test.ts b/tests/relations/one.test.ts index ac50730..6b450e2 100644 --- a/tests/relations/one.test.ts +++ b/tests/relations/one.test.ts @@ -1,6 +1,6 @@ import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"; import { createDatabase, createSchema, defineSchemas } from "../../src"; -import { array, boolean, date, objectId, string } from "../../src/types"; +import { array, boolean, date, number, objectId, string, union } from "../../src/types"; import { createMockDatabase } from "../mock"; describe("one relation tests", async () => { @@ -21,6 +21,7 @@ describe("one relation tests", async () => { const setupSchemasAndCollections = () => { const UserSchema = createSchema("users", { + uid: union(objectId().optional(), number()), name: string(), isAdmin: boolean(), createdAt: date(), @@ -36,20 +37,20 @@ describe("one relation tests", async () => { }); const schemas = defineSchemas({ UserSchema, PostSchema }); - const relations = schemas.withRelations((s) => ({ + const relations = schemas.withRelations((r) => ({ users: { - tutor: s.users.$one.users({ from: "tutor", to: "_id" }), + tutor: r.one.users({ from: r.users.tutor, to: r.users._id }), }, posts: { - author: s.posts.$one.users({ from: "author", to: "_id" }), - editor: s.posts.$one.users({ from: "editor", to: "_id" }), - contributors: s.posts.$refs.users({ from: "contributors", to: "_id" }), + author: r.one.users({ from: r.posts.author, to: r.users._id }), + editor: r.one.users({ from: r.posts.editor, to: r.users._id }), + contributors: r.many.users({ from: r.posts.contributors, to: r.users._id }), }, })); return createDatabase(client.db(), relations); }; - it("should populate one relation (tutor)", async () => { + it("should populate a self-referencing one relation", async () => { const { collections } = setupSchemasAndCollections(); const user = await collections.users.insertOne({ @@ -71,7 +72,7 @@ describe("one relation tests", async () => { }); }); - it("should populate one relation (author)", async () => { + it("should populate a one relation across collections", async () => { const { collections } = setupSchemasAndCollections(); const user = await collections.users.insertOne({ @@ -108,13 +109,13 @@ describe("one relation tests", async () => { }); const schemas = defineSchemas({ UserSchemaWithRefs, PostSchemaWithRefs }); - const relations = schemas.withRelations((s) => ({ + const relations = schemas.withRelations((r) => ({ users: { - tutor: s.users.$one.users({ from: "tutor", to: "_id" }), - posts: s.users.$many.posts({ from: "_id", to: "author" }), + tutor: r.one.users({ from: r.users.tutor, to: r.users._id }), + posts: r.many.posts({ from: r.users._id, to: r.posts.author }), }, posts: { - author: s.posts.$one.users({ from: "author", to: "_id" }), + author: r.one.users({ from: r.posts.author, to: r.users._id }), }, })); const db = createDatabase(client.db(), relations); diff --git a/tests/relations/population-options.test.ts b/tests/relations/population-options.test.ts index 2e62357..cc98ce2 100644 --- a/tests/relations/population-options.test.ts +++ b/tests/relations/population-options.test.ts @@ -40,13 +40,13 @@ describe("Population Options", async () => { }); const schemas = defineSchemas({ UserSchema, PostSchema }); - const relations = schemas.withRelations((s) => ({ + const relations = schemas.withRelations((r) => ({ users: { - posts: s.users.$many.posts({ from: "_id", to: "author" }), + posts: r.many.posts({ from: r.users._id, to: r.posts.author }), }, posts: { - author: s.posts.$one.users({ from: "author", to: "_id" }), - contributors: s.posts.$refs.users({ from: "contributors", to: "_id" }), + author: r.one.users({ from: r.posts.author, to: r.users._id }), + contributors: r.many.users({ from: r.posts.contributors, to: r.users._id }), }, })); return createDatabase(client.db(), relations); @@ -76,6 +76,7 @@ describe("Population Options", async () => { expect(populatedUser.length).toBe(1); expect(populatedUser[0].posts.length).toBe(1); expect(populatedUser[0].posts[0].title).toBe("Post 1"); + expect(populatedUser[0].posts[0].contents).toBe("Content 1"); }); it("should populate with default omit option", async () => { @@ -97,7 +98,7 @@ describe("Population Options", async () => { }); expect(populatedUser.length).toBe(1); expect(populatedUser[0].posts.length).toBe(1); - expect(populatedUser[0].posts[0]).toHaveProperty("contents"); + expect(populatedUser[0].posts[0].contents).toBe("Content 3"); expect(populatedUser[0].posts[0]).not.toHaveProperty("secret"); }); @@ -122,6 +123,7 @@ describe("Population Options", async () => { }); expect(populatedUser.length).toBe(1); expect(populatedUser[0].posts.length).toBe(1); + expect(populatedUser[0].posts[0].contents).toBe("Content 3"); expect(populatedUser[0].posts[0]).toHaveProperty("secret"); expect(populatedUser[0].posts[0]).not.toHaveProperty("title"); }); @@ -147,7 +149,7 @@ describe("Population Options", async () => { }); expect(populatedUser.length).toBe(1); expect(populatedUser[0].posts.length).toBe(1); - expect(populatedUser[0].posts[0]).toHaveProperty("title"); + expect(populatedUser[0].posts[0].title).toBe("Post 3"); expect(populatedUser[0].posts[0]).not.toHaveProperty("contents"); expect(populatedUser[0].posts[0]).not.toHaveProperty("secret"); }); @@ -179,7 +181,258 @@ describe("Population Options", async () => { }); expect(populatedUser.length).toBe(1); expect(populatedUser[0].posts.length).toBe(2); - expect(populatedUser[0].posts[0]).toHaveProperty("title", "Post 7"); - expect(populatedUser[0].posts[1]).toHaveProperty("title", "Post 6"); + expect(populatedUser[0].posts[0].title).toBe("Post 7"); + expect(populatedUser[0].posts[0].contents).toBe("Content 7"); + expect(populatedUser[0].posts[1].title).toBe("Post 6"); + expect(populatedUser[0].posts[1].contents).toBe("Content 6"); + }); + + describe("default relation options", () => { + const UserSchema = createSchema("users", { + name: string(), + isAdmin: boolean(), + createdAt: date(), + }); + + const PostSchema = createSchema("posts", { + title: string(), + contents: string(), + author: objectId().optional(), + contributors: array(objectId()).optional().default([]), + }); + + describe("one", () => { + it("should apply default select when populating with true", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const relations = schemas.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.author }), + }, + posts: { + author: r.one.users({ from: r.posts.author, to: r.users._id }).options({ select: { name: true } }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user = await collections.users.insertOne({ name: "Alice", isAdmin: true, createdAt: new Date() }); + await collections.posts.insertOne({ title: "Hello", contents: "World", author: user._id }); + + const populatedPost = await collections.posts.findOne({ title: "Hello" }).populate({ author: true }); + expect(populatedPost?.author?.name).toBe("Alice"); + expect(populatedPost?.author).not.toHaveProperty("isAdmin"); + expect(populatedPost?.author).not.toHaveProperty("createdAt"); + }); + + it("should apply default omit when populating with true", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const relations = schemas.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.author }), + }, + posts: { + author: r.one.users({ from: r.posts.author, to: r.users._id }).options({ omit: { isAdmin: true } }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user = await collections.users.insertOne({ name: "Alice", isAdmin: true, createdAt: new Date() }); + await collections.posts.insertOne({ title: "Hello", contents: "World", author: user._id }); + + const populatedPost = await collections.posts.findOne({ title: "Hello" }).populate({ author: true }); + expect(populatedPost?.author?.name).toBe("Alice"); + expect(populatedPost?.author).not.toHaveProperty("isAdmin"); + expect(populatedPost?.author?.createdAt).toBeDefined(); + }); + }); + + describe("many", () => { + it("should apply default select when populating with true", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const relations = schemas.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.author }).options({ select: { title: true } }), + }, + posts: { + author: r.one.users({ from: r.posts.author, to: r.users._id }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user = await collections.users.insertOne({ name: "Bob", isAdmin: false, createdAt: new Date() }); + await collections.posts.insertOne({ title: "My Post", contents: "Secret content", author: user._id }); + + const populatedUser = await collections.users.findById(user._id).populate({ posts: true }); + expect(populatedUser?.posts).toHaveLength(1); + expect(populatedUser?.posts[0].title).toBe("My Post"); + expect(populatedUser?.posts[0]).not.toHaveProperty("contents"); + expect(populatedUser?.posts[0]).not.toHaveProperty("author"); + }); + + it("should apply default omit when populating with true", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const relations = schemas.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.author }).options({ omit: { contents: true } }), + }, + posts: { + author: r.one.users({ from: r.posts.author, to: r.users._id }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user = await collections.users.insertOne({ name: "Bob", isAdmin: false, createdAt: new Date() }); + await collections.posts.insertOne({ title: "My Post", contents: "Secret content", author: user._id }); + + const populatedUser = await collections.users.findById(user._id).populate({ posts: true }); + expect(populatedUser?.posts).toHaveLength(1); + expect(populatedUser?.posts[0].title).toBe("My Post"); + expect(populatedUser?.posts[0]).not.toHaveProperty("contents"); + expect(populatedUser?.posts[0].author).toStrictEqual(user._id); + }); + + it("should apply default sort and limit when populating with true", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const relations = schemas.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.author }).options({ sort: { title: -1 }, limit: 2 }), + }, + posts: { + author: r.one.users({ from: r.posts.author, to: r.users._id }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user = await collections.users.insertOne({ name: "Bob", isAdmin: false, createdAt: new Date() }); + await collections.posts.insertOne({ title: "Post A", contents: "...", author: user._id }); + await collections.posts.insertOne({ title: "Post B", contents: "...", author: user._id }); + await collections.posts.insertOne({ title: "Post C", contents: "...", author: user._id }); + + const populatedUser = await collections.users.findById(user._id).populate({ posts: true }); + expect(populatedUser?.posts).toHaveLength(2); + expect(populatedUser?.posts[0].title).toBe("Post C"); + expect(populatedUser?.posts[0].contents).toBe("..."); + expect(populatedUser?.posts[1].title).toBe("Post B"); + expect(populatedUser?.posts[1].contents).toBe("..."); + }); + }); + + describe("many (array → single)", () => { + it("should apply default select when populating with true", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const relations = schemas.withRelations((r) => ({ + posts: { + contributors: r.many + .users({ from: r.posts.contributors, to: r.users._id }) + .options({ select: { name: true } }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user1 = await collections.users.insertOne({ name: "Bob", isAdmin: false, createdAt: new Date() }); + const user2 = await collections.users.insertOne({ name: "Alice", isAdmin: true, createdAt: new Date() }); + await collections.posts.insertOne({ title: "Collab", contents: "...", contributors: [user1._id, user2._id] }); + + const populatedPost = await collections.posts.findOne({ title: "Collab" }).populate({ contributors: true }); + expect(populatedPost?.contributors).toHaveLength(2); + expect(populatedPost?.contributors[0].name).toBe("Bob"); + expect(populatedPost?.contributors[0]).not.toHaveProperty("isAdmin"); + expect(populatedPost?.contributors[0]).not.toHaveProperty("createdAt"); + expect(populatedPost?.contributors[1].name).toBe("Alice"); + expect(populatedPost?.contributors[1]).not.toHaveProperty("isAdmin"); + expect(populatedPost?.contributors[1]).not.toHaveProperty("createdAt"); + }); + + it("should apply default sort and limit when populating with true", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const relations = schemas.withRelations((r) => ({ + posts: { + contributors: r.many + .users({ from: r.posts.contributors, to: r.users._id }) + .options({ sort: { name: 1 }, limit: 2 }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user1 = await collections.users.insertOne({ name: "Charlie", isAdmin: false, createdAt: new Date() }); + const user2 = await collections.users.insertOne({ name: "Alice", isAdmin: false, createdAt: new Date() }); + const user3 = await collections.users.insertOne({ name: "Bob", isAdmin: false, createdAt: new Date() }); + await collections.posts.insertOne({ + title: "Collab", + contents: "...", + contributors: [user1._id, user2._id, user3._id], + }); + + const populatedPost = await collections.posts.findOne({ title: "Collab" }).populate({ contributors: true }); + expect(populatedPost?.contributors).toHaveLength(2); + expect(populatedPost?.contributors[0].name).toBe("Alice"); + expect(populatedPost?.contributors[0].isAdmin).toBe(false); + expect(populatedPost?.contributors[1].name).toBe("Bob"); + expect(populatedPost?.contributors[1].isAdmin).toBe(false); + }); + }); + + describe("default nested populate", () => { + it("should populate nested relations defined across multiple withRelations calls", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const baseRelations = schemas.withRelations((r) => ({ + posts: { + author: r.one.users({ from: r.posts.author, to: r.users._id }), + }, + })); + const relations = baseRelations.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.author }).options({ + populate: { author: true }, + }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user = await collections.users.insertOne({ name: "Bob", isAdmin: false, createdAt: new Date() }); + await collections.posts.insertOne({ title: "Post 1", contents: "Content 1", author: user._id }); + await collections.posts.insertOne({ title: "Post 2", contents: "Content 2", author: user._id }); + + const populatedUser = await collections.users.findById(user._id).populate({ posts: true }); + expect(populatedUser?.posts).toHaveLength(2); + expect(populatedUser?.posts[0].title).toBe("Post 1"); + expect(populatedUser?.posts[0].contents).toBe("Content 1"); + expect(populatedUser?.posts[0].author?.name).toBe("Bob"); + expect(populatedUser?.posts[1].title).toBe("Post 2"); + expect(populatedUser?.posts[1].contents).toBe("Content 2"); + expect(populatedUser?.posts[1].author?.name).toBe("Bob"); + }); + + it("should allow inline populate options to override the nested default", async () => { + const schemas = defineSchemas({ UserSchema, PostSchema }); + const baseRelations = schemas.withRelations((r) => ({ + posts: { + author: r.one.users({ from: r.posts.author, to: r.users._id }), + }, + })); + const relations = baseRelations.withRelations((r) => ({ + users: { + posts: r.many.posts({ from: r.users._id, to: r.posts.author }).options({ + populate: { author: true }, + }), + }, + })); + const { collections } = createDatabase(client.db(), relations); + + const user = await collections.users.insertOne({ name: "Bob", isAdmin: false, createdAt: new Date() }); + await collections.posts.insertOne({ title: "Post 1", contents: "Content 1", author: user._id }); + await collections.posts.insertOne({ title: "Post 2", contents: "Content 2", author: user._id }); + + const populatedUser = await collections.users.findById(user._id).populate({ + posts: {}, + }); + expect(populatedUser?.posts).toHaveLength(2); + expect(populatedUser?.posts[0].title).toBe("Post 1"); + expect(populatedUser?.posts[0].contents).toBe("Content 1"); + expect(populatedUser?.posts[0].author).toStrictEqual(user._id); + expect(populatedUser?.posts[1].title).toBe("Post 2"); + expect(populatedUser?.posts[1].contents).toBe("Content 2"); + expect(populatedUser?.posts[1].author).toStrictEqual(user._id); + }); + }); }); }); diff --git a/tests/relations/refs.test.ts b/tests/relations/refs.test.ts deleted file mode 100644 index 9657df9..0000000 --- a/tests/relations/refs.test.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"; -import { createDatabase, createSchema, defineSchemas, virtual } from "../../src"; -import { array, boolean, date, objectId, string } from "../../src/types"; -import { createMockDatabase } from "../mock"; - -describe("refs relation tests", async () => { - const { server, client } = await createMockDatabase(); - - beforeAll(async () => { - await client.connect(); - }); - - afterEach(async () => { - await client.db().dropDatabase(); - }); - - afterAll(async () => { - await client.close(); - await server.stop(); - }); - - const setupSchemasAndCollections = () => { - const UserSchema = createSchema("users", { - name: string(), - isAdmin: boolean(), - createdAt: date(), - }); - - const PostSchema = createSchema("posts", { - title: string(), - contents: string(), - author: objectId().optional(), - contributors: array(objectId()).optional().default([]), - secret: string().default(() => "secret"), - }) - .omit({ secret: true }) - .virtuals({ - contributorsCount: virtual("contributors", ({ contributors }) => contributors?.length ?? 0), - secretSize: virtual("secret", ({ secret }) => secret?.length), - }); - - const schemas = defineSchemas({ UserSchema, PostSchema }); - const relations = schemas.withRelations((s) => ({ - posts: { - author: s.posts.$one.users({ from: "author", to: "_id" }), - contributors: s.posts.$refs.users({ from: "contributors", to: "_id" }), - }, - })); - return createDatabase(client.db(), relations); - }; - - it("should populate refs relation (contributors)", async () => { - const { collections } = setupSchemasAndCollections(); - - const user = await collections.users.insertOne({ - name: "Bob", - isAdmin: false, - createdAt: new Date(), - }); - const user2 = await collections.users.insertOne({ - name: "Alex", - isAdmin: false, - createdAt: new Date(), - }); - await collections.posts.insertOne({ - title: "Pilot", - contents: "Lorem", - author: user._id, - contributors: [user2._id], - }); - - const populatedPost = await collections.posts - .findOne({ - title: "Pilot", - }) - .populate({ contributors: true }); - expect(populatedPost?.contributors).toBeDefined(); - expect(populatedPost?.contributors).toHaveLength(1); - expect(populatedPost?.contributors[0]).toStrictEqual(user2); - }); - - it("should populate refs relation with multiple contributors", async () => { - const { collections } = setupSchemasAndCollections(); - - const user1 = await collections.users.insertOne({ - name: "Bob", - isAdmin: false, - createdAt: new Date(), - }); - const user2 = await collections.users.insertOne({ - name: "Alex", - isAdmin: false, - createdAt: new Date(), - }); - const user3 = await collections.users.insertOne({ - name: "Charlie", - isAdmin: false, - createdAt: new Date(), - }); - await collections.posts.insertOne({ - title: "Multi Author Post", - contents: "Content", - author: user1._id, - contributors: [user2._id, user3._id], - }); - - const populatedPost = await collections.posts - .findOne({ - title: "Multi Author Post", - }) - .populate({ contributors: true, author: true }); - expect(populatedPost?.author).toStrictEqual(user1); - expect(populatedPost?.contributors).toBeDefined(); - expect(populatedPost?.contributors).toHaveLength(2); - expect(populatedPost?.contributors[0]).toStrictEqual(user2); - expect(populatedPost?.contributors[1]).toStrictEqual(user3); - }); - - it("should access original refs field in virtuals", async () => { - const { collections } = setupSchemasAndCollections(); - - const user1 = await collections.users.insertOne({ - name: "Test User 1", - isAdmin: false, - createdAt: new Date(), - }); - const user2 = await collections.users.insertOne({ - name: "Test User 2", - isAdmin: false, - createdAt: new Date(), - }); - await collections.posts.insertOne({ - title: "Post 6", - contents: "Content 6", - contributors: [user1._id, user2._id], - secret: "12345", - }); - - const populatedPost = await collections.posts.find().populate({ - contributors: { - select: { name: true }, - }, - }); - expect(populatedPost.length).toBe(1); - expect(populatedPost[0].contributorsCount).toBe(2); - expect(populatedPost[0].contributors.length).toBe(2); - expect(populatedPost[0].contributors[0]).toStrictEqual({ - _id: user1._id, - name: user1.name, - }); - expect(populatedPost[0].contributors[1]).toStrictEqual({ - _id: user2._id, - name: user2.name, - }); - expect(populatedPost[0].secretSize).toBe(5); - expect(populatedPost[0]).not.toHaveProperty("secret"); - }); -}); diff --git a/tsconfig.json b/tsconfig.json index 4b45fe5..00662a7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,13 +3,17 @@ "target": "es2020", "module": "es2020", "moduleResolution": "bundler", - "outDir": "./dist", - "noEmit": true, + "types": ["node"], + "rootDir": "./src", + "declaration": true, + "declarationDir": "./dist", + "emitDeclarationOnly": true, "strict": true, "skipLibCheck": true, "noImplicitAny": true, "noUncheckedIndexedAccess": true, "verbatimModuleSyntax": true, + "useDefineForClassFields": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true }, diff --git a/tsdown.config.mts b/tsdown.config.mts index 82e58cd..7813061 100644 --- a/tsdown.config.mts +++ b/tsdown.config.mts @@ -3,6 +3,7 @@ import { defineConfig } from "tsdown"; export default defineConfig({ entry: ["src/index.ts", "src/types/index.ts", "src/operators/index.ts"], format: ["cjs", "esm"], - dts: true, + dts: false, clean: true, + unbundle: true, });