@model-ts/graphql 7.1.0 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Builder.js CHANGED
@@ -27,6 +27,10 @@ function make(policy, maxPageSize, defaultPageSize) {
27
27
  internal: [...policy.internal, ...(options.internal ?? [])],
28
28
  public: [...policy.public, ...(options.public ?? [])],
29
29
  publicCodes: { ...policy.publicCodes, ...options.publicCodes },
30
+ publicMessages: {
31
+ ...policy.publicMessages,
32
+ ...options.publicMessages,
33
+ },
30
34
  }, maxPageSize, defaultPageSize),
31
35
  schema: (module) => ({
32
36
  schema: assemble(module),
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../src/Builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,eAAe,GAGhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAA6C,MAAM,aAAa,CAAA;AACvE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAKjB,SAAS,EACT,OAAO,GACR,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAkC,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAA0C,MAAM,eAAe,CAAA;AACtE,OAAO,EAAmC,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAwC5D,MAAM,UAAU,aAAa,CAC3B,OAAO,GAAmB,EAAE;IAE5B,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAA;IACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QACvC,OAAO,CAAC,iDAAiD,CAAC,CAAA;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG;QACvD,OAAO,CACL,gFAAgF,CACjF,CAAA;IACH,OAAO,IAAI,CAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,IAAI,CACX,MAAmB,EACnB,WAAmB,EACnB,eAAuB;IAEvB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CACtC,MAAM,EACN,WAAW,EACX,eAAe,CAChB,CAAA;IACD,OAAO;QACL,GAAG,MAAM;QACT,GAAG,eAAe,CAAc,SAAS,CAAC;QAC1C,KAAK;QACL,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,IAAI,CACF;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACrD,WAAW,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE;SAC/D,EACD,WAAW,EACX,eAAe,CAChB;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;YACxB,CAAC,iBAAiB,CAAC,EAAE,MAAM;YAC3B,CAAC,kBAAkB,CAAC,EAAE,SAAS;SAChC,CAAC;QACF,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../src/Builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,eAAe,GAGhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAA6C,MAAM,aAAa,CAAA;AACvE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAKjB,SAAS,EACT,OAAO,GACR,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAkC,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAA0C,MAAM,eAAe,CAAA;AACtE,OAAO,EAAmC,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAwC5D,MAAM,UAAU,aAAa,CAC3B,OAAO,GAAmB,EAAE;IAE5B,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAA;IACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QACvC,OAAO,CAAC,iDAAiD,CAAC,CAAA;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG;QACvD,OAAO,CACL,gFAAgF,CACjF,CAAA;IACH,OAAO,IAAI,CAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,IAAI,CACX,MAAmB,EACnB,WAAmB,EACnB,eAAuB;IAEvB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CACtC,MAAM,EACN,WAAW,EACX,eAAe,CAChB,CAAA;IACD,OAAO;QACL,GAAG,MAAM;QACT,GAAG,eAAe,CAAc,SAAS,CAAC;QAC1C,KAAK;QACL,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,IAAI,CACF;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACrD,WAAW,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE;YAC9D,cAAc,EAAE;gBACd,GAAG,MAAM,CAAC,cAAc;gBACxB,GAAG,OAAO,CAAC,cAAc;aAC1B;SACF,EACD,WAAW,EACX,eAAe,CAChB;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;YACxB,CAAC,iBAAiB,CAAC,EAAE,MAAM;YAC3B,CAAC,kBAAkB,CAAC,EAAE,SAAS;SAChC,CAAC;QACF,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC"}
package/dist/Errors.d.ts CHANGED
@@ -8,11 +8,19 @@ export interface ErrorPolicyOptions<I extends readonly ErrorSchema[], P extends
8
8
  readonly public?: P;
9
9
  /** Preserve an existing API's codes; unspecified tags use their own name. */
10
10
  readonly publicCodes?: [P[number]] extends [never] ? never : Partial<Record<ErrorsOf<NoInfer<P>>["_tag"], string>>;
11
+ /**
12
+ * A fixed message for a public error. Clients get only this message and the
13
+ * error's code: neither its own message nor any declared field is exposed.
14
+ * Use it to expose errors whose fields are internal, such as a not-found
15
+ * error that carries a storage key.
16
+ */
17
+ readonly publicMessages?: [P[number]] extends [never] ? never : Partial<Record<ErrorsOf<NoInfer<P>>["_tag"], string>>;
11
18
  }
12
19
  export interface ErrorPolicy {
13
20
  readonly internal: readonly ErrorSchema[];
14
21
  readonly public: readonly ErrorSchema[];
15
22
  readonly publicCodes?: Readonly<Record<string, string>>;
23
+ readonly publicMessages?: Readonly<Record<string, string>>;
16
24
  }
17
25
  export declare const defaultErrorPolicy: ErrorPolicy;
18
26
  export interface ErrorReport {
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAGd,MAAM,cAAc,CAAA;AAErB,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,SAAS,WAAW,EAAE,EAChC,CAAC,SAAS,SAAS,WAAW,EAAE;IAEhC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC9C,KAAK,GACL,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;CAC1D;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAA;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACxD;AAED,eAAO,MAAM,kBAAkB,EAAE,WAA0C,CAAA;AAE3E,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAA;CAClE;;qBAMoB,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAJhE,wFAAwF;AACxF,qBAAa,aAAc,SAAQ,kBAKG;CAAG;AAKzC,eAAO,MAAM,eAAe,UAAW,OAAO,KAAG,OACI,CAAA;AAErD,eAAO,MAAM,UAAU,YACZ,MAAM,cACH,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,UACrC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAC3B,YAOF,CAAA;AAED,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,YAGtC,CAAA;AAKJ,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,OAGnC,CAAA;AAiCX,eAAO,MAAM,YAAY,UAChB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAClB,SAAS,WAAW,EAAE,UACvB,WAAW,YACT,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAyBpB,CAAA;AAEJ,sFAAsF;AACtF,eAAO,MAAM,OAAO,aACR,MAAM,OAAO,WACd,SAAS,WAAW,EAAE,UACvB,WAAW,YACT,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CA8BrC,CAAA;AAEH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB"}
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"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"}
package/dist/Errors.js CHANGED
@@ -46,15 +46,18 @@ function visibleFailure(error, members, policy) {
46
46
  }
47
47
  const visible = policy.public.find(matches);
48
48
  if (visible) {
49
- const { _tag, message, ...extensions } = declaredFields(visible, error);
50
49
  const tag = errorName(visible);
51
- return fieldError(String(message ?? tag), {
52
- ...extensions,
53
- code: policy.publicCodes?.[tag] ?? tag,
54
- });
50
+ const code = entry(policy.publicCodes, tag) ?? tag;
51
+ const fixed = entry(policy.publicMessages, tag);
52
+ if (fixed !== undefined)
53
+ return fieldError(fixed, { code });
54
+ const { _tag, message, ...extensions } = declaredFields(visible, error);
55
+ return fieldError(String(message ?? tag), { ...extensions, code });
55
56
  }
56
57
  return undefined;
57
58
  }
59
+ // Own entries only, so a tag such as "constructor" never reads the prototype.
60
+ const entry = (record, tag) => record && Object.hasOwn(record, tag) ? record[tag] : undefined;
58
61
  export const recoverCause = (cause, members, policy, location) => Effect.gen(function* () {
59
62
  // Do not turn cancellation into an error response or a telemetry incident.
60
63
  if (Cause.hasInterruptsOnly(cause))
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.js","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Errors.js","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@model-ts/graphql",
3
- "version": "7.1.0",
3
+ "version": "7.3.0",
4
4
  "description": "Effect-native GraphQL schemas, typed model registration and resolver services.",
5
5
  "keywords": [
6
6
  "effect",
package/src/Builder.ts CHANGED
@@ -95,6 +95,10 @@ function make<Types, G, C>(
95
95
  internal: [...policy.internal, ...(options.internal ?? [])],
96
96
  public: [...policy.public, ...(options.public ?? [])],
97
97
  publicCodes: { ...policy.publicCodes, ...options.publicCodes },
98
+ publicMessages: {
99
+ ...policy.publicMessages,
100
+ ...options.publicMessages,
101
+ },
98
102
  },
99
103
  maxPageSize,
100
104
  defaultPageSize,
package/src/Errors.ts CHANGED
@@ -19,12 +19,22 @@ export interface ErrorPolicyOptions<
19
19
  readonly publicCodes?: [P[number]] extends [never]
20
20
  ? never
21
21
  : Partial<Record<ErrorsOf<NoInfer<P>>["_tag"], string>>
22
+ /**
23
+ * A fixed message for a public error. Clients get only this message and the
24
+ * error's code: neither its own message nor any declared field is exposed.
25
+ * Use it to expose errors whose fields are internal, such as a not-found
26
+ * error that carries a storage key.
27
+ */
28
+ readonly publicMessages?: [P[number]] extends [never]
29
+ ? never
30
+ : Partial<Record<ErrorsOf<NoInfer<P>>["_tag"], string>>
22
31
  }
23
32
 
24
33
  export interface ErrorPolicy {
25
34
  readonly internal: readonly ErrorSchema[]
26
35
  readonly public: readonly ErrorSchema[]
27
36
  readonly publicCodes?: Readonly<Record<string, string>>
37
+ readonly publicMessages?: Readonly<Record<string, string>>
28
38
  }
29
39
 
30
40
  export const defaultErrorPolicy: ErrorPolicy = { internal: [], public: [] }
@@ -97,16 +107,23 @@ function visibleFailure(
97
107
  }
98
108
  const visible = policy.public.find(matches)
99
109
  if (visible) {
100
- const { _tag, message, ...extensions } = declaredFields(visible, error)
101
110
  const tag = errorName(visible)
102
- return fieldError(String(message ?? tag), {
103
- ...extensions,
104
- code: policy.publicCodes?.[tag] ?? tag,
105
- })
111
+ const code = entry(policy.publicCodes, tag) ?? tag
112
+ const fixed = entry(policy.publicMessages, tag)
113
+ if (fixed !== undefined) return fieldError(fixed, { code })
114
+ const { _tag, message, ...extensions } = declaredFields(visible, error)
115
+ return fieldError(String(message ?? tag), { ...extensions, code })
106
116
  }
107
117
  return undefined
108
118
  }
109
119
 
120
+ // Own entries only, so a tag such as "constructor" never reads the prototype.
121
+ const entry = (
122
+ record: Readonly<Record<string, string>> | undefined,
123
+ tag: string,
124
+ ): string | undefined =>
125
+ record && Object.hasOwn(record, tag) ? record[tag] : undefined
126
+
110
127
  export const recoverCause = (
111
128
  cause: Cause.Cause<unknown>,
112
129
  members: readonly ErrorSchema[],