@rvoh/dream 0.40.2 → 0.40.4

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 (203) hide show
  1. package/dist/cjs/src/helpers/cli/generateFactoryContent.js +6 -4
  2. package/dist/cjs/src/types/associations/belongsTo.js +2 -0
  3. package/dist/cjs/src/types/associations/hasMany.js +2 -0
  4. package/dist/cjs/src/types/associations/hasOne.js +2 -0
  5. package/dist/cjs/src/types/associations/shared.js +2 -0
  6. package/dist/cjs/src/types/db.js +2 -0
  7. package/dist/cjs/src/types/dream.js +2 -0
  8. package/dist/cjs/src/types/lifecycle.js +2 -0
  9. package/dist/cjs/src/types/logger.js +2 -0
  10. package/dist/cjs/src/types/openapi.js +2 -0
  11. package/dist/cjs/src/types/query.js +2 -0
  12. package/dist/cjs/src/types/utils.js +2 -0
  13. package/dist/cjs/src/types/validation.js +2 -0
  14. package/dist/cjs/src/types/variadic.js +2 -0
  15. package/dist/esm/src/helpers/cli/generateFactoryContent.js +6 -4
  16. package/dist/esm/src/types/associations/belongsTo.js +1 -0
  17. package/dist/esm/src/types/associations/hasMany.js +1 -0
  18. package/dist/esm/src/types/associations/hasOne.js +1 -0
  19. package/dist/esm/src/types/associations/shared.js +1 -0
  20. package/dist/esm/src/types/db.js +1 -0
  21. package/dist/esm/src/types/dream.js +1 -0
  22. package/dist/esm/src/types/lifecycle.js +1 -0
  23. package/dist/esm/src/types/logger.js +1 -0
  24. package/dist/esm/src/types/openapi.js +1 -0
  25. package/dist/esm/src/types/query.js +1 -0
  26. package/dist/esm/src/types/utils.js +1 -0
  27. package/dist/esm/src/types/validation.js +1 -0
  28. package/dist/esm/src/types/variadic.js +1 -0
  29. package/dist/types/src/types/associations/belongsTo.d.ts +28 -73
  30. package/dist/types/src/types/associations/belongsTo.ts +76 -0
  31. package/dist/types/src/types/associations/hasMany.d.ts +15 -79
  32. package/dist/types/src/types/associations/hasMany.ts +80 -0
  33. package/dist/types/src/types/associations/hasOne.d.ts +8 -26
  34. package/dist/types/src/types/associations/hasOne.ts +26 -0
  35. package/dist/types/src/types/associations/shared.d.ts +98 -444
  36. package/dist/types/src/types/associations/shared.ts +450 -0
  37. package/dist/types/src/types/db.d.ts +9 -14
  38. package/dist/types/src/types/db.ts +14 -0
  39. package/dist/types/src/types/dream.d.ts +124 -510
  40. package/dist/types/src/types/dream.ts +521 -0
  41. package/dist/types/src/types/lifecycle.d.ts +23 -42
  42. package/dist/types/src/types/lifecycle.ts +50 -0
  43. package/dist/types/src/types/logger.d.ts +6 -40
  44. package/dist/types/src/types/logger.ts +42 -0
  45. package/dist/types/src/types/openapi.d.ts +105 -222
  46. package/dist/types/src/types/openapi.ts +255 -0
  47. package/dist/types/src/types/query.d.ts +53 -161
  48. package/dist/types/src/types/query.ts +165 -0
  49. package/dist/types/src/types/utils.d.ts +83 -141
  50. package/dist/types/src/types/utils.ts +173 -0
  51. package/dist/types/src/types/validation.d.ts +17 -18
  52. package/dist/types/src/types/validation.ts +20 -0
  53. package/dist/types/src/types/variadic.d.ts +42 -444
  54. package/dist/types/src/types/variadic.ts +447 -0
  55. package/docs/classes/Benchmark.html +2 -2
  56. package/docs/classes/CalendarDate.html +2 -2
  57. package/docs/classes/CreateOrFindByFailedToCreateAndFind.html +3 -3
  58. package/docs/classes/Decorators.html +19 -19
  59. package/docs/classes/Dream.html +132 -132
  60. package/docs/classes/DreamApp.html +4 -4
  61. package/docs/classes/DreamBin.html +2 -2
  62. package/docs/classes/DreamCLI.html +4 -4
  63. package/docs/classes/DreamImporter.html +2 -2
  64. package/docs/classes/DreamLogos.html +2 -2
  65. package/docs/classes/DreamMigrationHelpers.html +7 -7
  66. package/docs/classes/DreamSerializer.html +2 -2
  67. package/docs/classes/DreamTransaction.html +2 -2
  68. package/docs/classes/Encrypt.html +2 -2
  69. package/docs/classes/Env.html +2 -2
  70. package/docs/classes/GlobalNameNotSet.html +3 -3
  71. package/docs/classes/NonLoadedAssociation.html +3 -3
  72. package/docs/classes/Query.html +52 -52
  73. package/docs/classes/Range.html +2 -2
  74. package/docs/classes/RecordNotFound.html +3 -3
  75. package/docs/classes/ValidationError.html +3 -3
  76. package/docs/functions/Attribute.html +1 -1
  77. package/docs/functions/RendersMany.html +1 -1
  78. package/docs/functions/RendersOne.html +1 -1
  79. package/docs/functions/ReplicaSafe.html +1 -1
  80. package/docs/functions/STI.html +1 -1
  81. package/docs/functions/SoftDelete.html +1 -1
  82. package/docs/functions/camelize.html +1 -1
  83. package/docs/functions/capitalize.html +1 -1
  84. package/docs/functions/closeAllDbConnections.html +1 -1
  85. package/docs/functions/compact.html +1 -1
  86. package/docs/functions/dreamDbConnections.html +1 -1
  87. package/docs/functions/dreamPath.html +1 -1
  88. package/docs/functions/generateDream.html +1 -1
  89. package/docs/functions/globalClassNameFromFullyQualifiedModelName.html +1 -1
  90. package/docs/functions/hyphenize.html +1 -1
  91. package/docs/functions/inferSerializerFromDreamClassOrViewModelClass.html +1 -1
  92. package/docs/functions/inferSerializerFromDreamOrViewModel.html +1 -1
  93. package/docs/functions/isEmpty.html +1 -1
  94. package/docs/functions/loadRepl.html +1 -1
  95. package/docs/functions/lookupClassByGlobalName.html +1 -1
  96. package/docs/functions/pascalize.html +1 -1
  97. package/docs/functions/pgErrorType.html +1 -1
  98. package/docs/functions/range-1.html +1 -1
  99. package/docs/functions/relativeDreamPath.html +1 -1
  100. package/docs/functions/round.html +1 -1
  101. package/docs/functions/serializerNameFromFullyQualifiedModelName.html +1 -1
  102. package/docs/functions/sharedPathPrefix.html +1 -1
  103. package/docs/functions/snakeify.html +1 -1
  104. package/docs/functions/sort.html +1 -1
  105. package/docs/functions/sortBy.html +1 -1
  106. package/docs/functions/standardizeFullyQualifiedModelName.html +1 -1
  107. package/docs/functions/uncapitalize.html +1 -1
  108. package/docs/functions/uniq.html +1 -1
  109. package/docs/functions/untypedDb.html +1 -1
  110. package/docs/functions/validateColumn.html +1 -1
  111. package/docs/functions/validateTable.html +1 -1
  112. package/docs/interfaces/AttributeStatement.html +2 -2
  113. package/docs/interfaces/DecoratorContext.html +2 -2
  114. package/docs/interfaces/DreamAppInitOptions.html +2 -2
  115. package/docs/interfaces/DreamAppOpts.html +2 -2
  116. package/docs/interfaces/DreamSerializerAssociationStatement.html +2 -2
  117. package/docs/interfaces/EncryptOptions.html +2 -2
  118. package/docs/interfaces/OpenapiSchemaProperties.html +1 -1
  119. package/docs/interfaces/OpenapiSchemaPropertiesShorthand.html +1 -1
  120. package/docs/interfaces/OpenapiTypeFieldObject.html +1 -1
  121. package/docs/types/Camelized.html +1 -1
  122. package/docs/types/CommonOpenapiSchemaObjectFields.html +1 -1
  123. package/docs/types/DateTime.html +1 -1
  124. package/docs/types/DbConnectionType.html +1 -1
  125. package/docs/types/DreamAssociationMetadata.html +1 -1
  126. package/docs/types/DreamAttributes.html +1 -1
  127. package/docs/types/DreamClassColumn.html +1 -1
  128. package/docs/types/DreamColumn.html +1 -1
  129. package/docs/types/DreamColumnNames.html +1 -1
  130. package/docs/types/DreamLogLevel.html +1 -1
  131. package/docs/types/DreamLogger.html +1 -1
  132. package/docs/types/DreamOrViewModelSerializerKey.html +1 -1
  133. package/docs/types/DreamParamSafeAttributes.html +1 -1
  134. package/docs/types/DreamParamSafeColumnNames.html +1 -1
  135. package/docs/types/DreamSerializerKey.html +1 -1
  136. package/docs/types/DreamSerializers.html +1 -1
  137. package/docs/types/DreamTableSchema.html +1 -1
  138. package/docs/types/DreamVirtualColumns.html +1 -1
  139. package/docs/types/EncryptAlgorithm.html +1 -1
  140. package/docs/types/Hyphenized.html +1 -1
  141. package/docs/types/IdType.html +1 -1
  142. package/docs/types/OpenapiAllTypes.html +1 -1
  143. package/docs/types/OpenapiFormats.html +1 -1
  144. package/docs/types/OpenapiNumberFormats.html +1 -1
  145. package/docs/types/OpenapiPrimitiveTypes.html +1 -1
  146. package/docs/types/OpenapiSchemaArray.html +1 -1
  147. package/docs/types/OpenapiSchemaArrayShorthand.html +1 -1
  148. package/docs/types/OpenapiSchemaBase.html +1 -1
  149. package/docs/types/OpenapiSchemaBody.html +1 -1
  150. package/docs/types/OpenapiSchemaBodyShorthand.html +1 -1
  151. package/docs/types/OpenapiSchemaCommonFields.html +1 -1
  152. package/docs/types/OpenapiSchemaExpressionAllOf.html +1 -1
  153. package/docs/types/OpenapiSchemaExpressionAnyOf.html +1 -1
  154. package/docs/types/OpenapiSchemaExpressionOneOf.html +1 -1
  155. package/docs/types/OpenapiSchemaExpressionRef.html +1 -1
  156. package/docs/types/OpenapiSchemaExpressionRefSchemaShorthand.html +1 -1
  157. package/docs/types/OpenapiSchemaInteger.html +1 -1
  158. package/docs/types/OpenapiSchemaNull.html +1 -1
  159. package/docs/types/OpenapiSchemaNumber.html +1 -1
  160. package/docs/types/OpenapiSchemaObject.html +1 -1
  161. package/docs/types/OpenapiSchemaObjectAllOf.html +1 -1
  162. package/docs/types/OpenapiSchemaObjectAllOfShorthand.html +1 -1
  163. package/docs/types/OpenapiSchemaObjectAnyOf.html +1 -1
  164. package/docs/types/OpenapiSchemaObjectAnyOfShorthand.html +1 -1
  165. package/docs/types/OpenapiSchemaObjectBase.html +1 -1
  166. package/docs/types/OpenapiSchemaObjectBaseShorthand.html +1 -1
  167. package/docs/types/OpenapiSchemaObjectOneOf.html +1 -1
  168. package/docs/types/OpenapiSchemaObjectOneOfShorthand.html +1 -1
  169. package/docs/types/OpenapiSchemaObjectShorthand.html +1 -1
  170. package/docs/types/OpenapiSchemaPrimitiveGeneric.html +1 -1
  171. package/docs/types/OpenapiSchemaShorthandExpressionAllOf.html +1 -1
  172. package/docs/types/OpenapiSchemaShorthandExpressionAnyOf.html +1 -1
  173. package/docs/types/OpenapiSchemaShorthandExpressionOneOf.html +1 -1
  174. package/docs/types/OpenapiSchemaShorthandExpressionSerializableRef.html +1 -1
  175. package/docs/types/OpenapiSchemaShorthandExpressionSerializerRef.html +1 -1
  176. package/docs/types/OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  177. package/docs/types/OpenapiSchemaString.html +1 -1
  178. package/docs/types/OpenapiShorthandAllTypes.html +1 -1
  179. package/docs/types/OpenapiShorthandPrimitiveTypes.html +1 -1
  180. package/docs/types/OpenapiTypeField.html +1 -1
  181. package/docs/types/Pascalized.html +1 -1
  182. package/docs/types/PrimaryKeyType.html +1 -1
  183. package/docs/types/RoundingPrecision.html +1 -1
  184. package/docs/types/SerializableClassOrSerializerCallback.html +1 -1
  185. package/docs/types/SerializableDreamClassOrViewModelClass.html +1 -1
  186. package/docs/types/SerializableDreamOrViewModel.html +1 -1
  187. package/docs/types/SerializableTypes.html +1 -1
  188. package/docs/types/Snakeified.html +1 -1
  189. package/docs/types/Timestamp.html +1 -1
  190. package/docs/types/UpdateableAssociationProperties.html +1 -1
  191. package/docs/types/UpdateableProperties.html +1 -1
  192. package/docs/types/ValidationType.html +1 -1
  193. package/docs/types/ViewModelSerializerKey.html +1 -1
  194. package/docs/types/WhereStatementForDream.html +1 -1
  195. package/docs/types/WhereStatementForDreamClass.html +1 -1
  196. package/docs/variables/DateTime-1.html +1 -1
  197. package/docs/variables/DreamConst.html +1 -1
  198. package/docs/variables/TRIGRAM_OPERATORS.html +1 -1
  199. package/docs/variables/openapiPrimitiveTypes-1.html +1 -1
  200. package/docs/variables/openapiShorthandPrimitiveTypes-1.html +1 -1
  201. package/docs/variables/ops.html +1 -1
  202. package/docs/variables/primaryKeyTypes.html +1 -1
  203. package/package.json +1 -1
@@ -1,447 +1,45 @@
1
- import { Camelized } from '../helpers/stringCasing.ts'
2
- import { AssociationTableNames } from './db.js'
3
- import {
4
- AssociationNamesForTable,
5
- AssociationTableName,
6
- JoinAndStatements,
7
- MAX_VARIADIC_DEPTH,
8
- } from './dream.js'
9
- import { Inc, ReadonlyTail } from './utils.ts'
10
-
11
- type VALID = 'valid'
12
- type INVALID = 'invalid'
13
- type IS_ASSOCIATION_ALIAS = 'association_alias'
14
- type IS_ASSOCIATION_NAME = 'association_name'
15
- type IS_NOT_ASSOCIATION_NAME = 'not_association_name'
16
- type RecursionTypes = 'load' | 'leftJoinLoad' | 'join'
17
- ///////////////////////////////
18
- // VARIADIC LOAD
19
- ///////////////////////////////
20
-
21
- export type VariadicLoadArgs<
22
- DB,
23
- Schema,
24
- ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
25
- ConcreteArgs extends readonly unknown[],
26
- //
27
- SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]],
28
- AllowedNextArgValues =
29
- | (keyof SchemaAssociations & string)
30
- | AliasedSchemaAssociation<Schema, ConcreteTableName>,
31
- > = VariadicCheckThenRecurse<
32
- DB,
33
- Schema,
34
- ConcreteTableName,
35
- ConcreteArgs,
36
- 'load',
37
- ConcreteTableName,
38
- 0,
39
- null,
40
- never,
41
- AllowedNextArgValues | Readonly<AllowedNextArgValues[]>
42
- >
43
- ///////////////////////////////
44
- // end: VARIADIC LOAD
45
- ///////////////////////////////
46
- ///////////////////////////////
47
- // VARIADIC LEFT JOIN LOAD
48
- ///////////////////////////////
49
- export type VariadicLeftJoinLoadArgs<
50
- DB,
51
- Schema,
52
- ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
53
- ConcreteArgs extends readonly unknown[],
54
- //
55
- SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]],
56
- AllowedNextArgValues =
57
- | (keyof SchemaAssociations & string)
58
- | AliasedSchemaAssociation<Schema, ConcreteTableName>,
59
- > = VariadicCheckThenRecurse<
60
- DB,
61
- Schema,
62
- ConcreteTableName,
63
- ConcreteArgs,
64
- 'leftJoinLoad',
65
- // Dream configures Kysely to use camel case in Typescript land and
66
- // convert to snake case in SQL; however, Dream reference snake-cased table names.
67
- // Without camelizing, the table name of the starting model could conflict with the
68
- // snake-cased version of an association name. By camelizing the table that goes
69
- // into the UsedNamespaces, we prevent this from happeing at the type level.
70
- Camelized<ConcreteTableName>,
71
- 0,
72
- null,
73
- never,
74
- AllowedNextArgValues | Readonly<AllowedNextArgValues[]>
75
- >
76
- ///////////////////////////////
77
- // end:VARIADIC LEFT JOIN LOAD
78
- ///////////////////////////////
79
- ///////////////////////////////
80
- // VARIADIC JOINS
81
- ///////////////////////////////
82
- export type VariadicJoinsArgs<
83
- DB,
84
- Schema,
85
- ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
86
- ConcreteArgs extends readonly unknown[],
87
- //
88
- SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]],
89
- AllowedNextArgValues =
90
- | (keyof SchemaAssociations & string)
91
- | AliasedSchemaAssociation<Schema, ConcreteTableName>,
92
- > = VariadicCheckThenRecurse<
93
- DB,
94
- Schema,
95
- ConcreteTableName,
96
- ConcreteArgs,
97
- 'join',
98
- // Dream configures Kysely to use camel case in Typescript land and
99
- // convert to snake case in SQL; however, Dream reference snake-cased table names.
100
- // Without camelizing, the table name of the starting model could conflict with the
101
- // snake-cased version of an association name. By camelizing the table that goes
102
- // into the UsedNamespaces, we prevent this from happeing at the type level.
103
- // Camelized<ConcreteTableName>,
104
- Camelized<ConcreteTableName>,
105
- 0,
106
- null,
107
- never,
108
- AllowedNextArgValues
109
- >
110
- ///////////////////////////////
111
- // end: VARIADIC JOINS
112
- ///////////////////////////////
113
- export type RequiredOnClauseKeys<
114
- Schema,
115
- TableName,
116
- AssociationName,
117
- Associations = TableName extends null
118
- ? null
119
- : TableName extends keyof Schema & string
120
- ? Schema[TableName]['associations' & keyof Schema[TableName]]
121
- : null,
122
- Association = Associations extends null
123
- ? null
124
- : AssociationName extends keyof Associations
125
- ? Associations[AssociationName]
126
- : null,
127
- RequiredOnClauses = Association extends null
128
- ? null
129
- : Association['requiredOnClauses' & keyof Association] & (string[] | null),
130
- > = RequiredOnClauses
131
- type VariadicCheckThenRecurse<
132
- DB,
133
- Schema,
134
- ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
135
- ConcreteArgs extends readonly unknown[],
136
- RecursionType extends RecursionTypes,
137
- UsedNamespaces,
138
- Depth extends number,
139
- //
140
- PreviousConcreteTableName,
141
- ConcreteAssociationName,
142
- //
143
- AssociationNamesOrOnClause,
144
- //
145
- SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]],
146
- NthArgument extends VALID | INVALID = ConcreteArgs['length'] extends 0
147
- ? VALID
148
- : ConcreteArgs[0] extends keyof SchemaAssociations & string
149
- ? VALID
150
- : ConcreteArgs[0] extends AliasedSchemaAssociation<Schema, ConcreteTableName>
151
- ? VALID
152
- : ConcreteArgs[0] extends JoinAndStatements<
153
- DB,
154
- Schema,
155
- ConcreteTableName,
156
- RequiredOnClauseKeys<Schema, PreviousConcreteTableName, ConcreteAssociationName>
157
- >
158
- ? VALID
159
- : INVALID,
160
- > = NthArgument extends INVALID
161
- ? `invalid where clause in argument ${Inc<Depth>}`
162
- : ConcreteArgs['length'] extends 0
163
- ? AssociationNamesOrOnClause
164
- : VariadicRecurse<
165
- DB,
166
- Schema,
167
- ConcreteTableName,
168
- ConcreteArgs,
169
- RecursionType,
170
- UsedNamespaces,
171
- Depth,
172
- PreviousConcreteTableName,
173
- ConcreteAssociationName
174
- >
175
-
176
- export type AliasedSchemaAssociation<
177
- Schema,
178
- ConcreteTableName extends keyof Schema,
179
- SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]],
180
- > = `${keyof SchemaAssociations & string} as ${string}`
181
- type VariadicRecurse<
182
- DB,
183
- Schema,
184
- ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
185
- ConcreteArgs extends readonly unknown[],
186
- RecursionType extends RecursionTypes,
187
- UsedNamespaces,
188
- Depth extends number,
189
- //
190
- PreviousConcreteTableName,
191
- ConcreteAssociationName,
192
- //
193
- SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]],
194
- ConcreteNthArg extends
195
- | (keyof SchemaAssociations & string)
196
- | AliasedSchemaAssociation<Schema, ConcreteTableName>
197
- | null = ConcreteArgs[0] extends undefined
198
- ? null
199
- : ConcreteArgs[0] extends null
200
- ? null
201
- : ConcreteArgs[0] extends keyof SchemaAssociations & string
202
- ? ConcreteArgs[0] & keyof SchemaAssociations & string
203
- : ConcreteArgs[0] extends AliasedSchemaAssociation<Schema, ConcreteTableName>
204
- ? ConcreteArgs[0] & AliasedSchemaAssociation<Schema, ConcreteTableName>
205
- : null,
206
- NextUsedNamespaces = ConcreteArgs[0] extends undefined
207
- ? never
208
- : ConcreteArgs[0] extends null
209
- ? never
210
- : ConcreteArgs[0] extends keyof SchemaAssociations & string
211
- ? UsedNamespaces | ConcreteNthArg
212
- : UsedNamespaces,
213
- //
214
- CurrentArgumentType extends
215
- | IS_ASSOCIATION_NAME
216
- | IS_ASSOCIATION_ALIAS
217
- | IS_NOT_ASSOCIATION_NAME = ConcreteNthArg extends null
218
- ? IS_NOT_ASSOCIATION_NAME
219
- : ConcreteNthArg extends keyof SchemaAssociations & string
220
- ? IS_ASSOCIATION_NAME
221
- : ConcreteNthArg extends AliasedSchemaAssociation<Schema, ConcreteTableName>
222
- ? IS_ASSOCIATION_ALIAS
223
- : IS_NOT_ASSOCIATION_NAME,
224
- //
225
- NextPreviousConcreteTableName = CurrentArgumentType extends IS_ASSOCIATION_NAME
226
- ? ConcreteTableName
227
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
228
- ? ConcreteTableName
229
- : PreviousConcreteTableName,
230
- //
231
- NextUnaliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME
232
- ? ConcreteNthArg
233
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
234
- ? ConcreteNthArg extends `${infer AssocName extends string} as ${string}`
235
- ? AssocName & keyof SchemaAssociations & string
236
- : never
237
- : never,
238
- //
239
- NextAliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME
240
- ? ConcreteNthArg
241
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
242
- ? ConcreteNthArg extends `${string} as ${infer AssocAlias extends string}`
243
- ? AssocAlias & string
244
- : ConcreteAssociationName
245
- : ConcreteAssociationName,
246
- //
247
- NextTableName extends keyof Schema &
248
- AssociationTableNames<DB, Schema> &
249
- keyof DB = CurrentArgumentType extends IS_ASSOCIATION_NAME
250
- ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName>
251
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
252
- ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName>
253
- : ConcreteTableName & AssociationTableNames<DB, Schema> & keyof DB,
254
- //
255
- AllowedNextArgValues = RecursionType extends 'load'
256
- ? AllowedNextArgValuesForLoad<
257
- DB,
258
- Schema,
259
- NextTableName,
260
- RequiredOnClauseKeys<Schema, ConcreteTableName, NextAliasedAssociationName>
261
- >
262
- : RecursionType extends 'leftJoinLoad'
263
- ? AllowedNextArgValuesForLeftJoinLoad<
264
- DB,
265
- Schema,
266
- NextTableName,
267
- RequiredOnClauseKeys<Schema, ConcreteTableName, NextAliasedAssociationName>,
268
- NextUsedNamespaces
269
- >
270
- : RecursionType extends 'join'
271
- ? AllowedNextArgValuesForJoin<
272
- DB,
273
- Schema,
274
- NextTableName,
275
- RequiredOnClauseKeys<Schema, ConcreteTableName, NextAliasedAssociationName>,
276
- NextUsedNamespaces
277
- >
278
- : never,
279
- > = Depth extends MAX_VARIADIC_DEPTH
280
- ? never
281
- : VariadicCheckThenRecurse<
282
- DB,
283
- Schema,
284
- NextTableName,
285
- ReadonlyTail<ConcreteArgs>,
286
- RecursionType,
287
- NextUsedNamespaces,
288
- Inc<Depth>,
289
- NextPreviousConcreteTableName,
290
- NextAliasedAssociationName,
291
- AllowedNextArgValues
292
- >
293
- type AllowedNextArgValuesForLoad<
294
- DB,
295
- Schema,
296
- TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
297
- RequiredOnClauseKeysForThisAssociation,
298
- > =
299
- | AssociationNamesForTable<Schema, TableName>
300
- | AssociationNamesForTable<Schema, TableName>[]
301
- | JoinAndStatements<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>
302
- type AllowedNextArgValuesForLeftJoinLoad<
303
- DB,
304
- Schema,
305
- TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
306
- RequiredOnClauseKeysForThisAssociation,
307
- UsedNamespaces,
308
- > =
309
- | Exclude<AssociationNamesForTable<Schema, TableName>, UsedNamespaces>
310
- | Exclude<AssociationNamesForTable<Schema, TableName>, UsedNamespaces>[]
311
- | JoinAndStatements<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>
312
- type AllowedNextArgValuesForJoin<
313
- DB,
314
- Schema,
315
- TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
316
- RequiredOnClauseKeysForThisAssociation,
317
- UsedNamespaces,
318
- > =
319
- | Exclude<AssociationNamesForTable<Schema, TableName>, UsedNamespaces>
320
- | JoinAndStatements<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>
321
-
1
+ import { Camelized } from '../helpers/stringCasing.js';
2
+ import { AssociationTableNames } from './db.js';
3
+ import { AssociationNamesForTable, AssociationTableName, JoinAndStatements, MAX_VARIADIC_DEPTH } from './dream.js';
4
+ import { Inc, ReadonlyTail } from './utils.js';
5
+ type VALID = 'valid';
6
+ type INVALID = 'invalid';
7
+ type IS_ASSOCIATION_ALIAS = 'association_alias';
8
+ type IS_ASSOCIATION_NAME = 'association_name';
9
+ type IS_NOT_ASSOCIATION_NAME = 'not_association_name';
10
+ type RecursionTypes = 'load' | 'leftJoinLoad' | 'join';
11
+ export type VariadicLoadArgs<DB, Schema, ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, ConcreteArgs extends readonly unknown[], SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]], AllowedNextArgValues = (keyof SchemaAssociations & string) | AliasedSchemaAssociation<Schema, ConcreteTableName>> = VariadicCheckThenRecurse<DB, Schema, ConcreteTableName, ConcreteArgs, 'load', ConcreteTableName, 0, null, never, AllowedNextArgValues | Readonly<AllowedNextArgValues[]>>;
12
+ export type VariadicLeftJoinLoadArgs<DB, Schema, ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, ConcreteArgs extends readonly unknown[], SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]], AllowedNextArgValues = (keyof SchemaAssociations & string) | AliasedSchemaAssociation<Schema, ConcreteTableName>> = VariadicCheckThenRecurse<DB, Schema, ConcreteTableName, ConcreteArgs, 'leftJoinLoad', Camelized<ConcreteTableName>, 0, null, never, AllowedNextArgValues | Readonly<AllowedNextArgValues[]>>;
13
+ export type VariadicJoinsArgs<DB, Schema, ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, ConcreteArgs extends readonly unknown[], SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]], AllowedNextArgValues = (keyof SchemaAssociations & string) | AliasedSchemaAssociation<Schema, ConcreteTableName>> = VariadicCheckThenRecurse<DB, Schema, ConcreteTableName, ConcreteArgs, 'join', Camelized<ConcreteTableName>, 0, null, never, AllowedNextArgValues>;
14
+ export type RequiredOnClauseKeys<Schema, TableName, AssociationName, Associations = TableName extends null ? null : TableName extends keyof Schema & string ? Schema[TableName]['associations' & keyof Schema[TableName]] : null, Association = Associations extends null ? null : AssociationName extends keyof Associations ? Associations[AssociationName] : null, RequiredOnClauses = Association extends null ? null : Association['requiredOnClauses' & keyof Association] & (string[] | null)> = RequiredOnClauses;
15
+ type VariadicCheckThenRecurse<DB, Schema, ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, ConcreteArgs extends readonly unknown[], RecursionType extends RecursionTypes, UsedNamespaces, Depth extends number, PreviousConcreteTableName, ConcreteAssociationName, AssociationNamesOrOnClause, SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]], NthArgument extends VALID | INVALID = ConcreteArgs['length'] extends 0 ? VALID : ConcreteArgs[0] extends keyof SchemaAssociations & string ? VALID : ConcreteArgs[0] extends AliasedSchemaAssociation<Schema, ConcreteTableName> ? VALID : ConcreteArgs[0] extends JoinAndStatements<DB, Schema, ConcreteTableName, RequiredOnClauseKeys<Schema, PreviousConcreteTableName, ConcreteAssociationName>> ? VALID : INVALID> = NthArgument extends INVALID ? `invalid where clause in argument ${Inc<Depth>}` : ConcreteArgs['length'] extends 0 ? AssociationNamesOrOnClause : VariadicRecurse<DB, Schema, ConcreteTableName, ConcreteArgs, RecursionType, UsedNamespaces, Depth, PreviousConcreteTableName, ConcreteAssociationName>;
16
+ export type AliasedSchemaAssociation<Schema, ConcreteTableName extends keyof Schema, SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]]> = `${keyof SchemaAssociations & string} as ${string}`;
17
+ type VariadicRecurse<DB, Schema, ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, ConcreteArgs extends readonly unknown[], RecursionType extends RecursionTypes, UsedNamespaces, Depth extends number, PreviousConcreteTableName, ConcreteAssociationName, SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]], ConcreteNthArg extends (keyof SchemaAssociations & string) | AliasedSchemaAssociation<Schema, ConcreteTableName> | null = ConcreteArgs[0] extends undefined ? null : ConcreteArgs[0] extends null ? null : ConcreteArgs[0] extends keyof SchemaAssociations & string ? ConcreteArgs[0] & keyof SchemaAssociations & string : ConcreteArgs[0] extends AliasedSchemaAssociation<Schema, ConcreteTableName> ? ConcreteArgs[0] & AliasedSchemaAssociation<Schema, ConcreteTableName> : null, NextUsedNamespaces = ConcreteArgs[0] extends undefined ? never : ConcreteArgs[0] extends null ? never : ConcreteArgs[0] extends keyof SchemaAssociations & string ? UsedNamespaces | ConcreteNthArg : UsedNamespaces, CurrentArgumentType extends IS_ASSOCIATION_NAME | IS_ASSOCIATION_ALIAS | IS_NOT_ASSOCIATION_NAME = ConcreteNthArg extends null ? IS_NOT_ASSOCIATION_NAME : ConcreteNthArg extends keyof SchemaAssociations & string ? IS_ASSOCIATION_NAME : ConcreteNthArg extends AliasedSchemaAssociation<Schema, ConcreteTableName> ? IS_ASSOCIATION_ALIAS : IS_NOT_ASSOCIATION_NAME, NextPreviousConcreteTableName = CurrentArgumentType extends IS_ASSOCIATION_NAME ? ConcreteTableName : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? ConcreteTableName : PreviousConcreteTableName, NextUnaliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME ? ConcreteNthArg : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? ConcreteNthArg extends `${infer AssocName extends string} as ${string}` ? AssocName & keyof SchemaAssociations & string : never : never, NextAliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME ? ConcreteNthArg : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? ConcreteNthArg extends `${string} as ${infer AssocAlias extends string}` ? AssocAlias & string : ConcreteAssociationName : ConcreteAssociationName, NextTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB = CurrentArgumentType extends IS_ASSOCIATION_NAME ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName> : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName> : ConcreteTableName & AssociationTableNames<DB, Schema> & keyof DB, AllowedNextArgValues = RecursionType extends 'load' ? AllowedNextArgValuesForLoad<DB, Schema, NextTableName, RequiredOnClauseKeys<Schema, ConcreteTableName, NextAliasedAssociationName>> : RecursionType extends 'leftJoinLoad' ? AllowedNextArgValuesForLeftJoinLoad<DB, Schema, NextTableName, RequiredOnClauseKeys<Schema, ConcreteTableName, NextAliasedAssociationName>, NextUsedNamespaces> : RecursionType extends 'join' ? AllowedNextArgValuesForJoin<DB, Schema, NextTableName, RequiredOnClauseKeys<Schema, ConcreteTableName, NextAliasedAssociationName>, NextUsedNamespaces> : never> = Depth extends MAX_VARIADIC_DEPTH ? never : VariadicCheckThenRecurse<DB, Schema, NextTableName, ReadonlyTail<ConcreteArgs>, RecursionType, NextUsedNamespaces, Inc<Depth>, NextPreviousConcreteTableName, NextAliasedAssociationName, AllowedNextArgValues>;
18
+ type AllowedNextArgValuesForLoad<DB, Schema, TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, RequiredOnClauseKeysForThisAssociation> = AssociationNamesForTable<Schema, TableName> | AssociationNamesForTable<Schema, TableName>[] | JoinAndStatements<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>;
19
+ type AllowedNextArgValuesForLeftJoinLoad<DB, Schema, TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, RequiredOnClauseKeysForThisAssociation, UsedNamespaces> = Exclude<AssociationNamesForTable<Schema, TableName>, UsedNamespaces> | Exclude<AssociationNamesForTable<Schema, TableName>, UsedNamespaces>[] | JoinAndStatements<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>;
20
+ type AllowedNextArgValuesForJoin<DB, Schema, TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, RequiredOnClauseKeysForThisAssociation, UsedNamespaces> = Exclude<AssociationNamesForTable<Schema, TableName>, UsedNamespaces> | JoinAndStatements<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>;
322
21
  export interface JoinedAssociation {
323
- table: string
324
- alias: string
22
+ table: string;
23
+ alias: string;
325
24
  }
326
-
327
25
  export type QueryTypeOptions = {
328
- joinedAssociations: Readonly<JoinedAssociation[]>
329
- rootTableName: string
330
- rootTableAlias: string
331
- allowPreload: boolean
332
- allowLeftJoinPreload: boolean
333
- }
334
-
335
- export type JoinedAssociationsTypeFromAssociations<
336
- DB,
337
- Schema,
338
- ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
339
- ConcreteArgs extends readonly unknown[],
340
- Depth extends number = 0,
341
- //
342
- //
343
- PreviousConcreteTableName = ConcreteTableName,
344
- ConcreteAssociationName = never,
345
- //
346
- JoinedAssociationsType extends Readonly<JoinedAssociation[]> = Readonly<[]>,
347
- SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]],
348
- //
349
- ConcreteNthArg extends
350
- | (keyof SchemaAssociations & string)
351
- | AliasedSchemaAssociation<Schema, ConcreteTableName>
352
- | Readonly<unknown[]>
353
- | null = ConcreteArgs[0] extends undefined
354
- ? null
355
- : ConcreteArgs[0] extends null
356
- ? null
357
- : ConcreteArgs[0] extends keyof SchemaAssociations & string
358
- ? ConcreteArgs[0] & keyof SchemaAssociations & string
359
- : ConcreteArgs[0] extends AliasedSchemaAssociation<Schema, ConcreteTableName>
360
- ? ConcreteArgs[0] & AliasedSchemaAssociation<Schema, ConcreteTableName>
361
- : ConcreteArgs[0] extends Readonly<unknown[]>
362
- ? Readonly<unknown[]>
363
- : null,
364
- //
365
- CurrentArgumentType extends
366
- | IS_ASSOCIATION_NAME
367
- | IS_ASSOCIATION_ALIAS
368
- | IS_NOT_ASSOCIATION_NAME = ConcreteNthArg extends null
369
- ? IS_NOT_ASSOCIATION_NAME
370
- : ConcreteNthArg extends Readonly<unknown[]>
371
- ? IS_NOT_ASSOCIATION_NAME
372
- : ConcreteNthArg extends keyof SchemaAssociations & string
373
- ? IS_ASSOCIATION_NAME
374
- : ConcreteNthArg extends AliasedSchemaAssociation<Schema, ConcreteTableName>
375
- ? IS_ASSOCIATION_ALIAS
376
- : IS_NOT_ASSOCIATION_NAME,
377
- //
378
- NextPreviousConcreteTableName = CurrentArgumentType extends IS_ASSOCIATION_NAME
379
- ? ConcreteTableName
380
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
381
- ? ConcreteTableName
382
- : PreviousConcreteTableName,
383
- //
384
- NextUnaliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME
385
- ? ConcreteNthArg
386
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
387
- ? ConcreteNthArg extends `${infer AssocName extends string} as ${string}`
388
- ? AssocName & keyof SchemaAssociations
389
- : never
390
- : never,
391
- //
392
- NextAliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME
393
- ? ConcreteNthArg
394
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
395
- ? ConcreteNthArg extends `${string} as ${infer Alias extends string}`
396
- ? Alias
397
- : ConcreteAssociationName
398
- : ConcreteAssociationName,
399
- //
400
- NextTableName extends keyof Schema &
401
- AssociationTableNames<DB, Schema> &
402
- keyof DB = CurrentArgumentType extends IS_ASSOCIATION_NAME
403
- ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName>
404
- : CurrentArgumentType extends IS_ASSOCIATION_ALIAS
405
- ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName>
406
- : ConcreteTableName & AssociationTableNames<DB, Schema> & keyof DB,
407
- > = ConcreteArgs['length'] extends 0
408
- ? JoinedAssociationsType
409
- : Depth extends MAX_VARIADIC_DEPTH
410
- ? never
411
- : ConcreteArgs['length'] extends 1
412
- ? ConcreteNthArg extends Readonly<unknown[]>
413
- ? JoinedAssociationsType
414
- : JoinedAssociationsTypeFromAssociations<
415
- DB,
416
- Schema,
417
- NextTableName,
418
- ReadonlyTail<ConcreteArgs>,
419
- Inc<Depth>,
420
- NextPreviousConcreteTableName,
421
- NextAliasedAssociationName,
422
- CurrentArgumentType extends IS_NOT_ASSOCIATION_NAME
423
- ? JoinedAssociationsType
424
- : Readonly<
425
- [
426
- ...JoinedAssociationsType,
427
- { table: NextTableName & string; alias: NextAliasedAssociationName & string },
428
- ]
429
- >
430
- >
431
- : JoinedAssociationsTypeFromAssociations<
432
- DB,
433
- Schema,
434
- NextTableName,
435
- ReadonlyTail<ConcreteArgs>,
436
- Inc<Depth>,
437
- NextPreviousConcreteTableName,
438
- NextAliasedAssociationName,
439
- CurrentArgumentType extends IS_NOT_ASSOCIATION_NAME
440
- ? JoinedAssociationsType
441
- : Readonly<
442
- [
443
- ...JoinedAssociationsType,
444
- { table: NextTableName & string; alias: NextAliasedAssociationName & string },
445
- ]
446
- >
447
- >
26
+ joinedAssociations: Readonly<JoinedAssociation[]>;
27
+ rootTableName: string;
28
+ rootTableAlias: string;
29
+ allowPreload: boolean;
30
+ allowLeftJoinPreload: boolean;
31
+ };
32
+ export type JoinedAssociationsTypeFromAssociations<DB, Schema, ConcreteTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, ConcreteArgs extends readonly unknown[], Depth extends number = 0, PreviousConcreteTableName = ConcreteTableName, ConcreteAssociationName = never, JoinedAssociationsType extends Readonly<JoinedAssociation[]> = Readonly<[]>, SchemaAssociations = Schema[ConcreteTableName]['associations' & keyof Schema[ConcreteTableName]], ConcreteNthArg extends (keyof SchemaAssociations & string) | AliasedSchemaAssociation<Schema, ConcreteTableName> | Readonly<unknown[]> | null = ConcreteArgs[0] extends undefined ? null : ConcreteArgs[0] extends null ? null : ConcreteArgs[0] extends keyof SchemaAssociations & string ? ConcreteArgs[0] & keyof SchemaAssociations & string : ConcreteArgs[0] extends AliasedSchemaAssociation<Schema, ConcreteTableName> ? ConcreteArgs[0] & AliasedSchemaAssociation<Schema, ConcreteTableName> : ConcreteArgs[0] extends Readonly<unknown[]> ? Readonly<unknown[]> : null, CurrentArgumentType extends IS_ASSOCIATION_NAME | IS_ASSOCIATION_ALIAS | IS_NOT_ASSOCIATION_NAME = ConcreteNthArg extends null ? IS_NOT_ASSOCIATION_NAME : ConcreteNthArg extends Readonly<unknown[]> ? IS_NOT_ASSOCIATION_NAME : ConcreteNthArg extends keyof SchemaAssociations & string ? IS_ASSOCIATION_NAME : ConcreteNthArg extends AliasedSchemaAssociation<Schema, ConcreteTableName> ? IS_ASSOCIATION_ALIAS : IS_NOT_ASSOCIATION_NAME, NextPreviousConcreteTableName = CurrentArgumentType extends IS_ASSOCIATION_NAME ? ConcreteTableName : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? ConcreteTableName : PreviousConcreteTableName, NextUnaliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME ? ConcreteNthArg : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? ConcreteNthArg extends `${infer AssocName extends string} as ${string}` ? AssocName & keyof SchemaAssociations : never : never, NextAliasedAssociationName = CurrentArgumentType extends IS_ASSOCIATION_NAME ? ConcreteNthArg : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? ConcreteNthArg extends `${string} as ${infer Alias extends string}` ? Alias : ConcreteAssociationName : ConcreteAssociationName, NextTableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB = CurrentArgumentType extends IS_ASSOCIATION_NAME ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName> : CurrentArgumentType extends IS_ASSOCIATION_ALIAS ? AssociationTableName<Schema, ConcreteTableName, NextUnaliasedAssociationName> : ConcreteTableName & AssociationTableNames<DB, Schema> & keyof DB> = ConcreteArgs['length'] extends 0 ? JoinedAssociationsType : Depth extends MAX_VARIADIC_DEPTH ? never : ConcreteArgs['length'] extends 1 ? ConcreteNthArg extends Readonly<unknown[]> ? JoinedAssociationsType : JoinedAssociationsTypeFromAssociations<DB, Schema, NextTableName, ReadonlyTail<ConcreteArgs>, Inc<Depth>, NextPreviousConcreteTableName, NextAliasedAssociationName, CurrentArgumentType extends IS_NOT_ASSOCIATION_NAME ? JoinedAssociationsType : Readonly<[
33
+ ...JoinedAssociationsType,
34
+ {
35
+ table: NextTableName & string;
36
+ alias: NextAliasedAssociationName & string;
37
+ }
38
+ ]>> : JoinedAssociationsTypeFromAssociations<DB, Schema, NextTableName, ReadonlyTail<ConcreteArgs>, Inc<Depth>, NextPreviousConcreteTableName, NextAliasedAssociationName, CurrentArgumentType extends IS_NOT_ASSOCIATION_NAME ? JoinedAssociationsType : Readonly<[
39
+ ...JoinedAssociationsType,
40
+ {
41
+ table: NextTableName & string;
42
+ alias: NextAliasedAssociationName & string;
43
+ }
44
+ ]>>;
45
+ export {};