effect-app 4.0.0-beta.5 → 4.0.0-beta.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +243 -0
  2. package/dist/Config.d.ts +7 -0
  3. package/dist/Config.d.ts.map +1 -0
  4. package/dist/Config.js +6 -0
  5. package/dist/ConfigProvider.d.ts +39 -0
  6. package/dist/ConfigProvider.d.ts.map +1 -0
  7. package/dist/ConfigProvider.js +42 -0
  8. package/dist/Effect.d.ts.map +1 -1
  9. package/dist/Effect.js +3 -2
  10. package/dist/Operations.d.ts +51 -15
  11. package/dist/Operations.d.ts.map +1 -1
  12. package/dist/Pure.d.ts.map +1 -1
  13. package/dist/Pure.js +11 -11
  14. package/dist/Schema/Class.d.ts +39 -1
  15. package/dist/Schema/Class.d.ts.map +1 -1
  16. package/dist/Schema/Class.js +89 -12
  17. package/dist/Schema/SpecialJsonSchema.d.ts +40 -0
  18. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  19. package/dist/Schema/SpecialJsonSchema.js +199 -0
  20. package/dist/Schema/SpecialOpenApi.d.ts +30 -0
  21. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  22. package/dist/Schema/SpecialOpenApi.js +120 -0
  23. package/dist/Schema/brand.d.ts +8 -5
  24. package/dist/Schema/brand.d.ts.map +1 -1
  25. package/dist/Schema/brand.js +1 -1
  26. package/dist/Schema/email.d.ts.map +1 -1
  27. package/dist/Schema/email.js +4 -3
  28. package/dist/Schema/ext.d.ts +177 -44
  29. package/dist/Schema/ext.d.ts.map +1 -1
  30. package/dist/Schema/ext.js +144 -35
  31. package/dist/Schema/moreStrings.d.ts.map +1 -1
  32. package/dist/Schema/moreStrings.js +6 -4
  33. package/dist/Schema/numbers.d.ts +8 -8
  34. package/dist/Schema/numbers.js +2 -2
  35. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  36. package/dist/Schema/phoneNumber.js +3 -2
  37. package/dist/Schema.d.ts +21 -54
  38. package/dist/Schema.d.ts.map +1 -1
  39. package/dist/Schema.js +43 -64
  40. package/dist/ServiceMap.d.ts +3 -3
  41. package/dist/ServiceMap.d.ts.map +1 -1
  42. package/dist/ServiceMap.js +1 -1
  43. package/dist/client/apiClientFactory.d.ts +1 -1
  44. package/dist/client/apiClientFactory.d.ts.map +1 -1
  45. package/dist/client/apiClientFactory.js +8 -9
  46. package/dist/client/errors.d.ts +8 -0
  47. package/dist/client/errors.d.ts.map +1 -1
  48. package/dist/client/errors.js +34 -10
  49. package/dist/client/makeClient.d.ts +13 -12
  50. package/dist/client/makeClient.d.ts.map +1 -1
  51. package/dist/client/makeClient.js +7 -15
  52. package/dist/http/Request.d.ts.map +1 -1
  53. package/dist/http/Request.js +5 -5
  54. package/dist/ids.d.ts +1 -1
  55. package/dist/ids.d.ts.map +1 -1
  56. package/dist/ids.js +1 -1
  57. package/dist/index.d.ts +2 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +3 -2
  60. package/dist/utils.d.ts +18 -0
  61. package/dist/utils.d.ts.map +1 -1
  62. package/dist/utils.js +24 -5
  63. package/package.json +24 -12
  64. package/src/Config.ts +14 -0
  65. package/src/ConfigProvider.ts +48 -0
  66. package/src/Effect.ts +3 -2
  67. package/src/Pure.ts +12 -13
  68. package/src/Schema/Class.ts +114 -16
  69. package/src/Schema/SpecialJsonSchema.ts +216 -0
  70. package/src/Schema/SpecialOpenApi.ts +126 -0
  71. package/src/Schema/brand.ts +13 -7
  72. package/src/Schema/email.ts +4 -2
  73. package/src/Schema/ext.ts +213 -56
  74. package/src/Schema/moreStrings.ts +10 -6
  75. package/src/Schema/numbers.ts +2 -2
  76. package/src/Schema/phoneNumber.ts +3 -1
  77. package/src/Schema.ts +79 -103
  78. package/src/ServiceMap.ts +7 -6
  79. package/src/client/apiClientFactory.ts +12 -15
  80. package/src/client/errors.ts +45 -12
  81. package/src/client/makeClient.ts +33 -26
  82. package/src/http/Request.ts +7 -4
  83. package/src/ids.ts +1 -1
  84. package/src/index.ts +2 -1
  85. package/src/utils.ts +26 -4
  86. package/test/dist/moreStrings.test.d.ts.map +1 -0
  87. package/test/dist/rpc.test.d.ts.map +1 -1
  88. package/test/dist/special.test.d.ts.map +1 -0
  89. package/test/moreStrings.test.ts +17 -0
  90. package/test/rpc.test.ts +26 -5
  91. package/test/schema.test.ts +292 -1
  92. package/test/special.test.ts +525 -0
  93. package/test/utils.test.ts +1 -1
  94. package/tsconfig.base.json +0 -1
  95. package/tsconfig.json +0 -1
  96. package/dist/Struct.d.ts +0 -44
  97. package/dist/Struct.d.ts.map +0 -1
  98. package/dist/Struct.js +0 -29
  99. package/src/Struct.ts +0 -54
package/dist/Pure.js CHANGED
@@ -51,29 +51,29 @@ export function makeService(_) {
51
51
  }
52
52
  export const PureEnvEnv = Symbol();
53
53
  export function get() {
54
- return castTag().use((_) => _.env.state);
54
+ return (castTag()).useSync((_) => _.env.state);
55
55
  }
56
56
  export function set(s) {
57
- return castTag().use((_) => {
57
+ return (castTag()).useSync((_) => {
58
58
  _.env.state = s;
59
59
  });
60
60
  }
61
61
  export function log(w) {
62
- return castTag().use((_) => {
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().use((_) => {
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
- .use(({ env: _ }) => Effect.sync(() => ({ log: _.log, state: _.state })))
75
- .pipe(Effect.flatMap((_) => Effect.succeed(_)), Effect.map(({ log, state }) => tuple(log, Result.succeed(tuple(state, x))))))
76
- .pipe(Effect.catch((err) => tagg.use((env) => tuple(env.env.log, Result.fail(err)))));
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().use((_) => {
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().use((_) => _), (_) => Effect.map(mod(_.env.state), ([s, a]) => {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QdXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU3QyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUNuQixNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUNuQixNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQWtCbEIsTUFBTSxXQUFXO0lBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBVTtJQUNiLENBQUMsRUFBRSxDQUFDLENBQWlCO0lBQ3JCLENBQUMsRUFBRSxDQUFDLENBQVc7SUFDZixLQUFLLENBQUk7SUFDVCxHQUFHLENBQWdCO0lBRTVCLFlBQVksQ0FBSztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFLLENBQUE7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBZSxDQUFLO0lBQzdDLE9BQU8sSUFBSSxXQUFXLENBQVcsQ0FBQyxDQUFDLENBQUE7QUFDckMsQ0FBQztBQUVELDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUsWUFBWSxDQUMxQixJQUFPO0lBTVAsK0RBQStEO0lBQy9ELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUlELDRDQUE0QztBQUU1QyxNQUFNLFVBQVUsS0FBSyxDQUNuQixHQUErQixFQUMvQixNQUE0RCxFQUM1RCxNQUE2QztJQUU3QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxD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
@@ -15,8 +15,46 @@ type HasFields<Fields extends Struct.Fields> = {
15
15
  } | {
16
16
  readonly from: HasFields<Fields>;
17
17
  };
18
+ export type Class<Self, S extends S.Top & {
19
+ readonly fields: Struct.Fields;
20
+ }, Inherited> = S.Class<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
- 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<"Class"> : EnhancedClass<Self, S.Struct<{
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>, {}>;
@@ -1 +1 @@
1
- {"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../../src/Schema/Class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../../src/Schema/Class.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,105 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { pipe, Struct as Struct2 } from "effect";
2
+ import { Effect, Option, pipe, Schema, SchemaAST, SchemaIssue, Struct as Struct2 } from "effect";
3
3
  import * as S from "effect/Schema";
4
+ /**
5
+ * Build a modified Declaration that accepts struct-matching values during
6
+ * encoding, given the original Declaration and the class's fields.
7
+ */
8
+ function makeRelaxedDeclaration(ast, fields, cls) {
9
+ const structSchema = Schema.Struct(fields);
10
+ const isStructValue = Schema.is(structSchema);
11
+ return new SchemaAST.Declaration(ast.typeParameters, () => (input, self) => {
12
+ if (input instanceof cls || isStructValue(input)) {
13
+ return Effect.succeed(input);
14
+ }
15
+ return Effect.fail(new SchemaIssue.InvalidType(self, Option.some(input)));
16
+ }, ast.annotations, ast.checks, ast.encoding, ast.context);
17
+ }
18
+ // ---------------------------------------------------------------------------
19
+ // Class — like Schema.Class but with relaxed encoding
20
+ // ---------------------------------------------------------------------------
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
+ */
4
40
  export const Class = (identifier) => (fields, annotations) => {
5
- const cls = S.Class;
6
- return class extends cls(identifier)(fields, annotations) {
7
- constructor(a, b = true) {
8
- super(a, b);
41
+ // Build the original Schema.Class
42
+ const Base = S.Class(identifier)(fields, annotations);
43
+ // Get the original ast getter from the base class
44
+ const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
45
+ // Cache per-class to avoid recomputing
46
+ const astCache = new WeakMap();
47
+ return class extends Base {
48
+ static get ast() {
49
+ let cached = astCache.get(this);
50
+ if (cached !== undefined)
51
+ return cached;
52
+ // Call the original getter with `this` bound to the actual user class,
53
+ // so getClassSchema(this) creates a schema that uses `new this(...)`.
54
+ const originalAst = originalAstDescriptor.get.call(this);
55
+ cached = makeRelaxedDeclaration(originalAst, Base.fields, this);
56
+ astCache.set(this, cached);
57
+ return cached;
9
58
  }
10
- // static readonly include = include(fields)
11
59
  static pick = (...selection) => pipe(this["fields"], Struct2.pick(selection));
12
60
  static omit = (...selection) => pipe(this["fields"], Struct2.omit(selection));
13
61
  };
14
62
  };
63
+ // ---------------------------------------------------------------------------
64
+ // TaggedClass — like Schema.TaggedClass but with relaxed encoding
65
+ // ---------------------------------------------------------------------------
66
+ /**
67
+ * Like `Schema.TaggedClass`, but the resulting class accepts plain objects
68
+ * matching the struct schema during encoding.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * import { Schema } from "effect"
73
+ * import { TaggedClass } from "./Class.js"
74
+ *
75
+ * class Circle extends TaggedClass<Circle>()("Circle", {
76
+ * radius: Schema.Number
77
+ * }) {}
78
+ *
79
+ * Schema.encodeUnknownSync(Circle)({ _tag: "Circle", radius: 5 })
80
+ * ```
81
+ */
15
82
  export const TaggedClass = (identifier) => (tag, fields, annotations) => {
16
- const cls = S.TaggedClass;
17
- return class extends cls(identifier)(tag, fields, annotations) {
18
- constructor(a, b = true) {
19
- super(a, b);
83
+ const Base = S.TaggedClass(identifier)(tag, fields, annotations);
84
+ const originalAstDescriptor = Object.getOwnPropertyDescriptor(Base, "ast");
85
+ const astCache = new WeakMap();
86
+ return class extends Base {
87
+ static get ast() {
88
+ let cached = astCache.get(this);
89
+ if (cached !== undefined)
90
+ return cached;
91
+ const originalAst = originalAstDescriptor.get.call(this);
92
+ cached = makeRelaxedDeclaration(originalAst, Base.fields, this);
93
+ astCache.set(this, cached);
94
+ return cached;
20
95
  }
21
- // static readonly include = include(fields)
22
96
  static pick = (...selection) => pipe(this["fields"], Struct2.pick(selection));
23
97
  static omit = (...selection) => pipe(this["fields"], Struct2.omit(selection));
24
98
  };
25
99
  };
100
+ // ---------------------------------------------------------------------------
101
+ // ExtendedClass — like Class but with extra type parameter for hierarchies
102
+ // ---------------------------------------------------------------------------
26
103
  export const ExtendedClass = Class;
27
104
  export const ExtendedTaggedClass = TaggedClass;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL0NsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFaEQsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUF5QmxDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FRWixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUU7SUFDMUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQVksQ0FBQTtJQUMxQixPQUFPLEtBQU0sU0FBUSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztRQUN2RCxZQUFZLENBQU0sRUFBRSxDQUFDLEdBQUcsSUFBSTtZQUMxQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ2IsQ0FBQztRQUNELDRDQUE0QztRQUM1QyxNQUFNLENBQVUsSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUM3RixNQUFNLENBQVUsSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtLQUN2RixDQUFBO0FBQ1YsQ0FBQyxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQVNsQixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO0lBQy9DLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFrQixDQUFBO0lBQ2hDLE9BQU8sS0FBTSxTQUFRLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQztRQUM1RCxZQUFZLENBQU0sRUFBRSxDQUFDLEdBQUcsSUFBSTtZQUMxQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ2IsQ0FBQztRQUNELDRDQUE0QztRQUM1QyxNQUFNLENBQVUsSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUM3RixNQUFNLENBQVUsSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtLQUN2RixDQUFBO0FBQ1YsQ0FBQyxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQU90QixLQUFZLENBQUE7QUFhaEIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBVzVCLFdBQWtCLENBQUEifQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL0NsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUVoRyxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQXdCbEM7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FDN0IsR0FBMEIsRUFDMUIsTUFBNEIsRUFDNUIsR0FBUTtJQUVSLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM3QyxPQUFPLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FDOUIsR0FBRyxDQUFDLGNBQWMsRUFDbEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFjLEVBQUUsSUFBMkIsRUFBRSxFQUFFO1FBQ3BELElBQUksS0FBSyxZQUFZLEdBQUcsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUMsRUFDRCxHQUFHLENBQUMsV0FBVyxFQUNmLEdBQUcsQ0FBQyxNQUFNLEVBQ1YsR0FBRyxDQUFDLFFBQVEsRUFDWixHQUFHLENBQUMsT0FBTyxDQUNaLENBQUE7QUFDSCxDQUFDO0FBRUQsOEVBQThF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
@@ -0,0 +1,40 @@
1
+ /**
2
+ * SpecialJsonSchema — A variant of Schema.toJsonSchemaDocument that deduplicates
3
+ * references sharing the same identifier when they produce identical
4
+ * representations (based on a string fingerprint).
5
+ *
6
+ * Without this, two different AST nodes that have the same identifier and
7
+ * resolve to the same JSON Schema representation can end up as separate $defs
8
+ * entries (e.g. "X" and "X1"). This converter collapses them into one.
9
+ */
10
+ import { type JsonSchema, type Schema } from "effect";
11
+ /**
12
+ * Converts a schema to a JSON Schema Document (draft-2020-12), with an
13
+ * extra deduplication pass that collapses references sharing the same
14
+ * base identifier when their representations are identical.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Schema, SchemaGetter, Option, Predicate } from "effect"
19
+ * import { specialJsonSchemaDocument } from "./SpecialJsonSchema.js"
20
+ *
21
+ * const X = Schema.String.annotate({ title: "X", identifier: "X" })
22
+ *
23
+ * const s = Schema.Struct({
24
+ * a: Schema.NullOr(X).pipe(
25
+ * Schema.encodeTo(Schema.optionalKey(X), {
26
+ * decode: SchemaGetter.transformOptional(Option.orElseSome(() => null)),
27
+ * encode: SchemaGetter.transformOptional(Option.filter(Predicate.isNotNull))
28
+ * })
29
+ * ),
30
+ * b: Schema.NullOr(X),
31
+ * c: X
32
+ * })
33
+ *
34
+ * // Without dedup: $defs would contain both "X" and "X1" (identical).
35
+ * // With specialJsonSchemaDocument: only "X" is emitted.
36
+ * const doc = specialJsonSchemaDocument(s)
37
+ * ```
38
+ */
39
+ export declare function specialJsonSchemaDocument(schema: Schema.Top, options?: Schema.ToJsonSchemaOptions): JsonSchema.Document<"draft-2020-12">;
40
+ //# sourceMappingURL=SpecialJsonSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecialJsonSchema.d.ts","sourceRoot":"","sources":["../../src/Schema/SpecialJsonSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,MAAM,EAAwB,MAAM,QAAQ,CAAA;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,GAAG,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,mBAAmB,GACnC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAStC"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * SpecialJsonSchema — A variant of Schema.toJsonSchemaDocument that deduplicates
3
+ * references sharing the same identifier when they produce identical
4
+ * representations (based on a string fingerprint).
5
+ *
6
+ * Without this, two different AST nodes that have the same identifier and
7
+ * resolve to the same JSON Schema representation can end up as separate $defs
8
+ * entries (e.g. "X" and "X1"). This converter collapses them into one.
9
+ */
10
+ import { Formatter, SchemaRepresentation } from "effect";
11
+ /**
12
+ * Converts a schema to a JSON Schema Document (draft-2020-12), with an
13
+ * extra deduplication pass that collapses references sharing the same
14
+ * base identifier when their representations are identical.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Schema, SchemaGetter, Option, Predicate } from "effect"
19
+ * import { specialJsonSchemaDocument } from "./SpecialJsonSchema.js"
20
+ *
21
+ * const X = Schema.String.annotate({ title: "X", identifier: "X" })
22
+ *
23
+ * const s = Schema.Struct({
24
+ * a: Schema.NullOr(X).pipe(
25
+ * Schema.encodeTo(Schema.optionalKey(X), {
26
+ * decode: SchemaGetter.transformOptional(Option.orElseSome(() => null)),
27
+ * encode: SchemaGetter.transformOptional(Option.filter(Predicate.isNotNull))
28
+ * })
29
+ * ),
30
+ * b: Schema.NullOr(X),
31
+ * c: X
32
+ * })
33
+ *
34
+ * // Without dedup: $defs would contain both "X" and "X1" (identical).
35
+ * // With specialJsonSchemaDocument: only "X" is emitted.
36
+ * const doc = specialJsonSchemaDocument(s)
37
+ * ```
38
+ */
39
+ export function specialJsonSchemaDocument(schema, options) {
40
+ const doc = SchemaRepresentation.fromAST(schema.ast);
41
+ const deduped = deduplicateReferences(doc);
42
+ const jd = SchemaRepresentation.toJsonSchemaDocument(deduped, options);
43
+ return {
44
+ dialect: "draft-2020-12",
45
+ schema: jd.schema,
46
+ definitions: jd.definitions
47
+ };
48
+ }
49
+ /**
50
+ * Deduplicates references in a Document: when multiple $ref keys share
51
+ * the same base identifier (e.g. "X" and "X1") and their representations
52
+ * are identical (by string fingerprint), the duplicates are collapsed into
53
+ * the first entry found for that identifier.
54
+ */
55
+ function deduplicateReferences(doc) {
56
+ const refs = doc.references;
57
+ const refKeys = Object.keys(refs);
58
+ if (refKeys.length === 0)
59
+ return doc;
60
+ // Group references by base identifier (strip trailing digits added by gen())
61
+ const identifierGroups = new Map();
62
+ for (const key of refKeys) {
63
+ const base = getBaseIdentifier(key);
64
+ const fingerprint = Formatter.format(refs[key]);
65
+ const group = identifierGroups.get(base);
66
+ if (group === undefined) {
67
+ identifierGroups.set(base, [{ key, fingerprint }]);
68
+ }
69
+ else {
70
+ group.push({ key, fingerprint });
71
+ }
72
+ }
73
+ // Build a mapping from duplicate keys to their canonical key
74
+ const remapping = new Map();
75
+ for (const [, group] of identifierGroups) {
76
+ const seen = new Map(); // fingerprint -> canonical key
77
+ for (const entry of group) {
78
+ const canonical = seen.get(entry.fingerprint);
79
+ if (canonical !== undefined) {
80
+ remapping.set(entry.key, canonical);
81
+ }
82
+ else {
83
+ seen.set(entry.fingerprint, entry.key);
84
+ }
85
+ }
86
+ }
87
+ if (remapping.size === 0)
88
+ return doc;
89
+ // Build new references, excluding duplicates
90
+ const newRefs = {};
91
+ for (const key of refKeys) {
92
+ if (!remapping.has(key)) {
93
+ newRefs[key] = refs[key];
94
+ }
95
+ }
96
+ // Rewrite $ref pointers throughout the document
97
+ const newRepresentation = rewriteRefs(doc.representation, remapping);
98
+ const rewrittenRefs = {};
99
+ for (const [key, rep] of Object.entries(newRefs)) {
100
+ rewrittenRefs[key] = rewriteRefs(rep, remapping);
101
+ }
102
+ return { representation: newRepresentation, references: rewrittenRefs };
103
+ }
104
+ /**
105
+ * Extracts the base identifier from a reference key by stripping trailing
106
+ * digits appended by the gen() function during fromASTs.
107
+ * E.g. "X1" -> "X", "X" -> "X", "MyType2" -> "MyType"
108
+ */
109
+ function getBaseIdentifier(key) {
110
+ const match = key.match(/^(.+?)(\d+)$/);
111
+ return match ? match[1] : key;
112
+ }
113
+ /**
114
+ * Recursively rewrites $ref pointers in a Representation tree.
115
+ */
116
+ function rewriteRefs(rep, remapping) {
117
+ switch (rep._tag) {
118
+ case "Reference": {
119
+ const target = remapping.get(rep.$ref);
120
+ return target !== undefined ? { ...rep, $ref: target } : rep;
121
+ }
122
+ case "Declaration":
123
+ return {
124
+ ...rep,
125
+ typeParameters: rep.typeParameters.map((tp) => rewriteRefs(tp, remapping)),
126
+ encodedSchema: rewriteRefs(rep.encodedSchema, remapping)
127
+ };
128
+ case "Suspend":
129
+ return {
130
+ ...rep,
131
+ thunk: rewriteRefs(rep.thunk, remapping)
132
+ };
133
+ case "Arrays":
134
+ return {
135
+ ...rep,
136
+ elements: rep.elements.map((e) => ({ ...e, type: rewriteRefs(e.type, remapping) })),
137
+ rest: rep.rest.map((r) => rewriteRefs(r, remapping))
138
+ };
139
+ case "Objects":
140
+ return {
141
+ ...rep,
142
+ propertySignatures: rep.propertySignatures.map((ps) => ({
143
+ ...ps,
144
+ type: rewriteRefs(ps.type, remapping)
145
+ })),
146
+ indexSignatures: rep.indexSignatures.map((is) => ({
147
+ ...is,
148
+ parameter: rewriteRefs(is.parameter, remapping),
149
+ type: rewriteRefs(is.type, remapping)
150
+ })),
151
+ checks: rewriteChecks(rep.checks, remapping)
152
+ };
153
+ case "Union":
154
+ return {
155
+ ...rep,
156
+ types: rep.types.map((t) => rewriteRefs(t, remapping))
157
+ };
158
+ case "TemplateLiteral":
159
+ return {
160
+ ...rep,
161
+ parts: rep.parts.map((p) => rewriteRefs(p, remapping))
162
+ };
163
+ case "String": {
164
+ if (rep.contentSchema !== undefined) {
165
+ return {
166
+ ...rep,
167
+ contentSchema: rewriteRefs(rep.contentSchema, remapping)
168
+ };
169
+ }
170
+ return rep;
171
+ }
172
+ default:
173
+ // Leaf nodes: Null, Undefined, Void, Never, Unknown, Any, Boolean,
174
+ // Symbol, Number, BigInt, Literal, UniqueSymbol, ObjectKeyword, Enum
175
+ return rep;
176
+ }
177
+ }
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
179
+ function rewriteChecks(checks, remapping) {
180
+ return checks.map((c) => {
181
+ switch (c._tag) {
182
+ case "Filter": {
183
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
184
+ const meta = c.meta;
185
+ if (meta && meta._tag === "isPropertyNames" && meta.propertyNames) {
186
+ return {
187
+ ...c,
188
+ meta: { ...meta, propertyNames: rewriteRefs(meta.propertyNames, remapping) }
189
+ };
190
+ }
191
+ return c;
192
+ }
193
+ case "FilterGroup":
194
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
195
+ return { ...c, checks: rewriteChecks(c.checks, remapping) };
196
+ }
197
+ });
198
+ }
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlY2lhbEpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL1NwZWNpYWxKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBZ0Msb0JBQW9CLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFdEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsTUFBa0IsRUFDbEIsT0FBb0M7SUFFcEMsTUFBTSxHQUFHLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNwRCxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdEUsT0FBTztRQUNMLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTTtRQUNqQixXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVc7S0FDNUIsQ0FBQTtBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMscUJBQXFCLENBQzVCLEdBQWtDO0lBRWxDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUE7SUFDM0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNqQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFBO0lBRXBDLDZFQUE2RTtJQUM3RSxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUF1RCxDQUFBO0lBQ3ZGLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdB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
@@ -0,0 +1,30 @@
1
+ /**
2
+ * SpecialOpenApi — Deduplicates `components/schemas` entries in an OpenAPI spec.
3
+ *
4
+ * When `OpenApi.fromApi` generates the spec, different AST nodes sharing the
5
+ * same identifier can produce duplicate entries (e.g. "X" and "X1") in
6
+ * `components.schemas`. This module provides a transform function that
7
+ * collapses those duplicates and rewrites all `$ref` pointers accordingly.
8
+ *
9
+ * Usage with the OpenApi `Transform` annotation:
10
+ *
11
+ * ```ts
12
+ * import { OpenApi } from "effect/unstable"
13
+ * import { deduplicateOpenApiSchemas } from "./SpecialOpenApi.js"
14
+ *
15
+ * const api = HttpApi.make("myApi")
16
+ * .pipe(HttpApi.annotateContext(OpenApi.annotations({ transform: deduplicateOpenApiSchemas })))
17
+ * ```
18
+ */
19
+ /**
20
+ * Deduplicates `components.schemas` entries in an OpenAPI spec.
21
+ *
22
+ * Entries sharing the same base identifier (e.g. "X" and "X1") whose JSON
23
+ * representations are identical are collapsed into a single canonical entry,
24
+ * and all `$ref` pointers throughout the spec are rewritten to point to
25
+ * the canonical key.
26
+ *
27
+ * Designed to be used as the `transform` option in `OpenApi.annotations`.
28
+ */
29
+ export declare function deduplicateOpenApiSchemas(spec: Record<string, any>): Record<string, any>;
30
+ //# sourceMappingURL=SpecialOpenApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecialOpenApi.d.ts","sourceRoot":"","sources":["../../src/Schema/SpecialOpenApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAqDrB"}