@shaclmate/compiler 4.0.34 → 4.0.35

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.
Files changed (106) hide show
  1. package/dist/generators/ts/AbstractCollectionType.d.ts +2 -1
  2. package/dist/generators/ts/AbstractCollectionType.js +14 -13
  3. package/dist/generators/ts/AbstractContainerType.d.ts +2 -0
  4. package/dist/generators/ts/AbstractContainerType.js +20 -0
  5. package/dist/generators/ts/AbstractDateType.d.ts +1 -1
  6. package/dist/generators/ts/AbstractDateType.js +3 -3
  7. package/dist/generators/ts/AbstractLazyObjectType.d.ts +1 -0
  8. package/dist/generators/ts/AbstractLazyObjectType.js +1 -0
  9. package/dist/generators/ts/AbstractLiteralType.d.ts +1 -1
  10. package/dist/generators/ts/AbstractLiteralType.js +2 -2
  11. package/dist/generators/ts/AbstractNumericType.d.ts +1 -8
  12. package/dist/generators/ts/AbstractNumericType.js +2 -16
  13. package/dist/generators/ts/AbstractPrimitiveType.d.ts +1 -0
  14. package/dist/generators/ts/AbstractPrimitiveType.js +2 -1
  15. package/dist/generators/ts/AbstractTermType.d.ts +2 -1
  16. package/dist/generators/ts/AbstractTermType.js +3 -2
  17. package/dist/generators/ts/AbstractType.d.ts +19 -8
  18. package/dist/generators/ts/AbstractUnionType.d.ts +3 -2
  19. package/dist/generators/ts/AbstractUnionType.js +14 -13
  20. package/dist/generators/ts/BigDecimalType.d.ts +3 -2
  21. package/dist/generators/ts/BigDecimalType.js +5 -12
  22. package/dist/generators/ts/BigIntType.js +1 -1
  23. package/dist/generators/ts/BlankNodeType.d.ts +3 -2
  24. package/dist/generators/ts/BlankNodeType.js +6 -5
  25. package/dist/generators/ts/BooleanType.d.ts +1 -2
  26. package/dist/generators/ts/BooleanType.js +2 -16
  27. package/dist/generators/ts/DateTimeType.d.ts +0 -1
  28. package/dist/generators/ts/DateTimeType.js +0 -9
  29. package/dist/generators/ts/DateType.d.ts +0 -1
  30. package/dist/generators/ts/DateType.js +0 -9
  31. package/dist/generators/ts/DefaultValueType.d.ts +2 -1
  32. package/dist/generators/ts/DefaultValueType.js +5 -4
  33. package/dist/generators/ts/IdentifierType.d.ts +3 -2
  34. package/dist/generators/ts/IdentifierType.js +6 -5
  35. package/dist/generators/ts/IriType.d.ts +3 -11
  36. package/dist/generators/ts/IriType.js +6 -5
  37. package/dist/generators/ts/LazyObjectOptionType.d.ts +1 -1
  38. package/dist/generators/ts/LazyObjectOptionType.js +3 -3
  39. package/dist/generators/ts/LazyObjectSetType.d.ts +2 -1
  40. package/dist/generators/ts/LazyObjectSetType.js +3 -3
  41. package/dist/generators/ts/LazyObjectType.d.ts +2 -1
  42. package/dist/generators/ts/LazyObjectType.js +3 -3
  43. package/dist/generators/ts/LiteralType.d.ts +2 -1
  44. package/dist/generators/ts/LiteralType.js +4 -3
  45. package/dist/generators/ts/NamedObjectType.d.ts +2 -1
  46. package/dist/generators/ts/NamedObjectType.js +2 -14
  47. package/dist/generators/ts/OptionType.d.ts +4 -3
  48. package/dist/generators/ts/OptionType.js +20 -17
  49. package/dist/generators/ts/Snippets.d.ts +7 -11
  50. package/dist/generators/ts/Snippets.js +46 -74
  51. package/dist/generators/ts/StringType.d.ts +1 -2
  52. package/dist/generators/ts/StringType.js +2 -16
  53. package/dist/generators/ts/TermType.d.ts +2 -1
  54. package/dist/generators/ts/TermType.js +6 -16
  55. package/dist/generators/ts/_NamedObjectType/IdentifierProperty.js +2 -1
  56. package/dist/generators/ts/_NamedObjectType/NamedObjectType_fromJsonFunctionDeclaration.js +29 -8
  57. package/dist/generators/ts/_NamedObjectType/NamedObjectType_fromRdfResourceFunctionDeclaration.js +5 -5
  58. package/dist/generators/ts/_NamedObjectType/ShaclProperty.js +22 -2
  59. package/dist/generators/ts/_snippets/snippets_ConversionFunction.d.ts +3 -0
  60. package/dist/generators/ts/_snippets/snippets_ConversionFunction.js +4 -0
  61. package/dist/generators/ts/_snippets/snippets_ValidationFunction.d.ts +3 -0
  62. package/dist/generators/ts/_snippets/snippets_ValidationFunction.js +4 -0
  63. package/dist/generators/ts/_snippets/snippets_convertToArray.d.ts +3 -0
  64. package/dist/generators/ts/_snippets/snippets_convertToArray.js +8 -0
  65. package/dist/generators/ts/_snippets/snippets_convertToBlankNode.js +2 -2
  66. package/dist/generators/ts/_snippets/snippets_convertToIdentifier.js +2 -2
  67. package/dist/generators/ts/_snippets/snippets_convertToIri.js +2 -2
  68. package/dist/generators/ts/_snippets/snippets_convertToLazyObject.js +1 -1
  69. package/dist/generators/ts/_snippets/snippets_convertToLazyObjectOption.js +1 -1
  70. package/dist/generators/ts/_snippets/snippets_convertToLazyObjectSet.js +1 -1
  71. package/dist/generators/ts/_snippets/snippets_convertToLiteral.js +1 -1
  72. package/dist/generators/ts/_snippets/snippets_convertToMaybe.js +3 -3
  73. package/dist/generators/ts/_snippets/snippets_convertWithDefaultValue.js +4 -4
  74. package/dist/generators/ts/_snippets/snippets_identityConversionFunction.d.ts +3 -0
  75. package/dist/generators/ts/_snippets/snippets_identityConversionFunction.js +6 -0
  76. package/dist/generators/ts/_snippets/snippets_identityValidationFunction.d.ts +3 -0
  77. package/dist/generators/ts/_snippets/snippets_identityValidationFunction.js +6 -0
  78. package/dist/generators/ts/_snippets/snippets_validateArray.d.ts +3 -0
  79. package/dist/generators/ts/_snippets/snippets_validateArray.js +13 -0
  80. package/dist/generators/ts/_snippets/snippets_validateMaybe.d.ts +3 -0
  81. package/dist/generators/ts/_snippets/snippets_validateMaybe.js +7 -0
  82. package/dist/input/generated.d.ts +8 -8
  83. package/dist/input/generated.js +110 -113
  84. package/package.json +2 -2
  85. package/dist/generators/ts/_snippets/snippets_convertToBigDecimal.d.ts +0 -3
  86. package/dist/generators/ts/_snippets/snippets_convertToBigDecimal.js +0 -6
  87. package/dist/generators/ts/_snippets/snippets_convertToBoolean.d.ts +0 -3
  88. package/dist/generators/ts/_snippets/snippets_convertToBoolean.js +0 -6
  89. package/dist/generators/ts/_snippets/snippets_convertToDate.d.ts +0 -3
  90. package/dist/generators/ts/_snippets/snippets_convertToDate.js +0 -6
  91. package/dist/generators/ts/_snippets/snippets_convertToDateTime.d.ts +0 -3
  92. package/dist/generators/ts/_snippets/snippets_convertToDateTime.js +0 -6
  93. package/dist/generators/ts/_snippets/snippets_convertToMutableArray.d.ts +0 -3
  94. package/dist/generators/ts/_snippets/snippets_convertToMutableArray.js +0 -14
  95. package/dist/generators/ts/_snippets/snippets_convertToNumeric.d.ts +0 -3
  96. package/dist/generators/ts/_snippets/snippets_convertToNumeric.js +0 -6
  97. package/dist/generators/ts/_snippets/snippets_convertToObject.d.ts +0 -3
  98. package/dist/generators/ts/_snippets/snippets_convertToObject.js +0 -6
  99. package/dist/generators/ts/_snippets/snippets_convertToReadonlyArray.d.ts +0 -3
  100. package/dist/generators/ts/_snippets/snippets_convertToReadonlyArray.js +0 -14
  101. package/dist/generators/ts/_snippets/snippets_convertToString.d.ts +0 -3
  102. package/dist/generators/ts/_snippets/snippets_convertToString.js +0 -6
  103. package/dist/generators/ts/_snippets/snippets_convertToTerm.d.ts +0 -3
  104. package/dist/generators/ts/_snippets/snippets_convertToTerm.js +0 -6
  105. package/dist/generators/ts/_snippets/snippets_convertToUnion.d.ts +0 -3
  106. package/dist/generators/ts/_snippets/snippets_convertToUnion.js +0 -6
@@ -16,8 +16,8 @@ export class OptionType extends AbstractContainerType {
16
16
  kind = "OptionType";
17
17
  typeofs = ["object"];
18
18
  get conversionFunction() {
19
- const itemConversionFunction = this.itemType.conversionFunction;
20
- return {
19
+ const itemConversionFunction = this.itemType.conversionFunction.orDefault(this.itemConversionFunctionDefault);
20
+ return Maybe.of({
21
21
  code: code `${this.reusables.snippets.convertToMaybe}(${itemConversionFunction.code})`,
22
22
  sourceTypes: itemConversionFunction.sourceTypes.concat({
23
23
  name: this.name,
@@ -26,7 +26,7 @@ export class OptionType extends AbstractContainerType {
26
26
  name: code `undefined`,
27
27
  typeof: "undefined",
28
28
  }),
29
- };
29
+ });
30
30
  }
31
31
  get equalsFunction() {
32
32
  return code `((left, right) => ${this.reusables.snippets.maybeEquals}(left, right, ${this.itemType.equalsFunction}))`;
@@ -34,9 +34,6 @@ export class OptionType extends AbstractContainerType {
34
34
  get filterFunction() {
35
35
  return code `${this.reusables.snippets.filterMaybe}<${this.itemType.name}, ${this.itemType.filterType}>(${this.itemType.filterFunction})`;
36
36
  }
37
- get hashFunction() {
38
- return code `${this.reusables.snippets.hashMaybe}(${this.itemType.hashFunction})`;
39
- }
40
37
  get filterType() {
41
38
  return code `${this.reusables.snippets.MaybeFilter}<${this.itemType.filterType}>`;
42
39
  }
@@ -46,6 +43,9 @@ export class OptionType extends AbstractContainerType {
46
43
  nullable: true,
47
44
  });
48
45
  }
46
+ get hashFunction() {
47
+ return code `${this.reusables.snippets.hashMaybe}(${this.itemType.hashFunction})`;
48
+ }
49
49
  get mutable() {
50
50
  return this.itemType.mutable;
51
51
  }
@@ -55,6 +55,9 @@ export class OptionType extends AbstractContainerType {
55
55
  get schemaType() {
56
56
  return code `${this.reusables.snippets.MaybeSchema}<${this.itemType.schemaType}>`;
57
57
  }
58
+ get validationFunction() {
59
+ return Maybe.of(code `${this.reusables.snippets.validateMaybe}(${this.itemType.validationFunction.orDefault(this.itemValidationFunctionDefault)})`);
60
+ }
58
61
  get valueSparqlConstructTriplesFunction() {
59
62
  return code `${this.reusables.snippets.maybeSparqlConstructTriples}<${this.itemType.filterType}, ${this.itemType.schemaType}>(${this.itemType.valueSparqlConstructTriplesFunction})`;
60
63
  }
@@ -69,13 +72,10 @@ export class OptionType extends AbstractContainerType {
69
72
  }
70
73
  fromJsonExpression({ variables, }) {
71
74
  const expression = code `${this.reusables.imports.Maybe}.fromNullable(${variables.value})`;
72
- const valueVariable = code `item`;
73
75
  const itemFromJsonExpression = this.itemType.fromJsonExpression({
74
- variables: { value: valueVariable },
76
+ variables: { value: code `item` },
75
77
  });
76
- return codeEquals(itemFromJsonExpression, valueVariable)
77
- ? expression
78
- : code `${expression}.map(item => (${itemFromJsonExpression}))`;
78
+ return code `${expression}.map(item => (${itemFromJsonExpression}).map(${this.reusables.imports.Maybe}.of)).orDefault(${this.reusables.imports.Either}.of(${this.reusables.imports.Maybe}.empty()))`;
79
79
  }
80
80
  fromRdfResourceValuesExpression(parameters) {
81
81
  const { variables } = parameters;
@@ -84,6 +84,9 @@ export class OptionType extends AbstractContainerType {
84
84
  graphqlResolveExpression(parameters) {
85
85
  return code `${this.itemType.graphqlResolveExpression(parameters)}.extractNullable()`;
86
86
  }
87
+ jsonSchema(parameters) {
88
+ return code `${this.itemType.jsonSchema(parameters)}.optional()`;
89
+ }
87
90
  jsonType(parameters) {
88
91
  const itemTypeJsonType = this.itemType.jsonType(parameters);
89
92
  invariant(!itemTypeJsonType.optional);
@@ -94,9 +97,6 @@ export class OptionType extends AbstractContainerType {
94
97
  jsonUiSchemaElement(parameters) {
95
98
  return this.itemType.jsonUiSchemaElement(parameters);
96
99
  }
97
- jsonSchema(parameters) {
98
- return code `${this.itemType.jsonSchema(parameters)}.optional()`;
99
- }
100
100
  toJsonExpression({ variables, }) {
101
101
  return code `${variables.value}.map(item => (${this.itemType.toJsonExpression({ variables: { value: code `item` } })})).extract()`;
102
102
  }
@@ -123,21 +123,24 @@ __decorate([
123
123
  __decorate([
124
124
  Memoize()
125
125
  ], OptionType.prototype, "filterFunction", null);
126
- __decorate([
127
- Memoize()
128
- ], OptionType.prototype, "hashFunction", null);
129
126
  __decorate([
130
127
  Memoize()
131
128
  ], OptionType.prototype, "filterType", null);
132
129
  __decorate([
133
130
  Memoize()
134
131
  ], OptionType.prototype, "graphqlType", null);
132
+ __decorate([
133
+ Memoize()
134
+ ], OptionType.prototype, "hashFunction", null);
135
135
  __decorate([
136
136
  Memoize()
137
137
  ], OptionType.prototype, "name", null);
138
138
  __decorate([
139
139
  Memoize()
140
140
  ], OptionType.prototype, "schemaType", null);
141
+ __decorate([
142
+ Memoize()
143
+ ], OptionType.prototype, "validationFunction", null);
141
144
  __decorate([
142
145
  Memoize()
143
146
  ], OptionType.prototype, "valueSparqlConstructTriplesFunction", null);
@@ -18,6 +18,7 @@ export declare class Snippets {
18
18
  get BooleanSchema(): Snippet;
19
19
  get CollectionFilter(): Snippet;
20
20
  get CollectionSchema(): Snippet;
21
+ get ConversionFunction(): Snippet;
21
22
  get DateFilter(): Snippet;
22
23
  get DateSchema(): Snippet;
23
24
  get DefaultValueSchema(): Snippet;
@@ -55,6 +56,7 @@ export declare class Snippets {
55
56
  get ToRdfResourceFunction(): Snippet;
56
57
  get ToRdfResourceValuesFunction(): Snippet;
57
58
  get UnwrapR(): Snippet;
59
+ get ValidationFunction(): Snippet;
58
60
  get ValueSparqlConstructTriplesFunction(): Snippet;
59
61
  get ValueSparqlWherePatternsFunction(): Snippet;
60
62
  get _FromRdfResourceFunction(): Snippet;
@@ -67,12 +69,9 @@ export declare class Snippets {
67
69
  get booleanEquals(): Snippet;
68
70
  get booleanSparqlWherePatterns(): Snippet;
69
71
  get compactRecord(): Snippet;
70
- get convertToBigDecimal(): Snippet;
72
+ get convertToArray(): Snippet;
71
73
  get convertToBlankNode(): Snippet;
72
74
  get convertToBlankNodeIdentifierProperty(): Snippet;
73
- get convertToBoolean(): Snippet;
74
- get convertToDate(): Snippet;
75
- get convertToDateTime(): Snippet;
76
75
  get convertToIdentifier(): Snippet;
77
76
  get convertToIdentifierProperty(): Snippet;
78
77
  get convertToIri(): Snippet;
@@ -82,13 +81,6 @@ export declare class Snippets {
82
81
  get convertToLazyObjectSet(): Snippet;
83
82
  get convertToLiteral(): Snippet;
84
83
  get convertToMaybe(): Snippet;
85
- get convertToMutableArray(): Snippet;
86
- get convertToNumeric(): Snippet;
87
- get convertToObject(): Snippet;
88
- get convertToReadonlyArray(): Snippet;
89
- get convertToString(): Snippet;
90
- get convertToTerm(): Snippet;
91
- get convertToUnion(): Snippet;
92
84
  get convertWithDefaultValue(): Snippet;
93
85
  get dateEquals(): Snippet;
94
86
  get dateSparqlWherePatterns(): Snippet;
@@ -119,6 +111,8 @@ export declare class Snippets {
119
111
  get hashString(): Snippet;
120
112
  get hashTerm(): Snippet;
121
113
  get identifierSparqlWherePatterns(): Snippet;
114
+ get identityConversionFunction(): Snippet;
115
+ get identityValidationFunction(): Snippet;
122
116
  get ifUsed(): Code[];
123
117
  get iriSparqlWherePatterns(): Snippet;
124
118
  get liftSparqlPatterns(): Snippet;
@@ -151,6 +145,8 @@ export declare class Snippets {
151
145
  get termSchemaSparqlPatterns(): Snippet;
152
146
  get termSparqlWherePatterns(): Snippet;
153
147
  get toIsoDateString(): Snippet;
148
+ get validateArray(): Snippet;
149
+ get validateMaybe(): Snippet;
154
150
  get wrap_FromRdfResourceFunction(): Snippet;
155
151
  get wrap_ToRdfResourceFunction(): Snippet;
156
152
  protected get snippets(): Snippets;
@@ -21,13 +21,11 @@ import { snippets_booleanEquals } from "./_snippets/snippets_booleanEquals.js";
21
21
  import { snippets_booleanSparqlWherePatterns } from "./_snippets/snippets_booleanSparqlWherePatterns.js";
22
22
  import { snippets_CollectionFilter } from "./_snippets/snippets_CollectionFilter.js";
23
23
  import { snippets_CollectionSchema } from "./_snippets/snippets_CollectionSchema.js";
24
+ import { snippets_ConversionFunction } from "./_snippets/snippets_ConversionFunction.js";
24
25
  import { snippets_compactRecord } from "./_snippets/snippets_compactRecord.js";
25
- import { snippets_convertToBigDecimal } from "./_snippets/snippets_convertToBigDecimal.js";
26
+ import { snippets_convertToArray } from "./_snippets/snippets_convertToArray.js";
26
27
  import { snippets_convertToBlankNode } from "./_snippets/snippets_convertToBlankNode.js";
27
28
  import { snippets_convertToBlankNodeIdentifierProperty } from "./_snippets/snippets_convertToBlankNodeIdentifierProperty.js";
28
- import { snippets_convertToBoolean } from "./_snippets/snippets_convertToBoolean.js";
29
- import { snippets_convertToDate } from "./_snippets/snippets_convertToDate.js";
30
- import { snippets_convertToDateTime } from "./_snippets/snippets_convertToDateTime.js";
31
29
  import { snippets_convertToIdentifier } from "./_snippets/snippets_convertToIdentifier.js";
32
30
  import { snippets_convertToIdentifierProperty } from "./_snippets/snippets_convertToIdentifierProperty.js";
33
31
  import { snippets_convertToIri } from "./_snippets/snippets_convertToIri.js";
@@ -37,13 +35,6 @@ import { snippets_convertToLazyObjectOption } from "./_snippets/snippets_convert
37
35
  import { snippets_convertToLazyObjectSet } from "./_snippets/snippets_convertToLazyObjectSet.js";
38
36
  import { snippets_convertToLiteral } from "./_snippets/snippets_convertToLiteral.js";
39
37
  import { snippets_convertToMaybe } from "./_snippets/snippets_convertToMaybe.js";
40
- import { snippets_convertToMutableArray } from "./_snippets/snippets_convertToMutableArray.js";
41
- import { snippets_convertToNumeric } from "./_snippets/snippets_convertToNumeric.js";
42
- import { snippets_convertToObject } from "./_snippets/snippets_convertToObject.js";
43
- import { snippets_convertToReadonlyArray } from "./_snippets/snippets_convertToReadonlyArray.js";
44
- import { snippets_convertToString } from "./_snippets/snippets_convertToString.js";
45
- import { snippets_convertToTerm } from "./_snippets/snippets_convertToTerm.js";
46
- import { snippets_convertToUnion } from "./_snippets/snippets_convertToUnion.js";
47
38
  import { snippets_convertWithDefaultValue } from "./_snippets/snippets_convertWithDefaultValue.js";
48
39
  import { snippets_DateFilter } from "./_snippets/snippets_DateFilter.js";
49
40
  import { snippets_DateSchema } from "./_snippets/snippets_DateSchema.js";
@@ -89,6 +80,8 @@ import { snippets_IdentifierSet } from "./_snippets/snippets_IdentifierSet.js";
89
80
  import { snippets_IriFilter } from "./_snippets/snippets_IriFilter.js";
90
81
  import { snippets_IriSchema } from "./_snippets/snippets_IriSchema.js";
91
82
  import { snippets_identifierSparqlWherePatterns } from "./_snippets/snippets_identifierSparqlWherePatterns.js";
83
+ import { snippets_identityConversionFunction } from "./_snippets/snippets_identityConversionFunction.js";
84
+ import { snippets_identityValidationFunction } from "./_snippets/snippets_identityValidationFunction.js";
92
85
  import { snippets_iriSparqlWherePatterns } from "./_snippets/snippets_iriSparqlWherePatterns.js";
93
86
  import { snippets_LazyObject } from "./_snippets/snippets_LazyObject.js";
94
87
  import { snippets_LazyObjectOption } from "./_snippets/snippets_LazyObjectOption.js";
@@ -142,8 +135,11 @@ import { snippets_termSchemaSparqlPatterns } from "./_snippets/snippets_termSche
142
135
  import { snippets_termSparqlWherePatterns } from "./_snippets/snippets_termSparqlWherePatterns.js";
143
136
  import { snippets_toIsoDateString } from "./_snippets/snippets_toIsoDateString.js";
144
137
  import { snippets_UnwrapR } from "./_snippets/snippets_UnwrapR.js";
138
+ import { snippets_ValidationFunction } from "./_snippets/snippets_ValidationFunction.js";
145
139
  import { snippets_ValueSparqlConstructTriplesFunction } from "./_snippets/snippets_ValueSparqlConstructTriplesFunction.js";
146
140
  import { snippets_ValueSparqlWherePatternsFunction } from "./_snippets/snippets_ValueSparqlWherePatternsFunction.js";
141
+ import { snippets_validateArray } from "./_snippets/snippets_validateArray.js";
142
+ import { snippets_validateMaybe } from "./_snippets/snippets_validateMaybe.js";
147
143
  import { snippets_wrap_FromRdfResourceFunction } from "./_snippets/snippets_wrap_FromRdfResourceFunction.js";
148
144
  import { snippets_wrap_ToRdfResourceFunction } from "./_snippets/snippets_wrap_ToRdfResourceFunction.js";
149
145
  import { rdfjsTermExpression } from "./rdfjsTermExpression.js";
@@ -175,6 +171,9 @@ export class Snippets {
175
171
  get CollectionSchema() {
176
172
  return this.snippet(snippets_CollectionSchema);
177
173
  }
174
+ get ConversionFunction() {
175
+ return this.snippet(snippets_ConversionFunction);
176
+ }
178
177
  get DateFilter() {
179
178
  return this.snippet(snippets_DateFilter);
180
179
  }
@@ -286,6 +285,9 @@ export class Snippets {
286
285
  get UnwrapR() {
287
286
  return this.snippet(snippets_UnwrapR);
288
287
  }
288
+ get ValidationFunction() {
289
+ return this.snippet(snippets_ValidationFunction);
290
+ }
289
291
  get ValueSparqlConstructTriplesFunction() {
290
292
  return this.snippet(snippets_ValueSparqlConstructTriplesFunction);
291
293
  }
@@ -322,8 +324,8 @@ export class Snippets {
322
324
  get compactRecord() {
323
325
  return this.snippet(snippets_compactRecord);
324
326
  }
325
- get convertToBigDecimal() {
326
- return this.snippet(snippets_convertToBigDecimal);
327
+ get convertToArray() {
328
+ return this.snippet(snippets_convertToArray);
327
329
  }
328
330
  get convertToBlankNode() {
329
331
  return this.snippet(snippets_convertToBlankNode);
@@ -331,15 +333,6 @@ export class Snippets {
331
333
  get convertToBlankNodeIdentifierProperty() {
332
334
  return this.snippet(snippets_convertToBlankNodeIdentifierProperty);
333
335
  }
334
- get convertToBoolean() {
335
- return this.snippet(snippets_convertToBoolean);
336
- }
337
- get convertToDate() {
338
- return this.snippet(snippets_convertToDate);
339
- }
340
- get convertToDateTime() {
341
- return this.snippet(snippets_convertToDateTime);
342
- }
343
336
  get convertToIdentifier() {
344
337
  return this.snippet(snippets_convertToIdentifier);
345
338
  }
@@ -367,27 +360,6 @@ export class Snippets {
367
360
  get convertToMaybe() {
368
361
  return this.snippet(snippets_convertToMaybe);
369
362
  }
370
- get convertToMutableArray() {
371
- return this.snippet(snippets_convertToMutableArray);
372
- }
373
- get convertToNumeric() {
374
- return this.snippet(snippets_convertToNumeric);
375
- }
376
- get convertToObject() {
377
- return this.snippet(snippets_convertToObject);
378
- }
379
- get convertToReadonlyArray() {
380
- return this.snippet(snippets_convertToReadonlyArray);
381
- }
382
- get convertToString() {
383
- return this.snippet(snippets_convertToString);
384
- }
385
- get convertToTerm() {
386
- return this.snippet(snippets_convertToTerm);
387
- }
388
- get convertToUnion() {
389
- return this.snippet(snippets_convertToUnion);
390
- }
391
363
  get convertWithDefaultValue() {
392
364
  return this.snippet(snippets_convertWithDefaultValue);
393
365
  }
@@ -478,6 +450,12 @@ export class Snippets {
478
450
  get identifierSparqlWherePatterns() {
479
451
  return this.snippet(snippets_identifierSparqlWherePatterns);
480
452
  }
453
+ get identityConversionFunction() {
454
+ return this.snippet(snippets_identityConversionFunction);
455
+ }
456
+ get identityValidationFunction() {
457
+ return this.snippet(snippets_identityValidationFunction);
458
+ }
481
459
  get ifUsed() {
482
460
  return Object.entries(Object.getOwnPropertyDescriptors(Object.getPrototypeOf(this)))
483
461
  .flatMap(([key, descriptor]) => {
@@ -590,6 +568,12 @@ export class Snippets {
590
568
  get toIsoDateString() {
591
569
  return this.snippet(snippets_toIsoDateString);
592
570
  }
571
+ get validateArray() {
572
+ return this.snippet(snippets_validateArray);
573
+ }
574
+ get validateMaybe() {
575
+ return this.snippet(snippets_validateMaybe);
576
+ }
593
577
  get wrap_FromRdfResourceFunction() {
594
578
  return this.snippet(snippets_wrap_FromRdfResourceFunction);
595
579
  }
@@ -632,6 +616,9 @@ __decorate([
632
616
  __decorate([
633
617
  Memoize()
634
618
  ], Snippets.prototype, "CollectionSchema", null);
619
+ __decorate([
620
+ Memoize()
621
+ ], Snippets.prototype, "ConversionFunction", null);
635
622
  __decorate([
636
623
  Memoize()
637
624
  ], Snippets.prototype, "DateFilter", null);
@@ -743,6 +730,9 @@ __decorate([
743
730
  __decorate([
744
731
  Memoize()
745
732
  ], Snippets.prototype, "UnwrapR", null);
733
+ __decorate([
734
+ Memoize()
735
+ ], Snippets.prototype, "ValidationFunction", null);
746
736
  __decorate([
747
737
  Memoize()
748
738
  ], Snippets.prototype, "ValueSparqlConstructTriplesFunction", null);
@@ -781,22 +771,13 @@ __decorate([
781
771
  ], Snippets.prototype, "compactRecord", null);
782
772
  __decorate([
783
773
  Memoize()
784
- ], Snippets.prototype, "convertToBigDecimal", null);
774
+ ], Snippets.prototype, "convertToArray", null);
785
775
  __decorate([
786
776
  Memoize()
787
777
  ], Snippets.prototype, "convertToBlankNode", null);
788
778
  __decorate([
789
779
  Memoize()
790
780
  ], Snippets.prototype, "convertToBlankNodeIdentifierProperty", null);
791
- __decorate([
792
- Memoize()
793
- ], Snippets.prototype, "convertToBoolean", null);
794
- __decorate([
795
- Memoize()
796
- ], Snippets.prototype, "convertToDate", null);
797
- __decorate([
798
- Memoize()
799
- ], Snippets.prototype, "convertToDateTime", null);
800
781
  __decorate([
801
782
  Memoize()
802
783
  ], Snippets.prototype, "convertToIdentifier", null);
@@ -824,27 +805,6 @@ __decorate([
824
805
  __decorate([
825
806
  Memoize()
826
807
  ], Snippets.prototype, "convertToMaybe", null);
827
- __decorate([
828
- Memoize()
829
- ], Snippets.prototype, "convertToMutableArray", null);
830
- __decorate([
831
- Memoize()
832
- ], Snippets.prototype, "convertToNumeric", null);
833
- __decorate([
834
- Memoize()
835
- ], Snippets.prototype, "convertToObject", null);
836
- __decorate([
837
- Memoize()
838
- ], Snippets.prototype, "convertToReadonlyArray", null);
839
- __decorate([
840
- Memoize()
841
- ], Snippets.prototype, "convertToString", null);
842
- __decorate([
843
- Memoize()
844
- ], Snippets.prototype, "convertToTerm", null);
845
- __decorate([
846
- Memoize()
847
- ], Snippets.prototype, "convertToUnion", null);
848
808
  __decorate([
849
809
  Memoize()
850
810
  ], Snippets.prototype, "convertWithDefaultValue", null);
@@ -935,6 +895,12 @@ __decorate([
935
895
  __decorate([
936
896
  Memoize()
937
897
  ], Snippets.prototype, "identifierSparqlWherePatterns", null);
898
+ __decorate([
899
+ Memoize()
900
+ ], Snippets.prototype, "identityConversionFunction", null);
901
+ __decorate([
902
+ Memoize()
903
+ ], Snippets.prototype, "identityValidationFunction", null);
938
904
  __decorate([
939
905
  Memoize()
940
906
  ], Snippets.prototype, "iriSparqlWherePatterns", null);
@@ -1028,6 +994,12 @@ __decorate([
1028
994
  __decorate([
1029
995
  Memoize()
1030
996
  ], Snippets.prototype, "toIsoDateString", null);
997
+ __decorate([
998
+ Memoize()
999
+ ], Snippets.prototype, "validateArray", null);
1000
+ __decorate([
1001
+ Memoize()
1002
+ ], Snippets.prototype, "validateMaybe", null);
1031
1003
  __decorate([
1032
1004
  Memoize()
1033
1005
  ], Snippets.prototype, "wrap_FromRdfResourceFunction", null);
@@ -10,11 +10,10 @@ export declare class StringType extends AbstractPrimitiveType<string> {
10
10
  readonly schemaType: Code;
11
11
  readonly typeofs: "string"[];
12
12
  readonly valueSparqlWherePatternsFunction: Code;
13
- get conversionFunction(): AbstractPrimitiveType.ConversionFunction;
14
13
  get name(): string;
15
14
  jsonSchema(_parameters: Parameters<AbstractPrimitiveType<string>["jsonSchema"]>[0]): Code;
16
15
  literalExpression(literal: Literal | string): Code;
17
16
  toRdfResourceValuesExpression({ variables, }: Parameters<AbstractPrimitiveType<string>["toRdfResourceValuesExpression"]>[0]): Code;
18
- protected fromRdfExpressionChain({ variables, }: Parameters<AbstractPrimitiveType<string>["fromRdfExpressionChain"]>[0]): ReturnType<AbstractPrimitiveType<string>["fromRdfExpressionChain"]>;
17
+ protected fromRdfResourceValuesExpressionChain({ variables, }: Parameters<AbstractPrimitiveType<string>["fromRdfResourceValuesExpressionChain"]>[0]): ReturnType<AbstractPrimitiveType<string>["fromRdfResourceValuesExpressionChain"]>;
19
18
  }
20
19
  //# sourceMappingURL=StringType.d.ts.map
@@ -17,17 +17,6 @@ export class StringType extends AbstractPrimitiveType {
17
17
  schemaType = code `${this.reusables.snippets.StringSchema}`;
18
18
  typeofs = ["string"];
19
19
  valueSparqlWherePatternsFunction = code `${this.reusables.snippets.stringSparqlWherePatterns}`;
20
- get conversionFunction() {
21
- return {
22
- code: code `${this.reusables.snippets.convertToString}<${this.name}>`,
23
- sourceTypes: [
24
- {
25
- name: this.name,
26
- typeof: "string",
27
- },
28
- ],
29
- };
30
- }
31
20
  get name() {
32
21
  if (this.primitiveIn.length > 0) {
33
22
  return `${this.primitiveIn.map((value) => `"${value}"`).join(" | ")}`;
@@ -50,16 +39,13 @@ export class StringType extends AbstractPrimitiveType {
50
39
  toRdfResourceValuesExpression({ variables, }) {
51
40
  return code `[${this.reusables.snippets.literalFactory}.string(${variables.value}${!this.datatype.equals(xsd.string) ? `, ${this.rdfjsTermExpression(this.datatype)}` : ""})]`;
52
41
  }
53
- fromRdfExpressionChain({ variables, }) {
42
+ fromRdfResourceValuesExpressionChain({ variables, }) {
54
43
  return {
55
- ...super.fromRdfExpressionChain({ variables }),
44
+ ...super.fromRdfResourceValuesExpressionChain({ variables }),
56
45
  valueTo: code `chain(values => values.chainMap(value => value.toString(${this.primitiveIn.length > 0 ? `${JSON.stringify(this.primitiveIn)} as const` : ""})))`,
57
46
  };
58
47
  }
59
48
  }
60
- __decorate([
61
- Memoize()
62
- ], StringType.prototype, "conversionFunction", null);
63
49
  __decorate([
64
50
  Memoize()
65
51
  ], StringType.prototype, "name", null);
@@ -1,8 +1,10 @@
1
1
  import type { BlankNode, Literal, NamedNode } from "@rdfjs/types";
2
2
  import { NodeKind } from "@shaclmate/shacl-ast";
3
+ import { Maybe } from "purify-ts";
3
4
  import { AbstractTermType } from "./AbstractTermType.js";
4
5
  import { type Code } from "./ts-poet-wrapper.js";
5
6
  export declare class TermType<ConstantTermT extends Literal | NamedNode = Literal | NamedNode, RuntimeTermT extends BlankNode | Literal | NamedNode = BlankNode | Literal | NamedNode> extends AbstractTermType {
7
+ readonly conversionFunction: Maybe<AbstractTermType.ConversionFunction>;
6
8
  readonly filterFunction: Code;
7
9
  readonly filterType: Code;
8
10
  readonly kind = "TermType";
@@ -12,7 +14,6 @@ export declare class TermType<ConstantTermT extends Literal | NamedNode = Litera
12
14
  constructor({ nodeKinds, ...superParameters }: ConstructorParameters<typeof AbstractTermType<ConstantTermT, RuntimeTermT>>[0] & {
13
15
  nodeKinds: ReadonlySet<NodeKind>;
14
16
  });
15
- get conversionFunction(): AbstractTermType.ConversionFunction;
16
17
  get graphqlType(): AbstractTermType.GraphqlType;
17
18
  get name(): Code;
18
19
  fromJsonExpression({ variables, }: Parameters<AbstractTermType["fromJsonExpression"]>[0]): Code;
@@ -6,11 +6,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { NodeKind } from "@shaclmate/shacl-ast";
8
8
  import { xsd } from "@tpluscode/rdf-ns-builders";
9
+ import { Maybe } from "purify-ts";
9
10
  import { invariant } from "ts-invariant";
10
11
  import { Memoize } from "typescript-memoize";
11
12
  import { AbstractTermType } from "./AbstractTermType.js";
12
13
  import { code, joinCode } from "./ts-poet-wrapper.js";
13
14
  export class TermType extends AbstractTermType {
15
+ conversionFunction = Maybe.empty();
14
16
  filterFunction = code `${this.reusables.snippets.filterTerm}`;
15
17
  filterType = code `${this.reusables.snippets.TermFilter}`;
16
18
  kind = "TermType";
@@ -23,17 +25,6 @@ export class TermType extends AbstractTermType {
23
25
  invariant(this.nodeKinds.has("Literal") &&
24
26
  (this.nodeKinds.has("BlankNode") || this.nodeKinds.has("IRI")), "should be IdentifierType or LiteralType");
25
27
  }
26
- get conversionFunction() {
27
- return {
28
- code: code `${this.reusables.snippets.convertToTerm}<${this.name}>`,
29
- sourceTypes: [
30
- {
31
- name: this.name,
32
- typeof: "object",
33
- },
34
- ],
35
- };
36
- }
37
28
  get graphqlType() {
38
29
  throw new Error("not implemented");
39
30
  }
@@ -55,7 +46,9 @@ export class TermType extends AbstractTermType {
55
46
  .map((import_) => code `${import_}`), { on: " | " })})`;
56
47
  }
57
48
  fromJsonExpression({ variables, }) {
58
- return [...this.nodeKinds].reduce((expression, nodeKind) => {
49
+ return code `${this.reusables.imports.Either}.of<Error, ${this.name}>(${[
50
+ ...this.nodeKinds,
51
+ ].reduce((expression, nodeKind) => {
59
52
  let valueToNodeKind;
60
53
  switch (nodeKind) {
61
54
  case "BlankNode":
@@ -73,7 +66,7 @@ export class TermType extends AbstractTermType {
73
66
  return expression == null
74
67
  ? valueToNodeKind
75
68
  : code `((${variables.value}.termType === "${NodeKind.toTermType(nodeKind)}") ? (${valueToNodeKind}) : (${expression}))`;
76
- }, null);
69
+ }, null)})`;
77
70
  }
78
71
  graphqlResolveExpression(_parameters) {
79
72
  throw new Error("not implemented");
@@ -119,9 +112,6 @@ export class TermType extends AbstractTermType {
119
112
  }, null);
120
113
  }
121
114
  }
122
- __decorate([
123
- Memoize()
124
- ], TermType.prototype, "conversionFunction", null);
125
115
  __decorate([
126
116
  Memoize()
127
117
  ], TermType.prototype, "name", null);
@@ -23,7 +23,8 @@ export class IdentifierProperty extends AbstractProperty {
23
23
  get constructorParameter() {
24
24
  let hasQuestionToken = false;
25
25
  const typeNames = [code `(() => ${this.typeAlias})`];
26
- for (const type of this.type.conversionFunction.sourceTypes) {
26
+ for (const type of this.type.conversionFunction.unsafeCoerce()
27
+ .sourceTypes) {
27
28
  if (type.typeof === "undefined") {
28
29
  hasQuestionToken = true;
29
30
  }
@@ -4,19 +4,40 @@ export function NamedObjectType_fromJsonFunctionDeclaration() {
4
4
  if (!this.configuration.features.has("json")) {
5
5
  return Maybe.empty();
6
6
  }
7
- let initializers = [];
8
- const statements = [];
9
7
  const variables = {
10
8
  jsonObject: code `${this.configuration.syntheticNamePrefix}json`,
11
9
  };
12
- this.parentObjectTypes.forEach((parentObjectType) => {
13
- initializers.push(code `...${parentObjectType.name}.fromJson(${variables.jsonObject})`);
10
+ const chains = [];
11
+ this.parentObjectTypes.forEach((parentObjectType, parentObjectTypeI) => {
12
+ chains.push({
13
+ expression: code `${parentObjectType.name}.fromJson(${variables.jsonObject})`,
14
+ variable: `super${parentObjectTypeI}`,
15
+ });
14
16
  });
15
- initializers = initializers.concat(this.properties.flatMap((property) => property.fromJsonInitializer({ variables }).toList()));
16
- statements.push(code `return createUnsafe({ ${joinCode(initializers, { on: ", " })} });`);
17
+ const propertyInitializers = this.properties.flatMap((property) => property.fromJsonInitializer({ variables }).toList());
18
+ if (propertyInitializers.length > 0) {
19
+ chains.push({
20
+ expression: code `${this.reusables.snippets.sequenceRecord}({ ${joinCode(propertyInitializers, { on: "," })} })`,
21
+ variable: "properties",
22
+ });
23
+ }
24
+ let returnExpression;
25
+ switch (chains.length) {
26
+ case 0:
27
+ returnExpression = code `create({})`;
28
+ break;
29
+ case 1:
30
+ returnExpression = code `(${chains[0].expression}).chain(create)`;
31
+ break;
32
+ default:
33
+ returnExpression = code `${chains
34
+ .reverse()
35
+ .reduce((acc, { expression, variable }) => code `(${expression}).chain(${variable} => ${acc})`, code `(create({ ${chains.map((chain) => `...${chain.variable}`).join(", ")} }))`)}`;
36
+ break;
37
+ }
17
38
  return Maybe.of(code `\
18
- export function fromJson(${variables.jsonObject}: ${this.jsonType().name}): ${this.name} {
19
- ${joinCode(statements, { on: "\n" })}
39
+ export function fromJson(${variables.jsonObject}: ${this.jsonType().name}): ${this.reusables.imports.Either}<Error, ${this.name}> {
40
+ return ${returnExpression};
20
41
  }`);
21
42
  }
22
43
  //# sourceMappingURL=NamedObjectType_fromJsonFunctionDeclaration.js.map
@@ -84,19 +84,19 @@ export function NamedObjectType_fromRdfResourceFunctionDeclaration() {
84
84
  partialsJoined = code `{ ${partials.map((partial) => `...${partial}`).join(", ")} }`;
85
85
  break;
86
86
  }
87
- const statements = [];
87
+ let returnExpression;
88
88
  const resultExpression = code `create(${partialsJoined})`;
89
89
  if (chains.length === 0) {
90
- statements.push(code `return ${this.reusables.imports.Right}(${resultExpression});`);
90
+ returnExpression = code `${this.reusables.imports.Right}(${resultExpression})`;
91
91
  }
92
92
  else {
93
- statements.push(code `return ${chains
93
+ returnExpression = code `${chains
94
94
  .reverse()
95
- .reduce((acc, { expression, variable }) => code `(${expression}).chain(${variable} => ${acc})`, code `(${resultExpression})`)}`);
95
+ .reduce((acc, { expression, variable }) => code `(${expression}).chain(${variable} => ${acc})`, code `(${resultExpression})`)}`;
96
96
  }
97
97
  return Maybe.of(code `\
98
98
  export const _fromRdfResource: ${this.reusables.snippets._FromRdfResourceFunction}<${this.name}> = (${variables.resource}, ${optionsVariable}) => {
99
- ${joinCode(statements)}
99
+ return ${returnExpression};
100
100
  }
101
101
 
102
102
  export const fromRdfResource = ${this.reusables.snippets.wrap_FromRdfResourceFunction}(_fromRdfResource);`);