@danceroutine/tango-orm 1.11.1 → 1.11.3

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 (131) hide show
  1. package/dist/Adapter-DKxAaL4l.d.ts +73 -0
  2. package/dist/DBClient-DuYcXolQ.d.ts +27 -0
  3. package/dist/{InternalDialect-ClSaUNso.js → InternalDialect-U3mwJjKA.js} +3 -4
  4. package/dist/InternalDialect-U3mwJjKA.js.map +1 -0
  5. package/dist/QuerySetState-CjyvAUBs.d.ts +1310 -0
  6. package/dist/SqliteAdapter-6oyUmoJf.js +279 -0
  7. package/dist/SqliteAdapter-6oyUmoJf.js.map +1 -0
  8. package/dist/chunk-8H4AJuhK.js +14 -0
  9. package/dist/connection/index.d.ts +4 -11
  10. package/dist/connection/index.js +3 -6
  11. package/dist/{connection-Dmhgx31M.js → connection-D-E6_Yf1.js} +28 -30
  12. package/dist/connection-D-E6_Yf1.js.map +1 -0
  13. package/dist/{defaultRuntime-DzqBQ9Hb.js → defaultRuntime-CdTX8cXm.js} +41 -35
  14. package/dist/defaultRuntime-CdTX8cXm.js.map +1 -0
  15. package/dist/index-B-aibguC.d.ts +226 -0
  16. package/dist/index-D9B6gKez.d.ts +70 -0
  17. package/dist/index-rjKca3U_.d.ts +31 -0
  18. package/dist/index-uuG57Y7C.d.ts +97 -0
  19. package/dist/index.d.ts +9 -22
  20. package/dist/index.js +9 -12
  21. package/dist/manager/index.d.ts +4 -12
  22. package/dist/manager/index.js +3 -9
  23. package/dist/{manager-DrDTiCAz.js → manager-CiYqAYpn.js} +7 -11
  24. package/dist/{manager-DrDTiCAz.js.map → manager-CiYqAYpn.js.map} +1 -1
  25. package/dist/query/index.d.ts +3 -14
  26. package/dist/query/index.js +2 -4
  27. package/dist/{query-DUZnBFhf.js → query-CP1UMIX6.js} +163 -121
  28. package/dist/query-CP1UMIX6.js.map +1 -0
  29. package/dist/registerModelObjects-C-MliIiM.d.ts +229 -0
  30. package/dist/{registerModelObjects-22ZJKoit.js → registerModelObjects-DZfZ20fa.js} +119 -69
  31. package/dist/registerModelObjects-DZfZ20fa.js.map +1 -0
  32. package/dist/runtime/index.d.ts +3 -15
  33. package/dist/runtime/index.js +15 -8
  34. package/dist/runtime/index.js.map +1 -0
  35. package/dist/transaction/index.d.ts +2 -6
  36. package/dist/transaction/index.js +2 -7
  37. package/dist/{transaction-ZhfDf-f8.js → transaction-2_2m7VUo.js} +26 -10
  38. package/dist/transaction-2_2m7VUo.js.map +1 -0
  39. package/package.json +7 -7
  40. package/dist/InternalDialect-ClSaUNso.js.map +0 -1
  41. package/dist/PostgresAdapter-CXKdKBG-.js +0 -4
  42. package/dist/PostgresAdapter-DySFW6vy.js +0 -128
  43. package/dist/PostgresAdapter-DySFW6vy.js.map +0 -1
  44. package/dist/SqliteAdapter-CDdOjRmW.js +0 -151
  45. package/dist/SqliteAdapter-CDdOjRmW.js.map +0 -1
  46. package/dist/SqliteAdapter-mjtXuVTg.js +0 -4
  47. package/dist/chunk-DLY2FNSh.js +0 -12
  48. package/dist/connection/adapters/Adapter.d.ts +0 -60
  49. package/dist/connection/adapters/AdapterRegistry.d.ts +0 -44
  50. package/dist/connection/adapters/dialects/PostgresAdapter.d.ts +0 -30
  51. package/dist/connection/adapters/dialects/SqliteAdapter.d.ts +0 -22
  52. package/dist/connection/adapters/dialects/index.d.ts +0 -5
  53. package/dist/connection/adapters/index.d.ts +0 -8
  54. package/dist/connection/clients/DBClient.d.ts +0 -23
  55. package/dist/connection/clients/dialects/PostgresClient.d.ts +0 -54
  56. package/dist/connection/clients/dialects/SqliteClient.d.ts +0 -54
  57. package/dist/connection/clients/dialects/index.d.ts +0 -5
  58. package/dist/connection/clients/index.d.ts +0 -7
  59. package/dist/connection-Dmhgx31M.js.map +0 -1
  60. package/dist/defaultRuntime-DzqBQ9Hb.js.map +0 -1
  61. package/dist/manager/ManagerLike.d.ts +0 -34
  62. package/dist/manager/ModelManager.d.ts +0 -106
  63. package/dist/manager/internal/MutationCompiler.d.ts +0 -23
  64. package/dist/manager/internal/RuntimeBoundClient.d.ts +0 -20
  65. package/dist/manager/registerModelObjects.d.ts +0 -5
  66. package/dist/manager/relations/ManyToManyRelatedManager.d.ts +0 -181
  67. package/dist/manager/relations/ManyToManyRelatedQuerySet.d.ts +0 -62
  68. package/dist/manager/relations/MaterializedModelRecord.d.ts +0 -28
  69. package/dist/manager/relations/index.d.ts +0 -9
  70. package/dist/manager/relations/internal/ThroughTableManager.d.ts +0 -85
  71. package/dist/query/ModelQuerySet.d.ts +0 -20
  72. package/dist/query/QBuilder.d.ts +0 -29
  73. package/dist/query/QuerySet.d.ts +0 -215
  74. package/dist/query/compiler/QueryCompiler.d.ts +0 -49
  75. package/dist/query/compiler/index.d.ts +0 -4
  76. package/dist/query/domain/CompiledQuery.d.ts +0 -209
  77. package/dist/query/domain/Dialect.d.ts +0 -2
  78. package/dist/query/domain/Direction.d.ts +0 -2
  79. package/dist/query/domain/FilterInput.d.ts +0 -3
  80. package/dist/query/domain/FilterKey.d.ts +0 -4
  81. package/dist/query/domain/FilterValue.d.ts +0 -1
  82. package/dist/query/domain/LookupType.d.ts +0 -2
  83. package/dist/query/domain/OrderSpec.d.ts +0 -5
  84. package/dist/query/domain/OrderToken.d.ts +0 -1
  85. package/dist/query/domain/QNode.d.ts +0 -9
  86. package/dist/query/domain/QueryResult.d.ts +0 -35
  87. package/dist/query/domain/QuerySetState.d.ts +0 -13
  88. package/dist/query/domain/RelationMeta.d.ts +0 -56
  89. package/dist/query/domain/RelationTyping.d.ts +0 -163
  90. package/dist/query/domain/TableMeta.d.ts +0 -16
  91. package/dist/query/domain/TableMetaFactory.d.ts +0 -10
  92. package/dist/query/domain/WhereClause.d.ts +0 -4
  93. package/dist/query/domain/index.d.ts +0 -21
  94. package/dist/query/domain/internal/InternalDialect.d.ts +0 -4
  95. package/dist/query/domain/internal/InternalDirection.d.ts +0 -4
  96. package/dist/query/domain/internal/InternalLookupType.d.ts +0 -15
  97. package/dist/query/domain/internal/InternalPrefetchQueryKind.d.ts +0 -20
  98. package/dist/query/domain/internal/InternalQNodeType.d.ts +0 -6
  99. package/dist/query/domain/internal/InternalRelationKind.d.ts +0 -6
  100. package/dist/query/internal/isQNodeLike.d.ts +0 -3
  101. package/dist/query/planning/QueryPlanner.d.ts +0 -16
  102. package/dist/query/planning/domain/QueryHydrationPlan.d.ts +0 -20
  103. package/dist/query/planning/index.d.ts +0 -2
  104. package/dist/query-DUZnBFhf.js.map +0 -1
  105. package/dist/registerModelObjects-22ZJKoit.js.map +0 -1
  106. package/dist/runtime/TangoRuntime.d.ts +0 -56
  107. package/dist/runtime/defaultRuntime.d.ts +0 -13
  108. package/dist/runtime/internal/DBClientProvider.d.ts +0 -12
  109. package/dist/runtime/internal/PostgresDBClientProvider.d.ts +0 -12
  110. package/dist/runtime/internal/SqliteDBClientProvider.d.ts +0 -19
  111. package/dist/runtime/internal/createDBClientProvider.d.ts +0 -5
  112. package/dist/runtime-1H88J3nN.js +0 -18
  113. package/dist/runtime-1H88J3nN.js.map +0 -1
  114. package/dist/transaction/AtomicTransaction.d.ts +0 -32
  115. package/dist/transaction/UnitOfWork.d.ts +0 -52
  116. package/dist/transaction/atomic.d.ts +0 -2
  117. package/dist/transaction/internal/context/AsyncLocalTransactionEngine.d.ts +0 -21
  118. package/dist/transaction/internal/context/CallbackRecord.d.ts +0 -5
  119. package/dist/transaction/internal/context/FrameBoundTransaction.d.ts +0 -20
  120. package/dist/transaction/internal/context/FrameTransactionHandle.d.ts +0 -4
  121. package/dist/transaction/internal/context/TransactionEngine.d.ts +0 -16
  122. package/dist/transaction/internal/context/TransactionFrame.d.ts +0 -7
  123. package/dist/transaction/internal/context/TransactionState.d.ts +0 -10
  124. package/dist/transaction/internal/context/index.d.ts +0 -1
  125. package/dist/transaction-ZhfDf-f8.js.map +0 -1
  126. package/dist/validation/OrmSqlSafetyAdapter.d.ts +0 -22
  127. package/dist/validation/SQLValidationEngine.d.ts +0 -68
  128. package/dist/validation/SqlValidationPlan.d.ts +0 -43
  129. package/dist/validation/index.d.ts +0 -3
  130. package/dist/validation/internal/InternalSqlValidationPlanKind.d.ts +0 -25
  131. package/dist/validation/internal/InternalValidatedFilterDescriptorKind.d.ts +0 -4
@@ -1,163 +0,0 @@
1
- import type { z } from 'zod';
2
- import type { Model, PersistedModelOutput } from '@danceroutine/tango-schema/domain';
3
- import type { DecoratedFieldKind, InternalDecoratedFieldKind, RelationDecoratedSchema } from '@danceroutine/tango-schema/model';
4
- import type { ManyToManyRelatedManager } from '../../manager/relations/ManyToManyRelatedManager';
5
- export declare const InternalRelationHydrationCardinality: {
6
- readonly SINGLE: "single";
7
- readonly MANY: "many";
8
- };
9
- export type RelationHydrationCardinality = (typeof InternalRelationHydrationCardinality)[keyof typeof InternalRelationHydrationCardinality];
10
- export type SingleRelationHydrationCardinality = typeof InternalRelationHydrationCardinality.SINGLE;
11
- export type ManyRelationHydrationCardinality = typeof InternalRelationHydrationCardinality.MANY;
12
- export type HydratedQueryResult<TBase extends Record<string, unknown>, THydrated extends Record<string, unknown>> = [
13
- keyof THydrated
14
- ] extends [never] ? TBase : Omit<TBase, keyof THydrated> & THydrated;
15
- declare global {
16
- interface TangoGeneratedRelationRegistry {
17
- }
18
- }
19
- type AnyModel = Model<z.ZodObject<z.ZodRawShape>, string>;
20
- type ModelSchema<TModel> = TModel extends Model<infer TSchema extends z.ZodObject<z.ZodRawShape>, string> ? TSchema : never;
21
- type ModelShape<TModel> = ModelSchema<TModel> extends z.ZodObject<infer TShape> ? TShape : never;
22
- type ModelRow<TModel> = TModel extends Model<infer TSchema extends z.ZodObject<z.ZodRawShape>, string> ? PersistedModelOutput<TSchema> : never;
23
- type IsLiteralString<TValue> = TValue extends string ? (string extends TValue ? false : true) : false;
24
- type HasStrictModelKey<TModel> = TModel extends Model<z.ZodObject<z.ZodRawShape>, infer TKey> ? IsLiteralString<TKey> : false;
25
- type ModelKey<TModel> = TModel extends Model<z.ZodObject<z.ZodRawShape>, infer TKey extends string> ? TKey : never;
26
- type UnionToIntersection<TValue> = (TValue extends unknown ? (value: TValue) => void : never) extends (value: infer TIntersection) => void ? TIntersection : never;
27
- type JoinPathSegments<TSegments extends readonly string[]> = TSegments extends readonly [
28
- infer THead extends string,
29
- ...infer TRest extends string[]
30
- ] ? TRest['length'] extends 0 ? THead : `${THead}__${JoinPathSegments<TRest>}` : never;
31
- type SplitPath<TPath extends string> = TPath extends `${infer THead}__${infer TRest}` ? [THead, ...SplitPath<TRest>] : [TPath];
32
- type TailTuple<TTuple extends readonly unknown[]> = TTuple extends readonly [unknown, ...infer TRest] ? TRest : [];
33
- type DefaultGeneratedCycleBudget = readonly [1, 1, 1, 1];
34
- type GeneratedRelationRegistry = TangoGeneratedRelationRegistry;
35
- type GeneratedRelationKeys<TSourceModel> = Extract<keyof GeneratedRelations<TSourceModel>, string>;
36
- type GeneratedRelations<TSourceModel> = HasStrictModelKey<TSourceModel> extends true ? ModelKey<TSourceModel> extends keyof GeneratedRelationRegistry ? GeneratedRelationRegistry[ModelKey<TSourceModel>] : {} : {};
37
- type NextSeenModels<TSeen extends readonly string[], TTargetModel> = ModelKey<TTargetModel> extends string ? [...TSeen, ModelKey<TTargetModel>] : TSeen;
38
- type CanTraverseGeneratedTarget<TTargetModel, TSeen extends readonly string[], TCycleBudget extends readonly unknown[]> = ModelKey<TTargetModel> extends TSeen[number] ? (TCycleBudget extends [] ? false : true) : true;
39
- type NextGeneratedCycleBudget<TTargetModel, TSeen extends readonly string[], TCycleBudget extends readonly unknown[]> = ModelKey<TTargetModel> extends TSeen[number] ? TailTuple<TCycleBudget> : TCycleBudget;
40
- type GeneratedCardinalityIncludesMany<TCardinality extends RelationHydrationCardinality> = TCardinality extends typeof InternalRelationHydrationCardinality.MANY ? true : false;
41
- /**
42
- * Generated path keys accepted by `selectRelated(...)`.
43
- *
44
- * Walks the ambient relation registry one hop at a time. Each hop contributes:
45
- * (a) the bare relation key (e.g. `author`) as a valid path terminus, and
46
- * (b) a dunder-joined extension (`author__profile`, ...) that recurses into
47
- * the target model.
48
- *
49
- * Because `selectRelated` only composes single-valued hops, the mapped type
50
- * filters relations whose `cardinality` is not `SINGLE`. The `TSeen` tuple
51
- * tracks which model keys the recursion has visited so cyclic schemas
52
- * (`manager -> manager`) are allowed a bounded number of revisits before
53
- * typing falls back to `never`. `TCycleBudget` is that revisit budget; see
54
- * `CanTraverseGeneratedTarget` / `NextGeneratedCycleBudget` for how it
55
- * shrinks only when the next hop actually re-enters a seen model.
56
- */
57
- export type GeneratedSelectRelatedPathKeys<TSourceModel, TSeen extends readonly string[] = [ModelKey<TSourceModel>], TCycleBudget extends readonly unknown[] = DefaultGeneratedCycleBudget> = {
58
- [TKey in GeneratedRelationKeys<TSourceModel>]: GeneratedRelations<TSourceModel>[TKey] extends {
59
- target: infer TTarget extends AnyModel;
60
- cardinality: typeof InternalRelationHydrationCardinality.SINGLE;
61
- } ? TKey | (CanTraverseGeneratedTarget<TTarget, TSeen, TCycleBudget> extends true ? `${TKey}__${GeneratedSelectRelatedPathKeys<TTarget, NextSeenModels<TSeen, TTarget>, NextGeneratedCycleBudget<TTarget, TSeen, TCycleBudget>>}` : never) : never;
62
- }[GeneratedRelationKeys<TSourceModel>];
63
- /**
64
- * Generated path keys accepted by `prefetchRelated(...)`.
65
- *
66
- * Similar in shape to {@link GeneratedSelectRelatedPathKeys}, but relaxes two
67
- * constraints because prefetch can cross and continue past collection edges:
68
- * 1. Any hop whose cardinality is `MANY` is a valid terminus. The
69
- * `THasMany` flag threads through recursion so once a collection edge
70
- * has been crossed, every subsequent hop is also a valid terminus
71
- * (matches Django's `prefetch_related` semantics).
72
- * 2. Single-valued hops are still accepted as terminators so paths like
73
- * `posts__author` survive the join.
74
- *
75
- * Cycle handling reuses the same `TSeen` / `TCycleBudget` machinery described
76
- * in {@link GeneratedSelectRelatedPathKeys}: cyclic schemas are typed up to
77
- * the bound, then fall back to weaker typing rather than failing.
78
- */
79
- export type GeneratedPrefetchRelatedPathKeys<TSourceModel, THasMany extends boolean = false, TSeen extends readonly string[] = [ModelKey<TSourceModel>], TCycleBudget extends readonly unknown[] = DefaultGeneratedCycleBudget> = {
80
- [TKey in GeneratedRelationKeys<TSourceModel>]: GeneratedRelations<TSourceModel>[TKey] extends {
81
- target: infer TTarget extends AnyModel;
82
- cardinality: infer TCardinality extends RelationHydrationCardinality;
83
- } ? (THasMany extends true ? TKey : GeneratedCardinalityIncludesMany<TCardinality> extends true ? TKey : never) | (CanTraverseGeneratedTarget<TTarget, TSeen, TCycleBudget> extends true ? `${TKey}__${GeneratedPrefetchRelatedPathKeys<TTarget, THasMany extends true ? true : GeneratedCardinalityIncludesMany<TCardinality>, NextSeenModels<TSeen, TTarget>, NextGeneratedCycleBudget<TTarget, TSeen, TCycleBudget>>}` : never) : never;
84
- }[GeneratedRelationKeys<TSourceModel>];
85
- /**
86
- * Generated relation-path filter keys accepted by `filter(...)`, `exclude(...)`,
87
- * and `Q(...)`.
88
- *
89
- * This stays intentionally lighter than the eager-loading path typing:
90
- * applications with generated relation registries get completion for the
91
- * relation path prefix, while the terminal field and lookup suffix remain a
92
- * string tail so the compiler does not explode on deep recursive field
93
- * extraction.
94
- */
95
- export type GeneratedRelationFilterKeys<TSourceModel> = `${GeneratedSelectRelatedPathKeys<TSourceModel>}__${string}` | `${GeneratedPrefetchRelatedPathKeys<TSourceModel>}__${string}`;
96
- type GeneratedHydratedTarget<TDescriptor, TPath extends string | never> = TDescriptor extends {
97
- target: infer TTarget extends AnyModel;
98
- } ? [TPath] extends [never] ? ModelRow<TTarget> : HydratedQueryResult<ModelRow<TTarget>, GeneratedHydratedRelationMap<TTarget, TPath>> : never;
99
- type GeneratedHydratedValue<TDescriptor, TPath extends string | never> = TDescriptor extends {
100
- target: infer TTarget extends AnyModel;
101
- kind: 'manyToMany';
102
- } ? ManyToManyRelatedManager<ModelRow<TTarget>> : TDescriptor extends {
103
- cardinality: infer TCardinality extends RelationHydrationCardinality;
104
- } ? TCardinality extends typeof InternalRelationHydrationCardinality.SINGLE ? GeneratedHydratedTarget<TDescriptor, TPath> | null : GeneratedHydratedTarget<TDescriptor, TPath>[] : never;
105
- type GeneratedHydrationForPath<TSourceModel, TPath extends string> = SplitPath<TPath> extends [infer THead extends string, ...infer TRest extends string[]] ? THead extends GeneratedRelationKeys<TSourceModel> ? {
106
- [TKey in THead]: GeneratedHydratedValue<GeneratedRelations<TSourceModel>[THead], JoinPathSegments<TRest>>;
107
- } : {} : {};
108
- export type GeneratedHydratedRelationMap<TSourceModel, TPaths extends string | never> = ([TPaths] extends [never] ? Record<never, never> : UnionToIntersection<TPaths extends string ? GeneratedHydrationForPath<TSourceModel, TPaths> : never>) & Record<never, never>;
109
- export type HasStrictRelationTyping<TSourceModel> = HasStrictModelKey<TSourceModel>;
110
- type ModelKeysMatch<TCandidate, TExpected> = TCandidate extends Model<z.ZodObject<z.ZodRawShape>, infer TCandidateKey> ? TExpected extends Model<z.ZodObject<z.ZodRawShape>, infer TExpectedKey> ? IsLiteralString<TCandidateKey> extends true ? IsLiteralString<TExpectedKey> extends true ? [
111
- TCandidateKey
112
- ] extends [TExpectedKey] ? true : false : false : false : false : false;
113
- type FieldNamingHint<TKey extends string> = TKey extends `${infer TBase}Id` ? TBase : TKey extends `${infer TBase}_id` ? TBase : TKey;
114
- type RelationName<TKey extends string, TName> = TName extends string ? TName : FieldNamingHint<TKey>;
115
- type RelatedName<TName> = TName extends string ? TName : never;
116
- type RelationTarget<TField> = TField extends RelationDecoratedSchema<z.ZodTypeAny, DecoratedFieldKind, infer TTarget, string | undefined, string | undefined> ? TTarget : never;
117
- type RelationConfiguredName<TField> = TField extends RelationDecoratedSchema<z.ZodTypeAny, DecoratedFieldKind, AnyModel, infer TName, string | undefined> ? TName : undefined;
118
- type RelationConfiguredRelatedName<TField> = TField extends RelationDecoratedSchema<z.ZodTypeAny, DecoratedFieldKind, AnyModel, string | undefined, infer TRelatedName> ? TRelatedName : undefined;
119
- type RelationKindOf<TField> = TField extends RelationDecoratedSchema<z.ZodTypeAny, infer TKind, AnyModel, string | undefined, string | undefined> ? TKind : never;
120
- export type ForwardSingleRelations<TSourceModel> = HasStrictModelKey<TSourceModel> extends true ? {
121
- [TKey in keyof ModelShape<TSourceModel> as TKey extends string ? [
122
- RelationKindOf<ModelShape<TSourceModel>[TKey]>
123
- ] extends [never] ? never : RelationKindOf<ModelShape<TSourceModel>[TKey]> extends typeof InternalDecoratedFieldKind.FOREIGN_KEY | typeof InternalDecoratedFieldKind.ONE_TO_ONE ? RelationTarget<ModelShape<TSourceModel>[TKey]> extends AnyModel ? RelationName<TKey, RelationConfiguredName<ModelShape<TSourceModel>[TKey]>> : never : never : never]: {
124
- kind: typeof InternalDecoratedFieldKind.FOREIGN_KEY;
125
- target: RelationTarget<ModelShape<TSourceModel>[TKey]>;
126
- };
127
- } : Record<string, {
128
- kind: typeof InternalDecoratedFieldKind.FOREIGN_KEY;
129
- target: AnyModel;
130
- }>;
131
- export type ReverseSingleRelations<TSourceModel, TTargetModel> = HasStrictModelKey<TSourceModel> extends true ? HasStrictModelKey<TTargetModel> extends true ? {
132
- [TKey in keyof ModelShape<TTargetModel> as [RelationKindOf<ModelShape<TTargetModel>[TKey]>] extends [
133
- never
134
- ] ? never : RelationKindOf<ModelShape<TTargetModel>[TKey]> extends typeof InternalDecoratedFieldKind.ONE_TO_ONE ? ModelKeysMatch<RelationTarget<ModelShape<TTargetModel>[TKey]>, TSourceModel> extends true ? RelatedName<RelationConfiguredRelatedName<ModelShape<TTargetModel>[TKey]>> : never : never]: {
135
- kind: typeof InternalDecoratedFieldKind.ONE_TO_ONE;
136
- target: TTargetModel;
137
- };
138
- } : {} : Record<string, {
139
- kind: typeof InternalDecoratedFieldKind.ONE_TO_ONE;
140
- target: AnyModel;
141
- }>;
142
- export type ReverseCollectionRelations<TSourceModel, TTargetModel> = HasStrictModelKey<TSourceModel> extends true ? HasStrictModelKey<TTargetModel> extends true ? {
143
- [TKey in keyof ModelShape<TTargetModel> as [RelationKindOf<ModelShape<TTargetModel>[TKey]>] extends [
144
- never
145
- ] ? never : RelationKindOf<ModelShape<TTargetModel>[TKey]> extends typeof InternalDecoratedFieldKind.FOREIGN_KEY ? ModelKeysMatch<RelationTarget<ModelShape<TTargetModel>[TKey]>, TSourceModel> extends true ? RelatedName<RelationConfiguredRelatedName<ModelShape<TTargetModel>[TKey]>> : never : never]: {
146
- kind: typeof InternalDecoratedFieldKind.FOREIGN_KEY;
147
- target: TTargetModel;
148
- };
149
- } : {} : Record<string, {
150
- kind: typeof InternalDecoratedFieldKind.FOREIGN_KEY;
151
- target: AnyModel;
152
- }>;
153
- export type SelectRelatedRelations<TSourceModel, TTargetModel> = [TTargetModel] extends [undefined] ? ForwardSingleRelations<TSourceModel> : // Target generic supplied: include reverse hasOne relations discovered on that target model.
154
- ForwardSingleRelations<TSourceModel> & ReverseSingleRelations<TSourceModel, TTargetModel>;
155
- export type PrefetchRelatedRelations<TSourceModel, TTargetModel> = ReverseCollectionRelations<TSourceModel, TTargetModel>;
156
- export type RelationKeys<TRelations> = Extract<keyof TRelations, string>;
157
- export type HydratedRelationMap<TRelations, TKeys extends string, TCardinality extends RelationHydrationCardinality> = {
158
- [TKey in TKeys]: TKey extends keyof TRelations ? TRelations[TKey] extends {
159
- target: infer TTarget;
160
- } ? TCardinality extends typeof InternalRelationHydrationCardinality.SINGLE ? ModelRow<TTarget> | null : ModelRow<TTarget>[] : never : never;
161
- };
162
- export type MaybeHydratedRelationMap<TSourceModel, TRelations, TKeys extends string, TCardinality extends RelationHydrationCardinality> = HasStrictModelKey<TSourceModel> extends true ? HydratedRelationMap<TRelations, TKeys, TCardinality> : Record<never, never>;
163
- export {};
@@ -1,16 +0,0 @@
1
- import type { RelationMeta } from './RelationMeta';
2
- /**
3
- * SQL-facing model metadata visible to the ORM layer.
4
- */
5
- export interface TableMeta {
6
- /** Stable model key when the table comes from a registered Tango model. */
7
- modelKey?: string;
8
- /** Physical table name used in compiled SQL. */
9
- table: string;
10
- /** Primary key column name. */
11
- pk: string;
12
- /** Base columns and their storage types. */
13
- columns: Record<string, string>;
14
- /** Relation metadata keyed by public relation name. */
15
- relations?: Record<string, RelationMeta>;
16
- }
@@ -1,10 +0,0 @@
1
- import type { Model as SchemaModel } from '@danceroutine/tango-schema/domain';
2
- import type { TableMeta } from './TableMeta';
3
- /**
4
- * Build registry-backed recursive table metadata for query planning and
5
- * hydration execution.
6
- */
7
- export declare class TableMetaFactory {
8
- static create(model: SchemaModel): TableMeta;
9
- private static createWithCache;
10
- }
@@ -1,4 +0,0 @@
1
- export interface WhereClause {
2
- sql: string;
3
- params: readonly unknown[];
4
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Domain boundary barrel: centralizes this subdomain's public contract.
3
- */
4
- export type { CompiledQuery } from './CompiledQuery';
5
- export type { Dialect } from './Dialect';
6
- export type { Direction } from './Direction';
7
- export type { FilterInput } from './FilterInput';
8
- export type { FilterKey } from './FilterKey';
9
- export type { FilterValue } from './FilterValue';
10
- export type { LookupType } from './LookupType';
11
- export type { OrderSpec } from './OrderSpec';
12
- export type { OrderToken } from './OrderToken';
13
- export type { QNode } from './QNode';
14
- export { QueryResult } from './QueryResult';
15
- export type { QuerySetState } from './QuerySetState';
16
- export type { RelationMeta } from './RelationMeta';
17
- export type { ForwardSingleRelations, GeneratedRelationFilterKeys, GeneratedHydratedRelationMap, GeneratedPrefetchRelatedPathKeys, GeneratedSelectRelatedPathKeys, HydratedQueryResult, HydratedRelationMap, ManyRelationHydrationCardinality, MaybeHydratedRelationMap, PrefetchRelatedRelations, RelationKeys, RelationHydrationCardinality, ReverseCollectionRelations, ReverseSingleRelations, SelectRelatedRelations, SingleRelationHydrationCardinality, } from './RelationTyping';
18
- export { InternalRelationHydrationCardinality } from './RelationTyping';
19
- export type { TableMeta } from './TableMeta';
20
- export { TableMetaFactory } from './TableMetaFactory';
21
- export type { WhereClause } from './WhereClause';
@@ -1,4 +0,0 @@
1
- export declare const InternalDialect: {
2
- readonly POSTGRES: "postgres";
3
- readonly SQLITE: "sqlite";
4
- };
@@ -1,4 +0,0 @@
1
- export declare const InternalDirection: {
2
- readonly ASC: "asc";
3
- readonly DESC: "desc";
4
- };
@@ -1,15 +0,0 @@
1
- export declare const InternalLookupType: {
2
- readonly EXACT: "exact";
3
- readonly LT: "lt";
4
- readonly LTE: "lte";
5
- readonly GT: "gt";
6
- readonly GTE: "gte";
7
- readonly IN: "in";
8
- readonly ISNULL: "isnull";
9
- readonly CONTAINS: "contains";
10
- readonly ICONTAINS: "icontains";
11
- readonly STARTSWITH: "startswith";
12
- readonly ISTARTSWITH: "istartswith";
13
- readonly ENDSWITH: "endswith";
14
- readonly IENDSWITH: "iendswith";
15
- };
@@ -1,20 +0,0 @@
1
- /**
2
- * Discriminator strings for compiled prefetch hydration: how `QueryCompiler.compilePrefetch`
3
- * batches related rows for hydration (`CompiledPrefetchQuery`).
4
- */
5
- export declare const InternalPrefetchQueryKind: {
6
- /**
7
- * Single-query prefetch against the related table (`SELECT … FROM target WHERE fk IN (...)`).
8
- * Used when each related row is reachable from one physical table via a foreign key or
9
- * symmetric join path (belongsTo, hasMany, hasOne, reverse one-to-one).
10
- */
11
- readonly DIRECT: "direct";
12
- /**
13
- * Two-phase many-to-many prefetch: first query reads join (through) rows pairing owner ids to
14
- * target ids (`throughSql`), then target rows load by primary key (`compileManyToManyTargets`).
15
- * Distinct from relation metadata’s `manyToMany` relation *kind* on an endpoint—this marks the
16
- * compiled prefetch *strategy*, not the schema edge type.
17
- */
18
- readonly MANY_TO_MANY: "manyToMany";
19
- };
20
- export type PrefetchQueryKind = (typeof InternalPrefetchQueryKind)[keyof typeof InternalPrefetchQueryKind];
@@ -1,6 +0,0 @@
1
- export declare const InternalQNodeType: {
2
- readonly ATOM: "atom";
3
- readonly AND: "and";
4
- readonly OR: "or";
5
- readonly NOT: "not";
6
- };
@@ -1,6 +0,0 @@
1
- export declare const InternalRelationKind: {
2
- readonly HAS_MANY: "hasMany";
3
- readonly BELONGS_TO: "belongsTo";
4
- readonly HAS_ONE: "hasOne";
5
- readonly MANY_TO_MANY: "manyToMany";
6
- };
@@ -1,3 +0,0 @@
1
- import type { FilterInput } from '../domain/FilterInput';
2
- import type { QNode } from '../domain/QNode';
3
- export declare function isQNodeLike<T>(value: FilterInput<T> | QNode<T>): value is QNode<T>;
@@ -1,16 +0,0 @@
1
- import type { QuerySetState } from '../domain/QuerySetState';
2
- import type { TableMeta } from '../domain/TableMeta';
3
- import type { QueryHydrationPlanRoot } from './domain/QueryHydrationPlan';
4
- /**
5
- * Parse, validate, normalize, and plan recursive relation hydration paths.
6
- */
7
- export declare class QueryPlanner {
8
- private readonly meta;
9
- static readonly BRAND: "tango.orm.query_planner";
10
- readonly __tangoBrand: typeof QueryPlanner.BRAND;
11
- constructor(meta: TableMeta);
12
- static isQueryPlanner(value: unknown): value is QueryPlanner;
13
- plan<T, TSourceModel = unknown>(state: QuerySetState<T, TSourceModel>): QueryHydrationPlanRoot;
14
- private addPath;
15
- private buildPlannedChildren;
16
- }
@@ -1,20 +0,0 @@
1
- import type { RelationHydrationLoadMode, RelationMeta } from '../../domain/RelationMeta';
2
- export type QueryHydrationLoadMode = RelationHydrationLoadMode;
3
- export interface QueryHydrationPlanRoot {
4
- joinNodes: readonly QueryHydrationPlanNode[];
5
- prefetchNodes: readonly QueryHydrationPlanNode[];
6
- requestedPaths: readonly string[];
7
- }
8
- export interface QueryHydrationPlanNode {
9
- nodeId: string;
10
- relationName: string;
11
- relationPath: string;
12
- ownerModelKey: string;
13
- relationEdge: RelationMeta;
14
- targetModelKey: string;
15
- loadMode: QueryHydrationLoadMode;
16
- cardinality: RelationMeta['cardinality'];
17
- provenance: readonly string[];
18
- joinChildren: readonly QueryHydrationPlanNode[];
19
- prefetchChildren: readonly QueryHydrationPlanNode[];
20
- }
@@ -1,2 +0,0 @@
1
- export { QueryPlanner } from './QueryPlanner';
2
- export type { QueryHydrationPlanNode, QueryHydrationPlanRoot, QueryHydrationLoadMode, } from './domain/QueryHydrationPlan';