@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.
- package/dist/Adapter-DKxAaL4l.d.ts +73 -0
- package/dist/DBClient-DuYcXolQ.d.ts +27 -0
- package/dist/{InternalDialect-ClSaUNso.js → InternalDialect-U3mwJjKA.js} +3 -4
- package/dist/InternalDialect-U3mwJjKA.js.map +1 -0
- package/dist/QuerySetState-CjyvAUBs.d.ts +1310 -0
- package/dist/SqliteAdapter-6oyUmoJf.js +279 -0
- package/dist/SqliteAdapter-6oyUmoJf.js.map +1 -0
- package/dist/chunk-8H4AJuhK.js +14 -0
- package/dist/connection/index.d.ts +4 -11
- package/dist/connection/index.js +3 -6
- package/dist/{connection-Dmhgx31M.js → connection-D-E6_Yf1.js} +28 -30
- package/dist/connection-D-E6_Yf1.js.map +1 -0
- package/dist/{defaultRuntime-DzqBQ9Hb.js → defaultRuntime-CdTX8cXm.js} +41 -35
- package/dist/defaultRuntime-CdTX8cXm.js.map +1 -0
- package/dist/index-B-aibguC.d.ts +226 -0
- package/dist/index-D9B6gKez.d.ts +70 -0
- package/dist/index-rjKca3U_.d.ts +31 -0
- package/dist/index-uuG57Y7C.d.ts +97 -0
- package/dist/index.d.ts +9 -22
- package/dist/index.js +9 -12
- package/dist/manager/index.d.ts +4 -12
- package/dist/manager/index.js +3 -9
- package/dist/{manager-DrDTiCAz.js → manager-CiYqAYpn.js} +7 -11
- package/dist/{manager-DrDTiCAz.js.map → manager-CiYqAYpn.js.map} +1 -1
- package/dist/query/index.d.ts +3 -14
- package/dist/query/index.js +2 -4
- package/dist/{query-DUZnBFhf.js → query-CP1UMIX6.js} +163 -121
- package/dist/query-CP1UMIX6.js.map +1 -0
- package/dist/registerModelObjects-C-MliIiM.d.ts +229 -0
- package/dist/{registerModelObjects-22ZJKoit.js → registerModelObjects-DZfZ20fa.js} +119 -69
- package/dist/registerModelObjects-DZfZ20fa.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -15
- package/dist/runtime/index.js +15 -8
- package/dist/runtime/index.js.map +1 -0
- package/dist/transaction/index.d.ts +2 -6
- package/dist/transaction/index.js +2 -7
- package/dist/{transaction-ZhfDf-f8.js → transaction-2_2m7VUo.js} +26 -10
- package/dist/transaction-2_2m7VUo.js.map +1 -0
- package/package.json +7 -7
- package/dist/InternalDialect-ClSaUNso.js.map +0 -1
- package/dist/PostgresAdapter-CXKdKBG-.js +0 -4
- package/dist/PostgresAdapter-DySFW6vy.js +0 -128
- package/dist/PostgresAdapter-DySFW6vy.js.map +0 -1
- package/dist/SqliteAdapter-CDdOjRmW.js +0 -151
- package/dist/SqliteAdapter-CDdOjRmW.js.map +0 -1
- package/dist/SqliteAdapter-mjtXuVTg.js +0 -4
- package/dist/chunk-DLY2FNSh.js +0 -12
- package/dist/connection/adapters/Adapter.d.ts +0 -60
- package/dist/connection/adapters/AdapterRegistry.d.ts +0 -44
- package/dist/connection/adapters/dialects/PostgresAdapter.d.ts +0 -30
- package/dist/connection/adapters/dialects/SqliteAdapter.d.ts +0 -22
- package/dist/connection/adapters/dialects/index.d.ts +0 -5
- package/dist/connection/adapters/index.d.ts +0 -8
- package/dist/connection/clients/DBClient.d.ts +0 -23
- package/dist/connection/clients/dialects/PostgresClient.d.ts +0 -54
- package/dist/connection/clients/dialects/SqliteClient.d.ts +0 -54
- package/dist/connection/clients/dialects/index.d.ts +0 -5
- package/dist/connection/clients/index.d.ts +0 -7
- package/dist/connection-Dmhgx31M.js.map +0 -1
- package/dist/defaultRuntime-DzqBQ9Hb.js.map +0 -1
- package/dist/manager/ManagerLike.d.ts +0 -34
- package/dist/manager/ModelManager.d.ts +0 -106
- package/dist/manager/internal/MutationCompiler.d.ts +0 -23
- package/dist/manager/internal/RuntimeBoundClient.d.ts +0 -20
- package/dist/manager/registerModelObjects.d.ts +0 -5
- package/dist/manager/relations/ManyToManyRelatedManager.d.ts +0 -181
- package/dist/manager/relations/ManyToManyRelatedQuerySet.d.ts +0 -62
- package/dist/manager/relations/MaterializedModelRecord.d.ts +0 -28
- package/dist/manager/relations/index.d.ts +0 -9
- package/dist/manager/relations/internal/ThroughTableManager.d.ts +0 -85
- package/dist/query/ModelQuerySet.d.ts +0 -20
- package/dist/query/QBuilder.d.ts +0 -29
- package/dist/query/QuerySet.d.ts +0 -215
- package/dist/query/compiler/QueryCompiler.d.ts +0 -49
- package/dist/query/compiler/index.d.ts +0 -4
- package/dist/query/domain/CompiledQuery.d.ts +0 -209
- package/dist/query/domain/Dialect.d.ts +0 -2
- package/dist/query/domain/Direction.d.ts +0 -2
- package/dist/query/domain/FilterInput.d.ts +0 -3
- package/dist/query/domain/FilterKey.d.ts +0 -4
- package/dist/query/domain/FilterValue.d.ts +0 -1
- package/dist/query/domain/LookupType.d.ts +0 -2
- package/dist/query/domain/OrderSpec.d.ts +0 -5
- package/dist/query/domain/OrderToken.d.ts +0 -1
- package/dist/query/domain/QNode.d.ts +0 -9
- package/dist/query/domain/QueryResult.d.ts +0 -35
- package/dist/query/domain/QuerySetState.d.ts +0 -13
- package/dist/query/domain/RelationMeta.d.ts +0 -56
- package/dist/query/domain/RelationTyping.d.ts +0 -163
- package/dist/query/domain/TableMeta.d.ts +0 -16
- package/dist/query/domain/TableMetaFactory.d.ts +0 -10
- package/dist/query/domain/WhereClause.d.ts +0 -4
- package/dist/query/domain/index.d.ts +0 -21
- package/dist/query/domain/internal/InternalDialect.d.ts +0 -4
- package/dist/query/domain/internal/InternalDirection.d.ts +0 -4
- package/dist/query/domain/internal/InternalLookupType.d.ts +0 -15
- package/dist/query/domain/internal/InternalPrefetchQueryKind.d.ts +0 -20
- package/dist/query/domain/internal/InternalQNodeType.d.ts +0 -6
- package/dist/query/domain/internal/InternalRelationKind.d.ts +0 -6
- package/dist/query/internal/isQNodeLike.d.ts +0 -3
- package/dist/query/planning/QueryPlanner.d.ts +0 -16
- package/dist/query/planning/domain/QueryHydrationPlan.d.ts +0 -20
- package/dist/query/planning/index.d.ts +0 -2
- package/dist/query-DUZnBFhf.js.map +0 -1
- package/dist/registerModelObjects-22ZJKoit.js.map +0 -1
- package/dist/runtime/TangoRuntime.d.ts +0 -56
- package/dist/runtime/defaultRuntime.d.ts +0 -13
- package/dist/runtime/internal/DBClientProvider.d.ts +0 -12
- package/dist/runtime/internal/PostgresDBClientProvider.d.ts +0 -12
- package/dist/runtime/internal/SqliteDBClientProvider.d.ts +0 -19
- package/dist/runtime/internal/createDBClientProvider.d.ts +0 -5
- package/dist/runtime-1H88J3nN.js +0 -18
- package/dist/runtime-1H88J3nN.js.map +0 -1
- package/dist/transaction/AtomicTransaction.d.ts +0 -32
- package/dist/transaction/UnitOfWork.d.ts +0 -52
- package/dist/transaction/atomic.d.ts +0 -2
- package/dist/transaction/internal/context/AsyncLocalTransactionEngine.d.ts +0 -21
- package/dist/transaction/internal/context/CallbackRecord.d.ts +0 -5
- package/dist/transaction/internal/context/FrameBoundTransaction.d.ts +0 -20
- package/dist/transaction/internal/context/FrameTransactionHandle.d.ts +0 -4
- package/dist/transaction/internal/context/TransactionEngine.d.ts +0 -16
- package/dist/transaction/internal/context/TransactionFrame.d.ts +0 -7
- package/dist/transaction/internal/context/TransactionState.d.ts +0 -10
- package/dist/transaction/internal/context/index.d.ts +0 -1
- package/dist/transaction-ZhfDf-f8.js.map +0 -1
- package/dist/validation/OrmSqlSafetyAdapter.d.ts +0 -22
- package/dist/validation/SQLValidationEngine.d.ts +0 -68
- package/dist/validation/SqlValidationPlan.d.ts +0 -43
- package/dist/validation/index.d.ts +0 -3
- package/dist/validation/internal/InternalSqlValidationPlanKind.d.ts +0 -25
- 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,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,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,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
|
-
}
|