@an5/orm 1.0.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +174 -175
  2. package/dist/an5Metadata.js +64 -0
  3. package/dist/an5Orm.d.ts +92 -3
  4. package/dist/an5Orm.js +697 -206
  5. package/dist/config.d.ts +9 -1
  6. package/dist/config.js +13 -18
  7. package/dist/errors.d.ts +1 -1
  8. package/dist/errors.js +1 -1
  9. package/dist/generator/src/api.d.ts +35 -0
  10. package/dist/generator/src/api.js +58 -0
  11. package/dist/generator/src/code-generator.d.ts +14 -13
  12. package/dist/generator/src/code-generator.js +249 -225
  13. package/dist/generator/src/config.d.ts +162 -0
  14. package/dist/generator/src/config.js +354 -0
  15. package/dist/generator/src/dialect.d.ts +88 -0
  16. package/dist/generator/src/dialect.js +318 -0
  17. package/dist/generator/src/dotnet-generator.d.ts +21 -11
  18. package/dist/generator/src/dotnet-generator.js +1053 -546
  19. package/dist/generator/src/field-types.d.ts +96 -0
  20. package/dist/generator/src/field-types.js +433 -0
  21. package/dist/generator/src/golang-generator.d.ts +36 -0
  22. package/dist/generator/src/golang-generator.js +1229 -0
  23. package/dist/generator/src/index.d.ts +1 -1
  24. package/dist/generator/src/index.js +137 -88
  25. package/dist/generator/src/metadata-generator.d.ts +11 -8
  26. package/dist/generator/src/metadata-generator.js +105 -90
  27. package/dist/generator/src/parser.d.ts +37 -11
  28. package/dist/generator/src/parser.js +208 -206
  29. package/dist/generator/src/push-apply.d.ts +37 -0
  30. package/dist/generator/src/push-apply.js +109 -0
  31. package/dist/generator/src/push-schema.d.ts +93 -0
  32. package/dist/generator/src/push-schema.js +189 -0
  33. package/dist/generator/src/python-generator.d.ts +37 -9
  34. package/dist/generator/src/python-generator.js +428 -105
  35. package/dist/generator/src/rust-generator.d.ts +38 -0
  36. package/dist/generator/src/rust-generator.js +971 -0
  37. package/dist/generator/src/suggest.d.ts +17 -0
  38. package/dist/generator/src/suggest.js +45 -0
  39. package/dist/generator/src/type-kinds.d.ts +27 -0
  40. package/dist/generator/src/type-kinds.js +72 -0
  41. package/dist/generator/src/types.d.ts +60 -27
  42. package/dist/generator/src/types.js +41 -2
  43. package/dist/index.d.ts +3 -2
  44. package/dist/index.js +19 -8
  45. package/dist/logger.js +1 -1
  46. package/dist/migration-core.d.ts +102 -0
  47. package/dist/migration-core.js +731 -0
  48. package/dist/orm.d.ts +147 -0
  49. package/dist/orm.js +1654 -0
  50. package/dist/provider-support.d.ts +27 -0
  51. package/dist/provider-support.js +50 -0
  52. package/dist/scripts/release-cli.d.ts +2 -2
  53. package/dist/scripts/release-cli.js +115 -115
  54. package/dist/sql-utils.d.ts +3 -1
  55. package/dist/sql-utils.js +94 -24
  56. package/generator/src/api.ts +45 -0
  57. package/generator/src/code-generator.ts +259 -230
  58. package/generator/src/config.ts +496 -0
  59. package/generator/src/dialect.ts +415 -0
  60. package/generator/src/dotnet-generator.ts +1071 -544
  61. package/generator/src/field-types.ts +473 -0
  62. package/generator/src/golang-generator.ts +1267 -0
  63. package/generator/src/index.ts +146 -116
  64. package/generator/src/metadata-generator.ts +116 -101
  65. package/generator/src/parser.ts +234 -202
  66. package/generator/src/push-apply.ts +148 -0
  67. package/generator/src/push-schema.ts +250 -0
  68. package/generator/src/python-generator.ts +480 -114
  69. package/generator/src/rust-generator.ts +974 -0
  70. package/generator/src/suggest.ts +41 -0
  71. package/generator/src/type-kinds.ts +78 -0
  72. package/generator/src/types.ts +77 -29
  73. package/package.json +32 -6
package/dist/orm.d.ts ADDED
@@ -0,0 +1,147 @@
1
+ import { An5Adapter, AdapterTableClient } from "@an5/adapters";
2
+ import { An5Metadata } from "./metadata";
3
+ type ExecutorFn = ((queryText: string, params?: Record<string, any>) => Promise<any[]>) & {
4
+ executeRaw?: (queryText: string, params?: Record<string, any>) => Promise<number>;
5
+ transaction?: <R>(fn: (txExecutor: ExecutorFn) => Promise<R>, options?: {
6
+ timeout?: number;
7
+ }) => Promise<R>;
8
+ beginTransaction?: () => Promise<InteractiveTransactionExecutor>;
9
+ };
10
+ type InteractiveTransactionExecutor = {
11
+ executor: ExecutorFn;
12
+ commit: () => Promise<void>;
13
+ rollback: () => Promise<void>;
14
+ };
15
+ export declare class TableClient<T = any> extends AdapterTableClient<T> {
16
+ private executor;
17
+ private orm;
18
+ readonly rawTableName: string;
19
+ constructor(modelName: string, rawTableName: string, executor: ExecutorFn, orm: An5ORM);
20
+ private executeRaw;
21
+ findMany(args?: any): Promise<T[]>;
22
+ findFirst(args?: any): Promise<T | null>;
23
+ findUnique(args?: any): Promise<T | null>;
24
+ count(args?: any): Promise<number>;
25
+ private scopedRelationWhere;
26
+ private handleNestedWrites;
27
+ create(args: any): Promise<T>;
28
+ update(args: any): Promise<T>;
29
+ updateMany(args: any): Promise<{
30
+ count: number;
31
+ }>;
32
+ delete(args: any): Promise<T>;
33
+ deleteMany(args?: any): Promise<{
34
+ count: number;
35
+ }>;
36
+ vectorSearch(args: {
37
+ vector: number[];
38
+ take?: number;
39
+ where?: any;
40
+ include?: any;
41
+ vectorField?: string;
42
+ distanceMetric?: 'cosine' | 'euclidean' | 'dot';
43
+ vectorElementType?: 'float32' | 'float16' | 'uint8';
44
+ }): Promise<(T & {
45
+ distance: number;
46
+ })[]>;
47
+ createMany(args: {
48
+ data: any[];
49
+ skipDuplicates?: boolean;
50
+ }): Promise<{
51
+ count: number;
52
+ }>;
53
+ aggregate(args: any): Promise<any>;
54
+ groupBy(args: any): Promise<any[]>;
55
+ private sequentialUpsert;
56
+ upsert(args: any): Promise<T>;
57
+ }
58
+ export interface MiddlewareParams {
59
+ model?: string;
60
+ action: string;
61
+ args: any;
62
+ runInTransaction?: boolean;
63
+ }
64
+ export type MiddlewareNext = (params: MiddlewareParams) => Promise<any>;
65
+ export type Middleware = (params: MiddlewareParams, next: MiddlewareNext) => Promise<any>;
66
+ export type LogLevel = "query" | "info" | "warn" | "error";
67
+ export interface QueryEvent {
68
+ timestamp: Date;
69
+ query: string;
70
+ params?: Record<string, any>;
71
+ duration: number;
72
+ model?: string;
73
+ action?: string;
74
+ error?: Error;
75
+ }
76
+ export interface LogEvent {
77
+ timestamp: Date;
78
+ message: string;
79
+ level: LogLevel;
80
+ duration?: number;
81
+ query?: string;
82
+ params?: Record<string, any>;
83
+ error?: Error;
84
+ }
85
+ export type EventListener<T = any> = (event: T) => void;
86
+ export declare class ViewClient<T = any> {
87
+ viewName: string;
88
+ rawTableName: string;
89
+ executor: ExecutorFn;
90
+ orm?: An5ORM | undefined;
91
+ private tableClient;
92
+ constructor(viewName: string, rawTableName: string, executor: ExecutorFn, orm?: An5ORM | undefined);
93
+ findMany(args?: any): Promise<T[]>;
94
+ findFirst(args?: any): Promise<T | null>;
95
+ findUnique(args?: any): Promise<T | null>;
96
+ count(args?: any): Promise<number>;
97
+ aggregate(args?: any): Promise<any>;
98
+ groupBy(args?: any): Promise<any[]>;
99
+ vectorSearch(args: any): Promise<T[]>;
100
+ create(): Promise<never>;
101
+ createMany(): Promise<never>;
102
+ update(): Promise<never>;
103
+ updateMany(): Promise<never>;
104
+ delete(): Promise<never>;
105
+ deleteMany(): Promise<never>;
106
+ upsert(): Promise<never>;
107
+ }
108
+ export declare class An5ORM {
109
+ private readonly inTransaction;
110
+ private transactionControl?;
111
+ [key: string]: any;
112
+ private middlewares;
113
+ private eventListeners;
114
+ slowQueryThresholdMs: number;
115
+ readonly metadata: An5Metadata;
116
+ private customExecutor?;
117
+ constructor(customExecutor?: ExecutorFn | An5Adapter | any, metadata?: An5Metadata, inTransaction?: boolean, transactionControl?: Pick<InteractiveTransactionExecutor, "commit" | "rollback"> | undefined);
118
+ $on(event: "query", listener: EventListener<QueryEvent>): void;
119
+ $on(event: "info" | "warn" | "error", listener: EventListener<LogEvent>): void;
120
+ $off(event: string, listener: EventListener): void;
121
+ $emit(event: string, payload: any): void;
122
+ private getExecutor;
123
+ table(name: string): TableClient;
124
+ view(name: string): ViewClient;
125
+ $view(name: string): ViewClient;
126
+ $queryProc<T = any>(procName: string, params?: Record<string, any> | any[]): Promise<T[]>;
127
+ $executeProc(procName: string, params?: Record<string, any> | any[]): Promise<number>;
128
+ $queryFunction<T = any>(fnName: string, params?: Record<string, any> | any[]): Promise<T[]>;
129
+ $use(middleware: Middleware): void;
130
+ parseWhere(modelName: string, where: any, params: Record<string, any>, prefix?: string): string;
131
+ _executeMiddleware(params: MiddlewareParams, finalAction: (params: MiddlewareParams) => Promise<any>): Promise<any>;
132
+ $connect(): Promise<void>;
133
+ $disconnect(): Promise<void>;
134
+ $queryRaw(queryParts: any, ...values: any[]): Promise<any[]>;
135
+ $queryRawUnsafe<R = any>(queryText: string, ...values: any[]): Promise<R>;
136
+ $executeRaw(queryParts: any, ...values: any[]): Promise<number>;
137
+ $executeRawUnsafe(queryText: string, ...values: any[]): Promise<number>;
138
+ $transaction<R>(fn: ((tx: any) => Promise<R>) | Promise<any>[], options?: {
139
+ timeout?: number;
140
+ }): Promise<any>;
141
+ $begin(): Promise<any>;
142
+ $commit(): Promise<void>;
143
+ $rollback(): Promise<void>;
144
+ }
145
+ export declare const an5Orm: An5ORM;
146
+ export default an5Orm;
147
+ //# sourceMappingURL=orm.d.ts.map