From 0ad9572a5d122e54e24c0b7a3ef465e54edd124c Mon Sep 17 00:00:00 2001 From: Antony Rizzitelli Date: Fri, 13 Nov 2026 10:43:49 +0000 Subject: [PATCH 1/3] fix(metadata): build DataAPIMeta from a DecoratorTarget for interface-core 0.5 --- README.md | 2 +- package.json | 2 +- pnpm-lock.yaml | 46 +++++++++++++++++-------- src/metadata.ts | 14 +++++--- src/tests/index/metadata_target.test.ts | 23 +++++++++++++ 5 files changed, 66 insertions(+), 21 deletions(-) create mode 100644 src/tests/index/metadata_target.test.ts diff --git a/README.md b/README.md index 6fdb519..157a3a0 100644 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ The package declares these `@antelopejs/*` peer dependencies. | ------------------------------------------- | ----------------- | ----------- | | `@antelopejs/interface-api` | `>=0.3.0 <1.0.0` | `0.2.0` | | `@antelopejs/interface-api-util` | `>=0.1.3 <1.0.0` | `0.3.0` | -| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.4.0` | +| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.5.0` | | `@antelopejs/interface-database` | `>=0.1.10 <1.0.0` | `0.3.0` | | `@antelopejs/interface-database-decorators` | `>=0.1.10 <1.0.0` | `0.2.0` | diff --git a/package.json b/package.json index 4d5819c..104b5bb 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "@antelopejs/core": "~1.21.0", "@antelopejs/interface-api": ">=0.2.0 <1.0.0", "@antelopejs/interface-api-util": "^0.3.0", - "@antelopejs/interface-core": "^0.4.0", + "@antelopejs/interface-core": "^0.5.0", "@antelopejs/interface-database": "^0.3.0", "@antelopejs/interface-database-decorators": "^0.2.0", "@antelopejs/tooling-configs": "^0.5.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c748e0..bcf3ad1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,19 +16,19 @@ importers: version: 1.21.0 '@antelopejs/interface-api': specifier: '>=0.2.0 <1.0.0' - version: 0.2.0(@antelopejs/interface-core@0.4.0) + version: 0.2.0(@antelopejs/interface-core@0.5.0) '@antelopejs/interface-api-util': specifier: ^0.3.0 - version: 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.4.0))(@antelopejs/interface-core@0.4.0) + version: 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0) '@antelopejs/interface-core': - specifier: ^0.4.0 - version: 0.4.0 + specifier: ^0.5.0 + version: 0.5.0 '@antelopejs/interface-database': specifier: ^0.3.0 - version: 0.3.0(@antelopejs/interface-core@0.4.0) + version: 0.3.0(@antelopejs/interface-core@0.5.0) '@antelopejs/interface-database-decorators': specifier: ^0.2.0 - version: 0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.4.0))(@antelopejs/interface-core@0.4.0)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.4.0)) + version: 0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.0)) '@antelopejs/tooling-configs': specifier: ^0.5.5 version: 0.5.5(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001)) @@ -113,6 +113,9 @@ packages: '@antelopejs/interface-core@0.4.0': resolution: {integrity: sha512-IPX6dtt3KHknclN4mLOYeRYL2Odz1Pts+dtaZul62NghsBUX/0OFHD4Qhoaf+Beva4hjInbaF918ajr4Z5HVWQ==} + '@antelopejs/interface-core@0.5.0': + resolution: {integrity: sha512-G2bSkc+FBoYGB34Oh0NhFQwqOBtsBd1Psw6MPx2O3wHny1VLMXgTnbcV8ghhPcHh2Eb+HK8lhQEOjOklVtIM+w==} + '@antelopejs/interface-database-decorators@0.2.0': resolution: {integrity: sha512-+lMsG19Kq52hDSiSe+FRMB9weAd3A2IO+9yVrxcQpX9OZRUg/14wIwPeYFIb8ylLS7W39CT0yH9kb7ADPENwBw==} peerDependencies: @@ -2793,7 +2796,7 @@ snapshots: '@antelopejs/api@1.7.0(@antelopejs/core@1.21.0)': dependencies: '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.4.0) - '@antelopejs/interface-api-util': 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.4.0))(@antelopejs/interface-core@0.4.0) + '@antelopejs/interface-api-util': 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.4.0) '@antelopejs/interface-core': 0.4.0 reflect-metadata: 0.2.2 ws: 8.22.1 @@ -2818,30 +2821,43 @@ snapshots: semver: 7.7.4 typescript: 5.9.3 - '@antelopejs/interface-api-util@0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.4.0))(@antelopejs/interface-core@0.4.0)': + '@antelopejs/interface-api-util@0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.4.0)': dependencies: - '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.4.0) + '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.0) '@antelopejs/interface-core': 0.4.0 + '@antelopejs/interface-api-util@0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0)': + dependencies: + '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.0) + '@antelopejs/interface-core': 0.5.0 + '@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.4.0)': dependencies: '@antelopejs/interface-core': 0.4.0 + '@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0)': + dependencies: + '@antelopejs/interface-core': 0.5.0 + '@antelopejs/interface-core@0.4.0': dependencies: reflect-metadata: 0.2.2 - '@antelopejs/interface-database-decorators@0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.4.0))(@antelopejs/interface-core@0.4.0)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.4.0))': + '@antelopejs/interface-core@0.5.0': dependencies: - '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.4.0) - '@antelopejs/interface-core': 0.4.0 - '@antelopejs/interface-database': 0.3.0(@antelopejs/interface-core@0.4.0) + reflect-metadata: 0.2.2 + + '@antelopejs/interface-database-decorators@0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.0))': + dependencies: + '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.0) + '@antelopejs/interface-core': 0.5.0 + '@antelopejs/interface-database': 0.3.0(@antelopejs/interface-core@0.5.0) randomstring: 1.3.1 reflect-metadata: 0.2.2 - '@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.4.0)': + '@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.0)': dependencies: - '@antelopejs/interface-core': 0.4.0 + '@antelopejs/interface-core': 0.5.0 '@antelopejs/tooling-configs@0.5.5(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001))': dependencies: diff --git a/src/metadata.ts b/src/metadata.ts index f789282..9305268 100644 --- a/src/metadata.ts +++ b/src/metadata.ts @@ -140,11 +140,17 @@ export class DataAPIMeta { public readonly endpoints: Record = {}; - /** The controller class. */ - public readonly target: Class; + readonly #target: Class | undefined; - constructor(target: Class) { - this.target = target; + /** @param target The controller class, or a prototype above it. */ + constructor(target: DecoratorTarget) { + this.#target = isClass(target) ? target : undefined; + } + + /** The controller class; throws for a prototype above it. */ + public get target(): Class { + if (!this.#target) throw new TypeError("No controller class."); + return this.#target; } public inherit(parent: DataAPIMeta) { diff --git a/src/tests/index/metadata_target.test.ts b/src/tests/index/metadata_target.test.ts new file mode 100644 index 0000000..4e1c821 --- /dev/null +++ b/src/tests/index/metadata_target.test.ts @@ -0,0 +1,23 @@ +import { expect } from "chai"; +import { GetMetadata } from "@antelopejs/interface-core"; + +import { DataAPIMeta } from "../../metadata"; + +class Base {} +class Child extends Base {} + +describe("DataAPIMeta - target", () => { + it("answers the controller class GetMetadata builds it for, through the prototype walk", () => { + expect([ + GetMetadata(Child, DataAPIMeta).target, + GetMetadata(Base, DataAPIMeta).target, + ]).to.eql([Child, Base]); + }); + + it("refuses to answer a target for a prototype above the controller classes", () => { + expect(() => new DataAPIMeta(Object.prototype).target).to.throw( + TypeError, + "No controller class.", + ); + }); +}); From 82ee7092a22b8fb13e7d254964832b4008be9ead Mon Sep 17 00:00:00 2001 From: Antony Rizzitelli Date: Fri, 13 Nov 2026 10:49:29 +0000 Subject: [PATCH 2/3] refactor(metadata): rebuild the access lists in an internal module --- src/internal/access-lists.ts | 60 ++++++++++++++++++++++++++++++++++++ src/metadata.ts | 57 ++++++++-------------------------- 2 files changed, 73 insertions(+), 44 deletions(-) create mode 100644 src/internal/access-lists.ts diff --git a/src/internal/access-lists.ts b/src/internal/access-lists.ts new file mode 100644 index 0000000..74425cc --- /dev/null +++ b/src/internal/access-lists.ts @@ -0,0 +1,60 @@ +/** @internal @packageDocumentation */ + +import type { + FieldData, + ReadableAccessFields, + WritableAccessFields, +} from "./field-types"; + +/** The action whose access is a field's own `mode`, overrides aside. */ +export const DEFAULT_ACTION = "_default"; + +/** Whether a field is read, and whether it is written, in one action. */ +type FieldAccess = (field: FieldData, action: string) => [boolean, boolean]; + +/** + * Rebuilds `readable` and `writable` from `fields`: one entry per action a + * field overrides, plus `_default`, each listing the fields `access` lets the + * action read or write, accessors apart from plain properties. + */ +export function rebuildAccess( + readable: Record, + writable: Record, + fields: Record, + access: FieldAccess, +) { + for (const key of Object.keys(readable)) { + delete readable[key]; + } + for (const key of Object.keys(writable)) { + delete writable[key]; + } + + const actions = new Set([ + DEFAULT_ACTION, + ...Object.values(fields).flatMap((field) => + Object.keys(field.modeOverrides ?? {}), + ), + ]); + + const lists = new Map(); + for (const action of actions) { + const read: ReadableAccessFields = { getters: [], props: [] }; + const write: WritableAccessFields = { setters: [], props: [] }; + readable[action] = read; + writable[action] = write; + lists.set(action, [read, write]); + } + + for (const [key, field] of Object.entries(fields)) { + for (const [action, [read, write]] of lists) { + const [reads, writes] = access(field, action); + if (reads) { + read[field.desc?.get ? "getters" : "props"].push([key, field]); + } + if (writes) { + write[field.desc?.set ? "setters" : "props"].push([key, field]); + } + } + } +} diff --git a/src/metadata.ts b/src/metadata.ts index 9305268..9439c33 100644 --- a/src/metadata.ts +++ b/src/metadata.ts @@ -30,6 +30,7 @@ import type { ReadableAccessFields, WritableAccessFields, } from "./internal/field-types"; +import { DEFAULT_ACTION, rebuildAccess } from "./internal/access-lists"; import { listedNames, merge, @@ -81,9 +82,6 @@ export enum AccessMode { ReadWrite = 3, } -/** The action whose access is a field's own `mode`, overrides aside. */ -const DEFAULT_ACTION = "_default"; - /** * The access a field has in one data API action (`get`, `list`, `new`, * `edit`…): its {@link FieldData.modeOverrides} entry for that action, else @@ -185,47 +183,18 @@ export class DataAPIMeta { } private recomputeAccess() { - for (const key of Object.keys(this.readable)) { - delete this.readable[key]; - } - for (const key of Object.keys(this.writable)) { - delete this.writable[key]; - } - - const actions = new Set([ - DEFAULT_ACTION, - ...Object.values(this.fields).flatMap((field) => - Object.keys(field.modeOverrides ?? {}), - ), - ]); - - const access = new Map< - string, - [ReadableAccessFields, WritableAccessFields] - >(); - for (const action of actions) { - const readable: ReadableAccessFields = { getters: [], props: [] }; - const writable: WritableAccessFields = { setters: [], props: [] }; - this.readable[action] = readable; - this.writable[action] = writable; - access.set(action, [readable, writable]); - } - - for (const [key, field] of Object.entries(this.fields)) { - for (const [action, [readable, writable]] of access) { - const effectiveMode = GetEffectiveMode(field, action); - if (!effectiveMode) { - continue; - } - - if (effectiveMode & AccessMode.ReadOnly) { - readable[field.desc?.get ? "getters" : "props"].push([key, field]); - } - if (effectiveMode & AccessMode.WriteOnly) { - writable[field.desc?.set ? "setters" : "props"].push([key, field]); - } - } - } + rebuildAccess( + this.readable, + this.writable, + this.fields, + (field, action) => { + const mode = GetEffectiveMode(field, action) ?? 0; + return [ + (mode & AccessMode.ReadOnly) !== 0, + (mode & AccessMode.WriteOnly) !== 0, + ]; + }, + ); } /** From eb83d805a2488b8f4c2ca55e9c119f9ec644a41f Mon Sep 17 00:00:00 2001 From: Antony Rizzitelli Date: Fri, 13 Nov 2026 11:16:43 +0000 Subject: [PATCH 3/3] build(deps): bump @antelopejs/core to 1.22 and interface-core to 0.5.1 --- README.md | 2 +- package.json | 4 +- pnpm-lock.yaml | 146 +++++++++++++++---------------------------------- 3 files changed, 46 insertions(+), 106 deletions(-) diff --git a/README.md b/README.md index 157a3a0..a126569 100644 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ The package declares these `@antelopejs/*` peer dependencies. | ------------------------------------------- | ----------------- | ----------- | | `@antelopejs/interface-api` | `>=0.3.0 <1.0.0` | `0.2.0` | | `@antelopejs/interface-api-util` | `>=0.1.3 <1.0.0` | `0.3.0` | -| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.5.0` | +| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.5.1` | | `@antelopejs/interface-database` | `>=0.1.10 <1.0.0` | `0.3.0` | | `@antelopejs/interface-database-decorators` | `>=0.1.10 <1.0.0` | `0.2.0` | diff --git a/package.json b/package.json index 104b5bb..7560f89 100644 --- a/package.json +++ b/package.json @@ -72,10 +72,10 @@ }, "devDependencies": { "@antelopejs/api": "^1.7.0", - "@antelopejs/core": "~1.21.0", + "@antelopejs/core": "~1.22.0", "@antelopejs/interface-api": ">=0.2.0 <1.0.0", "@antelopejs/interface-api-util": "^0.3.0", - "@antelopejs/interface-core": "^0.5.0", + "@antelopejs/interface-core": "^0.5.1", "@antelopejs/interface-database": "^0.3.0", "@antelopejs/interface-database-decorators": "^0.2.0", "@antelopejs/tooling-configs": "^0.5.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bcf3ad1..0948516 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,25 +10,25 @@ importers: devDependencies: '@antelopejs/api': specifier: ^1.7.0 - version: 1.7.0(@antelopejs/core@1.21.0) + version: 1.7.0(@antelopejs/core@1.22.0) '@antelopejs/core': - specifier: ~1.21.0 - version: 1.21.0 + specifier: ~1.22.0 + version: 1.22.0 '@antelopejs/interface-api': specifier: '>=0.2.0 <1.0.0' - version: 0.2.0(@antelopejs/interface-core@0.5.0) + version: 0.2.0(@antelopejs/interface-core@0.5.1) '@antelopejs/interface-api-util': specifier: ^0.3.0 - version: 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0) + version: 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.1))(@antelopejs/interface-core@0.5.1) '@antelopejs/interface-core': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.5.1 + version: 0.5.1 '@antelopejs/interface-database': specifier: ^0.3.0 - version: 0.3.0(@antelopejs/interface-core@0.5.0) + version: 0.3.0(@antelopejs/interface-core@0.5.1) '@antelopejs/interface-database-decorators': specifier: ^0.2.0 - version: 0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.0)) + version: 0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.1))(@antelopejs/interface-core@0.5.1)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.1)) '@antelopejs/tooling-configs': specifier: ^0.5.5 version: 0.5.5(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001)) @@ -94,8 +94,8 @@ packages: '@antelopejs/core': optional: true - '@antelopejs/core@1.21.0': - resolution: {integrity: sha512-0+qxASgc1sF8MihvGYfrAy6m3XTPcrFJeeIH69ivI0cvtYmj71cjzTeXdKghBZb4ndTMQ2IXeKbK6zxrG2w4Tw==} + '@antelopejs/core@1.22.0': + resolution: {integrity: sha512-Fsq2dGO6xZpypD9nrXxhy8WOMnZB8a9Oc+hysH+chG101GFnxUb49aFjc5LhkKOhcW/xQTOa2JBQMIOVLCB3IQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -110,11 +110,8 @@ packages: peerDependencies: '@antelopejs/interface-core': '>=0.4.0 <1.0.0' - '@antelopejs/interface-core@0.4.0': - resolution: {integrity: sha512-IPX6dtt3KHknclN4mLOYeRYL2Odz1Pts+dtaZul62NghsBUX/0OFHD4Qhoaf+Beva4hjInbaF918ajr4Z5HVWQ==} - - '@antelopejs/interface-core@0.5.0': - resolution: {integrity: sha512-G2bSkc+FBoYGB34Oh0NhFQwqOBtsBd1Psw6MPx2O3wHny1VLMXgTnbcV8ghhPcHh2Eb+HK8lhQEOjOklVtIM+w==} + '@antelopejs/interface-core@0.5.1': + resolution: {integrity: sha512-ON/7TYA1yyT8UznzKi6vnwyjRU3byNE0OcFXBmf8dE/dqp8hKjeWHVyA2EUPOngmEimCLw4idZqOS5DJqMJx3g==} '@antelopejs/interface-database-decorators@0.2.0': resolution: {integrity: sha512-+lMsG19Kq52hDSiSe+FRMB9weAd3A2IO+9yVrxcQpX9OZRUg/14wIwPeYFIb8ylLS7W39CT0yH9kb7ADPENwBw==} @@ -1183,10 +1180,6 @@ packages: resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} engines: {node: 20 || >=22} - brace-expansion@5.0.5: - resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} - engines: {node: 18 || 20 || >=22} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1379,9 +1372,6 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} @@ -1826,10 +1816,6 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} - hasBin: true - jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true @@ -1995,10 +1981,6 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} - engines: {node: 18 || 20 || >=22} - minimatch@10.2.6: resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} engines: {node: 18 || 20 || >=22} @@ -2304,10 +2286,6 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} - picomatch@4.0.7: resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} @@ -2751,11 +2729,6 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.9.0: - resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} - engines: {node: '>= 14.6'} - hasBin: true - yaml@2.9.1: resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} engines: {node: '>= 14.6'} @@ -2793,22 +2766,22 @@ packages: snapshots: - '@antelopejs/api@1.7.0(@antelopejs/core@1.21.0)': + '@antelopejs/api@1.7.0(@antelopejs/core@1.22.0)': dependencies: - '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.4.0) - '@antelopejs/interface-api-util': 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.4.0) - '@antelopejs/interface-core': 0.4.0 + '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.1) + '@antelopejs/interface-api-util': 0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.1))(@antelopejs/interface-core@0.5.1) + '@antelopejs/interface-core': 0.5.1 reflect-metadata: 0.2.2 ws: 8.22.1 optionalDependencies: - '@antelopejs/core': 1.21.0 + '@antelopejs/core': 1.22.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@antelopejs/core@1.21.0': + '@antelopejs/core@1.22.0': dependencies: - '@antelopejs/interface-core': 0.4.0 + '@antelopejs/interface-core': 0.5.1 '@clack/prompts': 1.8.1 '@types/proper-lockfile': 4.1.4 commander: 13.1.0 @@ -2821,43 +2794,30 @@ snapshots: semver: 7.7.4 typescript: 5.9.3 - '@antelopejs/interface-api-util@0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.4.0)': - dependencies: - '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.0) - '@antelopejs/interface-core': 0.4.0 - - '@antelopejs/interface-api-util@0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0)': - dependencies: - '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.0) - '@antelopejs/interface-core': 0.5.0 - - '@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.4.0)': + '@antelopejs/interface-api-util@0.3.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.1))(@antelopejs/interface-core@0.5.1)': dependencies: - '@antelopejs/interface-core': 0.4.0 + '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.1) + '@antelopejs/interface-core': 0.5.1 - '@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0)': + '@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.1)': dependencies: - '@antelopejs/interface-core': 0.5.0 + '@antelopejs/interface-core': 0.5.1 - '@antelopejs/interface-core@0.4.0': + '@antelopejs/interface-core@0.5.1': dependencies: reflect-metadata: 0.2.2 - '@antelopejs/interface-core@0.5.0': + '@antelopejs/interface-database-decorators@0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.1))(@antelopejs/interface-core@0.5.1)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.1))': dependencies: - reflect-metadata: 0.2.2 - - '@antelopejs/interface-database-decorators@0.2.0(@antelopejs/interface-api@0.2.0(@antelopejs/interface-core@0.5.0))(@antelopejs/interface-core@0.5.0)(@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.0))': - dependencies: - '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.0) - '@antelopejs/interface-core': 0.5.0 - '@antelopejs/interface-database': 0.3.0(@antelopejs/interface-core@0.5.0) + '@antelopejs/interface-api': 0.2.0(@antelopejs/interface-core@0.5.1) + '@antelopejs/interface-core': 0.5.1 + '@antelopejs/interface-database': 0.3.0(@antelopejs/interface-core@0.5.1) randomstring: 1.3.1 reflect-metadata: 0.2.2 - '@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.0)': + '@antelopejs/interface-database@0.3.0(@antelopejs/interface-core@0.5.1)': dependencies: - '@antelopejs/interface-core': 0.5.0 + '@antelopejs/interface-core': 0.5.1 '@antelopejs/tooling-configs@0.5.5(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001))': dependencies: @@ -3503,9 +3463,9 @@ snapshots: '@typescript-eslint/types': 8.69.0 '@typescript-eslint/visitor-keys': 8.69.0 debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.4 + minimatch: 10.2.6 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -3648,10 +3608,6 @@ snapshots: dependencies: balanced-match: 4.0.4 - brace-expansion@5.0.5: - dependencies: - balanced-match: 4.0.4 - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -3706,11 +3662,11 @@ snapshots: dependencies: chokidar: 5.0.0 confbox: 0.2.4 - defu: 6.1.4 + defu: 6.1.7 dotenv: 17.3.1 exsolve: 1.0.8 giget: 2.0.0 - jiti: 2.6.1 + jiti: 2.7.0 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 2.1.0 @@ -3861,8 +3817,6 @@ snapshots: define-lazy-prop@3.0.0: {} - defu@6.1.4: {} - defu@6.1.7: {} degenerator@5.0.1: @@ -4036,10 +3990,6 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fdir@6.5.0(picomatch@4.0.4): - optionalDependencies: - picomatch: 4.0.4 - fdir@6.5.0(picomatch@4.0.7): optionalDependencies: picomatch: 4.0.7 @@ -4139,7 +4089,7 @@ snapshots: dependencies: citty: 0.1.6 consola: 3.4.2 - defu: 6.1.4 + defu: 6.1.7 node-fetch-native: 1.6.7 nypm: 0.6.5 pathe: 2.0.3 @@ -4172,7 +4122,7 @@ snapshots: glob@13.0.6: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.6 minipass: 7.1.3 path-scurry: 2.0.2 @@ -4340,8 +4290,6 @@ snapshots: jiti@1.21.7: {} - jiti@2.6.1: {} - jiti@2.7.0: {} js-yaml@5.5.0: @@ -4371,7 +4319,7 @@ snapshots: strip-json-comments: 5.0.3 tinyglobby: 0.2.17 unbash: 4.0.11 - yaml: 2.9.0 + yaml: 2.9.1 zod: 4.5.4 lefthook-android-arm64@2.2.2: @@ -4483,10 +4431,6 @@ snapshots: mimic-function@5.0.1: {} - minimatch@10.2.4: - dependencies: - brace-expansion: 5.0.5 - minimatch@10.2.6: dependencies: brace-expansion: 5.0.12 @@ -4888,8 +4832,6 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.4: {} - picomatch@4.0.7: {} pipe-io@4.0.1: {} @@ -4969,7 +4911,7 @@ snapshots: rc9@2.1.2: dependencies: - defu: 6.1.4 + defu: 6.1.7 destr: 2.0.5 readable-stream@2.3.8: @@ -5000,7 +4942,7 @@ snapshots: dependencies: chalk: 5.6.2 changelogen: 0.5.7 - defu: 6.1.4 + defu: 6.1.7 dotenv: 16.6.1 execa: 8.0.1 pathe: 1.1.2 @@ -5237,8 +5179,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 tinyglobby@0.2.17: dependencies: @@ -5351,8 +5293,6 @@ snapshots: yallist@4.0.0: {} - yaml@2.9.0: {} - yaml@2.9.1: {} yargs-parser@21.1.1: {}