@fougere/schema 0.4.0-alpha.0 → 0.5.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EntityAdapters.d.ts +3 -1
- package/dist/EntityAdapters.d.ts.map +1 -1
- package/dist/EntityAdapters.js +4 -0
- package/dist/EntityAdapters.js.map +1 -1
- package/dist/EntityDeclarations.d.ts +1 -1
- package/dist/EntityDeclarations.d.ts.map +1 -1
- package/dist/entity.d.ts +1 -1
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +2 -7
- package/dist/entity.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/projection/standard.d.ts +11 -32
- package/dist/projection/standard.d.ts.map +1 -1
- package/dist/schema/Schema.d.ts +21 -4
- package/dist/schema/Schema.d.ts.map +1 -1
- package/dist/schema/Schema.js +22 -1
- package/dist/schema/Schema.js.map +1 -1
- package/dist/schema/SchemaDefinition.d.ts +17 -3
- package/dist/schema/SchemaDefinition.d.ts.map +1 -1
- package/dist/schema/SchemaDefinition.js +30 -9
- package/dist/schema/SchemaDefinition.js.map +1 -1
- package/dist/schema/SchemaDerivation.d.ts +6 -0
- package/dist/schema/SchemaDerivation.d.ts.map +1 -1
- package/dist/schema/SchemaDerivation.js +9 -0
- package/dist/schema/SchemaDerivation.js.map +1 -1
- package/dist/schema/SchemaView.d.ts +2 -0
- package/dist/schema/SchemaView.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/EntityAdapters.ts +6 -1
- package/src/EntityDeclarations.ts +2 -2
- package/src/entity.ts +3 -8
- package/src/index.ts +5 -0
- package/src/projection/standard.ts +11 -47
- package/src/schema/Schema.ts +34 -4
- package/src/schema/SchemaDefinition.ts +41 -8
- package/src/schema/SchemaDerivation.ts +11 -0
- package/src/schema/SchemaView.ts +2 -0
package/dist/EntityAdapters.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FieldName, Fields } from './fields/Field.js';
|
|
2
2
|
export interface FougereEntityAdapters<K extends string> {
|
|
3
3
|
}
|
|
4
|
-
export type EntityAdapters<TFields extends Fields> = Partial<FougereEntityAdapters<FieldName<TFields
|
|
4
|
+
export type EntityAdapters<TFields extends Fields> = Readonly<Partial<FougereEntityAdapters<FieldName<TFields>>>>;
|
|
5
5
|
/**
|
|
6
6
|
* What one schema states per adapter: an adapter name, a field name, then that adapter's own value.
|
|
7
7
|
*/
|
|
@@ -11,6 +11,8 @@ export declare class EntityAdapterSet {
|
|
|
11
11
|
static of(declared: EntityAdapters<Fields> | undefined): EntityAdapterSet | undefined;
|
|
12
12
|
/** Several schemas folded into one set; a later source wins, per adapter and per field. */
|
|
13
13
|
static merged(sources: readonly (EntityAdapters<Fields> | undefined)[]): EntityAdapterSet | undefined;
|
|
14
|
+
/** Every field name these entries address — what a caller checks against its own shape. */
|
|
15
|
+
get fieldNames(): string[];
|
|
14
16
|
/** The plain object, which is what a reader outside this package receives. */
|
|
15
17
|
get stated(): EntityAdapters<Fields>;
|
|
16
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityAdapters.d.ts","sourceRoot":"","sources":["../src/EntityAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3D,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM;CAAI;AAE3D,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"EntityAdapters.d.ts","sourceRoot":"","sources":["../src/EntityAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3D,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM;CAAI;AAE3D,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAOlH;;GAEG;AACH,qBAAa,gBAAgB;IACP,OAAO,CAAC,QAAQ,CAAC,SAAS;IAA9C,OAAO,eAA2D;IAElE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAyBpF;IAED,2FAA2F;IAC3F,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,gBAAgB,GAAG,SAAS,CAapG;IAED,2FAA2F;IAC3F,IAAI,UAAU,IAAI,MAAM,EAAE,CAEzB;IAED,8EAA8E;IAC9E,IAAI,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAEnC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAe/E;IAED,OAAO,CAAC,MAAM,CAAC,IAAI;CAGpB"}
|
package/dist/EntityAdapters.js
CHANGED
|
@@ -39,6 +39,10 @@ export class EntityAdapterSet {
|
|
|
39
39
|
}
|
|
40
40
|
return EntityAdapterSet.made(out);
|
|
41
41
|
}
|
|
42
|
+
/** Every field name these entries address — what a caller checks against its own shape. */
|
|
43
|
+
get fieldNames() {
|
|
44
|
+
return [...new Set(Object.values(this.byAdapter).flatMap((perField) => Object.keys(perField)))];
|
|
45
|
+
}
|
|
42
46
|
/** The plain object, which is what a reader outside this package receives. */
|
|
43
47
|
get stated() {
|
|
44
48
|
return this.byAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityAdapters.js","sourceRoot":"","sources":["../src/EntityAdapters.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntityAdapters.js","sourceRoot":"","sources":["../src/EntityAdapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { FieldName, Fields } from './fields/Field.js';
|
|
|
2
2
|
import type { EntityAdapters } from './EntityAdapters.js';
|
|
3
3
|
export type CompositeUnique<TFields extends Fields> = readonly (readonly FieldName<TFields>[])[];
|
|
4
4
|
/** New name to old name: the field states what it WAS, which is how a human writes it. */
|
|
5
|
-
export type PreviousNames<TFields extends Fields> = Partial<Record<FieldName<TFields>, string
|
|
5
|
+
export type PreviousNames<TFields extends Fields> = Readonly<Partial<Record<FieldName<TFields>, string>>>;
|
|
6
6
|
export interface EntityDeclarations<TFields extends Fields> {
|
|
7
7
|
unique?: CompositeUnique<TFields>;
|
|
8
8
|
adapters?: EntityAdapters<TFields>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityDeclarations.d.ts","sourceRoot":"","sources":["../src/EntityDeclarations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,MAAM,IAAI,SAAS,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAEjG,0FAA0F;AAC1F,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"EntityDeclarations.d.ts","sourceRoot":"","sources":["../src/EntityDeclarations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,MAAM,IAAI,SAAS,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAEjG,0FAA0F;AAC1F,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,IAAI,QAAQ,CAC1D,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAC5C,CAAC;AAEF,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,MAAM;IACxD,MAAM,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACnC"}
|
package/dist/entity.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Fields } from './fields/Field.js';
|
|
2
2
|
import { type EntityDeclarations } from './EntityDeclarations.js';
|
|
3
3
|
import { type SchemaConstructor } from './schema/Schema.js';
|
|
4
|
-
export declare function entity<TFields extends Fields>(
|
|
4
|
+
export declare function entity<TFields extends Fields>(fields: TFields, declarations?: EntityDeclarations<TFields>): SchemaConstructor<TFields>;
|
|
5
5
|
//# sourceMappingURL=entity.d.ts.map
|
package/dist/entity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,EAC3C,MAAM,EAAE,OAAO,EACf,YAAY,GAAE,kBAAkB,CAAC,OAAO,CAAM,GAC7C,iBAAiB,CAAC,OAAO,CAAC,CAE5B"}
|
package/dist/entity.js
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import { FieldSet } from './fields/FieldSet.js';
|
|
2
1
|
import { Schema } from './schema/Schema.js';
|
|
3
|
-
export function entity(
|
|
4
|
-
return Schema.of({
|
|
5
|
-
fields: FieldSet.declared(originalFields, unique),
|
|
6
|
-
adapters,
|
|
7
|
-
previous,
|
|
8
|
-
});
|
|
2
|
+
export function entity(fields, declarations = {}) {
|
|
3
|
+
return Schema.of({ fields }).declares(declarations);
|
|
9
4
|
}
|
|
10
5
|
//# sourceMappingURL=entity.js.map
|
package/dist/entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAA0B,MAAM,oBAAoB,CAAC;AAEpE,MAAM,UAAU,MAAM,CACpB,MAAe,EACf,YAAY,GAAgC,EAAE;IAE9C,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export { Cases, type Case } from './judge/Cases.js';
|
|
|
19
19
|
export { RowRefusal } from './judge/RowRefusal.js';
|
|
20
20
|
export { type SchemaView, type Row, type PartialRow } from './schema/SchemaView.js';
|
|
21
21
|
export { type FougereEntityAdapters, type EntityAdapters } from './EntityAdapters.js';
|
|
22
|
+
export { type EntityDeclarations, type CompositeUnique, type PreviousNames, } from './EntityDeclarations.js';
|
|
22
23
|
export { lowerFirst, upperFirst } from './utils.js';
|
|
23
24
|
export { primary } from './vocabulary/primary.js';
|
|
24
25
|
export { text } from './vocabulary/text.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAc,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAA2C,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAkB,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAuB,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAqB,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAwC,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAA8B,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAA0B,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAa,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
interface SuccessResult<Output> {
|
|
13
|
-
readonly value: Output;
|
|
14
|
-
readonly issues?: undefined;
|
|
15
|
-
}
|
|
16
|
-
interface FailureResult {
|
|
17
|
-
readonly issues: readonly Issue[];
|
|
18
|
-
}
|
|
19
|
-
interface Issue {
|
|
20
|
-
readonly message: string;
|
|
21
|
-
readonly path?: readonly (PropertyKey | PathSegment)[] | undefined;
|
|
22
|
-
}
|
|
23
|
-
interface PathSegment {
|
|
24
|
-
readonly key: PropertyKey;
|
|
25
|
-
}
|
|
26
|
-
interface Types<Input = unknown, Output = Input> {
|
|
27
|
-
readonly input: Input;
|
|
28
|
-
readonly output: Output;
|
|
29
|
-
}
|
|
30
|
-
type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['input'];
|
|
31
|
-
type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['output'];
|
|
32
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* The Standard Schema interface, from the package that owns it.
|
|
3
|
+
*
|
|
4
|
+
* This file used to CARRY the spec — 47 lines of hand-copied interface — and the copy had
|
|
5
|
+
* silently fallen a version behind: v1.1 gave `Props` a base it extends (`StandardTypedV1`)
|
|
6
|
+
* and gave `validate` a second `options` parameter. Nothing broke, because a realization may
|
|
7
|
+
* ignore an optional argument, which is exactly why nobody noticed. A standard is owned by
|
|
8
|
+
* whoever publishes it; the package is types only (`index.js` is zero bytes), so importing
|
|
9
|
+
* it costs a browser nothing.
|
|
10
|
+
*/
|
|
11
|
+
export type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
33
12
|
//# sourceMappingURL=standard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/projection/standard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/projection/standard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/schema/Schema.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type Fields } from '../fields/Field.js';
|
|
2
|
-
import { type PreviousNames } from '../EntityDeclarations.js';
|
|
2
|
+
import { type CompositeUnique, type EntityDeclarations, type PreviousNames } from '../EntityDeclarations.js';
|
|
3
3
|
import { type EntityAdapters } from '../EntityAdapters.js';
|
|
4
|
-
import { type CompositeUnique } from '../EntityDeclarations.js';
|
|
5
4
|
import { SchemaDerivation } from './SchemaDerivation.js';
|
|
6
5
|
import { SchemaDefinition } from './SchemaDefinition.js';
|
|
7
6
|
import { type ValidateOptions } from '../judge/options.js';
|
|
@@ -13,25 +12,29 @@ export interface SchemaConstructor<TFields extends Fields> extends SchemaView<TF
|
|
|
13
12
|
readonly "~standard": StandardSchemaV1.Props<Record<string, unknown>, Row<TFields>>;
|
|
14
13
|
readonly derivation?: SchemaDerivation;
|
|
15
14
|
readonly previous?: PreviousNames<TFields>;
|
|
15
|
+
readonly anchored?: boolean;
|
|
16
16
|
from(data: Record<string, unknown>): Row<TFields>;
|
|
17
17
|
pick<K extends string & keyof TFields>(...keys: K[]): SchemaConstructor<Pick<TFields, K>>;
|
|
18
18
|
omit<K extends string & keyof TFields>(...keys: K[]): SchemaConstructor<Omit<TFields, K>>;
|
|
19
19
|
partial(): SchemaConstructor<TFields>;
|
|
20
20
|
extend<E extends Fields>(extra: E): SchemaConstructor<TFields & E>;
|
|
21
|
+
declares(declarations: EntityDeclarations<TFields>): SchemaConstructor<TFields>;
|
|
22
|
+
anchor(): SchemaConstructor<TFields>;
|
|
21
23
|
named(name: string): SchemaConstructor<TFields>;
|
|
22
24
|
rename(mapping: Partial<Record<string & keyof TFields, string>>): SchemaConstructor<Fields>;
|
|
23
25
|
}
|
|
24
26
|
export declare class Schema {
|
|
25
|
-
/** The one place a schema holds what it is. The
|
|
27
|
+
/** The one place a schema holds what it is. The readings below are its projections. */
|
|
26
28
|
static definition: SchemaDefinition;
|
|
27
29
|
static get fields(): Fields;
|
|
28
30
|
static get adapters(): EntityAdapters<Fields> | undefined;
|
|
29
31
|
static get opts(): ValidateOptions;
|
|
30
32
|
static get derivation(): SchemaDerivation | undefined;
|
|
31
33
|
static get previous(): PreviousNames<Fields> | undefined;
|
|
34
|
+
static get anchored(): boolean;
|
|
32
35
|
constructor(data?: Record<string, unknown>);
|
|
33
36
|
static getFields(): Fields;
|
|
34
|
-
static getAdapters(): Partial<import("../EntityAdapters.js").FougereEntityAdapters<string
|
|
37
|
+
static getAdapters(): Readonly<Partial<import("../EntityAdapters.js").FougereEntityAdapters<string>>> | undefined;
|
|
35
38
|
static getUnique(): CompositeUnique<Fields> | undefined;
|
|
36
39
|
static getOpts(): ValidateOptions;
|
|
37
40
|
static validate(input: unknown): import("../index.js").ValidationResult<Record<string, unknown>>;
|
|
@@ -40,6 +43,19 @@ export declare class Schema {
|
|
|
40
43
|
static pick(...keys: string[]): SchemaConstructor<Fields>;
|
|
41
44
|
static omit(...keys: string[]): SchemaConstructor<Fields>;
|
|
42
45
|
static rename(mapping: Record<string, string>): SchemaConstructor<Fields>;
|
|
46
|
+
/**
|
|
47
|
+
* Everything a schema states about ITSELF, available wherever a schema is. `entity(fields, …)`
|
|
48
|
+
* is this same gesture at the declaration site; the fields do not move, so neither does the type.
|
|
49
|
+
*/
|
|
50
|
+
static declares(declarations: EntityDeclarations<Fields>): SchemaConstructor<Fields>;
|
|
51
|
+
/**
|
|
52
|
+
* This schema holds rows of its own — every entity is one, and a derivation says so.
|
|
53
|
+
*
|
|
54
|
+
* An anchor is where a walk STOPS: `derivation.anchor` climbs to the nearest one, and what
|
|
55
|
+
* is cut from an anchor roots on it. Two anchors are two entities that happen to share a
|
|
56
|
+
* shape, never a hierarchy — nothing here subtypes, so a relation between them is `ref()`.
|
|
57
|
+
*/
|
|
58
|
+
static anchor(): SchemaConstructor<Fields>;
|
|
43
59
|
static partial(): SchemaConstructor<Fields>;
|
|
44
60
|
static extend(extra: Fields): SchemaConstructor<Fields>;
|
|
45
61
|
static named(name: string): typeof Schema;
|
|
@@ -50,6 +66,7 @@ export declare class Schema {
|
|
|
50
66
|
adapters?: EntityAdapters<TFields>;
|
|
51
67
|
opts?: ValidateOptions;
|
|
52
68
|
previous?: PreviousNames<TFields>;
|
|
69
|
+
anchored?: boolean;
|
|
53
70
|
}): SchemaConstructor<TFields>;
|
|
54
71
|
/** The class a definition becomes. The one place a Schema subclass is born. */
|
|
55
72
|
private static subclass;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/Schema.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { Boundary } from '../axis/boundary/Boundary.js';
|
|
2
|
+
import { EntityAdapterSet } from '../EntityAdapters.js';
|
|
2
3
|
import { FieldGroup } from '../constraint/FieldGroup.js';
|
|
3
4
|
import { Unique } from '../constraint/Unique.js';
|
|
4
5
|
import { RowJudge } from '../judge/RowJudge.js';
|
|
5
6
|
import { SchemaDefinition } from './SchemaDefinition.js';
|
|
6
7
|
export const ANONYMOUS_SCHEMA_NAME = "Schema";
|
|
7
8
|
export class Schema {
|
|
8
|
-
/** The one place a schema holds what it is. The
|
|
9
|
+
/** The one place a schema holds what it is. The readings below are its projections. */
|
|
9
10
|
static definition = SchemaDefinition.stated({ fields: {} });
|
|
10
11
|
static get fields() { return this.definition.fields; }
|
|
11
12
|
static get adapters() { return this.definition.adapters; }
|
|
12
13
|
static get opts() { return this.definition.opts; }
|
|
13
14
|
static get derivation() { return this.definition.derivation; }
|
|
14
15
|
static get previous() { return this.definition.previous; }
|
|
16
|
+
static get anchored() { return this.definition.anchored; }
|
|
15
17
|
constructor(data) {
|
|
16
18
|
if (!data)
|
|
17
19
|
return;
|
|
@@ -85,6 +87,25 @@ export class Schema {
|
|
|
85
87
|
renamed[mapping[key] ?? key] = field;
|
|
86
88
|
return this.derive(renamed, (k) => mapping[k] ?? k);
|
|
87
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Everything a schema states about ITSELF, available wherever a schema is. `entity(fields, …)`
|
|
92
|
+
* is this same gesture at the declaration site; the fields do not move, so neither does the type.
|
|
93
|
+
*/
|
|
94
|
+
static declares(declarations) {
|
|
95
|
+
const addressed = EntityAdapterSet.of(declarations.adapters)?.fieldNames ?? [];
|
|
96
|
+
assertKnownKeys("declares", [...addressed, ...Object.keys(declarations.previous ?? {})], this.fields);
|
|
97
|
+
return Schema.subclass(this.definition.declaring(declarations));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* This schema holds rows of its own — every entity is one, and a derivation says so.
|
|
101
|
+
*
|
|
102
|
+
* An anchor is where a walk STOPS: `derivation.anchor` climbs to the nearest one, and what
|
|
103
|
+
* is cut from an anchor roots on it. Two anchors are two entities that happen to share a
|
|
104
|
+
* shape, never a hierarchy — nothing here subtypes, so a relation between them is `ref()`.
|
|
105
|
+
*/
|
|
106
|
+
static anchor() {
|
|
107
|
+
return Schema.subclass(this.definition.anchoring());
|
|
108
|
+
}
|
|
88
109
|
static partial() {
|
|
89
110
|
return Schema.subclass(this.definition.patched(this));
|
|
90
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Fields } from '../fields/Field.js';
|
|
2
|
-
import { type PreviousNames } from '../EntityDeclarations.js';
|
|
2
|
+
import { type EntityDeclarations, type PreviousNames } from '../EntityDeclarations.js';
|
|
3
3
|
import { type EntityAdapters } from '../EntityAdapters.js';
|
|
4
4
|
import { SchemaDerivation } from './SchemaDerivation.js';
|
|
5
5
|
import { type ValidateOptions } from '../judge/options.js';
|
|
@@ -7,7 +7,7 @@ import type { SchemaView } from './SchemaView.js';
|
|
|
7
7
|
/**
|
|
8
8
|
* Everything a schema IS, apart from being a class whose instances are rows.
|
|
9
9
|
*
|
|
10
|
-
* The
|
|
10
|
+
* The members used to be that many statics assigned side by side, and every derivation
|
|
11
11
|
* re-threaded them by hand — which is how one of them came to be dropped from a list
|
|
12
12
|
* without anyone noticing. A transformation here returns a COMPLETE definition or it does
|
|
13
13
|
* not compile, so no gesture can mix the fields of one with the options of another.
|
|
@@ -21,6 +21,7 @@ export declare class SchemaDefinition {
|
|
|
21
21
|
readonly opts: ValidateOptions;
|
|
22
22
|
readonly previous: PreviousNames<Fields> | undefined;
|
|
23
23
|
readonly derivation: SchemaDerivation | undefined;
|
|
24
|
+
readonly anchored: boolean;
|
|
24
25
|
private constructor();
|
|
25
26
|
static stated(said: {
|
|
26
27
|
fields: Fields;
|
|
@@ -28,7 +29,17 @@ export declare class SchemaDefinition {
|
|
|
28
29
|
opts?: ValidateOptions;
|
|
29
30
|
previous?: PreviousNames<Fields>;
|
|
30
31
|
derivation?: SchemaDerivation;
|
|
32
|
+
anchored?: boolean;
|
|
31
33
|
}): SchemaDefinition;
|
|
34
|
+
/**
|
|
35
|
+
* What a schema states about ITSELF, folded into what it already states — one adapter
|
|
36
|
+
* entry per field wins the later spelling, and a unique group is stamped on its members.
|
|
37
|
+
*/
|
|
38
|
+
declaring(said: EntityDeclarations<Fields>): SchemaDefinition;
|
|
39
|
+
/**
|
|
40
|
+
* The same schema, holding rows of its own. A derivation is an answer until it says this.
|
|
41
|
+
*/
|
|
42
|
+
anchoring(): SchemaDefinition;
|
|
32
43
|
/**
|
|
33
44
|
* `pick`, `omit` and `rename` are one gesture: the fields that remain, and what became
|
|
34
45
|
* of each name. What each adapter was handed follows the same correspondence, and so does the origin.
|
|
@@ -40,7 +51,10 @@ export declare class SchemaDefinition {
|
|
|
40
51
|
extended(extra: Fields, root: SchemaView): SchemaDefinition;
|
|
41
52
|
/** Several views folded into one definition, which therefore has no single origin. */
|
|
42
53
|
static merged(views: readonly SchemaView[]): SchemaDefinition;
|
|
43
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* The origin this definition already carries, or the one `root` becomes. A schema that
|
|
56
|
+
* is an ANCHOR holds rows of its own, so what is cut from it roots on IT and not on its own origin.
|
|
57
|
+
*/
|
|
44
58
|
private origin;
|
|
45
59
|
}
|
|
46
60
|
//# sourceMappingURL=SchemaDefinition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDefinition.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaDefinition.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS;IACrD,QAAQ,CAAC,IAAI,EAAE,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;IACpD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO;IAN5B,OAAO,eAOH;IAEJ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,eAAe,CAAC;QACvB,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,EAAE,gBAAgB,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,gBAAgB,CAInB;IAED;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAS5D;IAED;;OAEG;IACH,SAAS,IAAI,gBAAgB,CAI5B;IAED;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAWrG;IAED,4CAA4C;IAC5C,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAI1C;IAED,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAI1D;IAED,sFAAsF;IACtF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,gBAAgB,CAU5D;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM;CAKf"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { FieldSet } from '../fields/FieldSet.js';
|
|
1
2
|
import { EntityAdapterSet } from '../EntityAdapters.js';
|
|
2
3
|
import { SchemaDerivation } from './SchemaDerivation.js';
|
|
3
4
|
/**
|
|
4
5
|
* Everything a schema IS, apart from being a class whose instances are rows.
|
|
5
6
|
*
|
|
6
|
-
* The
|
|
7
|
+
* The members used to be that many statics assigned side by side, and every derivation
|
|
7
8
|
* re-threaded them by hand — which is how one of them came to be dropped from a list
|
|
8
9
|
* without anyone noticing. A transformation here returns a COMPLETE definition or it does
|
|
9
10
|
* not compile, so no gesture can mix the fields of one with the options of another.
|
|
@@ -17,15 +18,30 @@ export class SchemaDefinition {
|
|
|
17
18
|
opts;
|
|
18
19
|
previous;
|
|
19
20
|
derivation;
|
|
20
|
-
|
|
21
|
+
anchored;
|
|
22
|
+
constructor(fields, adapters, opts, previous, derivation, anchored) {
|
|
21
23
|
this.fields = fields;
|
|
22
24
|
this.adapters = adapters;
|
|
23
25
|
this.opts = opts;
|
|
24
26
|
this.previous = previous;
|
|
25
27
|
this.derivation = derivation;
|
|
28
|
+
this.anchored = anchored;
|
|
26
29
|
}
|
|
27
30
|
static stated(said) {
|
|
28
|
-
return new SchemaDefinition(said.fields, EntityAdapterSet.of(said.adapters)?.stated, said.opts ?? {}, said.previous, said.derivation);
|
|
31
|
+
return new SchemaDefinition(said.fields, EntityAdapterSet.of(said.adapters)?.stated, said.opts ?? {}, said.previous, said.derivation, said.anchored ?? false);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* What a schema states about ITSELF, folded into what it already states — one adapter
|
|
35
|
+
* entry per field wins the later spelling, and a unique group is stamped on its members.
|
|
36
|
+
*/
|
|
37
|
+
declaring(said) {
|
|
38
|
+
return new SchemaDefinition(FieldSet.declared(this.fields, said.unique), EntityAdapterSet.merged([this.adapters, said.adapters])?.stated, this.opts, said.previous ?? this.previous, this.derivation, this.anchored);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The same schema, holding rows of its own. A derivation is an answer until it says this.
|
|
42
|
+
*/
|
|
43
|
+
anchoring() {
|
|
44
|
+
return new SchemaDefinition(this.fields, this.adapters, this.opts, this.previous, this.derivation, true);
|
|
29
45
|
}
|
|
30
46
|
/**
|
|
31
47
|
* `pick`, `omit` and `rename` are one gesture: the fields that remain, and what became
|
|
@@ -35,15 +51,15 @@ export class SchemaDefinition {
|
|
|
35
51
|
const renamed = {};
|
|
36
52
|
for (const [key, field] of Object.entries(fields))
|
|
37
53
|
renamed[key] = field.rename(survives);
|
|
38
|
-
return new SchemaDefinition(renamed, EntityAdapterSet.of(this.adapters)?.cut(survives)?.stated, this.opts, undefined, this.origin(root).compose(survives));
|
|
54
|
+
return new SchemaDefinition(renamed, EntityAdapterSet.of(this.adapters)?.cut(survives)?.stated, this.opts, undefined, this.origin(root).compose(survives), false);
|
|
39
55
|
}
|
|
40
56
|
/** The same fields, judged as an update. */
|
|
41
57
|
patched(root) {
|
|
42
|
-
return new SchemaDefinition({ ...this.fields }, this.adapters, { ...this.opts, patch: true }, undefined, this.origin(root));
|
|
58
|
+
return new SchemaDefinition({ ...this.fields }, this.adapters, { ...this.opts, patch: true }, undefined, this.origin(root), false);
|
|
43
59
|
}
|
|
44
60
|
/** The added fields have no origin, so the derivation is unchanged: it speaks of the root. */
|
|
45
61
|
extended(extra, root) {
|
|
46
|
-
return new SchemaDefinition({ ...this.fields, ...extra }, this.adapters, this.opts, undefined, this.origin(root));
|
|
62
|
+
return new SchemaDefinition({ ...this.fields, ...extra }, this.adapters, this.opts, undefined, this.origin(root), false);
|
|
47
63
|
}
|
|
48
64
|
/** Several views folded into one definition, which therefore has no single origin. */
|
|
49
65
|
static merged(views) {
|
|
@@ -54,11 +70,16 @@ export class SchemaDefinition {
|
|
|
54
70
|
opts = { ...opts, ...view.getOpts() };
|
|
55
71
|
}
|
|
56
72
|
const adapters = EntityAdapterSet.merged(views.map((view) => view.getAdapters()))?.stated;
|
|
57
|
-
return new SchemaDefinition(fields, adapters, opts, undefined, undefined);
|
|
73
|
+
return new SchemaDefinition(fields, adapters, opts, undefined, undefined, false);
|
|
58
74
|
}
|
|
59
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* The origin this definition already carries, or the one `root` becomes. A schema that
|
|
77
|
+
* is an ANCHOR holds rows of its own, so what is cut from it roots on IT and not on its own origin.
|
|
78
|
+
*/
|
|
60
79
|
origin(root) {
|
|
61
|
-
|
|
80
|
+
if (!this.anchored && this.derivation)
|
|
81
|
+
return this.derivation;
|
|
82
|
+
return SchemaDerivation.first(root, this.fields);
|
|
62
83
|
}
|
|
63
84
|
}
|
|
64
85
|
//# sourceMappingURL=SchemaDefinition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDefinition.js","sourceRoot":"","sources":["../../src/schema/SchemaDefinition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SchemaDefinition.js","sourceRoot":"","sources":["../../src/schema/SchemaDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,12 @@ export declare class SchemaDerivation {
|
|
|
18
18
|
/** The same origin, seen through one more cut. */
|
|
19
19
|
compose(survives: (key: string) => string | undefined): SchemaDerivation;
|
|
20
20
|
get sourceName(): string;
|
|
21
|
+
/**
|
|
22
|
+
* The anchor whose rows this describes — the nearest one going up, and a schema with no
|
|
23
|
+
* origin of its own is one. An answer borrows its rows; this says from whom. Whether
|
|
24
|
+
* those rows carry a key is a separate question: an anchor may have none.
|
|
25
|
+
*/
|
|
26
|
+
get anchor(): SchemaView;
|
|
21
27
|
/**
|
|
22
28
|
* What the ROOT calls `key`, translated to the name it carries here — `undefined` when a
|
|
23
29
|
* cut dropped it. A reader that needs something the root declared about a field asks the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDerivation.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaDerivation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,MAAM,EAAE,UAAU;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAFjE,OAAO,eAGH;IAEJ,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAEjE;IAED,kDAAkD;IAClD,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAOvE;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvC;CACF"}
|
|
1
|
+
{"version":3,"file":"SchemaDerivation.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaDerivation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,MAAM,EAAE,UAAU;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAFjE,OAAO,eAGH;IAEJ,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAEjE;IAED,kDAAkD;IAClD,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAOvE;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,UAAU,CAIvB;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvC;CACF"}
|
|
@@ -25,6 +25,15 @@ export class SchemaDerivation {
|
|
|
25
25
|
get sourceName() {
|
|
26
26
|
return this.source.name;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* The anchor whose rows this describes — the nearest one going up, and a schema with no
|
|
30
|
+
* origin of its own is one. An answer borrows its rows; this says from whom. Whether
|
|
31
|
+
* those rows carry a key is a separate question: an anchor may have none.
|
|
32
|
+
*/
|
|
33
|
+
get anchor() {
|
|
34
|
+
const source = this.source;
|
|
35
|
+
return source.anchored !== undefined || !source.derivation ? source : source.derivation.anchor;
|
|
36
|
+
}
|
|
28
37
|
/**
|
|
29
38
|
* What the ROOT calls `key`, translated to the name it carries here — `undefined` when a
|
|
30
39
|
* cut dropped it. A reader that needs something the root declared about a field asks the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDerivation.js","sourceRoot":"","sources":["../../src/schema/SchemaDerivation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IAEhB,MAAM;IACN,QAAQ;IAFnB,YACW,MAAkB,EAClB,QAAsD;sBADtD,MAAM;wBACN,QAAQ;IAChB,CAAC;IAEJ,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAkB,EAAE,MAAc;QAC7C,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,QAA6C;QACnD,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,MAAM,EACX,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CACjH,CACF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"SchemaDerivation.js","sourceRoot":"","sources":["../../src/schema/SchemaDerivation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IAEhB,MAAM;IACN,QAAQ;IAFnB,YACW,MAAkB,EAClB,QAAsD;sBADtD,MAAM;wBACN,QAAQ;IAChB,CAAC;IAEJ,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAkB,EAAE,MAAc;QAC7C,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,QAA6C;QACnD,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,MAAM,EACX,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CACjH,CACF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;IACjG,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -14,6 +14,8 @@ export interface SchemaView<TFields extends Fields = Fields> {
|
|
|
14
14
|
readonly derivation?: SchemaDerivation;
|
|
15
15
|
/** What its fields were called before, keyed by the names they carry now. */
|
|
16
16
|
readonly previous?: PreviousNames<TFields>;
|
|
17
|
+
/** Does it hold rows of its own? False on a derivation means an answer. */
|
|
18
|
+
readonly anchored?: boolean;
|
|
17
19
|
getFields(): TFields;
|
|
18
20
|
getAdapters(): EntityAdapters<TFields> | undefined;
|
|
19
21
|
getUnique(): CompositeUnique<TFields> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaView.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,GAAG,CAAC,OAAO,SAAS,MAAM,IAAI;KACvC,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACpE,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,SAAS,IAAI,OAAO,CAAC;IACrB,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACnD,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAClD,OAAO,IAAI,eAAe,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1D"}
|
|
1
|
+
{"version":3,"file":"SchemaView.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,GAAG,CAAC,OAAO,SAAS,MAAM,IAAI;KACvC,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACpE,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,IAAI,OAAO,CAAC;IACrB,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACnD,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAClD,OAAO,IAAI,eAAe,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fougere/schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-alpha.0",
|
|
4
4
|
"description": "The entity and its 4 axes — shape, role, lifecycle, boundary. Subject-owned judgments, edge-safe.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fougere",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@cfworker/json-schema": "^4.1.1",
|
|
37
37
|
"@paralleldrive/cuid2": "^3.3.0",
|
|
38
|
+
"@standard-schema/spec": "^1.1.0",
|
|
38
39
|
"dequal": "^2.0.3"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
package/src/EntityAdapters.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { isObject } from './judge/ValueForm.js';
|
|
|
4
4
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-object-type
|
|
5
5
|
export interface FougereEntityAdapters<K extends string> {}
|
|
6
6
|
|
|
7
|
-
export type EntityAdapters<TFields extends Fields> = Partial<FougereEntityAdapters<FieldName<TFields
|
|
7
|
+
export type EntityAdapters<TFields extends Fields> = Readonly<Partial<FougereEntityAdapters<FieldName<TFields>>>>;
|
|
8
8
|
|
|
9
9
|
/** What `cut` REQUIRES of an augmentation, and the open registry cannot state: addressed by field. */
|
|
10
10
|
type FieldEntries = Record<FieldName<Fields>, unknown>;
|
|
@@ -60,6 +60,11 @@ export class EntityAdapterSet {
|
|
|
60
60
|
return EntityAdapterSet.made(out);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/** Every field name these entries address — what a caller checks against its own shape. */
|
|
64
|
+
get fieldNames(): string[] {
|
|
65
|
+
return [...new Set(Object.values(this.byAdapter).flatMap((perField) => Object.keys(perField)))];
|
|
66
|
+
}
|
|
67
|
+
|
|
63
68
|
/** The plain object, which is what a reader outside this package receives. */
|
|
64
69
|
get stated(): EntityAdapters<Fields> {
|
|
65
70
|
return this.byAdapter as EntityAdapters<Fields>;
|
|
@@ -4,8 +4,8 @@ import type { EntityAdapters } from './EntityAdapters.js';
|
|
|
4
4
|
export type CompositeUnique<TFields extends Fields> = readonly (readonly FieldName<TFields>[])[];
|
|
5
5
|
|
|
6
6
|
/** New name to old name: the field states what it WAS, which is how a human writes it. */
|
|
7
|
-
export type PreviousNames<TFields extends Fields> =
|
|
8
|
-
Record<FieldName<TFields>, string
|
|
7
|
+
export type PreviousNames<TFields extends Fields> = Readonly<
|
|
8
|
+
Partial<Record<FieldName<TFields>, string>>
|
|
9
9
|
>;
|
|
10
10
|
|
|
11
11
|
export interface EntityDeclarations<TFields extends Fields> {
|
package/src/entity.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { type Fields } from './fields/Field.js';
|
|
2
|
-
import { FieldSet } from './fields/FieldSet.js';
|
|
3
2
|
import { type EntityDeclarations } from './EntityDeclarations.js';
|
|
4
3
|
import { Schema, type SchemaConstructor } from './schema/Schema.js';
|
|
5
4
|
|
|
6
5
|
export function entity<TFields extends Fields>(
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
fields: TFields,
|
|
7
|
+
declarations: EntityDeclarations<TFields> = {},
|
|
9
8
|
): SchemaConstructor<TFields> {
|
|
10
|
-
return Schema.of({
|
|
11
|
-
fields: FieldSet.declared(originalFields, unique),
|
|
12
|
-
adapters,
|
|
13
|
-
previous,
|
|
14
|
-
});
|
|
9
|
+
return Schema.of({ fields }).declares(declarations);
|
|
15
10
|
}
|
package/src/index.ts
CHANGED
|
@@ -20,6 +20,11 @@ export { Cases, type Case } from './judge/Cases.js';
|
|
|
20
20
|
export { RowRefusal } from './judge/RowRefusal.js';
|
|
21
21
|
export { type SchemaView, type Row, type PartialRow } from './schema/SchemaView.js';
|
|
22
22
|
export { type FougereEntityAdapters, type EntityAdapters } from './EntityAdapters.js';
|
|
23
|
+
export {
|
|
24
|
+
type EntityDeclarations,
|
|
25
|
+
type CompositeUnique,
|
|
26
|
+
type PreviousNames,
|
|
27
|
+
} from './EntityDeclarations.js';
|
|
23
28
|
export { lowerFirst, upperFirst } from './utils.js';
|
|
24
29
|
|
|
25
30
|
export { primary } from './vocabulary/primary.js';
|
|
@@ -1,47 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
readonly types?: Types<Input, Output> | undefined;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
type Result<Output> = SuccessResult<Output> | FailureResult;
|
|
16
|
-
|
|
17
|
-
interface SuccessResult<Output> {
|
|
18
|
-
readonly value: Output;
|
|
19
|
-
readonly issues?: undefined;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
interface FailureResult {
|
|
23
|
-
readonly issues: readonly Issue[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
interface Issue {
|
|
27
|
-
readonly message: string;
|
|
28
|
-
readonly path?: readonly (PropertyKey | PathSegment)[] | undefined;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
interface PathSegment {
|
|
32
|
-
readonly key: PropertyKey;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface Types<Input = unknown, Output = Input> {
|
|
36
|
-
readonly input: Input;
|
|
37
|
-
readonly output: Output;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
type InferInput<Schema extends StandardSchemaV1> = NonNullable<
|
|
41
|
-
Schema['~standard']['types']
|
|
42
|
-
>['input'];
|
|
43
|
-
|
|
44
|
-
type InferOutput<Schema extends StandardSchemaV1> = NonNullable<
|
|
45
|
-
Schema['~standard']['types']
|
|
46
|
-
>['output'];
|
|
47
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* The Standard Schema interface, from the package that owns it.
|
|
3
|
+
*
|
|
4
|
+
* This file used to CARRY the spec — 47 lines of hand-copied interface — and the copy had
|
|
5
|
+
* silently fallen a version behind: v1.1 gave `Props` a base it extends (`StandardTypedV1`)
|
|
6
|
+
* and gave `validate` a second `options` parameter. Nothing broke, because a realization may
|
|
7
|
+
* ignore an optional argument, which is exactly why nobody noticed. A standard is owned by
|
|
8
|
+
* whoever publishes it; the package is types only (`index.js` is zero bytes), so importing
|
|
9
|
+
* it costs a browser nothing.
|
|
10
|
+
*/
|
|
11
|
+
export type { StandardSchemaV1 } from '@standard-schema/spec';
|
package/src/schema/Schema.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Boundary } from '../axis/boundary/Boundary.js';
|
|
2
2
|
import { type Fields } from '../fields/Field.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
type CompositeUnique,
|
|
5
|
+
type EntityDeclarations,
|
|
6
|
+
type PreviousNames,
|
|
7
|
+
} from '../EntityDeclarations.js';
|
|
8
|
+
import { EntityAdapterSet, type EntityAdapters } from '../EntityAdapters.js';
|
|
5
9
|
import { FieldGroup } from '../constraint/FieldGroup.js';
|
|
6
10
|
import { Unique } from '../constraint/Unique.js';
|
|
7
|
-
import { type CompositeUnique } from '../EntityDeclarations.js';
|
|
8
11
|
import { RowJudge } from '../judge/RowJudge.js';
|
|
9
12
|
import { SchemaDerivation } from './SchemaDerivation.js';
|
|
10
13
|
import { SchemaDefinition } from './SchemaDefinition.js';
|
|
@@ -19,17 +22,20 @@ export interface SchemaConstructor<TFields extends Fields> extends SchemaView<TF
|
|
|
19
22
|
readonly "~standard": StandardSchemaV1.Props<Record<string, unknown>, Row<TFields>>;
|
|
20
23
|
readonly derivation?: SchemaDerivation;
|
|
21
24
|
readonly previous?: PreviousNames<TFields>;
|
|
25
|
+
readonly anchored?: boolean;
|
|
22
26
|
from(data: Record<string, unknown>): Row<TFields>;
|
|
23
27
|
pick<K extends string & keyof TFields>(...keys: K[]): SchemaConstructor<Pick<TFields, K>>;
|
|
24
28
|
omit<K extends string & keyof TFields>(...keys: K[]): SchemaConstructor<Omit<TFields, K>>;
|
|
25
29
|
partial(): SchemaConstructor<TFields>;
|
|
26
30
|
extend<E extends Fields>(extra: E): SchemaConstructor<TFields & E>;
|
|
31
|
+
declares(declarations: EntityDeclarations<TFields>): SchemaConstructor<TFields>;
|
|
32
|
+
anchor(): SchemaConstructor<TFields>;
|
|
27
33
|
named(name: string): SchemaConstructor<TFields>;
|
|
28
34
|
rename(mapping: Partial<Record<string & keyof TFields, string>>): SchemaConstructor<Fields>;
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
export class Schema {
|
|
32
|
-
/** The one place a schema holds what it is. The
|
|
38
|
+
/** The one place a schema holds what it is. The readings below are its projections. */
|
|
33
39
|
static definition: SchemaDefinition = SchemaDefinition.stated({ fields: {} });
|
|
34
40
|
|
|
35
41
|
static get fields(): Fields { return this.definition.fields; }
|
|
@@ -37,6 +43,7 @@ export class Schema {
|
|
|
37
43
|
static get opts(): ValidateOptions { return this.definition.opts; }
|
|
38
44
|
static get derivation(): SchemaDerivation | undefined { return this.definition.derivation; }
|
|
39
45
|
static get previous(): PreviousNames<Fields> | undefined { return this.definition.previous; }
|
|
46
|
+
static get anchored(): boolean { return this.definition.anchored; }
|
|
40
47
|
|
|
41
48
|
constructor(data?: Record<string, unknown>) {
|
|
42
49
|
if (!data) return;
|
|
@@ -108,6 +115,28 @@ export class Schema {
|
|
|
108
115
|
return this.derive(renamed, (k) => mapping[k] ?? k);
|
|
109
116
|
}
|
|
110
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Everything a schema states about ITSELF, available wherever a schema is. `entity(fields, …)`
|
|
120
|
+
* is this same gesture at the declaration site; the fields do not move, so neither does the type.
|
|
121
|
+
*/
|
|
122
|
+
static declares(declarations: EntityDeclarations<Fields>) {
|
|
123
|
+
const addressed = EntityAdapterSet.of(declarations.adapters)?.fieldNames ?? [];
|
|
124
|
+
assertKnownKeys("declares", [...addressed, ...Object.keys(declarations.previous ?? {})], this.fields);
|
|
125
|
+
|
|
126
|
+
return Schema.subclass(this.definition.declaring(declarations));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* This schema holds rows of its own — every entity is one, and a derivation says so.
|
|
131
|
+
*
|
|
132
|
+
* An anchor is where a walk STOPS: `derivation.anchor` climbs to the nearest one, and what
|
|
133
|
+
* is cut from an anchor roots on it. Two anchors are two entities that happen to share a
|
|
134
|
+
* shape, never a hierarchy — nothing here subtypes, so a relation between them is `ref()`.
|
|
135
|
+
*/
|
|
136
|
+
static anchor() {
|
|
137
|
+
return Schema.subclass(this.definition.anchoring());
|
|
138
|
+
}
|
|
139
|
+
|
|
111
140
|
static partial() {
|
|
112
141
|
return Schema.subclass(this.definition.patched(this));
|
|
113
142
|
}
|
|
@@ -137,6 +166,7 @@ export class Schema {
|
|
|
137
166
|
adapters?: EntityAdapters<TFields>;
|
|
138
167
|
opts?: ValidateOptions;
|
|
139
168
|
previous?: PreviousNames<TFields>;
|
|
169
|
+
anchored?: boolean;
|
|
140
170
|
}): SchemaConstructor<TFields> {
|
|
141
171
|
return Schema.subclass(SchemaDefinition.stated(stated)) as unknown as SchemaConstructor<TFields>;
|
|
142
172
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Fields } from '../fields/Field.js';
|
|
2
|
-
import {
|
|
2
|
+
import { FieldSet } from '../fields/FieldSet.js';
|
|
3
|
+
import { type EntityDeclarations, type PreviousNames } from '../EntityDeclarations.js';
|
|
3
4
|
import { EntityAdapterSet, type EntityAdapters } from '../EntityAdapters.js';
|
|
4
5
|
import { SchemaDerivation } from './SchemaDerivation.js';
|
|
5
6
|
import { type ValidateOptions } from '../judge/options.js';
|
|
@@ -8,7 +9,7 @@ import type { SchemaView } from './SchemaView.js';
|
|
|
8
9
|
/**
|
|
9
10
|
* Everything a schema IS, apart from being a class whose instances are rows.
|
|
10
11
|
*
|
|
11
|
-
* The
|
|
12
|
+
* The members used to be that many statics assigned side by side, and every derivation
|
|
12
13
|
* re-threaded them by hand — which is how one of them came to be dropped from a list
|
|
13
14
|
* without anyone noticing. A transformation here returns a COMPLETE definition or it does
|
|
14
15
|
* not compile, so no gesture can mix the fields of one with the options of another.
|
|
@@ -23,6 +24,7 @@ export class SchemaDefinition {
|
|
|
23
24
|
readonly opts: ValidateOptions,
|
|
24
25
|
readonly previous: PreviousNames<Fields> | undefined,
|
|
25
26
|
readonly derivation: SchemaDerivation | undefined,
|
|
27
|
+
readonly anchored: boolean,
|
|
26
28
|
) {}
|
|
27
29
|
|
|
28
30
|
static stated(said: {
|
|
@@ -31,9 +33,34 @@ export class SchemaDefinition {
|
|
|
31
33
|
opts?: ValidateOptions;
|
|
32
34
|
previous?: PreviousNames<Fields>;
|
|
33
35
|
derivation?: SchemaDerivation;
|
|
36
|
+
anchored?: boolean;
|
|
34
37
|
}): SchemaDefinition {
|
|
35
38
|
return new SchemaDefinition(
|
|
36
|
-
said.fields, EntityAdapterSet.of(said.adapters)?.stated, said.opts ?? {}, said.previous, said.derivation,
|
|
39
|
+
said.fields, EntityAdapterSet.of(said.adapters)?.stated, said.opts ?? {}, said.previous, said.derivation, said.anchored ?? false,
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* What a schema states about ITSELF, folded into what it already states — one adapter
|
|
45
|
+
* entry per field wins the later spelling, and a unique group is stamped on its members.
|
|
46
|
+
*/
|
|
47
|
+
declaring(said: EntityDeclarations<Fields>): SchemaDefinition {
|
|
48
|
+
return new SchemaDefinition(
|
|
49
|
+
FieldSet.declared(this.fields, said.unique),
|
|
50
|
+
EntityAdapterSet.merged([this.adapters, said.adapters])?.stated,
|
|
51
|
+
this.opts,
|
|
52
|
+
said.previous ?? this.previous,
|
|
53
|
+
this.derivation,
|
|
54
|
+
this.anchored,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The same schema, holding rows of its own. A derivation is an answer until it says this.
|
|
60
|
+
*/
|
|
61
|
+
anchoring(): SchemaDefinition {
|
|
62
|
+
return new SchemaDefinition(
|
|
63
|
+
this.fields, this.adapters, this.opts, this.previous, this.derivation, true,
|
|
37
64
|
);
|
|
38
65
|
}
|
|
39
66
|
|
|
@@ -50,20 +77,21 @@ export class SchemaDefinition {
|
|
|
50
77
|
this.opts,
|
|
51
78
|
undefined,
|
|
52
79
|
this.origin(root).compose(survives),
|
|
80
|
+
false,
|
|
53
81
|
);
|
|
54
82
|
}
|
|
55
83
|
|
|
56
84
|
/** The same fields, judged as an update. */
|
|
57
85
|
patched(root: SchemaView): SchemaDefinition {
|
|
58
86
|
return new SchemaDefinition(
|
|
59
|
-
{ ...this.fields }, this.adapters, { ...this.opts, patch: true }, undefined, this.origin(root),
|
|
87
|
+
{ ...this.fields }, this.adapters, { ...this.opts, patch: true }, undefined, this.origin(root), false,
|
|
60
88
|
);
|
|
61
89
|
}
|
|
62
90
|
|
|
63
91
|
/** The added fields have no origin, so the derivation is unchanged: it speaks of the root. */
|
|
64
92
|
extended(extra: Fields, root: SchemaView): SchemaDefinition {
|
|
65
93
|
return new SchemaDefinition(
|
|
66
|
-
{ ...this.fields, ...extra }, this.adapters, this.opts, undefined, this.origin(root),
|
|
94
|
+
{ ...this.fields, ...extra }, this.adapters, this.opts, undefined, this.origin(root), false,
|
|
67
95
|
);
|
|
68
96
|
}
|
|
69
97
|
|
|
@@ -77,11 +105,16 @@ export class SchemaDefinition {
|
|
|
77
105
|
}
|
|
78
106
|
const adapters = EntityAdapterSet.merged(views.map((view) => view.getAdapters()))?.stated;
|
|
79
107
|
|
|
80
|
-
return new SchemaDefinition(fields, adapters, opts, undefined, undefined);
|
|
108
|
+
return new SchemaDefinition(fields, adapters, opts, undefined, undefined, false);
|
|
81
109
|
}
|
|
82
110
|
|
|
83
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* The origin this definition already carries, or the one `root` becomes. A schema that
|
|
113
|
+
* is an ANCHOR holds rows of its own, so what is cut from it roots on IT and not on its own origin.
|
|
114
|
+
*/
|
|
84
115
|
private origin(root: SchemaView): SchemaDerivation {
|
|
85
|
-
|
|
116
|
+
if (!this.anchored && this.derivation) return this.derivation;
|
|
117
|
+
|
|
118
|
+
return SchemaDerivation.first(root, this.fields);
|
|
86
119
|
}
|
|
87
120
|
}
|
|
@@ -35,6 +35,17 @@ export class SchemaDerivation {
|
|
|
35
35
|
return this.source.name;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* The anchor whose rows this describes — the nearest one going up, and a schema with no
|
|
40
|
+
* origin of its own is one. An answer borrows its rows; this says from whom. Whether
|
|
41
|
+
* those rows carry a key is a separate question: an anchor may have none.
|
|
42
|
+
*/
|
|
43
|
+
get anchor(): SchemaView {
|
|
44
|
+
const source = this.source;
|
|
45
|
+
|
|
46
|
+
return source.anchored !== undefined || !source.derivation ? source : source.derivation.anchor;
|
|
47
|
+
}
|
|
48
|
+
|
|
38
49
|
/**
|
|
39
50
|
* What the ROOT calls `key`, translated to the name it carries here — `undefined` when a
|
|
40
51
|
* cut dropped it. A reader that needs something the root declared about a field asks the
|
package/src/schema/SchemaView.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface SchemaView<TFields extends Fields = Fields> {
|
|
|
17
17
|
readonly derivation?: SchemaDerivation;
|
|
18
18
|
/** What its fields were called before, keyed by the names they carry now. */
|
|
19
19
|
readonly previous?: PreviousNames<TFields>;
|
|
20
|
+
/** Does it hold rows of its own? False on a derivation means an answer. */
|
|
21
|
+
readonly anchored?: boolean;
|
|
20
22
|
getFields(): TFields;
|
|
21
23
|
getAdapters(): EntityAdapters<TFields> | undefined;
|
|
22
24
|
getUnique(): CompositeUnique<TFields> | undefined;
|