@fougere/schema 0.11.0-alpha.0 → 0.12.1-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/Schema.d.ts +1 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +4 -3
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaConstructor.d.ts +3 -4
- package/dist/SchemaConstructor.d.ts.map +1 -1
- package/dist/SchemaDefinition.d.ts.map +1 -1
- package/dist/SchemaDefinition.js +2 -1
- package/dist/SchemaDefinition.js.map +1 -1
- package/dist/SchemaError.d.ts +4 -0
- package/dist/SchemaError.d.ts.map +1 -0
- package/dist/SchemaError.js +7 -0
- package/dist/SchemaError.js.map +1 -0
- package/dist/SchemaView.d.ts +1 -1
- package/dist/SchemaView.d.ts.map +1 -1
- package/dist/axis/Axes.d.ts +16 -0
- package/dist/axis/Axes.d.ts.map +1 -0
- package/dist/axis/Axes.js +27 -0
- package/dist/axis/Axes.js.map +1 -0
- package/dist/axis/Axis.d.ts +5 -9
- package/dist/axis/Axis.d.ts.map +1 -1
- package/dist/axis/Axis.js +1 -10
- package/dist/axis/Axis.js.map +1 -1
- package/dist/axis/boundary/Boundary.d.ts +29 -3
- package/dist/axis/boundary/Boundary.d.ts.map +1 -1
- package/dist/axis/boundary/Boundary.js +15 -11
- package/dist/axis/boundary/Boundary.js.map +1 -1
- package/dist/axis/boundary/Decoder.d.ts +10 -7
- package/dist/axis/boundary/Decoder.d.ts.map +1 -1
- package/dist/axis/boundary/Decoder.js +2 -2
- package/dist/axis/boundary/Decoder.js.map +1 -1
- package/dist/axis/lifecycle/Generators.d.ts +5 -5
- package/dist/axis/lifecycle/Generators.d.ts.map +1 -1
- package/dist/axis/lifecycle/Generators.js +5 -15
- package/dist/axis/lifecycle/Generators.js.map +1 -1
- package/dist/axis/lifecycle/Lifecycle.d.ts +18 -6
- package/dist/axis/lifecycle/Lifecycle.d.ts.map +1 -1
- package/dist/axis/lifecycle/Lifecycle.js +29 -14
- package/dist/axis/lifecycle/Lifecycle.js.map +1 -1
- package/dist/axis/lifecycle/apply.d.ts.map +1 -1
- package/dist/axis/lifecycle/apply.js +5 -22
- package/dist/axis/lifecycle/apply.js.map +1 -1
- package/dist/axis/role/Role.d.ts +18 -6
- package/dist/axis/role/Role.d.ts.map +1 -1
- package/dist/axis/role/Role.js +30 -16
- package/dist/axis/role/Role.js.map +1 -1
- package/dist/axis/shape/Shape.d.ts +2 -2
- package/dist/axis/shape/Shape.d.ts.map +1 -1
- package/dist/axis/shape/Shape.js +2 -2
- package/dist/axis/shape/Shape.js.map +1 -1
- package/dist/axis/shape/{Formats.d.ts → StringFormats.d.ts} +3 -3
- package/dist/axis/shape/StringFormats.d.ts.map +1 -0
- package/dist/axis/shape/{Formats.js → StringFormats.js} +3 -3
- package/dist/axis/shape/StringFormats.js.map +1 -0
- package/dist/entity/EntityAdapterSet.d.ts.map +1 -1
- package/dist/entity/EntityAdapterSet.js +3 -2
- package/dist/entity/EntityAdapterSet.js.map +1 -1
- package/dist/entity.d.ts +0 -1
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +0 -1
- package/dist/entity.js.map +1 -1
- package/dist/field/Field.d.ts +11 -5
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +10 -7
- package/dist/field/Field.js.map +1 -1
- package/dist/field/FieldFormat.d.ts +9 -0
- package/dist/field/FieldFormat.d.ts.map +1 -0
- package/dist/field/FieldFormat.js +12 -0
- package/dist/field/FieldFormat.js.map +1 -0
- package/dist/field/FieldSet.d.ts.map +1 -1
- package/dist/field/FieldSet.js +5 -3
- package/dist/field/FieldSet.js.map +1 -1
- package/dist/field/FougereFieldAxes.d.ts +3 -0
- package/dist/field/FougereFieldAxes.d.ts.map +1 -0
- package/dist/field/FougereFieldAxes.js +2 -0
- package/dist/field/FougereFieldAxes.js.map +1 -0
- package/dist/field/Meta.d.ts +5 -3
- package/dist/field/Meta.d.ts.map +1 -1
- package/dist/field/Meta.js +2 -1
- package/dist/field/Meta.js.map +1 -1
- package/dist/field/Values.d.ts +6 -0
- package/dist/field/Values.d.ts.map +1 -0
- package/dist/field/Values.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/Format.d.ts +56 -0
- package/dist/lib/Format.d.ts.map +1 -0
- package/dist/lib/Format.js +95 -0
- package/dist/lib/Format.js.map +1 -0
- package/dist/lib/JsonSchema.d.ts +2 -0
- package/dist/lib/JsonSchema.d.ts.map +1 -0
- package/dist/lib/JsonSchema.js +2 -0
- package/dist/lib/JsonSchema.js.map +1 -0
- package/dist/lib/Registry.d.ts +5 -4
- package/dist/lib/Registry.d.ts.map +1 -1
- package/dist/lib/Registry.js +14 -8
- package/dist/lib/Registry.js.map +1 -1
- package/dist/lib/ValidationResult.d.ts +2 -0
- package/dist/lib/ValidationResult.d.ts.map +1 -1
- package/dist/lib/ValidationResult.js +6 -0
- package/dist/lib/ValidationResult.js.map +1 -1
- package/dist/lib/Verdict.d.ts +12 -0
- package/dist/lib/Verdict.d.ts.map +1 -0
- package/dist/lib/Verdict.js +2 -0
- package/dist/lib/Verdict.js.map +1 -0
- package/dist/projection/Cases.js +52 -54
- package/dist/projection/Cases.js.map +1 -1
- package/dist/projection/Visibility.d.ts +11 -0
- package/dist/projection/Visibility.d.ts.map +1 -1
- package/dist/projection/Visibility.js +22 -0
- package/dist/projection/Visibility.js.map +1 -1
- package/dist/projection/card/Bundle.d.ts.map +1 -1
- package/dist/projection/card/Bundle.js +2 -1
- package/dist/projection/card/Bundle.js.map +1 -1
- package/dist/projection/card/Card.d.ts +1 -1
- package/dist/projection/card/Card.d.ts.map +1 -1
- package/dist/projection/card/Card.js +19 -11
- package/dist/projection/card/Card.js.map +1 -1
- package/dist/projection/card/CardForm.d.ts +7 -0
- package/dist/projection/card/CardForm.d.ts.map +1 -0
- package/dist/projection/card/CardForm.js +2 -0
- package/dist/projection/card/CardForm.js.map +1 -0
- package/dist/projection/card/CardForms.d.ts +10 -0
- package/dist/projection/card/CardForms.d.ts.map +1 -0
- package/dist/projection/card/CardForms.js +12 -0
- package/dist/projection/card/CardForms.js.map +1 -0
- package/dist/projection/card/Change.d.ts +2 -2
- package/dist/projection/card/Change.d.ts.map +1 -1
- package/dist/projection/card/Diff.d.ts.map +1 -1
- package/dist/projection/card/Diff.js +36 -39
- package/dist/projection/card/Diff.js.map +1 -1
- package/dist/projection/card/FieldExtension.d.ts +4 -2
- package/dist/projection/card/FieldExtension.d.ts.map +1 -1
- package/dist/projection/card/RoleDescriptor.d.ts +9 -2
- package/dist/projection/card/RoleDescriptor.d.ts.map +1 -1
- package/dist/projection/card/RoleDescriptor.js +40 -1
- package/dist/projection/card/RoleDescriptor.js.map +1 -1
- package/dist/projection/card/admission.d.ts +0 -14
- package/dist/projection/card/admission.d.ts.map +1 -1
- package/dist/projection/card/admission.js +2 -21
- package/dist/projection/card/admission.js.map +1 -1
- package/dist/validator/FieldDeclarationValidator.d.ts.map +1 -1
- package/dist/validator/FieldDeclarationValidator.js +5 -17
- package/dist/validator/FieldDeclarationValidator.js.map +1 -1
- package/dist/validator/FieldValueValidator.d.ts +3 -3
- package/dist/validator/FieldValueValidator.d.ts.map +1 -1
- package/dist/validator/FieldValueValidator.js +18 -35
- package/dist/validator/FieldValueValidator.js.map +1 -1
- package/dist/validator/InputValidator.d.ts +3 -0
- package/dist/validator/InputValidator.d.ts.map +1 -1
- package/dist/validator/InputValidator.js +28 -31
- package/dist/validator/InputValidator.js.map +1 -1
- package/dist/validator/JsonSchemaValidator.d.ts +23 -0
- package/dist/validator/JsonSchemaValidator.d.ts.map +1 -0
- package/dist/validator/JsonSchemaValidator.js +113 -0
- package/dist/validator/JsonSchemaValidator.js.map +1 -0
- package/dist/vocabulary/primitive/list.d.ts.map +1 -1
- package/dist/vocabulary/primitive/list.js +2 -1
- package/dist/vocabulary/primitive/list.js.map +1 -1
- package/dist/vocabulary/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary/vocabulary.js +9 -6
- package/dist/vocabulary/vocabulary.js.map +1 -1
- package/package.json +1 -1
- package/src/Schema.ts +6 -4
- package/src/SchemaConstructor.ts +4 -4
- package/src/SchemaDefinition.ts +2 -1
- package/src/SchemaError.ts +7 -0
- package/src/SchemaView.ts +1 -1
- package/src/axis/Axes.ts +34 -0
- package/src/axis/Axis.ts +5 -20
- package/src/axis/boundary/Boundary.ts +26 -13
- package/src/axis/boundary/Decoder.ts +5 -4
- package/src/axis/lifecycle/Generators.ts +6 -18
- package/src/axis/lifecycle/Lifecycle.ts +41 -19
- package/src/axis/lifecycle/apply.ts +13 -21
- package/src/axis/role/Role.ts +35 -19
- package/src/axis/shape/Shape.ts +3 -3
- package/src/axis/shape/{Formats.ts → StringFormats.ts} +2 -2
- package/src/entity/EntityAdapterSet.ts +3 -2
- package/src/entity.ts +0 -1
- package/src/field/Field.ts +23 -12
- package/src/field/FieldFormat.ts +18 -0
- package/src/field/FieldSet.ts +5 -3
- package/src/field/FougereFieldAxes.ts +2 -0
- package/src/field/Meta.ts +5 -3
- package/src/{Values.ts → field/Values.ts} +2 -2
- package/src/index.ts +8 -3
- package/src/lib/Format.ts +139 -0
- package/src/lib/JsonSchema.ts +1 -0
- package/src/lib/Registry.ts +18 -9
- package/src/lib/ValidationResult.ts +8 -0
- package/src/lib/Verdict.ts +10 -0
- package/src/projection/Cases.ts +61 -57
- package/src/projection/Visibility.ts +22 -0
- package/src/projection/card/Bundle.ts +2 -1
- package/src/projection/card/Card.ts +24 -13
- package/src/projection/card/CardForm.ts +8 -0
- package/src/projection/card/CardForms.ts +13 -0
- package/src/projection/card/Change.ts +2 -2
- package/src/projection/card/Diff.ts +44 -44
- package/src/projection/card/FieldExtension.ts +5 -2
- package/src/projection/card/RoleDescriptor.ts +48 -2
- package/src/projection/card/admission.ts +2 -34
- package/src/validator/FieldDeclarationValidator.ts +5 -17
- package/src/validator/FieldValueValidator.ts +22 -46
- package/src/validator/InputValidator.ts +30 -32
- package/src/validator/JsonSchemaValidator.ts +142 -0
- package/src/vocabulary/primitive/list.ts +2 -1
- package/src/vocabulary/vocabulary.ts +9 -6
- package/dist/PartialValues.d.ts +0 -4
- package/dist/PartialValues.d.ts.map +0 -1
- package/dist/PartialValues.js +0 -2
- package/dist/PartialValues.js.map +0 -1
- package/dist/Values.d.ts +0 -6
- package/dist/Values.d.ts.map +0 -1
- package/dist/Values.js.map +0 -1
- package/dist/axis/boundary/Boundaries.d.ts +0 -17
- package/dist/axis/boundary/Boundaries.d.ts.map +0 -1
- package/dist/axis/boundary/Boundaries.js +0 -25
- package/dist/axis/boundary/Boundaries.js.map +0 -1
- package/dist/axis/boundary/BoundaryAxis.d.ts +0 -4
- package/dist/axis/boundary/BoundaryAxis.d.ts.map +0 -1
- package/dist/axis/boundary/BoundaryAxis.js +0 -30
- package/dist/axis/boundary/BoundaryAxis.js.map +0 -1
- package/dist/axis/boundary/BoundaryRef.d.ts +0 -3
- package/dist/axis/boundary/BoundaryRef.d.ts.map +0 -1
- package/dist/axis/boundary/BoundaryRef.js +0 -2
- package/dist/axis/boundary/BoundaryRef.js.map +0 -1
- package/dist/axis/boundary/BoundaryRules.d.ts +0 -9
- package/dist/axis/boundary/BoundaryRules.d.ts.map +0 -1
- package/dist/axis/boundary/BoundaryRules.js +0 -2
- package/dist/axis/boundary/BoundaryRules.js.map +0 -1
- package/dist/axis/lifecycle/Clock.d.ts +0 -18
- package/dist/axis/lifecycle/Clock.d.ts.map +0 -1
- package/dist/axis/lifecycle/Clock.js +0 -25
- package/dist/axis/lifecycle/Clock.js.map +0 -1
- package/dist/axis/lifecycle/LifecycleAxis.d.ts +0 -4
- package/dist/axis/lifecycle/LifecycleAxis.d.ts.map +0 -1
- package/dist/axis/lifecycle/LifecycleAxis.js +0 -52
- package/dist/axis/lifecycle/LifecycleAxis.js.map +0 -1
- package/dist/axis/lifecycle/LifecycleRules.d.ts +0 -12
- package/dist/axis/lifecycle/LifecycleRules.d.ts.map +0 -1
- package/dist/axis/lifecycle/LifecycleRules.js +0 -3
- package/dist/axis/lifecycle/LifecycleRules.js.map +0 -1
- package/dist/axis/role/RoleAxis.d.ts +0 -5
- package/dist/axis/role/RoleAxis.d.ts.map +0 -1
- package/dist/axis/role/RoleAxis.js +0 -93
- package/dist/axis/role/RoleAxis.js.map +0 -1
- package/dist/axis/role/RoleRules.d.ts +0 -8
- package/dist/axis/role/RoleRules.d.ts.map +0 -1
- package/dist/axis/role/RoleRules.js +0 -2
- package/dist/axis/role/RoleRules.js.map +0 -1
- package/dist/axis/shape/Formats.d.ts.map +0 -1
- package/dist/axis/shape/Formats.js.map +0 -1
- package/dist/lib/Checked.d.ts +0 -11
- package/dist/lib/Checked.d.ts.map +0 -1
- package/dist/lib/Checked.js +0 -2
- package/dist/lib/Checked.js.map +0 -1
- package/dist/projection/card/RelationDescriptor.d.ts +0 -5
- package/dist/projection/card/RelationDescriptor.d.ts.map +0 -1
- package/dist/projection/card/RelationDescriptor.js +0 -2
- package/dist/projection/card/RelationDescriptor.js.map +0 -1
- package/dist/projection/standard.d.ts +0 -14
- package/dist/projection/standard.d.ts.map +0 -1
- package/dist/projection/standard.js +0 -2
- package/dist/projection/standard.js.map +0 -1
- package/dist/validator/AdapterFieldValidator.d.ts +0 -14
- package/dist/validator/AdapterFieldValidator.d.ts.map +0 -1
- package/dist/validator/AdapterFieldValidator.js +0 -36
- package/dist/validator/AdapterFieldValidator.js.map +0 -1
- package/src/PartialValues.ts +0 -4
- package/src/axis/boundary/Boundaries.ts +0 -36
- package/src/axis/boundary/BoundaryAxis.ts +0 -32
- package/src/axis/boundary/BoundaryRef.ts +0 -3
- package/src/axis/boundary/BoundaryRules.ts +0 -4
- package/src/axis/lifecycle/Clock.ts +0 -26
- package/src/axis/lifecycle/LifecycleAxis.ts +0 -55
- package/src/axis/lifecycle/LifecycleRules.ts +0 -9
- package/src/axis/role/RoleAxis.ts +0 -104
- package/src/axis/role/RoleRules.ts +0 -8
- package/src/lib/Checked.ts +0 -5
- package/src/projection/card/RelationDescriptor.ts +0 -3
- package/src/projection/standard.ts +0 -13
- package/src/validator/AdapterFieldValidator.ts +0 -40
- /package/dist/{Values.js → field/Values.js} +0 -0
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { admitWire, oneOfTokens } from '../../projection/card/admission.js';
|
|
2
|
-
import { isObject, shown } from '../../lib/utils.js';
|
|
3
|
-
import { CREATE_TOKENS, UPDATE_TOKENS } from './LifecycleRules.js';
|
|
4
|
-
export const lifecycleAxis = {
|
|
5
|
-
slot: 'lifecycle',
|
|
6
|
-
validator(value, errors) {
|
|
7
|
-
if (!isObject(value)) {
|
|
8
|
-
errors.push({ path: ['lifecycle'], message: `Expected an object — got ${shown(value)}` });
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
if (value.create !== undefined)
|
|
12
|
-
validateCreate(value.create, errors);
|
|
13
|
-
if (value.update !== undefined && !oneOfTokens(value.update, UPDATE_TOKENS)) {
|
|
14
|
-
errors.push({
|
|
15
|
-
path: ['lifecycle', 'update'],
|
|
16
|
-
message: `Expected 'now' or 'forbidden' — got ${shown(value.update)}`,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
describe: (value) => value,
|
|
21
|
-
reconstruct: (wire) => {
|
|
22
|
-
admitWire(lifecycleAxis.validator, wire, 'lifecycle');
|
|
23
|
-
return wire;
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Judges the create rule, whose four legal forms are stated here and nowhere else.
|
|
28
|
-
* FR : juge la règle de création, dont les quatre formes légales sont énoncées ici seulement.
|
|
29
|
-
* `create: 3` → `Expected 'now', 'optional', { value } or { generate } — got 3`
|
|
30
|
-
*/
|
|
31
|
-
function validateCreate(rule, errors) {
|
|
32
|
-
if (oneOfTokens(rule, CREATE_TOKENS))
|
|
33
|
-
return;
|
|
34
|
-
if (isObject(rule)) {
|
|
35
|
-
if ('value' in rule)
|
|
36
|
-
return;
|
|
37
|
-
if ('generate' in rule) {
|
|
38
|
-
if (typeof rule.generate !== 'string') {
|
|
39
|
-
errors.push({
|
|
40
|
-
path: ['lifecycle', 'create', 'generate'],
|
|
41
|
-
message: `Expected a generator name — got ${shown(rule.generate)}`,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
errors.push({
|
|
48
|
-
path: ['lifecycle', 'create'],
|
|
49
|
-
message: `Expected 'now', 'optional', { value } or { generate } — got ${shown(rule)}`,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=LifecycleAxis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LifecycleAxis.js","sourceRoot":"","sources":["../../../src/axis/lifecycle/LifecycleAxis.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGnE,MAAM,CAAC,MAAM,aAAa,GAAyC;IACjE,IAAI,EAAE,WAAW;IAEjB,SAAS,CAAC,KAAK,EAAE,MAAM;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,4BAA4B,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;gBAC7B,OAAO,EAAE,uCAAuC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;QACpB,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAa,EAAE,MAAyB;IAC9D,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,OAAO;IAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO;QAC5B,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;oBACzC,OAAO,EAAE,mCAAmC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;iBACnE,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;QAC7B,OAAO,EAAE,+DAA+D,KAAK,CAAC,IAAI,CAAC,EAAE;KACtF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { GeneratorRef } from './Generators.js';
|
|
2
|
-
export declare const CREATE_TOKENS: readonly ['now', 'optional'];
|
|
3
|
-
export declare const UPDATE_TOKENS: readonly ['now', 'forbidden'];
|
|
4
|
-
export interface LifecycleRules {
|
|
5
|
-
create?: {
|
|
6
|
-
value: unknown;
|
|
7
|
-
} | {
|
|
8
|
-
generate: GeneratorRef;
|
|
9
|
-
} | (typeof CREATE_TOKENS)[number];
|
|
10
|
-
update?: (typeof UPDATE_TOKENS)[number];
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=LifecycleRules.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LifecycleRules.d.ts","sourceRoot":"","sources":["../../../src/axis/lifecycle/LifecycleRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,aAAa,YAAI,KAAK,EAAE,UAAU,CAAU,CAAC;AAC1D,eAAO,MAAM,aAAa,YAAI,KAAK,EAAE,WAAW,CAAU,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1F,MAAM,CAAC,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;CACzC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LifecycleRules.js","sourceRoot":"","sources":["../../../src/axis/lifecycle/LifecycleRules.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,CAAU,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,CAAU,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Axis } from '../Axis.js';
|
|
2
|
-
import { type RoleRules } from './RoleRules.js';
|
|
3
|
-
import type { RoleDescriptor } from '../../projection/card/RoleDescriptor.js';
|
|
4
|
-
export declare const roleAxis: Axis<RoleRules, RoleDescriptor>;
|
|
5
|
-
//# sourceMappingURL=RoleAxis.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoleAxis.d.ts","sourceRoot":"","sources":["../../../src/axis/role/RoleAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAgEpD,CAAC"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { refuse, oneOfTokens } from '../../projection/card/admission.js';
|
|
2
|
-
import { isObject, lowerFirst, shown } from '../../lib/utils.js';
|
|
3
|
-
import { ON_DELETE, RELATION_KINDS } from './Relation.js';
|
|
4
|
-
export const roleAxis = {
|
|
5
|
-
slot: 'role',
|
|
6
|
-
validator(value, errors) {
|
|
7
|
-
if (!isObject(value)) {
|
|
8
|
-
errors.push({ path: ['role'], message: `Expected an object — got ${shown(value)}` });
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
for (const flag of ['primary', 'index', 'unique']) {
|
|
12
|
-
if (value[flag] !== undefined && typeof value[flag] !== 'boolean') {
|
|
13
|
-
errors.push({
|
|
14
|
-
path: ['role', flag],
|
|
15
|
-
message: `Expected a boolean — got ${shown(value[flag])}`,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
if (value.relation !== undefined)
|
|
20
|
-
validateRelation(value.relation, errors);
|
|
21
|
-
},
|
|
22
|
-
/** A card carries the target's NAME: a class cannot cross a process boundary. */
|
|
23
|
-
describe(role, key) {
|
|
24
|
-
const descriptor = {};
|
|
25
|
-
if (role.primary)
|
|
26
|
-
descriptor.primary = true;
|
|
27
|
-
if (role.unique)
|
|
28
|
-
descriptor.unique = [[key]];
|
|
29
|
-
if (role.index)
|
|
30
|
-
descriptor.index = true;
|
|
31
|
-
if (role.relation) {
|
|
32
|
-
const target = role.relation.to();
|
|
33
|
-
descriptor.relation = {
|
|
34
|
-
to: lowerFirst(target.name ?? ''),
|
|
35
|
-
kind: role.relation.kind,
|
|
36
|
-
...(role.relation.onDelete ? { onDelete: role.relation.onDelete } : {}),
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
return Object.keys(descriptor).length ? descriptor : undefined;
|
|
40
|
-
},
|
|
41
|
-
reconstruct(wire, resolve) {
|
|
42
|
-
const rules = {};
|
|
43
|
-
if (wire.primary)
|
|
44
|
-
rules.primary = true;
|
|
45
|
-
if (wire.unique?.some((group) => group.length === 1))
|
|
46
|
-
rules.unique = true;
|
|
47
|
-
if (wire.index)
|
|
48
|
-
rules.index = true;
|
|
49
|
-
if (wire.relation) {
|
|
50
|
-
// `validator` cannot serve here: it demands `() => Post` where a card carries a name.
|
|
51
|
-
if (!oneOfTokens(wire.relation.kind, RELATION_KINDS)) {
|
|
52
|
-
refuse(`role.relation.kind is ${JSON.stringify(wire.relation.kind)}`, `Expected one of ${RELATION_KINDS.join(', ')}.`);
|
|
53
|
-
}
|
|
54
|
-
if (wire.relation.onDelete !== undefined && !oneOfTokens(wire.relation.onDelete, ON_DELETE)) {
|
|
55
|
-
refuse(`role.relation.onDelete is ${JSON.stringify(wire.relation.onDelete)}`, `Expected one of ${ON_DELETE.join(', ')}.`);
|
|
56
|
-
}
|
|
57
|
-
const name = wire.relation.to;
|
|
58
|
-
rules.relation = {
|
|
59
|
-
to: () => (resolve?.(name) ?? { name }),
|
|
60
|
-
kind: wire.relation.kind,
|
|
61
|
-
...(wire.relation.onDelete ? { onDelete: wire.relation.onDelete } : {}),
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
return rules;
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Judges a relation where `to` is a thunk; a card states a NAME, resolved by `toSchema` first.
|
|
69
|
-
* FR : juge une relation dont `to` est une fonction ; une carte y met un NOM, résolu avant.
|
|
70
|
-
* `{ to: User, kind: 'one' }` → `Expected a function returning the target entity, … () => Post`
|
|
71
|
-
*/
|
|
72
|
-
function validateRelation(relation, errors) {
|
|
73
|
-
if (!isObject(relation)) {
|
|
74
|
-
errors.push({ path: ['role', 'relation'], message: `Expected an object — got ${shown(relation)}` });
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if (!oneOfTokens(relation.kind, RELATION_KINDS)) {
|
|
78
|
-
errors.push({
|
|
79
|
-
path: ['role', 'relation', 'kind'],
|
|
80
|
-
message: `Expected 'one' or 'many' — got ${shown(relation.kind)}`,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
if (typeof relation.to !== 'function') {
|
|
84
|
-
errors.push({ path: ['role', 'relation', 'to'], message: 'Expected a function returning the target entity, such as () => Post' });
|
|
85
|
-
}
|
|
86
|
-
if (relation.onDelete !== undefined && !oneOfTokens(relation.onDelete, ON_DELETE)) {
|
|
87
|
-
errors.push({
|
|
88
|
-
path: ['role', 'relation', 'onDelete'],
|
|
89
|
-
message: `Expected 'cascade', 'restrict' or 'set null' — got ${shown(relation.onDelete)}`,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=RoleAxis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoleAxis.js","sourceRoot":"","sources":["../../../src/axis/role/RoleAxis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoleRules.d.ts","sourceRoot":"","sources":["../../../src/axis/role/RoleRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoleRules.js","sourceRoot":"","sources":["../../../src/axis/role/RoleRules.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Formats.d.ts","sourceRoot":"","sources":["../../../src/axis/shape/Formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,OAAO,2BAA0C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Formats.js","sourceRoot":"","sources":["../../../src/axis/shape/Formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAkB,QAAQ,CAAC,CAAC"}
|
package/dist/lib/Checked.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A field's verdict. `path` is where INSIDE the value the refusal happened — empty when the
|
|
3
|
-
* field itself is refused, `['street']` when the shape below it is.
|
|
4
|
-
*/
|
|
5
|
-
export type Checked = {
|
|
6
|
-
value: unknown;
|
|
7
|
-
} | {
|
|
8
|
-
error: string;
|
|
9
|
-
path?: readonly string[];
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=Checked.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Checked.d.ts","sourceRoot":"","sources":["../../src/lib/Checked.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC"}
|
package/dist/lib/Checked.js
DELETED
package/dist/lib/Checked.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Checked.js","sourceRoot":"","sources":["../../src/lib/Checked.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RelationDescriptor.d.ts","sourceRoot":"","sources":["../../../src/projection/card/RelationDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RelationDescriptor.js","sourceRoot":"","sources":["../../../src/projection/card/RelationDescriptor.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
-
* Documented: [Standard Schema](https://fougere.dev/docs/schema/standard-schema).
|
|
12
|
-
*/
|
|
13
|
-
export type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
14
|
-
//# sourceMappingURL=standard.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/projection/standard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/projection/standard.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Shape } from '../axis/shape/Shape.js';
|
|
2
|
-
/**
|
|
3
|
-
* The format is DATA, not a TypeScript interface: an interface is erased before a JS
|
|
4
|
-
* caller, a config or a card from another language could be measured against it.
|
|
5
|
-
*/
|
|
6
|
-
export declare class AdapterFieldValidator {
|
|
7
|
-
private readonly validator;
|
|
8
|
-
private constructor();
|
|
9
|
-
/** Compiled once, at the adapter's own module load. */
|
|
10
|
-
static of(format: Shape): AdapterFieldValidator;
|
|
11
|
-
/** `Post.adapters.sql.body.columnType: Property "postgre" does not match …` */
|
|
12
|
-
assert(entries: unknown, path: string): void;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=AdapterFieldValidator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdapterFieldValidator.d.ts","sourceRoot":"","sources":["../../src/validator/AdapterFieldValidator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAGpD;;;GAGG;AACH,qBAAa,qBAAqB;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS;IAA9C,OAAO,eAAsD;IAE7D,uDAAuD;IACvD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,GAAG,qBAAqB,CAE9C;IAED,+EAA+E;IAC/E,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAqB3C;CACF"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Validator } from '@cfworker/json-schema';
|
|
2
|
-
import { isObject } from '../lib/utils.js';
|
|
3
|
-
/**
|
|
4
|
-
* The format is DATA, not a TypeScript interface: an interface is erased before a JS
|
|
5
|
-
* caller, a config or a card from another language could be measured against it.
|
|
6
|
-
*/
|
|
7
|
-
export class AdapterFieldValidator {
|
|
8
|
-
validator;
|
|
9
|
-
constructor(validator) {
|
|
10
|
-
this.validator = validator;
|
|
11
|
-
}
|
|
12
|
-
/** Compiled once, at the adapter's own module load. */
|
|
13
|
-
static of(format) {
|
|
14
|
-
return new AdapterFieldValidator(new Validator(format, '2020-12', true));
|
|
15
|
-
}
|
|
16
|
-
/** `Post.adapters.sql.body.columnType: Property "postgre" does not match …` */
|
|
17
|
-
assert(entries, path) {
|
|
18
|
-
if (entries === undefined)
|
|
19
|
-
return;
|
|
20
|
-
if (!isObject(entries)) {
|
|
21
|
-
throw new Error(`${path}: expected an object keyed by field name, got ${typeof entries}.`);
|
|
22
|
-
}
|
|
23
|
-
for (const [field, entry] of Object.entries(entries)) {
|
|
24
|
-
const verdict = this.validator.validate(entry);
|
|
25
|
-
if (verdict.valid)
|
|
26
|
-
continue;
|
|
27
|
-
// The engine reports outermost first and ends on `False boolean schema`, which names
|
|
28
|
-
// nothing. The last unit above that one is the one carrying the offending key.
|
|
29
|
-
const units = verdict.errors.filter((unit) => unit.keyword !== 'false');
|
|
30
|
-
const failure = units[units.length - 1] ?? verdict.errors[0];
|
|
31
|
-
const nested = (failure?.instanceLocation ?? '#').slice(1).replaceAll('/', '.');
|
|
32
|
-
throw new Error(`${path}.${field}${nested}: ${failure?.error ?? 'does not match the format'}`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=AdapterFieldValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdapterFieldValidator.js","sourceRoot":"","sources":["../../src/validator/AdapterFieldValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACK,SAAS;IAA9C,YAAqC,SAAoB;yBAApB,SAAS;IAAc,CAAC;IAE7D,uDAAuD;IACvD,MAAM,CAAC,EAAE,CAAC,MAAa;QACrB,OAAO,IAAI,qBAAqB,CAAC,IAAI,SAAS,CAAC,MAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,+EAA+E;IAC/E,MAAM,CAAC,OAAgB,EAAE,IAAY;QACnC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAElC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,iDAAiD,OAAO,OAAO,GAAG,CAC1E,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,OAAO,CAAC,KAAK;gBAAE,SAAS;YAE5B,qFAAqF;YACrF,+EAA+E;YAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,gBAAgB,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAEhF,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,KAAK,GAAG,MAAM,KAAK,OAAO,EAAE,KAAK,IAAI,2BAA2B,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;CACF"}
|
package/src/PartialValues.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { Decoder } from './Decoder.js';
|
|
2
|
-
import type { Encoder } from './Encoder.js';
|
|
3
|
-
import type { BoundaryRules } from './BoundaryRules.js';
|
|
4
|
-
import { Registry } from '../../lib/Registry.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* `decoders` for a value coming in, `encoders` for one going out, `aliases` for the word
|
|
8
|
-
* that names a pair. Three registries, so a codec is never half declared.
|
|
9
|
-
* FR : `decoders` à l'entrée, `encoders` à la sortie, `aliases` pour le mot qui nomme la paire.
|
|
10
|
-
* `Boundaries.aliases.register('isoDate', { in: { decode: 'isoDate' }, out: { encode: 'isoDate' } })`
|
|
11
|
-
* → a field saying `boundary: 'isoDate'` decodes to a `Date` and leaves as a string
|
|
12
|
-
*/
|
|
13
|
-
export const Boundaries = {
|
|
14
|
-
decoders: new Registry<Decoder>(
|
|
15
|
-
'boundary decoder',
|
|
16
|
-
'call Boundaries.decoders.register(name, fn)',
|
|
17
|
-
),
|
|
18
|
-
encoders: new Registry<Encoder>(
|
|
19
|
-
'boundary encoder',
|
|
20
|
-
'call Boundaries.encoders.register(name, fn)',
|
|
21
|
-
),
|
|
22
|
-
aliases: new Registry<BoundaryRules>('boundary alias'),
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
Boundaries.decoders.register('isoDate', (value) => {
|
|
26
|
-
if (value instanceof Date) return { value };
|
|
27
|
-
if (typeof value === 'string') {
|
|
28
|
-
const date = new Date(value);
|
|
29
|
-
return Number.isNaN(date.getTime()) ? { error: 'Invalid date' } : { value: date };
|
|
30
|
-
}
|
|
31
|
-
return { error: 'Expected a date' };
|
|
32
|
-
});
|
|
33
|
-
Boundaries.encoders.register('isoDate', (value) =>
|
|
34
|
-
value instanceof Date ? value.toISOString() : value,
|
|
35
|
-
);
|
|
36
|
-
Boundaries.aliases.register('isoDate', { in: { decode: 'isoDate' }, out: { encode: 'isoDate' } });
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { Axis } from '../Axis.js';
|
|
2
|
-
import { admitWire } from '../../projection/card/admission.js';
|
|
3
|
-
import { isObject, shown } from '../../lib/utils.js';
|
|
4
|
-
import type { BoundaryRef } from './BoundaryRef.js';
|
|
5
|
-
|
|
6
|
-
export const boundaryAxis: Axis<BoundaryRef, BoundaryRef> = {
|
|
7
|
-
slot: 'boundary',
|
|
8
|
-
|
|
9
|
-
validator(value, errors) {
|
|
10
|
-
if (typeof value === 'string') return;
|
|
11
|
-
if (!isObject(value)) {
|
|
12
|
-
errors.push({
|
|
13
|
-
path: ['boundary'],
|
|
14
|
-
message: `Expected an alias name or { in, out } — got ${shown(value)}`,
|
|
15
|
-
});
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
for (const [side, verb] of [['in', 'decode'], ['out', 'encode']] as const) {
|
|
19
|
-
const rule = value[side];
|
|
20
|
-
if (rule === undefined || rule === 'closed') continue;
|
|
21
|
-
if (!isObject(rule) || typeof rule[verb] !== 'string') {
|
|
22
|
-
errors.push({ path: ['boundary', side], message: `Expected 'closed' or { ${verb}: <name> }` });
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
|
|
27
|
-
describe: (value) => value,
|
|
28
|
-
reconstruct: (wire) => {
|
|
29
|
-
admitWire(boundaryAxis.validator, wire, 'boundary');
|
|
30
|
-
return wire;
|
|
31
|
-
},
|
|
32
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What "now" means, for the two functions that stamp it.
|
|
3
|
-
*
|
|
4
|
-
* The ONE place either of them reads the time, which is what makes it substitutable at
|
|
5
|
-
* all: `created()`, `updated()` and `create: 'now'` are realized through this and nowhere
|
|
6
|
-
* else, so a test that needs a stable instant sets it here instead of intercepting `Date`
|
|
7
|
-
* globally — where Rails had to build `travel_to` over the language.
|
|
8
|
-
*
|
|
9
|
-
* A value rather than a mock: nothing here is a channel, and a frozen clock is a fact
|
|
10
|
-
* about the run, not an interception of a call.
|
|
11
|
-
*/
|
|
12
|
-
export class Clock {
|
|
13
|
-
private static reading: () => number = Date.now;
|
|
14
|
-
|
|
15
|
-
static now(): number {
|
|
16
|
-
return this.reading();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** One substitution moves time for every stamp in the process at once. */
|
|
20
|
-
static freeze(at: number | Date): () => void {
|
|
21
|
-
const previous = this.reading;
|
|
22
|
-
const instant = at instanceof Date ? at.getTime() : at;
|
|
23
|
-
this.reading = () => instant;
|
|
24
|
-
return () => { this.reading = previous; };
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { Axis } from '../Axis.js';
|
|
2
|
-
import type { ValidationError } from '../../lib/ValidationError.js';
|
|
3
|
-
import { admitWire, oneOfTokens } from '../../projection/card/admission.js';
|
|
4
|
-
import { isObject, shown } from '../../lib/utils.js';
|
|
5
|
-
import { CREATE_TOKENS, UPDATE_TOKENS } from './LifecycleRules.js';
|
|
6
|
-
import { type LifecycleRules } from './LifecycleRules.js';
|
|
7
|
-
|
|
8
|
-
export const lifecycleAxis: Axis<LifecycleRules, LifecycleRules> = {
|
|
9
|
-
slot: 'lifecycle',
|
|
10
|
-
|
|
11
|
-
validator(value, errors) {
|
|
12
|
-
if (!isObject(value)) {
|
|
13
|
-
errors.push({ path: ['lifecycle'], message: `Expected an object — got ${shown(value)}` });
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (value.create !== undefined) validateCreate(value.create, errors);
|
|
17
|
-
if (value.update !== undefined && !oneOfTokens(value.update, UPDATE_TOKENS)) {
|
|
18
|
-
errors.push({
|
|
19
|
-
path: ['lifecycle', 'update'],
|
|
20
|
-
message: `Expected 'now' or 'forbidden' — got ${shown(value.update)}`,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
describe: (value) => value,
|
|
26
|
-
reconstruct: (wire) => {
|
|
27
|
-
admitWire(lifecycleAxis.validator, wire, 'lifecycle');
|
|
28
|
-
return wire;
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Judges the create rule, whose four legal forms are stated here and nowhere else.
|
|
34
|
-
* FR : juge la règle de création, dont les quatre formes légales sont énoncées ici seulement.
|
|
35
|
-
* `create: 3` → `Expected 'now', 'optional', { value } or { generate } — got 3`
|
|
36
|
-
*/
|
|
37
|
-
function validateCreate(rule: unknown, errors: ValidationError[]): void {
|
|
38
|
-
if (oneOfTokens(rule, CREATE_TOKENS)) return;
|
|
39
|
-
if (isObject(rule)) {
|
|
40
|
-
if ('value' in rule) return;
|
|
41
|
-
if ('generate' in rule) {
|
|
42
|
-
if (typeof rule.generate !== 'string') {
|
|
43
|
-
errors.push({
|
|
44
|
-
path: ['lifecycle', 'create', 'generate'],
|
|
45
|
-
message: `Expected a generator name — got ${shown(rule.generate)}`,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
errors.push({
|
|
52
|
-
path: ['lifecycle', 'create'],
|
|
53
|
-
message: `Expected 'now', 'optional', { value } or { generate } — got ${shown(rule)}`,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { GeneratorRef } from './Generators.js';
|
|
2
|
-
|
|
3
|
-
export const CREATE_TOKENS = ['now', 'optional'] as const;
|
|
4
|
-
export const UPDATE_TOKENS = ['now', 'forbidden'] as const;
|
|
5
|
-
|
|
6
|
-
export interface LifecycleRules {
|
|
7
|
-
create?: { value: unknown } | { generate: GeneratorRef } | (typeof CREATE_TOKENS)[number];
|
|
8
|
-
update?: (typeof UPDATE_TOKENS)[number];
|
|
9
|
-
}
|