@confect/core 10.0.0-next.9 → 10.0.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +958 -47
  2. package/README.md +3 -1
  3. package/dist/FunctionProvenance.d.ts +166 -68
  4. package/dist/FunctionProvenance.d.ts.map +1 -1
  5. package/dist/FunctionProvenance.js +55 -13
  6. package/dist/FunctionProvenance.js.map +1 -1
  7. package/dist/FunctionSpec.d.ts +320 -138
  8. package/dist/FunctionSpec.d.ts.map +1 -1
  9. package/dist/FunctionSpec.js +56 -13
  10. package/dist/FunctionSpec.js.map +1 -1
  11. package/dist/GenericId.d.ts.map +1 -1
  12. package/dist/GenericId.js +1 -1
  13. package/dist/GroupPath.d.ts +6 -10
  14. package/dist/GroupPath.d.ts.map +1 -1
  15. package/dist/GroupPath.js.map +1 -1
  16. package/dist/GroupSpec.d.ts +25 -12
  17. package/dist/GroupSpec.d.ts.map +1 -1
  18. package/dist/GroupSpec.js +51 -14
  19. package/dist/GroupSpec.js.map +1 -1
  20. package/dist/Identifier.d.ts +6 -5
  21. package/dist/Identifier.d.ts.map +1 -1
  22. package/dist/Identifier.js +6 -5
  23. package/dist/Identifier.js.map +1 -1
  24. package/dist/Lazy.d.ts +11 -14
  25. package/dist/Lazy.d.ts.map +1 -1
  26. package/dist/Lazy.js +11 -14
  27. package/dist/Lazy.js.map +1 -1
  28. package/dist/MiddlewareAttachment.d.ts +171 -0
  29. package/dist/MiddlewareAttachment.d.ts.map +1 -0
  30. package/dist/MiddlewareAttachment.js +48 -0
  31. package/dist/MiddlewareAttachment.js.map +1 -0
  32. package/dist/MiddlewareSpec.d.ts +198 -0
  33. package/dist/MiddlewareSpec.d.ts.map +1 -0
  34. package/dist/MiddlewareSpec.js +60 -0
  35. package/dist/MiddlewareSpec.js.map +1 -0
  36. package/dist/PaginationError.d.ts +20 -0
  37. package/dist/PaginationError.d.ts.map +1 -0
  38. package/dist/PaginationError.js +31 -0
  39. package/dist/PaginationError.js.map +1 -0
  40. package/dist/PaginationOptions.d.ts +23 -0
  41. package/dist/PaginationOptions.d.ts.map +1 -0
  42. package/dist/PaginationOptions.js +29 -0
  43. package/dist/PaginationOptions.js.map +1 -0
  44. package/dist/PaginationResult.d.ts +1 -0
  45. package/dist/PaginationResult.d.ts.map +1 -1
  46. package/dist/PaginationResult.js.map +1 -1
  47. package/dist/Ref.d.ts +135 -47
  48. package/dist/Ref.d.ts.map +1 -1
  49. package/dist/Ref.js +104 -46
  50. package/dist/Ref.js.map +1 -1
  51. package/dist/Refs.d.ts +10 -5
  52. package/dist/Refs.d.ts.map +1 -1
  53. package/dist/Refs.js +5 -4
  54. package/dist/Refs.js.map +1 -1
  55. package/dist/SchemaToValidator.d.ts +99 -0
  56. package/dist/SchemaToValidator.d.ts.map +1 -0
  57. package/dist/SchemaToValidator.js +158 -0
  58. package/dist/SchemaToValidator.js.map +1 -0
  59. package/dist/Spec.d.ts +16 -12
  60. package/dist/Spec.d.ts.map +1 -1
  61. package/dist/Spec.js +14 -9
  62. package/dist/Spec.js.map +1 -1
  63. package/dist/SystemFields.d.ts +16 -15
  64. package/dist/SystemFields.d.ts.map +1 -1
  65. package/dist/SystemFields.js +16 -15
  66. package/dist/SystemFields.js.map +1 -1
  67. package/dist/Table.d.ts +75 -0
  68. package/dist/Table.d.ts.map +1 -0
  69. package/dist/Table.js +77 -0
  70. package/dist/Table.js.map +1 -0
  71. package/dist/Types.d.ts +8 -2
  72. package/dist/Types.d.ts.map +1 -1
  73. package/dist/Types.js.map +1 -1
  74. package/dist/UserIdentity.d.ts.map +1 -1
  75. package/dist/index.d.ts +6 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +9 -4
  78. package/package.json +17 -15
  79. package/src/FunctionProvenance.ts +197 -34
  80. package/src/FunctionSpec.ts +332 -86
  81. package/src/GroupPath.ts +6 -12
  82. package/src/GroupSpec.ts +184 -25
  83. package/src/Identifier.ts +6 -5
  84. package/src/Lazy.ts +11 -14
  85. package/src/MiddlewareAttachment.ts +106 -0
  86. package/src/MiddlewareSpec.ts +392 -0
  87. package/src/PaginationError.ts +78 -0
  88. package/src/PaginationOptions.ts +23 -0
  89. package/src/PaginationResult.ts +4 -0
  90. package/src/Ref.ts +468 -236
  91. package/src/Refs.ts +43 -18
  92. package/src/SchemaToValidator.ts +612 -0
  93. package/src/Spec.ts +50 -39
  94. package/src/SystemFields.ts +30 -31
  95. package/src/Table.ts +427 -0
  96. package/src/Types.ts +9 -3
  97. package/src/index.ts +6 -1
  98. package/dist/Registry.d.ts +0 -24
  99. package/dist/Registry.d.ts.map +0 -1
  100. package/dist/Registry.js +0 -19
  101. package/dist/Registry.js.map +0 -1
  102. package/dist/tsconfig.src.tsbuildinfo +0 -1
  103. package/src/Registry.ts +0 -30
package/src/Refs.ts CHANGED
@@ -4,8 +4,9 @@ import * as Option from "effect/Option";
4
4
  import * as Record from "effect/Record";
5
5
  import type * as FunctionSpec from "./FunctionSpec";
6
6
  import type * as GroupSpec from "./GroupSpec";
7
+ import type * as MiddlewareSpec from "./MiddlewareSpec";
7
8
  import * as Ref from "./Ref";
8
- import type * as Spec from "./Spec";
9
+ import * as Spec from "./Spec";
9
10
 
10
11
  export type Refs<
11
12
  Spec_ extends Spec.AnyWithProps,
@@ -22,7 +23,11 @@ type GroupRefs<
22
23
  Predicate extends Ref.Any,
23
24
  > = Types.Simplify<
24
25
  OmitEmpty<Helper<GroupSpec.Groups<Group>, Predicate>> &
25
- FilteredFunctions<GroupSpec.Functions<Group>, Predicate>
26
+ FilteredFunctions<
27
+ GroupSpec.Functions<Group>,
28
+ Predicate,
29
+ MiddlewareSpec.Error<GroupSpec.MiddlewareSpecs<Group>>
30
+ >
26
31
  >;
27
32
 
28
33
  type OmitEmpty<T> = {
@@ -37,6 +42,7 @@ type FunctionSpecMatchesPredicate<
37
42
  FunctionSpec.GetRuntimeAndFunctionType<FunctionSpec_>,
38
43
  FunctionSpec.GetFunctionVisibility<FunctionSpec_>,
39
44
  any,
45
+ any,
40
46
  any
41
47
  > extends Predicate
42
48
  ? true
@@ -45,17 +51,29 @@ type FunctionSpecMatchesPredicate<
45
51
  type FilteredFunctions<
46
52
  FunctionSpecs extends FunctionSpec.AnyWithProps,
47
53
  Predicate extends Ref.Any,
54
+ MiddlewareError,
48
55
  > = {
49
- [Name in FunctionSpec.Name<FunctionSpecs> as FunctionSpec.WithName<
50
- FunctionSpecs,
51
- Name
52
- > extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps
53
- ? FunctionSpecMatchesPredicate<FunctionSpec_, Predicate> extends true
54
- ? Name
56
+ [
57
+ Name in FunctionSpec.Name<FunctionSpecs> as FunctionSpec.WithName<
58
+ FunctionSpecs,
59
+ Name
60
+ > extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps
61
+ ? FunctionSpecMatchesPredicate<FunctionSpec_, Predicate> extends true
62
+ ? Name
63
+ : never
55
64
  : never
56
- : never]: FunctionSpec.WithName<FunctionSpecs, Name> extends infer F extends
65
+ ]: FunctionSpec.WithName<FunctionSpecs, Name> extends infer F extends
57
66
  FunctionSpec.AnyWithProps
58
- ? Ref.FromFunctionSpec<F>
67
+ ? Ref.FromFunctionSpec<
68
+ F,
69
+ F extends {
70
+ readonly functionProvenance: { readonly _tag: "Confect" };
71
+ }
72
+ ?
73
+ | MiddlewareError
74
+ | MiddlewareSpec.Error<FunctionSpec.MiddlewareSpecs<F>>
75
+ : never
76
+ >
59
77
  : never;
60
78
  };
61
79
 
@@ -80,7 +98,7 @@ type Any =
80
98
  export const make = <Spec_ extends Spec.AnyWithProps>(
81
99
  spec: Spec_,
82
100
  ): FromSpec<Spec_> => {
83
- const refs = makeHelper(spec.groups);
101
+ const refs = makeHelper(Spec.groups(spec));
84
102
  return {
85
103
  public: refs as Refs<Spec_, Ref.AnyPublic>,
86
104
  internal: refs as Refs<Spec_, Ref.AnyInternal>,
@@ -89,20 +107,27 @@ export const make = <Spec_ extends Spec.AnyWithProps>(
89
107
 
90
108
  const makeHelper = (
91
109
  groups: Record.ReadonlyRecord<string, GroupSpec.Any>,
92
- functionNamespace: Option.Option<string> = Option.none(),
110
+ convexFunctionNamespace: Option.Option<string> = Option.none(),
93
111
  ): Any =>
94
112
  pipe(
95
113
  groups as Record.ReadonlyRecord<string, GroupSpec.AnyWithProps>,
96
114
  Record.map((group, name) => {
97
- const currentFunctionNamespace = Option.match(functionNamespace, {
98
- onNone: () => name,
99
- onSome: (parentNamespace) => `${parentNamespace}/${name}`,
100
- });
115
+ const currentConvexFunctionNamespace = Option.match(
116
+ convexFunctionNamespace,
117
+ {
118
+ onNone: () => name,
119
+ onSome: (parentNamespace) => `${parentNamespace}/${name}`,
120
+ },
121
+ );
101
122
 
102
123
  return Record.union(
103
- makeHelper(group.groups, Option.some(currentFunctionNamespace)),
124
+ makeHelper(group.groups, Option.some(currentConvexFunctionNamespace)),
104
125
  Record.map(group.functions, (function_) =>
105
- Ref.make(currentFunctionNamespace, function_),
126
+ Ref.make(
127
+ currentConvexFunctionNamespace,
128
+ function_,
129
+ group.middlewareAttachments,
130
+ ),
106
131
  ),
107
132
  (_subGroup, _function) => {
108
133
  throw new Error(