effect-app 4.0.0-beta.30 → 4.0.0-beta.301
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/CHANGELOG.md +1435 -0
- package/dist/Array.d.ts +2 -1
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +4 -4
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Config/SecretURL.d.ts +3 -1
- package/dist/Config/SecretURL.d.ts.map +1 -1
- package/dist/Config/SecretURL.js +3 -6
- package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
- package/dist/Config/internal/configSecretURL.js +2 -2
- package/dist/Config.d.ts +2 -0
- package/dist/Config.d.ts.map +1 -0
- package/dist/Config.js +8 -0
- package/dist/ConfigProvider.d.ts +2 -0
- package/dist/ConfigProvider.d.ts.map +1 -0
- package/dist/ConfigProvider.js +6 -0
- package/dist/{ServiceMap.d.ts → Context.d.ts} +18 -20
- package/dist/Context.d.ts.map +1 -0
- package/dist/Context.js +67 -0
- package/dist/DataDependencies.d.ts +388 -0
- package/dist/DataDependencies.d.ts.map +1 -0
- package/dist/DataDependencies.js +64 -0
- package/dist/Effect.d.ts +10 -9
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +5 -8
- package/dist/Emailer.d.ts +51 -0
- package/dist/Emailer.d.ts.map +1 -0
- package/dist/Emailer.js +7 -0
- package/dist/Function.d.ts.map +1 -1
- package/dist/Layer.d.ts +10 -6
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +3 -2
- package/dist/Model/Repository/Registry.d.ts +22 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +18 -0
- package/dist/Model/Repository/ext.d.ts +60 -0
- package/dist/Model/Repository/ext.d.ts.map +1 -0
- package/dist/Model/Repository/ext.js +122 -0
- package/dist/Model/Repository/internal/internal.d.ts +63 -0
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
- package/dist/Model/Repository/internal/internal.js +438 -0
- package/dist/Model/Repository/legacy.d.ts +21 -0
- package/dist/Model/Repository/legacy.d.ts.map +1 -0
- package/dist/Model/Repository/legacy.js +2 -0
- package/dist/Model/Repository/makeRepo.d.ts +54 -0
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
- package/dist/Model/Repository/makeRepo.js +27 -0
- package/dist/Model/Repository/service.d.ts +121 -0
- package/dist/Model/Repository/service.d.ts.map +1 -0
- package/dist/Model/Repository/service.js +2 -0
- package/dist/Model/Repository/validation.d.ts +58 -0
- package/dist/Model/Repository/validation.d.ts.map +1 -0
- package/dist/Model/Repository/validation.js +32 -0
- package/dist/Model/Repository.d.ts +7 -0
- package/dist/Model/Repository.d.ts.map +1 -0
- package/dist/Model/Repository.js +7 -0
- package/dist/Model/dsl.d.ts +33 -0
- package/dist/Model/dsl.d.ts.map +1 -0
- package/dist/Model/dsl.js +43 -0
- package/dist/Model/filter/filterApi.d.ts +30 -0
- package/dist/Model/filter/filterApi.d.ts.map +1 -0
- package/dist/Model/filter/filterApi.js +2 -0
- package/dist/Model/filter/types/errors.d.ts +29 -0
- package/dist/Model/filter/types/errors.d.ts.map +1 -0
- package/dist/Model/filter/types/errors.js +2 -0
- package/dist/Model/filter/types/fields.d.ts +15 -0
- package/dist/Model/filter/types/fields.d.ts.map +1 -0
- package/dist/Model/filter/types/fields.js +2 -0
- package/dist/Model/filter/types/path/common.d.ts +316 -0
- package/dist/Model/filter/types/path/common.d.ts.map +1 -0
- package/dist/Model/filter/types/path/common.js +2 -0
- package/dist/Model/filter/types/path/eager.d.ts +94 -0
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
- package/dist/Model/filter/types/path/eager.js +36 -0
- package/dist/Model/filter/types/path/index.d.ts +4 -0
- package/dist/Model/filter/types/path/index.d.ts.map +1 -0
- package/dist/Model/filter/types/path/index.js +3 -0
- package/dist/Model/filter/types/utils.d.ts +79 -0
- package/dist/Model/filter/types/utils.d.ts.map +1 -0
- package/dist/Model/filter/types/utils.js +2 -0
- package/dist/Model/filter/types/validator.d.ts +30 -0
- package/dist/Model/filter/types/validator.d.ts.map +1 -0
- package/dist/Model/filter/types/validator.js +2 -0
- package/dist/Model/filter/types.d.ts +5 -0
- package/dist/Model/filter/types.d.ts.map +1 -0
- package/dist/Model/filter/types.js +7 -0
- package/dist/Model/query/dsl.d.ts +514 -0
- package/dist/Model/query/dsl.d.ts.map +1 -0
- package/dist/Model/query/dsl.js +376 -0
- package/dist/Model/query/new-kid-interpreter.d.ts +132 -0
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
- package/dist/Model/query/new-kid-interpreter.js +361 -0
- package/dist/Model/query.d.ts +15 -0
- package/dist/Model/query.d.ts.map +1 -0
- package/dist/Model/query.js +3 -0
- package/dist/Model.d.ts +5 -0
- package/dist/Model.d.ts.map +1 -0
- package/dist/Model.js +5 -0
- package/dist/NonEmptySet.d.ts +3 -1
- package/dist/NonEmptySet.d.ts.map +1 -1
- package/dist/NonEmptySet.js +2 -2
- package/dist/Option.d.ts +1 -0
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +3 -1
- package/dist/Pure.d.ts +7 -5
- package/dist/Pure.d.ts.map +1 -1
- package/dist/Pure.js +7 -4
- package/dist/QueueMaker.d.ts +11 -0
- package/dist/QueueMaker.d.ts.map +1 -0
- package/dist/QueueMaker.js +11 -0
- package/dist/RequestContext.d.ts +87 -0
- package/dist/RequestContext.d.ts.map +1 -0
- package/dist/RequestContext.js +45 -0
- package/dist/RequestScopedDependencies.d.ts +21 -0
- package/dist/RequestScopedDependencies.d.ts.map +1 -0
- package/dist/RequestScopedDependencies.js +16 -0
- package/dist/Schema/Class.d.ts +188 -19
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +260 -17
- package/dist/Schema/FastCheck.d.ts.map +1 -1
- package/dist/Schema/SchemaParser.d.ts +5 -0
- package/dist/Schema/SchemaParser.d.ts.map +1 -0
- package/dist/Schema/SchemaParser.js +6 -0
- package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
- package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
- package/dist/Schema/SpecialJsonSchema.js +118 -0
- package/dist/Schema/SpecialOpenApi.d.ts +32 -0
- package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
- package/dist/Schema/SpecialOpenApi.js +123 -0
- package/dist/Schema/brand.d.ts +4 -2
- package/dist/Schema/brand.d.ts.map +1 -1
- package/dist/Schema/brand.js +3 -1
- package/dist/Schema/email.d.ts.map +1 -1
- package/dist/Schema/email.js +7 -4
- package/dist/Schema/ext.d.ts +338 -55
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +358 -53
- package/dist/Schema/moreStrings.d.ts +82 -36
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +49 -42
- package/dist/Schema/numbers.d.ts +34 -21
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/numbers.js +55 -12
- package/dist/Schema/phoneNumber.d.ts.map +1 -1
- package/dist/Schema/phoneNumber.js +6 -3
- package/dist/Schema/schema.d.ts +1 -1
- package/dist/Schema/schema.d.ts.map +1 -1
- package/dist/Schema/schema.js +2 -2
- package/dist/Schema/strings.d.ts +18 -4
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema/strings.js +1 -5
- package/dist/Schema.d.ts +222 -8
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +191 -12
- package/dist/SchemaAST.d.ts +2 -0
- package/dist/SchemaAST.d.ts.map +1 -0
- package/dist/SchemaAST.js +2 -0
- package/dist/Set.d.ts +4 -1
- package/dist/Set.d.ts.map +1 -1
- package/dist/Set.js +3 -2
- package/dist/Store.d.ts +163 -0
- package/dist/Store.d.ts.map +1 -0
- package/dist/Store.js +113 -0
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +4 -2
- package/dist/_ext/misc.d.ts +4 -1
- package/dist/_ext/misc.d.ts.map +1 -1
- package/dist/_ext/misc.js +4 -2
- package/dist/_ext/ord.ext.d.ts +2 -1
- package/dist/_ext/ord.ext.d.ts.map +1 -1
- package/dist/_ext/ord.ext.js +2 -2
- package/dist/builtin.d.ts +2 -14
- package/dist/builtin.d.ts.map +1 -1
- package/dist/builtin.js +1 -1
- package/dist/client/InvalidationKeys.d.ts +30 -0
- package/dist/client/InvalidationKeys.d.ts.map +1 -0
- package/dist/client/InvalidationKeys.js +37 -0
- package/dist/client/apiClientFactory.d.ts +19 -31
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +155 -35
- package/dist/client/clientFor.d.ts +54 -18
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/clientFor.js +9 -1
- package/dist/client/errors.d.ts +82 -27
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +75 -19
- package/dist/client/makeClient.d.ts +490 -34
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +62 -28
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -1
- package/dist/faker.d.ts.map +1 -1
- package/dist/http/Request.d.ts +1 -1
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +2 -2
- package/dist/ids.d.ts +42 -14
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +30 -5
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/middleware.d.ts +13 -7
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +14 -8
- package/dist/rpc/Invalidation.d.ts +3140 -0
- package/dist/rpc/Invalidation.d.ts.map +1 -0
- package/dist/rpc/Invalidation.js +178 -0
- package/dist/rpc/MiddlewareMaker.d.ts +11 -7
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +59 -38
- package/dist/rpc/RpcContextMap.d.ts +3 -3
- package/dist/rpc/RpcContextMap.d.ts.map +1 -1
- package/dist/rpc/RpcContextMap.js +4 -4
- package/dist/rpc/RpcMiddleware.d.ts +14 -10
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +1 -1
- package/dist/rpc.d.ts +1 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -2
- package/dist/runtime.d.ts +19 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +40 -0
- package/dist/setupRequest.d.ts +20 -0
- package/dist/setupRequest.d.ts.map +1 -0
- package/dist/setupRequest.js +72 -0
- package/dist/toast.d.ts +51 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +34 -0
- package/dist/transform.d.ts +1 -1
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +4 -5
- package/dist/utils/effectify.d.ts +1 -1
- package/dist/utils/effectify.d.ts.map +1 -1
- package/dist/utils/effectify.js +2 -2
- package/dist/utils/extend.d.ts.map +1 -1
- package/dist/utils/gen.d.ts +4 -4
- package/dist/utils/gen.d.ts.map +1 -1
- package/dist/utils/logLevel.d.ts +2 -2
- package/dist/utils/logLevel.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +4 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +4 -4
- package/dist/utils.d.ts +34 -39
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +33 -37
- package/dist/validation/validators.d.ts.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/withToast.d.ts +30 -0
- package/dist/withToast.d.ts.map +1 -0
- package/dist/withToast.js +64 -0
- package/package.json +27 -251
- package/src/Array.ts +5 -5
- package/src/Chunk.ts +3 -3
- package/src/Config/SecretURL.ts +6 -3
- package/src/Config/internal/configSecretURL.ts +2 -2
- package/src/Config.ts +7 -0
- package/src/ConfigProvider.ts +5 -0
- package/src/{ServiceMap.ts → Context.ts} +56 -63
- package/src/DataDependencies.ts +114 -0
- package/src/Effect.ts +14 -16
- package/src/Emailer.ts +51 -0
- package/src/Inputify.type.ts +1 -1
- package/src/Layer.ts +11 -7
- package/src/Model/Repository/Registry.ts +35 -0
- package/src/Model/Repository/ext.ts +375 -0
- package/src/Model/Repository/internal/internal.ts +755 -0
- package/src/Model/Repository/legacy.ts +29 -0
- package/src/Model/Repository/makeRepo.ts +145 -0
- package/src/Model/Repository/service.ts +676 -0
- package/src/Model/Repository/validation.ts +31 -0
- package/src/Model/Repository.ts +6 -0
- package/src/Model/dsl.ts +129 -0
- package/src/Model/filter/filterApi.ts +60 -0
- package/src/Model/filter/types/errors.ts +47 -0
- package/src/Model/filter/types/fields.ts +50 -0
- package/src/Model/filter/types/path/common.ts +404 -0
- package/src/Model/filter/types/path/eager.ts +329 -0
- package/src/Model/filter/types/path/index.ts +4 -0
- package/src/Model/filter/types/utils.ts +128 -0
- package/src/Model/filter/types/validator.ts +46 -0
- package/src/Model/filter/types.ts +6 -0
- package/src/Model/query/dsl.ts +2770 -0
- package/src/Model/query/new-kid-interpreter.ts +526 -0
- package/src/Model/query.ts +13 -0
- package/src/Model.ts +4 -0
- package/src/NonEmptySet.ts +6 -4
- package/src/Option.ts +2 -0
- package/src/Pure.ts +10 -7
- package/src/QueueMaker.ts +11 -0
- package/src/RequestContext.ts +48 -0
- package/src/RequestScopedDependencies.ts +45 -0
- package/src/Schema/Class.ts +633 -59
- package/src/Schema/SchemaParser.ts +12 -0
- package/src/Schema/SpecialJsonSchema.ts +139 -0
- package/src/Schema/SpecialOpenApi.ts +130 -0
- package/src/Schema/brand.ts +22 -2
- package/src/Schema/email.ts +9 -4
- package/src/Schema/ext.ts +446 -91
- package/src/Schema/moreStrings.ts +147 -68
- package/src/Schema/numbers.ts +97 -28
- package/src/Schema/phoneNumber.ts +9 -5
- package/src/Schema/schema.ts +1 -1
- package/src/Schema/strings.ts +23 -14
- package/src/Schema.ts +397 -26
- package/src/SchemaAST.ts +1 -0
- package/src/Set.ts +6 -2
- package/src/Store.ts +273 -0
- package/src/_ext/Array.ts +4 -2
- package/src/_ext/misc.ts +4 -1
- package/src/_ext/ord.ext.ts +2 -1
- package/src/builtin-json.d.ts +24 -0
- package/src/builtin.ts +16 -21
- package/src/client/InvalidationKeys.ts +55 -0
- package/src/client/apiClientFactory.ts +299 -134
- package/src/client/clientFor.ts +107 -34
- package/src/client/errors.ts +100 -29
- package/src/client/makeClient.ts +594 -78
- package/src/client.ts +6 -4
- package/src/http/Request.ts +3 -3
- package/src/http.ts +1 -1
- package/src/ids.ts +33 -6
- package/src/index.ts +20 -23
- package/src/middleware.ts +13 -9
- package/src/rpc/Invalidation.ts +278 -0
- package/src/rpc/MiddlewareMaker.ts +88 -80
- package/src/rpc/README.md +2 -2
- package/src/rpc/RpcContextMap.ts +7 -6
- package/src/rpc/RpcMiddleware.ts +19 -13
- package/src/rpc.ts +4 -4
- package/src/runtime.ts +56 -0
- package/src/setupRequest.ts +138 -0
- package/src/toast.ts +54 -0
- package/src/transform.ts +4 -4
- package/src/utils/effectify.ts +1 -1
- package/src/utils/gen.ts +8 -8
- package/src/utils/logLevel.ts +1 -1
- package/src/utils/logger.ts +4 -3
- package/src/utils.ts +85 -158
- package/src/validation.ts +2 -2
- package/src/withToast.ts +133 -0
- package/test/dist/rpc.test.d.ts.map +1 -1
- package/test/dist/rpcMiddlewareContext.test.d.ts.map +1 -0
- package/test/dist/secretURL.test.d.ts.map +1 -0
- package/test/dist/special.test.d.ts.map +1 -0
- package/test/moreStrings.test.ts +1 -1
- package/test/rpc.test.ts +42 -13
- package/test/rpcMiddlewareContext.test.ts +63 -0
- package/test/schema.test.ts +459 -30
- package/test/secretURL.test.ts +160 -0
- package/test/special.test.ts +1258 -0
- package/test/utils.test.ts +7 -7
- package/tsconfig.base.json +6 -5
- package/tsconfig.json +3 -1
- package/tsconfig.src.json +29 -29
- package/tsconfig.test.json +2 -2
- package/dist/Operations.d.ts +0 -123
- package/dist/Operations.d.ts.map +0 -1
- package/dist/Operations.js +0 -29
- package/dist/ServiceMap.d.ts.map +0 -1
- package/dist/ServiceMap.js +0 -91
- package/eslint.config.mjs +0 -26
- package/src/Operations.ts +0 -55
- package/tsconfig.json.bak +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../../src/Schema/Class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../../src/Schema/Class.ts"],"names":[],"mappings":"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"}
|
package/dist/Schema/Class.js
CHANGED
|
@@ -1,22 +1,265 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
3
|
import * as S from "effect/Schema";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
import * as SchemaGetter from "effect/SchemaGetter";
|
|
5
|
+
import * as SchemaIssue from "effect/SchemaIssue";
|
|
6
|
+
import * as SchemaTransformation from "effect/SchemaTransformation";
|
|
7
|
+
import * as SchemaAST from "../SchemaAST.js";
|
|
8
|
+
import { copyOrigin } from "../utils.js";
|
|
9
|
+
import { concurrencyUnbounded } from "./ext.js";
|
|
10
|
+
import * as SchemaParser from "./SchemaParser.js";
|
|
11
|
+
/**
|
|
12
|
+
* Build a modified Declaration that accepts struct-matching values during
|
|
13
|
+
* encoding, given the original Declaration and the class's fields.
|
|
14
|
+
*/
|
|
15
|
+
function makeRelaxedDeclaration(ast, fields, cls) {
|
|
16
|
+
const parseOptions = ast.annotations?.["parseOptions"];
|
|
17
|
+
const structSchema = S.Struct(fields);
|
|
18
|
+
const annotatedStruct = parseOptions ? S.toType(structSchema).annotate({ parseOptions }) : S.toType(structSchema);
|
|
19
|
+
const decodeStruct = SchemaParser.decodeUnknownEffect(annotatedStruct);
|
|
20
|
+
return new SchemaAST.Declaration(ast.typeParameters, () => (input, self, options) => {
|
|
21
|
+
if (input instanceof cls) {
|
|
22
|
+
return Effect.succeed(input);
|
|
23
|
+
}
|
|
24
|
+
if (input !== null && typeof input === "object") {
|
|
25
|
+
return decodeStruct(input, options);
|
|
26
|
+
}
|
|
27
|
+
return Effect.fail(new SchemaIssue.InvalidType(self, Option.some(input)));
|
|
28
|
+
}, ast.annotations, ast.checks, ast.encoding, ast.context);
|
|
29
|
+
}
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Class — like Schema.Class but with relaxed encoding
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
/**
|
|
34
|
+
* Like `Schema.Class`, but the resulting class accepts plain objects matching
|
|
35
|
+
* the struct schema during encoding — not only `instanceof` or type-id
|
|
36
|
+
* checks.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import * as Schema from "effect/Schema"
|
|
41
|
+
* import { Class } from "./Class.ts"
|
|
42
|
+
*
|
|
43
|
+
* class A extends Class<A>("A")({ a: Schema.String }) {}
|
|
44
|
+
*
|
|
45
|
+
* // Construction works as normal:
|
|
46
|
+
* new A({ a: "hello" })
|
|
47
|
+
*
|
|
48
|
+
* // Encoding accepts plain objects:
|
|
49
|
+
* Schema.encodeUnknownSync(A)({ a: "hello" }) // { a: "hello" }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export const Class = (identifier) => (fields, annotations, options) => {
|
|
53
|
+
const relaxed = options?.strict === false;
|
|
54
|
+
// Build the original Schema.Class
|
|
55
|
+
const Base = S.Class(identifier)(fields, { ...concurrencyUnbounded, ...annotations });
|
|
56
|
+
// Get the original ast getter from the base class
|
|
57
|
+
const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
|
|
58
|
+
// Cache per-class to avoid recomputing
|
|
59
|
+
const astCache = new WeakMap();
|
|
60
|
+
const copyCache = new WeakMap();
|
|
61
|
+
return class extends Base {
|
|
62
|
+
static get copy() {
|
|
63
|
+
let cached = copyCache.get(this);
|
|
64
|
+
if (cached === undefined) {
|
|
65
|
+
cached = copyOrigin(this);
|
|
66
|
+
copyCache.set(this, cached);
|
|
67
|
+
}
|
|
68
|
+
return cached;
|
|
69
|
+
}
|
|
70
|
+
static get ast() {
|
|
71
|
+
let cached = astCache.get(this);
|
|
72
|
+
if (cached !== undefined)
|
|
73
|
+
return cached;
|
|
74
|
+
// Call the original getter with `this` bound to the actual user class,
|
|
75
|
+
// so getClassSchema(this) creates a schema that uses `new this(...)`.
|
|
76
|
+
const originalAst = originalAstDescriptor.get.call(this);
|
|
77
|
+
cached = relaxed ? makeRelaxedDeclaration(originalAst, Base.fields, this) : originalAst;
|
|
78
|
+
astCache.set(this, cached);
|
|
79
|
+
return cached;
|
|
80
|
+
}
|
|
81
|
+
static mapFields(f, options) {
|
|
82
|
+
return Base.mapFields(f, options).annotate(concurrencyUnbounded);
|
|
83
|
+
}
|
|
10
84
|
};
|
|
11
85
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// TaggedClass — like Schema.TaggedClass but with relaxed encoding
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
/**
|
|
90
|
+
* Like `Schema.TaggedClass`, but the resulting class accepts plain objects
|
|
91
|
+
* matching the struct schema during encoding.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* import * as Schema from "effect/Schema"
|
|
96
|
+
* import { TaggedClass } from "./Class.ts"
|
|
97
|
+
*
|
|
98
|
+
* class Circle extends TaggedClass<Circle>()("Circle", {
|
|
99
|
+
* radius: Schema.Number
|
|
100
|
+
* }) {}
|
|
101
|
+
*
|
|
102
|
+
* Schema.encodeUnknownSync(Circle)({ _tag: "Circle", radius: 5 })
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export const TaggedClass = (identifier) => (tag, fields, annotations, options) => {
|
|
106
|
+
const relaxed = options?.strict === false;
|
|
107
|
+
const Base = S.TaggedClass(identifier)(tag, fields, { ...concurrencyUnbounded, ...annotations });
|
|
108
|
+
const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
|
|
109
|
+
const astCache = new WeakMap();
|
|
110
|
+
const copyCache = new WeakMap();
|
|
111
|
+
return class extends Base {
|
|
112
|
+
static get copy() {
|
|
113
|
+
let cached = copyCache.get(this);
|
|
114
|
+
if (cached === undefined) {
|
|
115
|
+
cached = copyOrigin(this);
|
|
116
|
+
copyCache.set(this, cached);
|
|
117
|
+
}
|
|
118
|
+
return cached;
|
|
119
|
+
}
|
|
120
|
+
static get ast() {
|
|
121
|
+
let cached = astCache.get(this);
|
|
122
|
+
if (cached !== undefined)
|
|
123
|
+
return cached;
|
|
124
|
+
const originalAst = originalAstDescriptor.get.call(this);
|
|
125
|
+
cached = relaxed ? makeRelaxedDeclaration(originalAst, Base.fields, this) : originalAst;
|
|
126
|
+
astCache.set(this, cached);
|
|
127
|
+
return cached;
|
|
128
|
+
}
|
|
129
|
+
static mapFields(f, options) {
|
|
130
|
+
return Base.mapFields(f, options).annotate(concurrencyUnbounded);
|
|
131
|
+
}
|
|
18
132
|
};
|
|
19
133
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
// ErrorClass — like Schema.ErrorClass but with relaxed encoding
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
export const ErrorClass = (identifier) => (fields, annotations, options) => {
|
|
138
|
+
const relaxed = options?.strict === false;
|
|
139
|
+
const Base = S.ErrorClass(identifier)(fields, { ...concurrencyUnbounded, ...annotations });
|
|
140
|
+
const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
|
|
141
|
+
const astCache = new WeakMap();
|
|
142
|
+
const copyCache = new WeakMap();
|
|
143
|
+
return class extends Base {
|
|
144
|
+
static get copy() {
|
|
145
|
+
let cached = copyCache.get(this);
|
|
146
|
+
if (cached === undefined) {
|
|
147
|
+
cached = copyOrigin(this);
|
|
148
|
+
copyCache.set(this, cached);
|
|
149
|
+
}
|
|
150
|
+
return cached;
|
|
151
|
+
}
|
|
152
|
+
static get ast() {
|
|
153
|
+
let cached = astCache.get(this);
|
|
154
|
+
if (cached !== undefined)
|
|
155
|
+
return cached;
|
|
156
|
+
const originalAst = originalAstDescriptor.get.call(this);
|
|
157
|
+
cached = relaxed ? makeRelaxedDeclaration(originalAst, Base.fields, this) : originalAst;
|
|
158
|
+
astCache.set(this, cached);
|
|
159
|
+
return cached;
|
|
160
|
+
}
|
|
161
|
+
static mapFields(f, options) {
|
|
162
|
+
return Base.mapFields(f, options).annotate(concurrencyUnbounded);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
// ---------------------------------------------------------------------------
|
|
167
|
+
// TaggedErrorClass — like Schema.TaggedErrorClass but with relaxed encoding
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
export const TaggedErrorClass = (identifier) => (tag, fields, annotations, options) => {
|
|
170
|
+
const relaxed = options?.strict === false;
|
|
171
|
+
const Base = S.TaggedErrorClass(identifier)(tag, fields, { ...concurrencyUnbounded, ...annotations });
|
|
172
|
+
const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
|
|
173
|
+
const astCache = new WeakMap();
|
|
174
|
+
const copyCache = new WeakMap();
|
|
175
|
+
return class extends Base {
|
|
176
|
+
static get copy() {
|
|
177
|
+
let cached = copyCache.get(this);
|
|
178
|
+
if (cached === undefined) {
|
|
179
|
+
cached = copyOrigin(this);
|
|
180
|
+
copyCache.set(this, cached);
|
|
181
|
+
}
|
|
182
|
+
return cached;
|
|
183
|
+
}
|
|
184
|
+
static get ast() {
|
|
185
|
+
let cached = astCache.get(this);
|
|
186
|
+
if (cached !== undefined)
|
|
187
|
+
return cached;
|
|
188
|
+
const originalAst = originalAstDescriptor.get.call(this);
|
|
189
|
+
cached = relaxed ? makeRelaxedDeclaration(originalAst, Base.fields, this) : originalAst;
|
|
190
|
+
astCache.set(this, cached);
|
|
191
|
+
return cached;
|
|
192
|
+
}
|
|
193
|
+
static mapFields(f, options) {
|
|
194
|
+
return Base.mapFields(f, options).annotate(concurrencyUnbounded);
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
export const Opaque = S.Opaque;
|
|
199
|
+
export const OpaqueType = S.Opaque;
|
|
200
|
+
const ClassAnnotationId = "~effect/Schema/Class";
|
|
201
|
+
const getOwnOrInheritedPropertyDescriptor = (value, property) => {
|
|
202
|
+
let current = value;
|
|
203
|
+
while (current !== null) {
|
|
204
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, property);
|
|
205
|
+
if (descriptor !== undefined)
|
|
206
|
+
return descriptor;
|
|
207
|
+
current = Object.getPrototypeOf(current);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
const isClassSchemaConstructor = (value) => {
|
|
211
|
+
if (typeof value !== "function")
|
|
212
|
+
return false;
|
|
213
|
+
const ast = value.ast;
|
|
214
|
+
return SchemaAST.isAST(ast) && SchemaAST.isDeclaration(ast) && ast.annotations?.[ClassAnnotationId] !== undefined;
|
|
215
|
+
};
|
|
216
|
+
const getFacadeClassSchema = (schema) => {
|
|
217
|
+
if (isClassSchemaConstructor(schema))
|
|
218
|
+
return schema;
|
|
219
|
+
const target = "to" in schema ? schema.to : undefined;
|
|
220
|
+
return isClassSchemaConstructor(target) ? target : undefined;
|
|
221
|
+
};
|
|
222
|
+
const makePublicClassTransformation = (Public) => new SchemaTransformation.Transformation(SchemaGetter.transform((input) => Reflect.construct(Public, [input], Public)), SchemaGetter.passthrough());
|
|
223
|
+
const makeFacadeClassAst = (schema, originalAst, Public) => {
|
|
224
|
+
if (SchemaAST.isDeclaration(schema.ast)) {
|
|
225
|
+
const schemaEncoding = schema.ast.encoding ?? [];
|
|
226
|
+
if (schemaEncoding.length > 0) {
|
|
227
|
+
return new SchemaAST.Declaration(schema.ast.typeParameters, schema.ast.run, schema.ast.annotations, schema.ast.checks, [new SchemaAST.Link(schemaEncoding[0].to, makePublicClassTransformation(Public)), ...schemaEncoding.slice(1)], schema.ast.context, schema.ast.encodingChecks);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return schema.rebuild(originalAst).ast;
|
|
231
|
+
};
|
|
232
|
+
export const OpaqueShape = S.Opaque;
|
|
233
|
+
export function OpaqueFacade() {
|
|
234
|
+
function facade(schema) {
|
|
235
|
+
const Base = getFacadeClassSchema(schema);
|
|
236
|
+
if (Base !== undefined) {
|
|
237
|
+
const astCache = new WeakMap();
|
|
238
|
+
const originalAstDescriptor = getOwnOrInheritedPropertyDescriptor(Base, "ast");
|
|
239
|
+
return class extends Base {
|
|
240
|
+
static get ast() {
|
|
241
|
+
let cached = astCache.get(this);
|
|
242
|
+
if (cached !== undefined)
|
|
243
|
+
return cached;
|
|
244
|
+
const originalAst = originalAstDescriptor?.get?.call(this);
|
|
245
|
+
cached = makeFacadeClassAst(schema, originalAst, this);
|
|
246
|
+
astCache.set(this, cached);
|
|
247
|
+
return cached;
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
class Facade {
|
|
252
|
+
}
|
|
253
|
+
return Object.setPrototypeOf(Facade, schema);
|
|
254
|
+
}
|
|
255
|
+
return facade;
|
|
256
|
+
}
|
|
257
|
+
export function OpaqueErrorFacadeClass() {
|
|
258
|
+
return (schema) => {
|
|
259
|
+
if (typeof schema === "function") {
|
|
260
|
+
return schema;
|
|
261
|
+
}
|
|
262
|
+
throw new TypeError("OpaqueErrorFacadeClass requires a class schema");
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL0NsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxZQUFZLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEtBQUssb0JBQW9CLE1BQU0sNkJBQTZCLENBQUE7QUFFbkUsT0FBTyxLQUFLLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMvQyxPQUFPLEtBQUssWUFBWSxNQUFNLG1CQUFtQixDQUFBO0FBd0NqRDs7O0dBR0c7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixHQUEwQixFQUMxQixNQUF1QixFQUN2QixHQUFRO0lBRVIsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBdUMsQ0FBQTtJQUM1RixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ2pILE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUV0RSxPQUFP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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FastCheck.d.ts","sourceRoot":"","sources":["../../src/Schema/FastCheck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAErC,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,KAAK,EAAE,GAAG,OAAO,EAAE,CAAA;AAEnB,YAAY,EAAE,EAAE,EAAE,CAAA;AAElB,eAAO,MAAM,QAAQ,+BAA+B,CAAA;AACpD,eAAO,MAAM,WAAW,QAAyB,CAAA;AAIjD,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"FastCheck.d.ts","sourceRoot":"","sources":["../../src/Schema/FastCheck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAErC,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,KAAK,EAAE,GAAG,OAAO,EAAE,CAAA;AAEnB,YAAY,EAAE,EAAE,EAAE,CAAA;AAElB,eAAO,MAAM,QAAQ,+BAA+B,CAAA;AACpD,eAAO,MAAM,WAAW,QAAyB,CAAA;AAIjD,eAAO,MAAM,WAAW,QAAS,MAAM,OAAO,MAAM,UAAU,EAAE,yBACsB,CAAA;AAGtF,eAAO,MAAM,WAAW,QAAS,MAAM,OAAO,MAAM,UAAU,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC,yBACL,CAAA;AAItF,eAAO,MAAM,OAAO,QAAS,MAAM,OAAO,MAAM,UAAU,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC,yBACF,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as SchemaParser from "effect/SchemaParser";
|
|
2
|
+
export * from "effect/SchemaParser";
|
|
3
|
+
export declare const decodeEffectConcurrently: typeof SchemaParser.decodeEffect;
|
|
4
|
+
export declare const decodeUnknownEffectConcurrently: typeof SchemaParser.decodeUnknownEffect;
|
|
5
|
+
//# sourceMappingURL=SchemaParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaParser.d.ts","sourceRoot":"","sources":["../../src/Schema/SchemaParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAGnD,cAAc,qBAAqB,CAAA;AAEnC,eAAO,MAAM,wBAAwB,EAAE,OAAO,YAAY,CAAC,YAE1D,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,OAAO,YAAY,CAAC,mBAEjE,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as SchemaParser from "effect/SchemaParser";
|
|
2
|
+
import { withDefaultParseOptions } from "./ext.js";
|
|
3
|
+
export * from "effect/SchemaParser";
|
|
4
|
+
export const decodeEffectConcurrently = withDefaultParseOptions(SchemaParser.decodeEffect);
|
|
5
|
+
export const decodeUnknownEffectConcurrently = withDefaultParseOptions(SchemaParser.decodeUnknownEffect);
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjaGVtYS9TY2hlbWFQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFlBQVksTUFBTSxxQkFBcUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFbEQsY0FBYyxxQkFBcUIsQ0FBQTtBQUVuQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUMsdUJBQXVCLENBQy9GLFlBQVksQ0FBQyxZQUFZLENBQzFCLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBNEMsdUJBQXVCLENBQzdHLFlBQVksQ0FBQyxtQkFBbUIsQ0FDakMsQ0FBQSJ9
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecialJsonSchema — A variant of Schema.toJsonSchemaDocument that
|
|
3
|
+
* post-processes the output (e.g. flattens simple allOf).
|
|
4
|
+
*/
|
|
5
|
+
import type * as JsonSchema from "effect/JsonSchema";
|
|
6
|
+
import type * as Schema from "effect/Schema";
|
|
7
|
+
/**
|
|
8
|
+
* Converts a schema to a JSON Schema Document (draft-2020-12), with
|
|
9
|
+
* post-processing that flattens simple allOf entries.
|
|
10
|
+
*/
|
|
11
|
+
export declare function specialJsonSchemaDocument(schema: Schema.Top, options?: Schema.ToJsonSchemaOptions): JsonSchema.Document<"draft-2020-12">;
|
|
12
|
+
/**
|
|
13
|
+
* Flattens `allOf` entries into the parent when the parent already has a
|
|
14
|
+
* `type` and every `allOf` entry is a plain constraint object (no `$ref`,
|
|
15
|
+
* no `type`). Merged properties from `allOf` entries win on conflict.
|
|
16
|
+
*/
|
|
17
|
+
export declare function flattenSimpleAllOf(obj: unknown): unknown;
|
|
18
|
+
/**
|
|
19
|
+
* Recursively removes `additionalProperties: false` from JSON Schema objects.
|
|
20
|
+
* Only removes when the value is exactly `false` -- other values are left intact.
|
|
21
|
+
*/
|
|
22
|
+
export declare function removeAdditionalPropertiesFalse(obj: unknown): unknown;
|
|
23
|
+
/**
|
|
24
|
+
* Flattens nested `anyOf` entries: if an anyOf entry is itself just `{ anyOf: [...] }`
|
|
25
|
+
* with no other keys, its children are inlined. If only one item remains, the anyOf
|
|
26
|
+
* wrapper is removed entirely.
|
|
27
|
+
*/
|
|
28
|
+
export declare function flattenNestedAnyOf(obj: unknown): unknown;
|
|
29
|
+
/**
|
|
30
|
+
* Applies JSON Schema post-processing: flattens simple allOf,
|
|
31
|
+
* flattens nested anyOf, then strips additionalProperties: false.
|
|
32
|
+
*/
|
|
33
|
+
export declare function postProcessJsonSchema(obj: JsonSchema.JsonSchema): JsonSchema.JsonSchema;
|
|
34
|
+
//# sourceMappingURL=SpecialJsonSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecialJsonSchema.d.ts","sourceRoot":"","sources":["../../src/Schema/SpecialJsonSchema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAG5C;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,GAAG,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,mBAAmB,GACnC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAYtC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CA6BxD;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAerE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAuCxD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAEvF"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import * as SchemaRepresentation from "effect/SchemaRepresentation";
|
|
2
|
+
/**
|
|
3
|
+
* Converts a schema to a JSON Schema Document (draft-2020-12), with
|
|
4
|
+
* post-processing that flattens simple allOf entries.
|
|
5
|
+
*/
|
|
6
|
+
export function specialJsonSchemaDocument(schema, options) {
|
|
7
|
+
const doc = SchemaRepresentation.fromAST(schema.ast);
|
|
8
|
+
const jd = SchemaRepresentation.toJsonSchemaDocument(doc, options);
|
|
9
|
+
const processedDefs = {};
|
|
10
|
+
for (const [key, def] of Object.entries(jd.definitions)) {
|
|
11
|
+
processedDefs[key] = postProcessJsonSchema(def);
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
dialect: "draft-2020-12",
|
|
15
|
+
schema: postProcessJsonSchema(jd.schema),
|
|
16
|
+
definitions: processedDefs
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Flattens `allOf` entries into the parent when the parent already has a
|
|
21
|
+
* `type` and every `allOf` entry is a plain constraint object (no `$ref`,
|
|
22
|
+
* no `type`). Merged properties from `allOf` entries win on conflict.
|
|
23
|
+
*/
|
|
24
|
+
export function flattenSimpleAllOf(obj) {
|
|
25
|
+
if (obj === null || typeof obj !== "object")
|
|
26
|
+
return obj;
|
|
27
|
+
if (globalThis.Array.isArray(obj)) {
|
|
28
|
+
return obj.map(flattenSimpleAllOf);
|
|
29
|
+
}
|
|
30
|
+
const record = obj;
|
|
31
|
+
const result = {};
|
|
32
|
+
for (const [key, value] of Object.entries(record)) {
|
|
33
|
+
result[key] = flattenSimpleAllOf(value);
|
|
34
|
+
}
|
|
35
|
+
if (result["type"] && globalThis.Array.isArray(result["allOf"])) {
|
|
36
|
+
const allOf = result["allOf"];
|
|
37
|
+
const canFlatten = allOf.every((entry) => typeof entry === "object" && entry !== null && !("$ref" in entry) && !("type" in entry));
|
|
38
|
+
if (canFlatten) {
|
|
39
|
+
const { allOf: _, ...rest } = result;
|
|
40
|
+
const merged = { ...rest };
|
|
41
|
+
for (const entry of allOf) {
|
|
42
|
+
Object.assign(merged, entry);
|
|
43
|
+
}
|
|
44
|
+
return merged;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Recursively removes `additionalProperties: false` from JSON Schema objects.
|
|
51
|
+
* Only removes when the value is exactly `false` -- other values are left intact.
|
|
52
|
+
*/
|
|
53
|
+
export function removeAdditionalPropertiesFalse(obj) {
|
|
54
|
+
if (obj === null || typeof obj !== "object")
|
|
55
|
+
return obj;
|
|
56
|
+
if (globalThis.Array.isArray(obj)) {
|
|
57
|
+
return obj.map(removeAdditionalPropertiesFalse);
|
|
58
|
+
}
|
|
59
|
+
const record = obj;
|
|
60
|
+
const result = {};
|
|
61
|
+
for (const [key, value] of Object.entries(record)) {
|
|
62
|
+
if (key === "additionalProperties" && value === false)
|
|
63
|
+
continue;
|
|
64
|
+
result[key] = removeAdditionalPropertiesFalse(value);
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Flattens nested `anyOf` entries: if an anyOf entry is itself just `{ anyOf: [...] }`
|
|
70
|
+
* with no other keys, its children are inlined. If only one item remains, the anyOf
|
|
71
|
+
* wrapper is removed entirely.
|
|
72
|
+
*/
|
|
73
|
+
export function flattenNestedAnyOf(obj) {
|
|
74
|
+
if (obj === null || typeof obj !== "object")
|
|
75
|
+
return obj;
|
|
76
|
+
if (globalThis.Array.isArray(obj))
|
|
77
|
+
return obj.map(flattenNestedAnyOf);
|
|
78
|
+
const record = obj;
|
|
79
|
+
const result = {};
|
|
80
|
+
for (const [key, value] of Object.entries(record)) {
|
|
81
|
+
result[key] = flattenNestedAnyOf(value);
|
|
82
|
+
}
|
|
83
|
+
if (globalThis.Array.isArray(result["anyOf"])) {
|
|
84
|
+
const anyOf = result["anyOf"];
|
|
85
|
+
const flattened = [];
|
|
86
|
+
for (const entry of anyOf) {
|
|
87
|
+
if (typeof entry === "object"
|
|
88
|
+
&& entry !== null
|
|
89
|
+
&& !globalThis.Array.isArray(entry)
|
|
90
|
+
&& "anyOf" in entry
|
|
91
|
+
&& Object.keys(entry).length === 1
|
|
92
|
+
&& globalThis.Array.isArray(entry["anyOf"])) {
|
|
93
|
+
flattened.push(...entry["anyOf"]);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
flattened.push(entry);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (flattened.length === 1) {
|
|
100
|
+
const { anyOf: _, ...rest } = result;
|
|
101
|
+
const single = flattened[0];
|
|
102
|
+
if (typeof single === "object" && single !== null && !globalThis.Array.isArray(single)) {
|
|
103
|
+
return { ...rest, ...single };
|
|
104
|
+
}
|
|
105
|
+
return single;
|
|
106
|
+
}
|
|
107
|
+
result["anyOf"] = flattened;
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Applies JSON Schema post-processing: flattens simple allOf,
|
|
113
|
+
* flattens nested anyOf, then strips additionalProperties: false.
|
|
114
|
+
*/
|
|
115
|
+
export function postProcessJsonSchema(obj) {
|
|
116
|
+
return removeAdditionalPropertiesFalse(flattenNestedAnyOf(flattenSimpleAllOf(obj)));
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlY2lhbEpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL1NwZWNpYWxKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw2QkFBNkIsQ0FBQTtBQUVuRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLE1BQWtCLEVBQ2xCLE9BQW9DO0lBRXBDLE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDcEQsTUFBTSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ2xFLE1BQU0sYUFBYSxHQUEyQixFQUFFLENBQUE7SUFDaEQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDeEQsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLGVBQWU7UUFDeEIsTUFBTSxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDeEMsV0FBVyxFQUFFLGFBQWE7S0FDM0IsQ0FBQTtBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQVk7SUFDN0MsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLEdBQUcsQ0FBQTtJQUV2RCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFr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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecialOpenApi — Deduplicates `components/schemas` entries in an OpenAPI spec
|
|
3
|
+
* and applies JSON Schema post-processing (null removal, allOf flattening).
|
|
4
|
+
*
|
|
5
|
+
* When `OpenApi.fromApi` generates the spec, different AST nodes sharing the
|
|
6
|
+
* same identifier can produce duplicate entries (e.g. "X" and "X1") in
|
|
7
|
+
* `components.schemas`. This module provides a transform function that
|
|
8
|
+
* collapses those duplicates, rewrites all `$ref` pointers accordingly,
|
|
9
|
+
* and post-processes schemas for better codegen compatibility.
|
|
10
|
+
*
|
|
11
|
+
* Usage with the OpenApi `Transform` annotation:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { OpenApi } from "effect/unstable"
|
|
15
|
+
* import { deduplicateOpenApiSchemas } from "./SpecialOpenApi.js"
|
|
16
|
+
*
|
|
17
|
+
* const api = HttpApi.make("myApi")
|
|
18
|
+
* .pipe(HttpApi.annotateContext(OpenApi.annotations({ transform: deduplicateOpenApiSchemas })))
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Deduplicates `components.schemas` entries in an OpenAPI spec.
|
|
23
|
+
*
|
|
24
|
+
* Entries sharing the same base identifier (e.g. "X" and "X1") whose JSON
|
|
25
|
+
* representations are identical are collapsed into a single canonical entry,
|
|
26
|
+
* and all `$ref` pointers throughout the spec are rewritten to point to
|
|
27
|
+
* the canonical key.
|
|
28
|
+
*
|
|
29
|
+
* Designed to be used as the `transform` option in `OpenApi.annotations`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function deduplicateOpenApiSchemas(spec: Record<string, any>): Record<string, any>;
|
|
32
|
+
//# sourceMappingURL=SpecialOpenApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecialOpenApi.d.ts","sourceRoot":"","sources":["../../src/Schema/SpecialOpenApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAqDrB"}
|