@danceroutine/tango-orm 1.11.0 → 1.11.2

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-Djpt45KK.js → registerModelObjects-DZfZ20fa.js} +150 -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 +8 -8
  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 -97
  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-Djpt45KK.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
@@ -0,0 +1,229 @@
1
+ import { t as DBClient } from "./DBClient-DuYcXolQ.js";
2
+ import { i as Dialect, t as Adapter } from "./Adapter-DKxAaL4l.js";
3
+ import { E as ManyToManyRelatedManager, F as QNode, H as TableMeta, I as FilterInput, N as QuerySet } from "./QuerySetState-CjyvAUBs.js";
4
+ import { ModelWriteHooks } from "@danceroutine/tango-schema";
5
+ import { LoadedConfig } from "@danceroutine/tango-config";
6
+ import { z } from "zod";
7
+ import { Model, PersistedModelOutput } from "@danceroutine/tango-schema/domain";
8
+ import { DecoratedFieldKind, InternalDecoratedFieldKind, RelationDecoratedSchema } from "@danceroutine/tango-schema/model";
9
+
10
+ //#region src/manager/relations/MaterializedModelRecord.d.ts
11
+ type IsAny<TValue> = 0 extends 1 & TValue ? true : false;
12
+ type AnyModel = Model<z.ZodObject<z.ZodRawShape>, string>;
13
+ type SchemaShape<TSchema> = TSchema extends z.ZodObject<infer TShape> ? TShape : never;
14
+ type RelationKindOf<TField> = TField extends RelationDecoratedSchema<z.ZodTypeAny, infer TKind extends DecoratedFieldKind, AnyModel, string | undefined, string | undefined> ? TKind : never;
15
+ type RelationTarget<TField> = TField extends RelationDecoratedSchema<z.ZodTypeAny, DecoratedFieldKind, infer TTarget, string | undefined, string | undefined> ? TTarget : never;
16
+ type RelationPublishedName<TField, TFallback extends string> = TField extends RelationDecoratedSchema<z.ZodTypeAny, DecoratedFieldKind, AnyModel, infer TName extends string | undefined, string | undefined> ? TName extends string ? TName : TFallback : TFallback;
17
+ type ModelRow<TTarget> = TTarget extends Model<infer TSchema extends z.ZodObject<z.ZodRawShape>, string> ? PersistedModelOutput<TSchema> : never;
18
+ type ManyToManyKeysOfShape<TShape extends z.ZodRawShape> = Extract<{ [K in keyof TShape]: IsAny<TShape[K]> extends true ? never : [RelationKindOf<TShape[K]>] extends [never] ? never : [RelationKindOf<TShape[K]>] extends [typeof InternalDecoratedFieldKind.MANY_TO_MANY] ? K : never }[keyof TShape], string>;
19
+ type ManyToManyManagers<TShape extends z.ZodRawShape> = { readonly [K in ManyToManyKeysOfShape<TShape> as K extends keyof TShape ? RelationPublishedName<TShape[K], K> : never]: K extends keyof TShape ? RelationTarget<TShape[K]> extends AnyModel ? ManyToManyRelatedManager<ModelRow<RelationTarget<TShape[K]>>> : never : never };
20
+ /**
21
+ * Persisted model record shape returned by ORM read and write paths.
22
+ *
23
+ * Combines the column-level {@link PersistedModelOutput} with a per-relation
24
+ * {@link ManyToManyRelatedManager} for every many-to-many field declared on the
25
+ * source schema. The manager properties are attached as non-enumerable accessors
26
+ * at runtime, so `JSON.stringify` and structural equality checks only see the
27
+ * column data.
28
+ */
29
+ type MaterializedModelRecord<TSchema extends z.ZodObject<z.ZodRawShape>> = PersistedModelOutput<TSchema> & ManyToManyManagers<SchemaShape<TSchema>>;
30
+ //#endregion
31
+ //#region src/manager/ManagerLike.d.ts
32
+ /**
33
+ * Public manager contract consumed by Tango resources and applications.
34
+ */
35
+ interface ManagerLike<TModelRow extends Record<string, unknown>, TSourceModel = unknown> {
36
+ readonly meta: TableMeta;
37
+ query(): QuerySet<TModelRow, TModelRow, TSourceModel>;
38
+ all(): QuerySet<TModelRow, TModelRow, TSourceModel>;
39
+ getOrCreate(args: {
40
+ where: FilterInput<TModelRow> | QNode<TModelRow>;
41
+ defaults?: Partial<TModelRow>;
42
+ }): Promise<{
43
+ record: TModelRow;
44
+ created: boolean;
45
+ }>;
46
+ updateOrCreate(args: {
47
+ where: FilterInput<TModelRow> | QNode<TModelRow>;
48
+ defaults?: Partial<TModelRow>;
49
+ update?: Partial<TModelRow>;
50
+ }): Promise<{
51
+ record: TModelRow;
52
+ created: boolean;
53
+ updated: boolean;
54
+ }>;
55
+ findById(id: TModelRow[keyof TModelRow]): Promise<TModelRow | null>;
56
+ getOrThrow(id: TModelRow[keyof TModelRow]): Promise<TModelRow>;
57
+ create(input: Partial<TModelRow>): Promise<TModelRow>;
58
+ update(id: TModelRow[keyof TModelRow], patch: Partial<TModelRow>): Promise<TModelRow>;
59
+ delete(id: TModelRow[keyof TModelRow]): Promise<void>;
60
+ bulkCreate(inputs: Partial<TModelRow>[]): Promise<TModelRow[]>;
61
+ }
62
+ //#endregion
63
+ //#region src/runtime/internal/DBClientProvider.d.ts
64
+ interface TransactionClientLease {
65
+ readonly client: DBClient;
66
+ release(): Promise<void>;
67
+ }
68
+ //#endregion
69
+ //#region src/runtime/TangoRuntime.d.ts
70
+ /**
71
+ * Framework-owned database runtime that resolves Tango config and lazily
72
+ * creates the shared connection provider used by manager-backed models.
73
+ */
74
+ declare class TangoRuntime {
75
+ static readonly BRAND: "tango.orm.runtime";
76
+ readonly __tangoBrand: typeof TangoRuntime.BRAND;
77
+ private readonly loadedConfig;
78
+ private providerPromise;
79
+ private runtimeClientPromise;
80
+ private cachedAdapter;
81
+ constructor(loadLoadedConfig: () => LoadedConfig);
82
+ /**
83
+ * Narrow an unknown value to `TangoRuntime`.
84
+ */
85
+ static isTangoRuntime(value: unknown): value is TangoRuntime;
86
+ /**
87
+ * Return the loaded Tango config snapshot for the active environment.
88
+ */
89
+ getConfig(): LoadedConfig;
90
+ /**
91
+ * Return the configured SQL dialect for the current runtime.
92
+ */
93
+ getDialect(): Dialect;
94
+ /**
95
+ * Return the adapter backing the configured dialect. Manager-side
96
+ * compilers use this to obtain placeholder formatters and dialect
97
+ * capabilities without branching on the raw dialect string.
98
+ */
99
+ getAdapter(): Adapter;
100
+ /**
101
+ * Return the runtime-bound DB client facade used by manager-backed code.
102
+ */
103
+ getClient(): Promise<DBClient>;
104
+ /**
105
+ * Execute SQL through the autocommit path owned by this runtime.
106
+ */
107
+ query<T = unknown>(sql: string, params?: readonly unknown[]): Promise<{
108
+ rows: T[];
109
+ }>;
110
+ /**
111
+ * Lease a transaction-scoped client for `transaction.atomic(...)`.
112
+ */
113
+ leaseTransactionClient(): Promise<TransactionClientLease>;
114
+ /**
115
+ * Close and clear the cached runtime resources so tests can start fresh.
116
+ */
117
+ reset(): Promise<void>;
118
+ private buildAdapterForDialect;
119
+ private getProvider;
120
+ }
121
+ //#endregion
122
+ //#region src/manager/ModelManager.d.ts
123
+ type ModelMetadataLike = Omit<Model['metadata'], 'key' | 'namespace' | 'fields'> & {
124
+ key?: string;
125
+ namespace?: string;
126
+ fields: Array<{
127
+ name: string;
128
+ type: string;
129
+ primaryKey?: boolean;
130
+ }>;
131
+ };
132
+ type ModelLike<TModelRow extends Record<string, unknown>> = {
133
+ metadata: ModelMetadataLike;
134
+ schema: {
135
+ parse(input: unknown): TModelRow;
136
+ };
137
+ hooks?: ModelWriteHooks<TModelRow>;
138
+ };
139
+ /**
140
+ * Model-backed data access API exposed as `Model.objects`.
141
+ */
142
+ declare class ModelManager<TModelRow extends Record<string, unknown>, TSourceModel = unknown> implements ManagerLike<TModelRow, TSourceModel> {
143
+ static readonly BRAND: "tango.orm.model_manager";
144
+ readonly __tangoBrand: typeof ModelManager.BRAND;
145
+ private readonly queryExecutor;
146
+ private readonly mutationCompiler;
147
+ private readonly model;
148
+ private readonly client;
149
+ private readonly adapter;
150
+ private readonly runtime;
151
+ constructor(model: ModelLike<TModelRow>, runtime: TangoRuntime);
152
+ get meta(): TableMeta;
153
+ /**
154
+ * Narrow an unknown value to `ModelManager`.
155
+ */
156
+ static isModelManager<TModelRow extends Record<string, unknown>>(value: unknown): value is ModelManager<TModelRow>;
157
+ private static createTableMeta;
158
+ private static mergeCreatePayloadFromWhere;
159
+ private static countDefinedValues;
160
+ private static collectPlainFieldsFromQNode;
161
+ private static omitLookupKeysFromAtom;
162
+ private static mergeCompatiblePartials;
163
+ query(): QuerySet<TModelRow, TModelRow, TSourceModel>;
164
+ all(): QuerySet<TModelRow, TModelRow, TSourceModel>;
165
+ findById(id: TModelRow[keyof TModelRow]): Promise<TModelRow | null>;
166
+ getOrThrow(id: TModelRow[keyof TModelRow]): Promise<TModelRow>;
167
+ getOrCreate(args: {
168
+ where: FilterInput<TModelRow> | QNode<TModelRow>;
169
+ defaults?: Partial<TModelRow>;
170
+ }): Promise<{
171
+ record: TModelRow;
172
+ created: boolean;
173
+ }>;
174
+ updateOrCreate(args: {
175
+ where: FilterInput<TModelRow> | QNode<TModelRow>;
176
+ defaults?: Partial<TModelRow>;
177
+ update?: Partial<TModelRow>;
178
+ }): Promise<{
179
+ record: TModelRow;
180
+ created: boolean;
181
+ updated: boolean;
182
+ }>;
183
+ create(input: Partial<TModelRow>): Promise<TModelRow>;
184
+ update(id: TModelRow[keyof TModelRow], patch: Partial<TModelRow>): Promise<TModelRow>;
185
+ delete(id: TModelRow[keyof TModelRow]): Promise<void>;
186
+ /**
187
+ * Build a {@link ManyToManyRelatedManager} bound to a single owner record
188
+ * for the supplied many-to-many relation. The returned manager performs
189
+ * its INSERT/DELETE writes through the shared runtime-bound client, so
190
+ * mutations enroll in any active `transaction.atomic(...)` boundary.
191
+ */
192
+ createManyToManyRelatedManager<TTarget extends Record<string, unknown>>(relationName: string, ownerPrimaryKey: unknown): ManyToManyRelatedManager<TTarget>;
193
+ /**
194
+ * Insert multiple rows in a single multi-row INSERT statement.
195
+ *
196
+ * All rows must share the same field set after hook processing. Rows with
197
+ * extra or missing fields relative to the first row will cause an error.
198
+ * If you need to insert rows with different field sets, use individual
199
+ * {@link create} calls instead.
200
+ */
201
+ bulkCreate(inputs: Partial<TModelRow>[]): Promise<TModelRow[]>;
202
+ /**
203
+ * Attach a {@link ManyToManyRelatedManager} as a non-enumerable property
204
+ * for every persisted many-to-many relation declared on the supplied
205
+ * record's model. Existing properties are left untouched so that prior
206
+ * hydration writes (such as prefetched arrays) survive the attach pass
207
+ * during the incremental rollout of related-manager hydration.
208
+ */
209
+ private attachOwnRelatedManagers;
210
+ private attachManyToManyRelatedManagers;
211
+ private resolveManagerForModelKey;
212
+ private resolveTargetExecutor;
213
+ private resolveTargetManager;
214
+ private requireManyToManyEdge;
215
+ private runBeforeCreate;
216
+ private runBeforeUpdate;
217
+ private getHookTransaction;
218
+ private assertUniformRowShape;
219
+ }
220
+ //#endregion
221
+ //#region src/manager/registerModelObjects.d.ts
222
+ /**
223
+ * Install the schema model augmentor that exposes `Model.objects`.
224
+ * This registration is idempotent so multiple Tango entrypoints can safely call it.
225
+ */
226
+ declare function registerModelObjects(): void;
227
+ //#endregion
228
+ export { MaterializedModelRecord as a, ManagerLike as i, ModelManager as n, TangoRuntime as r, registerModelObjects as t };
229
+ //# sourceMappingURL=registerModelObjects-C-MliIiM.d.ts.map