effect 3.11.8 → 3.11.10
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/cjs/Effect.js +1685 -293
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/FiberHandle.js +1 -5
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberMap.js +1 -5
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js +2 -2
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/JSONSchema.js +3 -30
- package/dist/cjs/JSONSchema.js.map +1 -1
- package/dist/cjs/Micro.js +1 -1
- package/dist/cjs/Option.js +1 -1
- package/dist/cjs/ParseResult.js +15 -2
- package/dist/cjs/ParseResult.js.map +1 -1
- package/dist/cjs/Schema.js +333 -231
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/SchemaAST.js +99 -59
- package/dist/cjs/SchemaAST.js.map +1 -1
- package/dist/cjs/Stream.js +6 -5
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +4 -4
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +4 -5
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/doNotation.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +5 -5
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/mailbox.js.map +1 -1
- package/dist/cjs/internal/redacted.js +1 -1
- package/dist/cjs/internal/redacted.js.map +1 -1
- package/dist/cjs/internal/runtime.js +1 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schema/errors.js +10 -10
- package/dist/cjs/internal/schema/errors.js.map +1 -1
- package/dist/cjs/internal/schema/util.js +2 -2
- package/dist/cjs/internal/schema/util.js.map +1 -1
- package/dist/cjs/internal/stm/core.js +2 -3
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/Effect.d.ts +12053 -8146
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts +2 -2
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +2 -2
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +3 -6
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +1 -1
- package/dist/dts/ParseResult.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +18 -8
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/dts/SchemaAST.d.ts +9 -1
- package/dist/dts/SchemaAST.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +6 -5
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/internal/core-effect.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/esm/Effect.js +1734 -294
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/FiberHandle.js +1 -4
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberMap.js +1 -4
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js +2 -2
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/JSONSchema.js +3 -30
- package/dist/esm/JSONSchema.js.map +1 -1
- package/dist/esm/Micro.js +1 -1
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/Option.js +1 -1
- package/dist/esm/ParseResult.js +12 -1
- package/dist/esm/ParseResult.js.map +1 -1
- package/dist/esm/Schema.js +328 -226
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/SchemaAST.js +96 -57
- package/dist/esm/SchemaAST.js.map +1 -1
- package/dist/esm/Stream.js +6 -5
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/internal/core-effect.js +4 -4
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +1 -2
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/doNotation.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +5 -5
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/mailbox.js.map +1 -1
- package/dist/esm/internal/redacted.js +1 -1
- package/dist/esm/internal/redacted.js.map +1 -1
- package/dist/esm/internal/runtime.js +1 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schema/errors.js +5 -5
- package/dist/esm/internal/schema/errors.js.map +1 -1
- package/dist/esm/internal/schema/util.js +2 -2
- package/dist/esm/internal/schema/util.js.map +1 -1
- package/dist/esm/internal/stm/core.js +1 -2
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +1 -1
- package/src/Effect.ts +7191 -3280
- package/src/FiberHandle.ts +2 -2
- package/src/FiberMap.ts +2 -2
- package/src/FiberSet.ts +3 -3
- package/src/JSONSchema.ts +3 -29
- package/src/Micro.ts +1 -1
- package/src/Option.ts +1 -1
- package/src/ParseResult.ts +19 -3
- package/src/Schema.ts +268 -184
- package/src/SchemaAST.ts +117 -62
- package/src/Stream.ts +6 -5
- package/src/internal/core-effect.ts +13 -10
- package/src/internal/core.ts +1 -2
- package/src/internal/doNotation.ts +1 -1
- package/src/internal/fiberRuntime.ts +15 -15
- package/src/internal/mailbox.ts +1 -1
- package/src/internal/pool.ts +1 -1
- package/src/internal/redacted.ts +1 -1
- package/src/internal/runtime.ts +1 -1
- package/src/internal/schema/errors.ts +6 -5
- package/src/internal/schema/util.ts +2 -2
- package/src/internal/stm/core.ts +1 -2
- package/src/internal/version.ts +1 -1
package/dist/cjs/SchemaAST.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isComposeTransformation = exports.isBooleanKeyword = exports.isBigIntKeyword = exports.isAnyKeyword = exports.hasStableFilter = exports.getTransformationFrom = exports.getTitleAnnotation = exports.getTemplateLiteralRegExp = exports.getTemplateLiteralCapturingRegExp = exports.getSurrogateAnnotation = exports.getPropertySignatures = exports.getPropertyKeyIndexedAccess = exports.getParseOptionsAnnotation = exports.getParseIssueTitleAnnotation = exports.getParameterBase = exports.getNumberIndexedAccess = exports.getMissingMessageAnnotation = exports.getMessageAnnotation = exports.getJSONSchemaAnnotation = exports.getJSONIdentifierAnnotation = exports.getJSONIdentifier = exports.getIdentifierAnnotation = exports.getExamplesAnnotation = exports.getDocumentationAnnotation = exports.getDescriptionAnnotation = exports.getDefaultAnnotation = exports.getDecodingFallbackAnnotation = exports.getConcurrencyAnnotation = exports.getCompiler = exports.getBrandAnnotation = exports.getBatchingAnnotation = exports.getAutoTitleAnnotation = exports.getAnnotation = exports.flatten = exports.equals = exports.encodedBoundAST = exports.encodedAST = exports.defaultParseOption = exports.composeTransformation = exports.compose = exports.booleanKeyword = exports.blackListAnnotations = exports.bigIntKeyword = exports.anyKeyword = exports.annotations = exports.VoidKeyword = exports.UnknownKeyword = exports.UniqueSymbol = exports.Union = exports.UndefinedKeyword = exports.TypeLiteralTransformation = exports.TypeLiteral = exports.Type = exports.TupleType = exports.Transformation = exports.TitleAnnotationId = exports.TemplateLiteralSpan = exports.TemplateLiteral = exports.SymbolKeyword = exports.Suspend = exports.SurrogateAnnotationId = exports.StringKeyword = exports.StableFilterAnnotationId = exports.SchemaIdAnnotationId = exports.Refinement = exports.PropertySignatureTransformation = exports.PropertySignature = exports.PrettyAnnotationId = exports.ParseOptionsAnnotationId = exports.ParseJsonSchemaId = exports.ParseIssueTitleAnnotationId = exports.OptionalType = exports.ObjectKeyword = exports.NumberKeyword = exports.NeverKeyword = exports.MissingMessageAnnotationId = exports.MessageAnnotationId = exports.Literal = exports.JSONSchemaAnnotationId = exports.JSONIdentifierAnnotationId = exports.IndexSignature = exports.IdentifierAnnotationId = exports.FinalTransformation = exports.ExamplesAnnotationId = exports.EquivalenceAnnotationId = exports.Enums = exports.DocumentationAnnotationId = exports.DescriptionAnnotationId = exports.DefaultAnnotationId = exports.DecodingFallbackAnnotationId = exports.Declaration = exports.ConcurrencyAnnotationId = exports.ComposeTransformation = exports.BrandAnnotationId = exports.BooleanKeyword = exports.BigIntKeyword = exports.BatchingAnnotationId = exports.AutoTitleAnnotationId = exports.ArbitraryAnnotationId = exports.AnyKeyword = void 0;
|
|
7
|
-
exports.whiteListAnnotations = exports.voidKeyword = exports.unknownKeyword = exports.unify = exports.undefinedKeyword = exports.typeAST = exports.symbolKeyword = exports.stringKeyword = exports.required = exports.rename = exports.record = exports.pick = exports.partial = exports.orUndefined = exports.omit = exports.objectKeyword = exports.numberKeyword = exports.null = exports.neverKeyword = exports.mutable = exports.mapMembers = exports.keyof = exports.isVoidKeyword = exports.isUnknownKeyword = exports.isUniqueSymbol = exports.isUnion = exports.isUndefinedKeyword = exports.isTypeLiteralTransformation = exports.isTypeLiteral = exports.isTupleType = exports.isTransformation = exports.isTemplateLiteral = exports.isSymbolKeyword = exports.isSuspend = exports.isStringKeyword = exports.isRefinement = exports.isParameter = exports.isObjectKeyword = exports.isNumberKeyword = exports.isNeverKeyword = exports.isMembers = exports.isLiteral = exports.isFinalTransformation = exports.isEnums = exports.isDeclaration = void 0;
|
|
7
|
+
exports.whiteListAnnotations = exports.voidKeyword = exports.unknownKeyword = exports.unify = exports.undefinedKeyword = exports.typeAST = exports.symbolKeyword = exports.stringKeyword = exports.required = exports.rename = exports.record = exports.pruneUndefined = exports.pick = exports.partial = exports.orUndefined = exports.omit = exports.objectKeyword = exports.numberKeyword = exports.null = exports.neverKeyword = exports.mutable = exports.mapMembers = exports.keyof = exports.isVoidKeyword = exports.isUnknownKeyword = exports.isUniqueSymbol = exports.isUnion = exports.isUndefinedKeyword = exports.isTypeLiteralTransformation = exports.isTypeLiteral = exports.isTupleType = exports.isTransformation = exports.isTemplateLiteral = exports.isSymbolKeyword = exports.isSuspend = exports.isStringKeyword = exports.isRefinement = exports.isParameter = exports.isObjectKeyword = exports.isNumberKeyword = exports.isNeverKeyword = exports.isMembers = exports.isLiteral = exports.isFinalTransformation = exports.isEnums = exports.isDeclaration = void 0;
|
|
8
8
|
var Arr = _interopRequireWildcard(require("./Array.js"));
|
|
9
9
|
var _Function = require("./Function.js");
|
|
10
10
|
var _GlobalValue = require("./GlobalValue.js");
|
|
@@ -871,6 +871,7 @@ const isTemplateLiteralSpanType = ast => {
|
|
|
871
871
|
case "Literal":
|
|
872
872
|
case "NumberKeyword":
|
|
873
873
|
case "StringKeyword":
|
|
874
|
+
case "TemplateLiteral":
|
|
874
875
|
return true;
|
|
875
876
|
case "Union":
|
|
876
877
|
return ast.types.every(isTemplateLiteralSpanType);
|
|
@@ -885,6 +886,8 @@ const templateLiteralSpanUnionTypeToString = type => {
|
|
|
885
886
|
return "string";
|
|
886
887
|
case "NumberKeyword":
|
|
887
888
|
return "number";
|
|
889
|
+
case "TemplateLiteral":
|
|
890
|
+
return String(type);
|
|
888
891
|
case "Union":
|
|
889
892
|
return type.types.map(templateLiteralSpanUnionTypeToString).join(" | ");
|
|
890
893
|
}
|
|
@@ -897,6 +900,8 @@ const templateLiteralSpanTypeToString = type => {
|
|
|
897
900
|
return "${string}";
|
|
898
901
|
case "NumberKeyword":
|
|
899
902
|
return "${number}";
|
|
903
|
+
case "TemplateLiteral":
|
|
904
|
+
return "${" + String(type) + "}";
|
|
900
905
|
case "Union":
|
|
901
906
|
return "${" + type.types.map(templateLiteralSpanUnionTypeToString).join(" | ") + "}";
|
|
902
907
|
}
|
|
@@ -1533,7 +1538,10 @@ class Refinement {
|
|
|
1533
1538
|
* @since 3.10.0
|
|
1534
1539
|
*/
|
|
1535
1540
|
toString() {
|
|
1536
|
-
return Option.getOrElse(
|
|
1541
|
+
return getIdentifierAnnotation(this).pipe(Option.getOrElse(() => Option.match(getOrElseExpected(this), {
|
|
1542
|
+
onNone: () => `{ ${this.from} | filter }`,
|
|
1543
|
+
onSome: expected => isRefinement(this.from) ? String(this.from) + " & " + expected : expected
|
|
1544
|
+
})));
|
|
1537
1545
|
}
|
|
1538
1546
|
/**
|
|
1539
1547
|
* @since 3.10.0
|
|
@@ -1738,66 +1746,63 @@ const keyof = ast => Union.unify(_keyof(ast));
|
|
|
1738
1746
|
exports.keyof = keyof;
|
|
1739
1747
|
const STRING_KEYWORD_PATTERN = ".*";
|
|
1740
1748
|
const NUMBER_KEYWORD_PATTERN = "[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?";
|
|
1741
|
-
const
|
|
1749
|
+
const getTemplateLiteralSpanTypePattern = (type, capture) => {
|
|
1742
1750
|
switch (type._tag) {
|
|
1751
|
+
case "Literal":
|
|
1752
|
+
return regexp.escape(String(type.literal));
|
|
1743
1753
|
case "StringKeyword":
|
|
1744
1754
|
return STRING_KEYWORD_PATTERN;
|
|
1745
1755
|
case "NumberKeyword":
|
|
1746
1756
|
return NUMBER_KEYWORD_PATTERN;
|
|
1747
|
-
case "
|
|
1748
|
-
return
|
|
1757
|
+
case "TemplateLiteral":
|
|
1758
|
+
return getTemplateLiteralPattern(type, capture, false);
|
|
1749
1759
|
case "Union":
|
|
1750
|
-
return type.types.map(
|
|
1760
|
+
return type.types.map(type => getTemplateLiteralSpanTypePattern(type, capture)).join("|");
|
|
1751
1761
|
}
|
|
1752
1762
|
};
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
let pattern = `^`;
|
|
1758
|
-
if (ast.head !== "") {
|
|
1759
|
-
pattern += regexp.escape(ast.head);
|
|
1760
|
-
}
|
|
1761
|
-
for (const span of ast.spans) {
|
|
1762
|
-
const p = getTemplateLiteralPattern(span.type);
|
|
1763
|
-
pattern += isUnion(span.type) ? `(${p})` : p;
|
|
1764
|
-
if (span.literal !== "") {
|
|
1765
|
-
pattern += regexp.escape(span.literal);
|
|
1763
|
+
const handleTemplateLiteralSpanTypeParens = (type, s, capture, top) => {
|
|
1764
|
+
if (isUnion(type)) {
|
|
1765
|
+
if (capture && !top) {
|
|
1766
|
+
return `(?:${s})`;
|
|
1766
1767
|
}
|
|
1768
|
+
} else if (!capture || !top) {
|
|
1769
|
+
return s;
|
|
1767
1770
|
}
|
|
1768
|
-
|
|
1769
|
-
return new RegExp(pattern);
|
|
1770
|
-
};
|
|
1771
|
-
exports.getTemplateLiteralRegExp = getTemplateLiteralRegExp;
|
|
1772
|
-
const getTemplateLiteralCapturingPattern = type => {
|
|
1773
|
-
switch (type._tag) {
|
|
1774
|
-
case "StringKeyword":
|
|
1775
|
-
return STRING_KEYWORD_PATTERN;
|
|
1776
|
-
case "NumberKeyword":
|
|
1777
|
-
return NUMBER_KEYWORD_PATTERN;
|
|
1778
|
-
case "Literal":
|
|
1779
|
-
return regexp.escape(String(type.literal));
|
|
1780
|
-
case "Union":
|
|
1781
|
-
return type.types.map(getTemplateLiteralCapturingPattern).join("|");
|
|
1782
|
-
}
|
|
1771
|
+
return `(${s})`;
|
|
1783
1772
|
};
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
*/
|
|
1787
|
-
const getTemplateLiteralCapturingRegExp = ast => {
|
|
1788
|
-
let pattern = `^`;
|
|
1773
|
+
const getTemplateLiteralPattern = (ast, capture, top) => {
|
|
1774
|
+
let pattern = ``;
|
|
1789
1775
|
if (ast.head !== "") {
|
|
1790
|
-
|
|
1776
|
+
const head = regexp.escape(ast.head);
|
|
1777
|
+
pattern += capture && top ? `(${head})` : head;
|
|
1791
1778
|
}
|
|
1792
1779
|
for (const span of ast.spans) {
|
|
1793
|
-
|
|
1780
|
+
const spanPattern = getTemplateLiteralSpanTypePattern(span.type, capture);
|
|
1781
|
+
pattern += handleTemplateLiteralSpanTypeParens(span.type, spanPattern, capture, top);
|
|
1794
1782
|
if (span.literal !== "") {
|
|
1795
|
-
|
|
1783
|
+
const literal = regexp.escape(span.literal);
|
|
1784
|
+
pattern += capture && top ? `(${literal})` : literal;
|
|
1796
1785
|
}
|
|
1797
1786
|
}
|
|
1798
|
-
pattern
|
|
1799
|
-
return new RegExp(pattern);
|
|
1787
|
+
return pattern;
|
|
1800
1788
|
};
|
|
1789
|
+
/**
|
|
1790
|
+
* Generates a regular expression from a `TemplateLiteral` AST node.
|
|
1791
|
+
*
|
|
1792
|
+
* @see {@link getTemplateLiteralCapturingRegExp} for a variant that captures the pattern.
|
|
1793
|
+
*
|
|
1794
|
+
* @since 3.10.0
|
|
1795
|
+
*/
|
|
1796
|
+
const getTemplateLiteralRegExp = ast => new RegExp(`^${getTemplateLiteralPattern(ast, false, true)}$`);
|
|
1797
|
+
/**
|
|
1798
|
+
* Generates a regular expression that captures the pattern defined by the given `TemplateLiteral` AST.
|
|
1799
|
+
*
|
|
1800
|
+
* @see {@link getTemplateLiteralRegExp} for a variant that does not capture the pattern.
|
|
1801
|
+
*
|
|
1802
|
+
* @since 3.10.0
|
|
1803
|
+
*/
|
|
1804
|
+
exports.getTemplateLiteralRegExp = getTemplateLiteralRegExp;
|
|
1805
|
+
const getTemplateLiteralCapturingRegExp = ast => new RegExp(`^${getTemplateLiteralPattern(ast, true, true)}$`);
|
|
1801
1806
|
/**
|
|
1802
1807
|
* @since 3.10.0
|
|
1803
1808
|
*/
|
|
@@ -1846,7 +1851,7 @@ const getNumberIndexedAccess = ast => {
|
|
|
1846
1851
|
case "Suspend":
|
|
1847
1852
|
return getNumberIndexedAccess(ast.f());
|
|
1848
1853
|
}
|
|
1849
|
-
throw new Error(errors_.
|
|
1854
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
1850
1855
|
};
|
|
1851
1856
|
exports.getNumberIndexedAccess = getNumberIndexedAccess;
|
|
1852
1857
|
const getTypeLiteralPropertySignature = (ast, name) => {
|
|
@@ -1911,7 +1916,7 @@ const getPropertyKeyIndexedAccess = (ast, name) => {
|
|
|
1911
1916
|
case "Refinement":
|
|
1912
1917
|
return getPropertyKeyIndexedAccess(ast.from, name);
|
|
1913
1918
|
}
|
|
1914
|
-
throw new Error(errors_.
|
|
1919
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
1915
1920
|
};
|
|
1916
1921
|
exports.getPropertyKeyIndexedAccess = getPropertyKeyIndexedAccess;
|
|
1917
1922
|
const getPropertyKeys = ast => {
|
|
@@ -1949,7 +1954,7 @@ const record = (key, value) => {
|
|
|
1949
1954
|
if (Predicate.isString(key.literal) || Predicate.isNumber(key.literal)) {
|
|
1950
1955
|
propertySignatures.push(new PropertySignature(key.literal, value, false, true));
|
|
1951
1956
|
} else {
|
|
1952
|
-
throw new Error(errors_.
|
|
1957
|
+
throw new Error(errors_.getASTUnsupportedLiteralErrorMessage(key.literal));
|
|
1953
1958
|
}
|
|
1954
1959
|
break;
|
|
1955
1960
|
case "Enums":
|
|
@@ -1966,7 +1971,7 @@ const record = (key, value) => {
|
|
|
1966
1971
|
key.types.forEach(go);
|
|
1967
1972
|
break;
|
|
1968
1973
|
default:
|
|
1969
|
-
throw new Error(errors_.
|
|
1974
|
+
throw new Error(errors_.getASTUnsupportedKeySchemaErrorMessage(key));
|
|
1970
1975
|
}
|
|
1971
1976
|
};
|
|
1972
1977
|
go(key);
|
|
@@ -2036,7 +2041,7 @@ const pick = (ast, keys) => {
|
|
|
2036
2041
|
}
|
|
2037
2042
|
}
|
|
2038
2043
|
}
|
|
2039
|
-
throw new Error(errors_.
|
|
2044
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
2040
2045
|
};
|
|
2041
2046
|
/**
|
|
2042
2047
|
* Equivalent at runtime to the built-in TypeScript utility type `Omit`.
|
|
@@ -2069,15 +2074,14 @@ const partial = (ast, options) => {
|
|
|
2069
2074
|
case "Suspend":
|
|
2070
2075
|
return new Suspend(() => partial(ast.f(), options));
|
|
2071
2076
|
case "Declaration":
|
|
2072
|
-
throw new Error(errors_.getASTUnsupportedSchema(ast));
|
|
2073
2077
|
case "Refinement":
|
|
2074
|
-
throw new Error(errors_.
|
|
2078
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
2075
2079
|
case "Transformation":
|
|
2076
2080
|
{
|
|
2077
2081
|
if (isTypeLiteralTransformation(ast.transformation) && ast.transformation.propertySignatureTransformations.every(isRenamingPropertySignatureTransformation)) {
|
|
2078
2082
|
return new Transformation(partial(ast.from, options), partial(ast.to, options), ast.transformation);
|
|
2079
2083
|
}
|
|
2080
|
-
throw new Error(errors_.
|
|
2084
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
2081
2085
|
}
|
|
2082
2086
|
}
|
|
2083
2087
|
return ast;
|
|
@@ -2099,15 +2103,14 @@ const required = ast => {
|
|
|
2099
2103
|
case "Suspend":
|
|
2100
2104
|
return new Suspend(() => required(ast.f()));
|
|
2101
2105
|
case "Declaration":
|
|
2102
|
-
throw new Error(errors_.getASTUnsupportedSchema(ast));
|
|
2103
2106
|
case "Refinement":
|
|
2104
|
-
throw new Error(errors_.
|
|
2107
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
2105
2108
|
case "Transformation":
|
|
2106
2109
|
{
|
|
2107
2110
|
if (isTypeLiteralTransformation(ast.transformation) && ast.transformation.propertySignatureTransformations.every(isRenamingPropertySignatureTransformation)) {
|
|
2108
2111
|
return new Transformation(required(ast.from), required(ast.to), ast.transformation);
|
|
2109
2112
|
}
|
|
2110
|
-
throw new Error(errors_.
|
|
2113
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
2111
2114
|
}
|
|
2112
2115
|
}
|
|
2113
2116
|
return ast;
|
|
@@ -2421,7 +2424,7 @@ const _keyof = ast => {
|
|
|
2421
2424
|
case "Transformation":
|
|
2422
2425
|
return _keyof(ast.to);
|
|
2423
2426
|
}
|
|
2424
|
-
throw new Error(errors_.
|
|
2427
|
+
throw new Error(errors_.getASTUnsupportedSchemaErrorMessage(ast));
|
|
2425
2428
|
};
|
|
2426
2429
|
/** @internal */
|
|
2427
2430
|
const compose = (ab, cd) => new Transformation(ab, cd, composeTransformation);
|
|
@@ -2453,11 +2456,48 @@ const rename = (ast, mapping) => {
|
|
|
2453
2456
|
case "Transformation":
|
|
2454
2457
|
return compose(ast, rename(typeAST(ast), mapping));
|
|
2455
2458
|
}
|
|
2456
|
-
throw new Error(errors_.
|
|
2459
|
+
throw new Error(errors_.getASTUnsupportedRenameSchemaErrorMessage(ast));
|
|
2457
2460
|
};
|
|
2458
2461
|
exports.rename = rename;
|
|
2459
2462
|
const formatKeyword = ast => Option.getOrElse(getExpected(ast), () => ast._tag);
|
|
2460
|
-
|
|
2461
|
-
return
|
|
2463
|
+
function getBrands(ast) {
|
|
2464
|
+
return Option.match(getBrandAnnotation(ast), {
|
|
2465
|
+
onNone: () => "",
|
|
2466
|
+
onSome: brands => brands.map(brand => ` & Brand<${util_.formatUnknown(brand)}>`).join("")
|
|
2467
|
+
});
|
|
2468
|
+
}
|
|
2469
|
+
const getOrElseExpected = ast => getTitleAnnotation(ast).pipe(Option.orElse(() => getDescriptionAnnotation(ast)), Option.orElse(() => getAutoTitleAnnotation(ast)), Option.map(s => s + getBrands(ast)));
|
|
2470
|
+
const getExpected = ast => Option.orElse(getIdentifierAnnotation(ast), () => getOrElseExpected(ast));
|
|
2471
|
+
/** @internal */
|
|
2472
|
+
const pruneUndefined = (ast, self, onTransformation) => {
|
|
2473
|
+
switch (ast._tag) {
|
|
2474
|
+
case "UndefinedKeyword":
|
|
2475
|
+
return neverKeyword;
|
|
2476
|
+
case "Union":
|
|
2477
|
+
{
|
|
2478
|
+
const types = [];
|
|
2479
|
+
let hasUndefined = false;
|
|
2480
|
+
for (const type of ast.types) {
|
|
2481
|
+
const pruned = self(type);
|
|
2482
|
+
if (pruned) {
|
|
2483
|
+
hasUndefined = true;
|
|
2484
|
+
if (!isNeverKeyword(pruned)) {
|
|
2485
|
+
types.push(pruned);
|
|
2486
|
+
}
|
|
2487
|
+
} else {
|
|
2488
|
+
types.push(type);
|
|
2489
|
+
}
|
|
2490
|
+
}
|
|
2491
|
+
if (hasUndefined) {
|
|
2492
|
+
return Union.make(types);
|
|
2493
|
+
}
|
|
2494
|
+
break;
|
|
2495
|
+
}
|
|
2496
|
+
case "Suspend":
|
|
2497
|
+
return self(ast.f());
|
|
2498
|
+
case "Transformation":
|
|
2499
|
+
return onTransformation(ast);
|
|
2500
|
+
}
|
|
2462
2501
|
};
|
|
2502
|
+
exports.pruneUndefined = pruneUndefined;
|
|
2463
2503
|
//# sourceMappingURL=SchemaAST.js.map
|