effect-app 4.0.0-beta.12 → 4.0.0-beta.121
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 +466 -0
- package/dist/Config/SecretURL.js +2 -2
- package/dist/Config.d.ts +7 -0
- package/dist/Config.d.ts.map +1 -0
- package/dist/Config.js +6 -0
- package/dist/ConfigProvider.d.ts +39 -0
- package/dist/ConfigProvider.d.ts.map +1 -0
- package/dist/ConfigProvider.js +42 -0
- package/dist/{ServiceMap.d.ts → Context.d.ts} +14 -18
- package/dist/Context.d.ts.map +1 -0
- package/dist/Context.js +66 -0
- package/dist/Effect.d.ts +8 -7
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +3 -2
- package/dist/Layer.d.ts +5 -4
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +1 -1
- package/dist/Operations.d.ts +104 -27
- package/dist/Operations.d.ts.map +1 -1
- package/dist/Pure.d.ts +2 -2
- package/dist/Pure.d.ts.map +1 -1
- package/dist/Pure.js +13 -13
- package/dist/Schema/Class.d.ts +48 -10
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +120 -16
- package/dist/Schema/SpecialJsonSchema.d.ts +33 -0
- package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
- package/dist/Schema/SpecialJsonSchema.js +122 -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 +5 -1
- package/dist/Schema/brand.d.ts.map +1 -1
- package/dist/Schema/brand.js +1 -1
- package/dist/Schema/email.d.ts.map +1 -1
- package/dist/Schema/email.js +9 -4
- package/dist/Schema/ext.d.ts +111 -46
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +114 -53
- package/dist/Schema/moreStrings.d.ts +19 -7
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +14 -9
- package/dist/Schema/numbers.d.ts +11 -11
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/numbers.js +10 -9
- package/dist/Schema/phoneNumber.d.ts.map +1 -1
- package/dist/Schema/phoneNumber.js +8 -3
- package/dist/Schema/strings.d.ts +4 -4
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema.d.ts +74 -55
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +85 -64
- package/dist/client/apiClientFactory.d.ts +11 -28
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +14 -15
- package/dist/client/clientFor.d.ts +6 -5
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/errors.d.ts +18 -9
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +35 -10
- package/dist/client/makeClient.d.ts +20 -15
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +32 -23
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +5 -5
- package/dist/ids.d.ts +2 -2
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +3 -2
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -9
- package/dist/middleware.d.ts +2 -2
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +3 -3
- package/dist/rpc/MiddlewareMaker.d.ts +4 -3
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +7 -6
- package/dist/rpc/RpcContextMap.d.ts +2 -2
- package/dist/rpc/RpcContextMap.d.ts.map +1 -1
- package/dist/rpc/RpcContextMap.js +4 -4
- package/dist/rpc/RpcMiddleware.d.ts +4 -3
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +1 -1
- package/dist/utils/gen.d.ts +1 -1
- package/dist/utils/gen.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -3
- package/dist/utils.d.ts +24 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +28 -2
- package/package.json +29 -17
- package/src/Config/SecretURL.ts +1 -1
- package/src/Config.ts +14 -0
- package/src/ConfigProvider.ts +48 -0
- package/src/{ServiceMap.ts → Context.ts} +51 -60
- package/src/Effect.ts +11 -9
- package/src/Layer.ts +5 -4
- package/src/Pure.ts +17 -18
- package/src/Schema/Class.ts +157 -30
- package/src/Schema/SpecialJsonSchema.ts +137 -0
- package/src/Schema/SpecialOpenApi.ts +130 -0
- package/src/Schema/brand.ts +10 -3
- package/src/Schema/email.ts +10 -2
- package/src/Schema/ext.ts +191 -85
- package/src/Schema/moreStrings.ts +21 -11
- package/src/Schema/numbers.ts +9 -8
- package/src/Schema/phoneNumber.ts +8 -1
- package/src/Schema.ts +195 -104
- package/src/client/apiClientFactory.ts +24 -29
- package/src/client/clientFor.ts +6 -1
- package/src/client/errors.ts +34 -9
- package/src/client/makeClient.ts +121 -61
- package/src/http/Request.ts +7 -4
- package/src/ids.ts +2 -1
- package/src/index.ts +3 -11
- package/src/middleware.ts +2 -2
- package/src/rpc/MiddlewareMaker.ts +8 -7
- package/src/rpc/RpcContextMap.ts +6 -5
- package/src/rpc/RpcMiddleware.ts +5 -4
- package/src/utils/gen.ts +1 -1
- package/src/utils/logger.ts +2 -2
- package/src/utils.ts +30 -1
- package/test/dist/moreStrings.test.d.ts.map +1 -0
- package/test/dist/rpc.test.d.ts.map +1 -1
- 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 +17 -0
- package/test/rpc.test.ts +28 -6
- package/test/schema.test.ts +504 -4
- package/test/secretURL.test.ts +157 -0
- package/test/special.test.ts +862 -0
- package/test/utils.test.ts +2 -2
- package/tsconfig.base.json +0 -1
- package/tsconfig.json +0 -1
- package/dist/ServiceMap.d.ts.map +0 -1
- package/dist/ServiceMap.js +0 -91
- package/dist/Struct.d.ts +0 -44
- package/dist/Struct.d.ts.map +0 -1
- package/dist/Struct.js +0 -29
- package/src/Struct.ts +0 -54
package/dist/Pure.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Chunk, Effect, Layer, Result } from "effect";
|
|
3
|
+
import * as Context from "./Context.js";
|
|
3
4
|
import { tuple } from "./Function.js";
|
|
4
|
-
import * as ServiceMap from "./ServiceMap.js";
|
|
5
5
|
const S1 = Symbol();
|
|
6
6
|
const S2 = Symbol();
|
|
7
7
|
const W = Symbol();
|
|
@@ -37,7 +37,7 @@ export function GMU_(get, modify, update) {
|
|
|
37
37
|
export function GMU(modify) {
|
|
38
38
|
return (get, update) => GMU_(get, modify, update);
|
|
39
39
|
}
|
|
40
|
-
const tagg =
|
|
40
|
+
const tagg = Context.Service("PureEnv");
|
|
41
41
|
function castTag() {
|
|
42
42
|
return tagg;
|
|
43
43
|
}
|
|
@@ -51,29 +51,29 @@ export function makeService(_) {
|
|
|
51
51
|
}
|
|
52
52
|
export const PureEnvEnv = Symbol();
|
|
53
53
|
export function get() {
|
|
54
|
-
return castTag().
|
|
54
|
+
return (castTag()).useSync((_) => _.env.state);
|
|
55
55
|
}
|
|
56
56
|
export function set(s) {
|
|
57
|
-
return castTag().
|
|
57
|
+
return (castTag()).useSync((_) => {
|
|
58
58
|
_.env.state = s;
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
export function log(w) {
|
|
62
|
-
return castTag().
|
|
62
|
+
return (castTag()).useSync((_) => {
|
|
63
63
|
_.env.log = Chunk.append(_.env.log, w);
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
export function logMany(w) {
|
|
67
|
-
return castTag().
|
|
67
|
+
return (castTag()).useSync((_) => {
|
|
68
68
|
_.env.log = Chunk.appendAll(_.env.log, Chunk.fromIterable(w));
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
export function runAll(self, s) {
|
|
72
72
|
const a = Effect
|
|
73
|
-
.flatMap(self, (x) => castTag()
|
|
74
|
-
.
|
|
75
|
-
.pipe(Effect.
|
|
76
|
-
.pipe(Effect.catch((err) => tagg.
|
|
73
|
+
.flatMap(self, (x) => (castTag())
|
|
74
|
+
.useSync(({ env: _ }) => ({ log: _.log, state: _.state }))
|
|
75
|
+
.pipe(Effect.map(({ log, state }) => tuple(log, Result.succeed(tuple(state, x))))))
|
|
76
|
+
.pipe(Effect.catch((err) => tagg.useSync((env) => tuple(env.env.log, Result.fail(err)))));
|
|
77
77
|
return Effect.provide(a, Layer.succeed(tagg, { env: makePureEnv(s) }));
|
|
78
78
|
}
|
|
79
79
|
export function runResult(self, s) {
|
|
@@ -89,7 +89,7 @@ export function runA(self, s) {
|
|
|
89
89
|
return Effect.map(runAll(self, s), ([log, r]) => tuple(log, Result.map(r, ([, a]) => a)));
|
|
90
90
|
}
|
|
91
91
|
export function modify(mod) {
|
|
92
|
-
return castTag().
|
|
92
|
+
return (castTag()).useSync((_) => {
|
|
93
93
|
const [s, a] = mod(_.env.state);
|
|
94
94
|
_.env.state = s;
|
|
95
95
|
return a;
|
|
@@ -97,7 +97,7 @@ export function modify(mod) {
|
|
|
97
97
|
}
|
|
98
98
|
export function modifyM(mod) {
|
|
99
99
|
// return serviceWithEffect(_ => Ref.modifyM_(_.state, mod))
|
|
100
|
-
return Effect.flatMap(castTag().
|
|
100
|
+
return Effect.flatMap((castTag()).useSync((_) => _), (_) => Effect.map(mod(_.env.state), ([s, a]) => {
|
|
101
101
|
_.env.state = s;
|
|
102
102
|
return a;
|
|
103
103
|
}));
|
|
@@ -284,4 +284,4 @@ export function updateWithEffect(upd) {
|
|
|
284
284
|
// abc,
|
|
285
285
|
// { a: 1 }
|
|
286
286
|
// )
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QdXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU3QyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUNuQixNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUNuQixNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQWtCbEIsTUFBTSxXQUFXO0lBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBVTtJQUNiLENBQUMsRUFBRSxDQUFDLENBQWlCO0lBQ3JCLENBQUMsRUFBRSxDQUFDLENBQVc7SUFDZixLQUFLLENBQUk7SUFDVCxHQUFHLENBQWdCO0lBRTVCLFlBQVksQ0FBSztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFLLENBQUE7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBZSxDQUFLO0lBQzdDLE9BQU8sSUFBSSxXQUFXLENBQVcsQ0FBQyxDQUFDLENBQUE7QUFDckMsQ0FBQztBQUVELDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUsWUFBWSxDQUMxQixJQUFPO0lBTVAsK0RBQStEO0lBQy9ELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUlELDRDQUE0QztBQUU1QyxNQUFNLFVBQVUsS0FBSyxDQUNuQixHQUErQixFQUMvQixNQUE0RCxFQUM1RCxNQUE2QztJQUU3QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxD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
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QdXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3JELE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFckMsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUE7QUFDbkIsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUE7QUFDbkIsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUE7QUFrQmxCLE1BQU0sV0FBVztJQUNOLENBQUMsQ0FBQyxDQUFDLENBQVU7SUFDYixDQUFDLEVBQUUsQ0FBQyxDQUFpQjtJQUNyQixDQUFDLEVBQUUsQ0FBQyxDQUFXO0lBQ2YsS0FBSyxDQUFJO0lBQ1QsR0FBRyxDQUFnQjtJQUU1QixZQUFZLENBQUs7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQTtRQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBSyxDQUFBO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxXQUFXLENBQWUsQ0FBSztJQUM3QyxPQUFPLElBQUksV0FBVyxDQUFXLENBQUMsQ0FBQyxDQUFBO0FBQ3JDLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsSUFBTztJQU1QLCtEQUErRDtJQUMvRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFJRCw0Q0FBNEM7QUFFNUMsTUFBTSxVQUFVLEtBQUssQ0FDbkIsR0FBK0IsRUFDL0IsTUFBNEQsRUFDNUQsTUFBNkM7SUFFN0MsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FB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
|
package/dist/Schema/Class.d.ts
CHANGED
|
@@ -1,26 +1,64 @@
|
|
|
1
|
-
import type { Struct } from "effect/Schema";
|
|
2
1
|
import * as S from "effect/Schema";
|
|
2
|
+
import { copyOrigin } from "../utils.js";
|
|
3
3
|
type ClassAnnotations<Self> = S.Annotations.Declaration<Self, readonly [any]>;
|
|
4
4
|
export interface EnhancedClass<Self, SchemaS extends S.Top & {
|
|
5
|
-
readonly fields: Struct.Fields;
|
|
6
|
-
}, Inherited> extends S.Class<Self, SchemaS, Inherited
|
|
5
|
+
readonly fields: S.Struct.Fields;
|
|
6
|
+
}, Inherited> extends S.Class<Self, SchemaS, Inherited> {
|
|
7
|
+
/**
|
|
8
|
+
* See `copyOrigin` docs in `utils.ts` for return-type design details.
|
|
9
|
+
*/
|
|
10
|
+
readonly copy: ReturnType<typeof copyOrigin<new (_: any) => Self>>;
|
|
7
11
|
}
|
|
8
12
|
type MissingSelfGeneric<Usage extends string, Params extends string = ""> = `Missing \`Self\` generic - use \`class Self extends ${Usage}<Self>()(${Params}{ ... })\``;
|
|
9
|
-
|
|
10
|
-
pick: <P extends keyof Fields>(...keys: readonly P[]) => Pick<Fields, P>;
|
|
11
|
-
omit: <P extends keyof Fields>(...keys: readonly P[]) => Omit<Fields, P>;
|
|
12
|
-
}
|
|
13
|
-
type HasFields<Fields extends Struct.Fields> = {
|
|
13
|
+
type HasFields<Fields extends S.Struct.Fields> = {
|
|
14
14
|
readonly fields: Fields;
|
|
15
15
|
} | {
|
|
16
16
|
readonly from: HasFields<Fields>;
|
|
17
17
|
};
|
|
18
|
+
export type Class<Self, S extends S.Top & {
|
|
19
|
+
readonly fields: S.Struct.Fields;
|
|
20
|
+
}, Inherited> = EnhancedClass<Self, S, Inherited>;
|
|
21
|
+
/**
|
|
22
|
+
* Like `Schema.Class`, but the resulting class accepts plain objects matching
|
|
23
|
+
* the struct schema during encoding — not only `instanceof` or type-id
|
|
24
|
+
* checks.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { Schema } from "effect"
|
|
29
|
+
* import { Class } from "./Class.js"
|
|
30
|
+
*
|
|
31
|
+
* class A extends Class<A>("A")({ a: Schema.String }) {}
|
|
32
|
+
*
|
|
33
|
+
* // Construction works as normal:
|
|
34
|
+
* new A({ a: "hello" })
|
|
35
|
+
*
|
|
36
|
+
* // Encoding accepts plain objects:
|
|
37
|
+
* Schema.encodeUnknownSync(A)({ a: "hello" }) // { a: "hello" }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
18
40
|
export declare const Class: <Self = never>(identifier: string) => <Fields extends S.Struct.Fields>(fieldsOr: Fields | HasFields<Fields>, annotations?: ClassAnnotations<Self>) => [Self] extends [never] ? MissingSelfGeneric<"Class"> : EnhancedClass<Self, S.Struct<Fields>, {}>;
|
|
19
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Like `Schema.TaggedClass`, but the resulting class accepts plain objects
|
|
43
|
+
* matching the struct schema during encoding.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { Schema } from "effect"
|
|
48
|
+
* import { TaggedClass } from "./Class.js"
|
|
49
|
+
*
|
|
50
|
+
* class Circle extends TaggedClass<Circle>()("Circle", {
|
|
51
|
+
* radius: Schema.Number
|
|
52
|
+
* }) {}
|
|
53
|
+
*
|
|
54
|
+
* Schema.encodeUnknownSync(Circle)({ _tag: "Circle", radius: 5 })
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare const TaggedClass: <Self = never>(identifier?: string) => <Tag extends string, Fields extends S.Struct.Fields>(tag: Tag, fieldsOr: Fields | HasFields<Fields>, annotations?: ClassAnnotations<Self>) => [Self] extends [never] ? MissingSelfGeneric<"TaggedClass"> : EnhancedClass<Self, S.Struct<{
|
|
20
58
|
readonly _tag: S.tag<Tag>;
|
|
21
59
|
} & Fields>, {}>;
|
|
22
60
|
export declare const ExtendedClass: <Self, _SelfFrom>(identifier: string) => <Fields extends S.Struct.Fields>(fieldsOr: Fields | HasFields<Fields>, annotations?: ClassAnnotations<Self>) => EnhancedClass<Self, S.Struct<Fields>, {}>;
|
|
23
|
-
export interface EnhancedTaggedClass<Self, Tag extends string, Fields extends Struct.Fields, SelfFrom> extends EnhancedClass<Self, S.Struct<Fields> & {
|
|
61
|
+
export interface EnhancedTaggedClass<Self, Tag extends string, Fields extends S.Struct.Fields, SelfFrom> extends EnhancedClass<Self, S.Struct<Fields> & {
|
|
24
62
|
readonly Encoded: SelfFrom;
|
|
25
63
|
}, {}> {
|
|
26
64
|
readonly _tag: Tag;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../../src/Schema/Class.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
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,28 +1,132 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
2
|
+
import { Effect, Option, Schema, SchemaAST, SchemaIssue } from "effect";
|
|
3
3
|
import * as S from "effect/Schema";
|
|
4
|
+
import { copyOrigin } from "../utils.js";
|
|
5
|
+
import { concurrencyUnbounded } from "./ext.js";
|
|
6
|
+
/**
|
|
7
|
+
* Build a modified Declaration that accepts struct-matching values during
|
|
8
|
+
* encoding, given the original Declaration and the class's fields.
|
|
9
|
+
*/
|
|
10
|
+
function makeRelaxedDeclaration(ast, fields, cls) {
|
|
11
|
+
const structSchema = Schema.Struct(fields);
|
|
12
|
+
const isStructValue = Schema.is(structSchema);
|
|
13
|
+
const existingParseOptions = ast.annotations?.["parseOptions"];
|
|
14
|
+
const annotations = {
|
|
15
|
+
...ast.annotations,
|
|
16
|
+
parseOptions: { ...existingParseOptions, concurrency: "unbounded" }
|
|
17
|
+
};
|
|
18
|
+
return new SchemaAST.Declaration(ast.typeParameters, () => (input, self) => {
|
|
19
|
+
if (input instanceof cls || isStructValue(input)) {
|
|
20
|
+
return Effect.succeed(input);
|
|
21
|
+
}
|
|
22
|
+
return Effect.fail(new SchemaIssue.InvalidType(self, Option.some(input)));
|
|
23
|
+
}, annotations, ast.checks, ast.encoding, ast.context);
|
|
24
|
+
}
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Class — like Schema.Class but with relaxed encoding
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
/**
|
|
29
|
+
* Like `Schema.Class`, but the resulting class accepts plain objects matching
|
|
30
|
+
* the struct schema during encoding — not only `instanceof` or type-id
|
|
31
|
+
* checks.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { Schema } from "effect"
|
|
36
|
+
* import { Class } from "./Class.js"
|
|
37
|
+
*
|
|
38
|
+
* class A extends Class<A>("A")({ a: Schema.String }) {}
|
|
39
|
+
*
|
|
40
|
+
* // Construction works as normal:
|
|
41
|
+
* new A({ a: "hello" })
|
|
42
|
+
*
|
|
43
|
+
* // Encoding accepts plain objects:
|
|
44
|
+
* Schema.encodeUnknownSync(A)({ a: "hello" }) // { a: "hello" }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
4
47
|
export const Class = (identifier) => (fields, annotations) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
48
|
+
// Build the original Schema.Class
|
|
49
|
+
const Base = S.Class(identifier)(fields, annotations);
|
|
50
|
+
// Get the original ast getter from the base class
|
|
51
|
+
const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
|
|
52
|
+
// Cache per-class to avoid recomputing
|
|
53
|
+
const astCache = new WeakMap();
|
|
54
|
+
const copyCache = new WeakMap();
|
|
55
|
+
return class extends Base {
|
|
56
|
+
static get copy() {
|
|
57
|
+
let cached = copyCache.get(this);
|
|
58
|
+
if (cached === undefined) {
|
|
59
|
+
cached = copyOrigin(this);
|
|
60
|
+
copyCache.set(this, cached);
|
|
61
|
+
}
|
|
62
|
+
return cached;
|
|
63
|
+
}
|
|
64
|
+
static get ast() {
|
|
65
|
+
let cached = astCache.get(this);
|
|
66
|
+
if (cached !== undefined)
|
|
67
|
+
return cached;
|
|
68
|
+
// Call the original getter with `this` bound to the actual user class,
|
|
69
|
+
// so getClassSchema(this) creates a schema that uses `new this(...)`.
|
|
70
|
+
const originalAst = originalAstDescriptor.get.call(this);
|
|
71
|
+
cached = makeRelaxedDeclaration(originalAst, Base.fields, this);
|
|
72
|
+
astCache.set(this, cached);
|
|
73
|
+
return cached;
|
|
74
|
+
}
|
|
75
|
+
static mapFields(f, options) {
|
|
76
|
+
return Base.mapFields(f, options).annotate(concurrencyUnbounded);
|
|
9
77
|
}
|
|
10
|
-
// static readonly include = include(fields)
|
|
11
|
-
static pick = (...selection) => pipe(this["fields"], Struct2.pick(selection));
|
|
12
|
-
static omit = (...selection) => pipe(this["fields"], Struct2.omit(selection));
|
|
13
78
|
};
|
|
14
79
|
};
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
// TaggedClass — like Schema.TaggedClass but with relaxed encoding
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
/**
|
|
84
|
+
* Like `Schema.TaggedClass`, but the resulting class accepts plain objects
|
|
85
|
+
* matching the struct schema during encoding.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* import { Schema } from "effect"
|
|
90
|
+
* import { TaggedClass } from "./Class.js"
|
|
91
|
+
*
|
|
92
|
+
* class Circle extends TaggedClass<Circle>()("Circle", {
|
|
93
|
+
* radius: Schema.Number
|
|
94
|
+
* }) {}
|
|
95
|
+
*
|
|
96
|
+
* Schema.encodeUnknownSync(Circle)({ _tag: "Circle", radius: 5 })
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
15
99
|
export const TaggedClass = (identifier) => (tag, fields, annotations) => {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
100
|
+
const Base = S.TaggedClass(identifier)(tag, fields, annotations);
|
|
101
|
+
const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
|
|
102
|
+
const astCache = new WeakMap();
|
|
103
|
+
const copyCache = new WeakMap();
|
|
104
|
+
return class extends Base {
|
|
105
|
+
static get copy() {
|
|
106
|
+
let cached = copyCache.get(this);
|
|
107
|
+
if (cached === undefined) {
|
|
108
|
+
cached = copyOrigin(this);
|
|
109
|
+
copyCache.set(this, cached);
|
|
110
|
+
}
|
|
111
|
+
return cached;
|
|
112
|
+
}
|
|
113
|
+
static get ast() {
|
|
114
|
+
let cached = astCache.get(this);
|
|
115
|
+
if (cached !== undefined)
|
|
116
|
+
return cached;
|
|
117
|
+
const originalAst = originalAstDescriptor.get.call(this);
|
|
118
|
+
cached = makeRelaxedDeclaration(originalAst, Base.fields, this);
|
|
119
|
+
astCache.set(this, cached);
|
|
120
|
+
return cached;
|
|
121
|
+
}
|
|
122
|
+
static mapFields(f, options) {
|
|
123
|
+
return Base.mapFields(f, options).annotate(concurrencyUnbounded);
|
|
20
124
|
}
|
|
21
|
-
// static readonly include = include(fields)
|
|
22
|
-
static pick = (...selection) => pipe(this["fields"], Struct2.pick(selection));
|
|
23
|
-
static omit = (...selection) => pipe(this["fields"], Struct2.omit(selection));
|
|
24
125
|
};
|
|
25
126
|
};
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
// ExtendedClass — like Class but with extra type parameter for hierarchies
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
26
130
|
export const ExtendedClass = Class;
|
|
27
131
|
export const ExtendedTaggedClass = TaggedClass;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL0NsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN2RSxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQTJCL0M7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FDN0IsR0FBMEIsRUFDMUIsTUFBNEIsRUFDNUIsR0FBUTtJQUVSLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM3QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQXVDLENBQUE7SUFDcEcsTUFBTSxXQUFXLEdBQUc7UUFDbEIsR0FBRyxHQUFHLENBQUMsV0FBVztRQUNsQixZQUFZLEVBQUUsRUFBRSxHQUFHLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxXQUFvQixFQUFFO0tBQzdFLENBQUE7SUFDRCxPQUFPLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FDOUIsR0FBRyxDQUFDLGNBQWMsRUFDbEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFjLEVBQUUsSUFBMkIsRUFBRSxFQUFFO1FBQ3BELElBQUksS0FBSyxZQUFZLEdBQUcsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsQ0FB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
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecialJsonSchema — A variant of Schema.toJsonSchemaDocument that
|
|
3
|
+
* post-processes the output (e.g. flattens simple allOf).
|
|
4
|
+
*/
|
|
5
|
+
import { type JsonSchema, type Schema } from "effect";
|
|
6
|
+
/**
|
|
7
|
+
* Converts a schema to a JSON Schema Document (draft-2020-12), with
|
|
8
|
+
* post-processing that flattens simple allOf entries.
|
|
9
|
+
*/
|
|
10
|
+
export declare function specialJsonSchemaDocument(schema: Schema.Top, options?: Schema.ToJsonSchemaOptions): JsonSchema.Document<"draft-2020-12">;
|
|
11
|
+
/**
|
|
12
|
+
* Flattens `allOf` entries into the parent when the parent already has a
|
|
13
|
+
* `type` and every `allOf` entry is a plain constraint object (no `$ref`,
|
|
14
|
+
* no `type`). Merged properties from `allOf` entries win on conflict.
|
|
15
|
+
*/
|
|
16
|
+
export declare function flattenSimpleAllOf(obj: unknown): unknown;
|
|
17
|
+
/**
|
|
18
|
+
* Recursively removes `additionalProperties: false` from JSON Schema objects.
|
|
19
|
+
* Only removes when the value is exactly `false` -- other values are left intact.
|
|
20
|
+
*/
|
|
21
|
+
export declare function removeAdditionalPropertiesFalse(obj: unknown): unknown;
|
|
22
|
+
/**
|
|
23
|
+
* Flattens nested `anyOf` entries: if an anyOf entry is itself just `{ anyOf: [...] }`
|
|
24
|
+
* with no other keys, its children are inlined. If only one item remains, the anyOf
|
|
25
|
+
* wrapper is removed entirely.
|
|
26
|
+
*/
|
|
27
|
+
export declare function flattenNestedAnyOf(obj: unknown): unknown;
|
|
28
|
+
/**
|
|
29
|
+
* Applies JSON Schema post-processing: flattens simple allOf,
|
|
30
|
+
* flattens nested anyOf, then strips additionalProperties: false.
|
|
31
|
+
*/
|
|
32
|
+
export declare function postProcessJsonSchema(obj: JsonSchema.JsonSchema): JsonSchema.JsonSchema;
|
|
33
|
+
//# 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,EAAE,KAAK,UAAU,EAAE,KAAK,MAAM,EAAwB,MAAM,QAAQ,CAAA;AAE3E;;;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,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecialJsonSchema — A variant of Schema.toJsonSchemaDocument that
|
|
3
|
+
* post-processes the output (e.g. flattens simple allOf).
|
|
4
|
+
*/
|
|
5
|
+
import { SchemaRepresentation } from "effect";
|
|
6
|
+
/**
|
|
7
|
+
* Converts a schema to a JSON Schema Document (draft-2020-12), with
|
|
8
|
+
* post-processing that flattens simple allOf entries.
|
|
9
|
+
*/
|
|
10
|
+
export function specialJsonSchemaDocument(schema, options) {
|
|
11
|
+
const doc = SchemaRepresentation.fromAST(schema.ast);
|
|
12
|
+
const jd = SchemaRepresentation.toJsonSchemaDocument(doc, options);
|
|
13
|
+
const processedDefs = {};
|
|
14
|
+
for (const [key, def] of Object.entries(jd.definitions)) {
|
|
15
|
+
processedDefs[key] = postProcessJsonSchema(def);
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
dialect: "draft-2020-12",
|
|
19
|
+
schema: postProcessJsonSchema(jd.schema),
|
|
20
|
+
definitions: processedDefs
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Flattens `allOf` entries into the parent when the parent already has a
|
|
25
|
+
* `type` and every `allOf` entry is a plain constraint object (no `$ref`,
|
|
26
|
+
* no `type`). Merged properties from `allOf` entries win on conflict.
|
|
27
|
+
*/
|
|
28
|
+
export function flattenSimpleAllOf(obj) {
|
|
29
|
+
if (obj === null || typeof obj !== "object")
|
|
30
|
+
return obj;
|
|
31
|
+
if (globalThis.Array.isArray(obj)) {
|
|
32
|
+
return obj.map(flattenSimpleAllOf);
|
|
33
|
+
}
|
|
34
|
+
const record = obj;
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const [key, value] of Object.entries(record)) {
|
|
37
|
+
result[key] = flattenSimpleAllOf(value);
|
|
38
|
+
}
|
|
39
|
+
if (result["type"] && globalThis.Array.isArray(result["allOf"])) {
|
|
40
|
+
const allOf = result["allOf"];
|
|
41
|
+
const canFlatten = allOf.every((entry) => typeof entry === "object" && entry !== null && !("$ref" in entry) && !("type" in entry));
|
|
42
|
+
if (canFlatten) {
|
|
43
|
+
const { allOf: _, ...rest } = result;
|
|
44
|
+
let merged = { ...rest };
|
|
45
|
+
for (const entry of allOf) {
|
|
46
|
+
merged = { ...merged, ...entry };
|
|
47
|
+
}
|
|
48
|
+
return merged;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Recursively removes `additionalProperties: false` from JSON Schema objects.
|
|
55
|
+
* Only removes when the value is exactly `false` -- other values are left intact.
|
|
56
|
+
*/
|
|
57
|
+
export function removeAdditionalPropertiesFalse(obj) {
|
|
58
|
+
if (obj === null || typeof obj !== "object")
|
|
59
|
+
return obj;
|
|
60
|
+
if (globalThis.Array.isArray(obj)) {
|
|
61
|
+
return obj.map(removeAdditionalPropertiesFalse);
|
|
62
|
+
}
|
|
63
|
+
const record = obj;
|
|
64
|
+
const result = {};
|
|
65
|
+
for (const [key, value] of Object.entries(record)) {
|
|
66
|
+
if (key === "additionalProperties" && value === false)
|
|
67
|
+
continue;
|
|
68
|
+
result[key] = removeAdditionalPropertiesFalse(value);
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Flattens nested `anyOf` entries: if an anyOf entry is itself just `{ anyOf: [...] }`
|
|
74
|
+
* with no other keys, its children are inlined. If only one item remains, the anyOf
|
|
75
|
+
* wrapper is removed entirely.
|
|
76
|
+
*/
|
|
77
|
+
export function flattenNestedAnyOf(obj) {
|
|
78
|
+
if (obj === null || typeof obj !== "object")
|
|
79
|
+
return obj;
|
|
80
|
+
if (globalThis.Array.isArray(obj))
|
|
81
|
+
return obj.map(flattenNestedAnyOf);
|
|
82
|
+
const record = obj;
|
|
83
|
+
const result = {};
|
|
84
|
+
for (const [key, value] of Object.entries(record)) {
|
|
85
|
+
result[key] = flattenNestedAnyOf(value);
|
|
86
|
+
}
|
|
87
|
+
if (globalThis.Array.isArray(result["anyOf"])) {
|
|
88
|
+
const anyOf = result["anyOf"];
|
|
89
|
+
const flattened = [];
|
|
90
|
+
for (const entry of anyOf) {
|
|
91
|
+
if (typeof entry === "object"
|
|
92
|
+
&& entry !== null
|
|
93
|
+
&& !globalThis.Array.isArray(entry)
|
|
94
|
+
&& "anyOf" in entry
|
|
95
|
+
&& Object.keys(entry).length === 1
|
|
96
|
+
&& globalThis.Array.isArray(entry["anyOf"])) {
|
|
97
|
+
flattened.push(...entry["anyOf"]);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
flattened.push(entry);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (flattened.length === 1) {
|
|
104
|
+
const { anyOf: _, ...rest } = result;
|
|
105
|
+
const single = flattened[0];
|
|
106
|
+
if (typeof single === "object" && single !== null && !globalThis.Array.isArray(single)) {
|
|
107
|
+
return { ...rest, ...single };
|
|
108
|
+
}
|
|
109
|
+
return single;
|
|
110
|
+
}
|
|
111
|
+
result["anyOf"] = flattened;
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Applies JSON Schema post-processing: flattens simple allOf,
|
|
117
|
+
* flattens nested anyOf, then strips additionalProperties: false.
|
|
118
|
+
*/
|
|
119
|
+
export function postProcessJsonSchema(obj) {
|
|
120
|
+
return removeAdditionalPropertiesFalse(flattenNestedAnyOf(flattenSimpleAllOf(obj)));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlY2lhbEpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL1NwZWNpYWxKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBZ0Msb0JBQW9CLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFM0U7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUFrQixFQUNsQixPQUFvQztJQUVwQyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sRUFBRSxHQUFHLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNsRSxNQUFNLGFBQWEsR0FBMkIsRUFBRSxDQUFBO0lBQ2hELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ3hELGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3hDLFdBQVcsRUFBRSxhQUFhO0tBQzNCLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFZO0lBQzdDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUE7SUFFdkQsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxDQUFD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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"}
|