@farming-labs/orm-sequelize 0.0.34

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/index.cjs ADDED
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ createSequelizeDriver: () => createSequelizeDriver,
24
+ normalizeSequelizeDialect: () => normalizeSequelizeDialect,
25
+ resolveSequelizeDialect: () => resolveSequelizeDialect
26
+ });
27
+ module.exports = __toCommonJS(index_exports);
28
+ var import_orm = require("@farming-labs/orm");
29
+ var import_orm_sql = require("@farming-labs/orm-sql");
30
+ function isRecord(value) {
31
+ return !!value && typeof value === "object";
32
+ }
33
+ function toNumber(value) {
34
+ if (typeof value === "number" && Number.isFinite(value)) return value;
35
+ if (typeof value === "bigint") return Number(value);
36
+ return void 0;
37
+ }
38
+ function isSqlSelectLike(sql) {
39
+ return /^\s*(select|with|pragma|explain)\b/i.test(sql);
40
+ }
41
+ function formatMysqlDateForDecoder(value) {
42
+ return value.toISOString().replace("T", " ").replace("Z", "");
43
+ }
44
+ function normalizeMysqlRowValue(value) {
45
+ if (value instanceof Date) {
46
+ return formatMysqlDateForDecoder(value);
47
+ }
48
+ if (Array.isArray(value)) {
49
+ return value.map((entry) => normalizeMysqlRowValue(entry));
50
+ }
51
+ if (isRecord(value)) {
52
+ return Object.fromEntries(
53
+ Object.entries(value).map(([key, entry]) => [key, normalizeMysqlRowValue(entry)])
54
+ );
55
+ }
56
+ return value;
57
+ }
58
+ function normalizeRowsForDialect(rows, dialect) {
59
+ if (dialect !== "mysql") {
60
+ return rows;
61
+ }
62
+ return rows.map((row) => normalizeMysqlRowValue(row));
63
+ }
64
+ function normalizeSequelizeDialect(value) {
65
+ switch (value) {
66
+ case "postgres":
67
+ case "postgresql":
68
+ return "postgres";
69
+ case "mysql":
70
+ case "mariadb":
71
+ return "mysql";
72
+ default:
73
+ return void 0;
74
+ }
75
+ }
76
+ function resolveSequelizeDialect(sequelize, override) {
77
+ const dialect = override ?? normalizeSequelizeDialect(sequelize.options?.dialect);
78
+ if (!dialect) {
79
+ throw new Error(
80
+ 'Could not determine the Sequelize dialect. Pass `dialect` explicitly or use a supported Sequelize dialect such as "postgres", "postgresql", "mysql", or "mariadb".'
81
+ );
82
+ }
83
+ return dialect;
84
+ }
85
+ function normalizeSequelizeResult(sql, result, dialect) {
86
+ if (!Array.isArray(result)) {
87
+ return {
88
+ rows: [],
89
+ affectedRows: 0
90
+ };
91
+ }
92
+ const [rowsOrResult, metadata] = result;
93
+ const rows = Array.isArray(rowsOrResult) ? rowsOrResult : isRecord(rowsOrResult) ? [rowsOrResult] : [];
94
+ const metadataRecord = isRecord(metadata) ? metadata : void 0;
95
+ const rowsRecord = isRecord(rowsOrResult) ? rowsOrResult : void 0;
96
+ const affectedRows = toNumber(metadataRecord?.rowCount) ?? toNumber(metadataRecord?.affectedRows) ?? toNumber(rowsRecord?.rowCount) ?? toNumber(rowsRecord?.affectedRows) ?? (typeof metadata === "number" ? metadata : void 0) ?? (isSqlSelectLike(sql) ? rows.length : 0);
97
+ const insertId = metadataRecord?.insertId ?? rowsRecord?.insertId;
98
+ return {
99
+ rows: normalizeRowsForDialect(rows, dialect),
100
+ affectedRows,
101
+ insertId
102
+ };
103
+ }
104
+ function sequelizeDriverCapabilities(dialect) {
105
+ return {
106
+ numericIds: "generated",
107
+ supportsJSON: true,
108
+ supportsDates: true,
109
+ supportsBooleans: true,
110
+ supportsTransactions: true,
111
+ supportsSchemaNamespaces: dialect === "postgres",
112
+ supportsTransactionalDDL: dialect !== "mysql",
113
+ nativeRelationLoading: "partial",
114
+ textComparison: "database-default",
115
+ textMatching: {
116
+ equality: "database-default",
117
+ contains: "database-default",
118
+ ordering: "database-default"
119
+ },
120
+ upsert: "native",
121
+ returning: {
122
+ create: true,
123
+ update: true,
124
+ delete: false
125
+ },
126
+ returningMode: {
127
+ create: "record",
128
+ update: "record",
129
+ delete: "none"
130
+ },
131
+ nativeRelations: {
132
+ singularChains: true,
133
+ hasMany: true,
134
+ manyToMany: true,
135
+ filtered: false,
136
+ ordered: false,
137
+ paginated: false
138
+ }
139
+ };
140
+ }
141
+ function queryOptionsForDialect(dialect, params, transaction) {
142
+ return {
143
+ ...dialect === "postgres" ? { bind: params } : { replacements: params },
144
+ ...transaction ? { transaction } : {},
145
+ raw: true
146
+ };
147
+ }
148
+ function createSequelizeAdapter(sequelize, dialect) {
149
+ return {
150
+ dialect,
151
+ async query(sql, params) {
152
+ await sequelize.authenticate();
153
+ return normalizeSequelizeResult(
154
+ sql,
155
+ await sequelize.query(sql, queryOptionsForDialect(dialect, params)),
156
+ dialect
157
+ );
158
+ },
159
+ async transaction(run) {
160
+ await sequelize.authenticate();
161
+ return sequelize.transaction(async (transaction) => {
162
+ const transactionAdapter = {
163
+ dialect,
164
+ async query(sql, params) {
165
+ return normalizeSequelizeResult(
166
+ sql,
167
+ await sequelize.query(sql, queryOptionsForDialect(dialect, params, transaction)),
168
+ dialect
169
+ );
170
+ },
171
+ async transaction(nestedRun) {
172
+ return nestedRun(transactionAdapter);
173
+ }
174
+ };
175
+ return run(transactionAdapter);
176
+ });
177
+ }
178
+ };
179
+ }
180
+ function createSequelizeDriver(config) {
181
+ const dialect = resolveSequelizeDialect(config.sequelize, config.dialect);
182
+ const handle = config.handle ?? (0, import_orm.createDriverHandle)({
183
+ kind: "sequelize",
184
+ client: config.sequelize,
185
+ dialect,
186
+ capabilities: {
187
+ ...sequelizeDriverCapabilities(dialect),
188
+ ...config.capabilities
189
+ }
190
+ });
191
+ return (0, import_orm_sql.createSqlDriverFromAdapter)(
192
+ createSequelizeAdapter(config.sequelize, dialect),
193
+ handle
194
+ );
195
+ }
196
+ // Annotate the CommonJS export names for ESM import in node:
197
+ 0 && (module.exports = {
198
+ createSequelizeDriver,
199
+ normalizeSequelizeDialect,
200
+ resolveSequelizeDialect
201
+ });
202
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n createDriverHandle,\n type OrmDriver,\n type OrmDriverCapabilityInput,\n type OrmDriverHandle,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { createSqlDriverFromAdapter, type SqlAdapterLike } from \"@farming-labs/orm-sql\";\n\ntype SqlDialect = \"mysql\" | \"postgres\";\ntype SqlRow = Record<string, unknown>;\ntype SqlQueryResult = {\n rows: SqlRow[];\n affectedRows: number;\n insertId?: unknown;\n};\n\ntype SequelizeQueryOptionsLike = {\n bind?: readonly unknown[];\n replacements?: readonly unknown[];\n transaction?: SequelizeTransactionLike;\n raw?: boolean;\n};\n\ntype SequelizeQueryMetadataLike = {\n rowCount?: number;\n affectedRows?: number;\n insertId?: unknown;\n};\n\nexport type SequelizeDriverDialect = SqlDialect;\nexport type SequelizeDriverHandle<\n TClient = unknown,\n TDialect extends SequelizeDriverDialect = SequelizeDriverDialect,\n> = OrmDriverHandle<\"sequelize\", TClient, TDialect>;\n\nexport type SequelizeTransactionLike = {\n afterCommit?(callback: () => void): void;\n};\n\nexport type SequelizeLike = {\n readonly options?: {\n dialect?: string;\n };\n authenticate(): Promise<unknown>;\n close(): Promise<unknown>;\n query(...args: any[]): Promise<unknown>;\n transaction<TResult>(\n run: (transaction: SequelizeTransactionLike) => Promise<TResult>,\n ): Promise<TResult>;\n};\n\nexport type SequelizeDriverConfig<TSchema extends SchemaDefinition<any>> = {\n sequelize: SequelizeLike;\n dialect?: SequelizeDriverDialect;\n capabilities?: OrmDriverCapabilityInput;\n handle?: SequelizeDriverHandle<SequelizeLike>;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nfunction toNumber(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"bigint\") return Number(value);\n return undefined;\n}\n\nfunction isSqlSelectLike(sql: string) {\n return /^\\s*(select|with|pragma|explain)\\b/i.test(sql);\n}\n\nfunction formatMysqlDateForDecoder(value: Date) {\n return value.toISOString().replace(\"T\", \" \").replace(\"Z\", \"\");\n}\n\nfunction normalizeMysqlRowValue(value: unknown): unknown {\n if (value instanceof Date) {\n return formatMysqlDateForDecoder(value);\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeMysqlRowValue(entry));\n }\n\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, normalizeMysqlRowValue(entry)]),\n );\n }\n\n return value;\n}\n\nfunction normalizeRowsForDialect(rows: SqlRow[], dialect: SequelizeDriverDialect) {\n if (dialect !== \"mysql\") {\n return rows;\n }\n\n return rows.map((row) => normalizeMysqlRowValue(row) as SqlRow);\n}\n\nexport function normalizeSequelizeDialect(value: unknown): SequelizeDriverDialect | undefined {\n switch (value) {\n case \"postgres\":\n case \"postgresql\":\n return \"postgres\";\n case \"mysql\":\n case \"mariadb\":\n return \"mysql\";\n default:\n return undefined;\n }\n}\n\nexport function resolveSequelizeDialect(\n sequelize: SequelizeLike,\n override?: SequelizeDriverDialect,\n): SequelizeDriverDialect {\n const dialect = override ?? normalizeSequelizeDialect(sequelize.options?.dialect);\n if (!dialect) {\n throw new Error(\n 'Could not determine the Sequelize dialect. Pass `dialect` explicitly or use a supported Sequelize dialect such as \"postgres\", \"postgresql\", \"mysql\", or \"mariadb\".',\n );\n }\n\n return dialect;\n}\n\nfunction normalizeSequelizeResult(\n sql: string,\n result: unknown,\n dialect: SequelizeDriverDialect,\n): SqlQueryResult {\n if (!Array.isArray(result)) {\n return {\n rows: [],\n affectedRows: 0,\n };\n }\n\n const [rowsOrResult, metadata] = result as [unknown, unknown];\n const rows = Array.isArray(rowsOrResult)\n ? (rowsOrResult as SqlRow[])\n : isRecord(rowsOrResult)\n ? [rowsOrResult as SqlRow]\n : [];\n\n const metadataRecord = isRecord(metadata) ? (metadata as SequelizeQueryMetadataLike) : undefined;\n const rowsRecord = isRecord(rowsOrResult)\n ? (rowsOrResult as SequelizeQueryMetadataLike)\n : undefined;\n\n const affectedRows =\n toNumber(metadataRecord?.rowCount) ??\n toNumber(metadataRecord?.affectedRows) ??\n toNumber(rowsRecord?.rowCount) ??\n toNumber(rowsRecord?.affectedRows) ??\n (typeof metadata === \"number\" ? metadata : undefined) ??\n (isSqlSelectLike(sql) ? rows.length : 0);\n\n const insertId = metadataRecord?.insertId ?? rowsRecord?.insertId;\n\n return {\n rows: normalizeRowsForDialect(rows, dialect),\n affectedRows,\n insertId,\n };\n}\n\nfunction sequelizeDriverCapabilities(dialect: SequelizeDriverDialect): OrmDriverCapabilityInput {\n return {\n numericIds: \"generated\",\n supportsJSON: true,\n supportsDates: true,\n supportsBooleans: true,\n supportsTransactions: true,\n supportsSchemaNamespaces: dialect === \"postgres\",\n supportsTransactionalDDL: dialect !== \"mysql\",\n nativeRelationLoading: \"partial\",\n textComparison: \"database-default\",\n textMatching: {\n equality: \"database-default\",\n contains: \"database-default\",\n ordering: \"database-default\",\n },\n upsert: \"native\",\n returning: {\n create: true,\n update: true,\n delete: false,\n },\n returningMode: {\n create: \"record\",\n update: \"record\",\n delete: \"none\",\n },\n nativeRelations: {\n singularChains: true,\n hasMany: true,\n manyToMany: true,\n filtered: false,\n ordered: false,\n paginated: false,\n },\n };\n}\n\nfunction queryOptionsForDialect(\n dialect: SequelizeDriverDialect,\n params: unknown[],\n transaction?: SequelizeTransactionLike,\n): SequelizeQueryOptionsLike {\n return {\n ...(dialect === \"postgres\" ? { bind: params } : { replacements: params }),\n ...(transaction ? { transaction } : {}),\n raw: true,\n };\n}\n\nfunction createSequelizeAdapter(\n sequelize: SequelizeLike,\n dialect: SequelizeDriverDialect,\n): SqlAdapterLike {\n return {\n dialect,\n async query(sql, params) {\n await sequelize.authenticate();\n return normalizeSequelizeResult(\n sql,\n await sequelize.query(sql, queryOptionsForDialect(dialect, params)),\n dialect,\n );\n },\n async transaction<TResult>(run: (adapter: SqlAdapterLike) => Promise<TResult>) {\n await sequelize.authenticate();\n\n return sequelize.transaction(async (transaction) => {\n const transactionAdapter: SqlAdapterLike = {\n dialect,\n async query(sql, params) {\n return normalizeSequelizeResult(\n sql,\n await sequelize.query(sql, queryOptionsForDialect(dialect, params, transaction)),\n dialect,\n );\n },\n async transaction<TResultInner>(\n nestedRun: (adapter: SqlAdapterLike) => Promise<TResultInner>,\n ) {\n return nestedRun(transactionAdapter);\n },\n };\n\n return run(transactionAdapter);\n });\n },\n };\n}\n\nexport function createSequelizeDriver<TSchema extends SchemaDefinition<any>>(\n config: SequelizeDriverConfig<TSchema>,\n): OrmDriver<TSchema, SequelizeDriverHandle<SequelizeLike>> {\n const dialect = resolveSequelizeDialect(config.sequelize, config.dialect);\n const handle =\n config.handle ??\n createDriverHandle({\n kind: \"sequelize\",\n client: config.sequelize,\n dialect,\n capabilities: {\n ...sequelizeDriverCapabilities(dialect),\n ...config.capabilities,\n },\n });\n\n return createSqlDriverFromAdapter<TSchema, SequelizeDriverHandle<SequelizeLike>>(\n createSequelizeAdapter(config.sequelize, dialect),\n handle,\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,28 @@
1
+ import { SchemaDefinition, OrmDriverCapabilityInput, OrmDriverHandle, OrmDriver } from '@farming-labs/orm';
2
+
3
+ type SqlDialect = "mysql" | "postgres";
4
+ type SequelizeDriverDialect = SqlDialect;
5
+ type SequelizeDriverHandle<TClient = unknown, TDialect extends SequelizeDriverDialect = SequelizeDriverDialect> = OrmDriverHandle<"sequelize", TClient, TDialect>;
6
+ type SequelizeTransactionLike = {
7
+ afterCommit?(callback: () => void): void;
8
+ };
9
+ type SequelizeLike = {
10
+ readonly options?: {
11
+ dialect?: string;
12
+ };
13
+ authenticate(): Promise<unknown>;
14
+ close(): Promise<unknown>;
15
+ query(...args: any[]): Promise<unknown>;
16
+ transaction<TResult>(run: (transaction: SequelizeTransactionLike) => Promise<TResult>): Promise<TResult>;
17
+ };
18
+ type SequelizeDriverConfig<TSchema extends SchemaDefinition<any>> = {
19
+ sequelize: SequelizeLike;
20
+ dialect?: SequelizeDriverDialect;
21
+ capabilities?: OrmDriverCapabilityInput;
22
+ handle?: SequelizeDriverHandle<SequelizeLike>;
23
+ };
24
+ declare function normalizeSequelizeDialect(value: unknown): SequelizeDriverDialect | undefined;
25
+ declare function resolveSequelizeDialect(sequelize: SequelizeLike, override?: SequelizeDriverDialect): SequelizeDriverDialect;
26
+ declare function createSequelizeDriver<TSchema extends SchemaDefinition<any>>(config: SequelizeDriverConfig<TSchema>): OrmDriver<TSchema, SequelizeDriverHandle<SequelizeLike>>;
27
+
28
+ export { type SequelizeDriverConfig, type SequelizeDriverDialect, type SequelizeDriverHandle, type SequelizeLike, type SequelizeTransactionLike, createSequelizeDriver, normalizeSequelizeDialect, resolveSequelizeDialect };
@@ -0,0 +1,28 @@
1
+ import { SchemaDefinition, OrmDriverCapabilityInput, OrmDriverHandle, OrmDriver } from '@farming-labs/orm';
2
+
3
+ type SqlDialect = "mysql" | "postgres";
4
+ type SequelizeDriverDialect = SqlDialect;
5
+ type SequelizeDriverHandle<TClient = unknown, TDialect extends SequelizeDriverDialect = SequelizeDriverDialect> = OrmDriverHandle<"sequelize", TClient, TDialect>;
6
+ type SequelizeTransactionLike = {
7
+ afterCommit?(callback: () => void): void;
8
+ };
9
+ type SequelizeLike = {
10
+ readonly options?: {
11
+ dialect?: string;
12
+ };
13
+ authenticate(): Promise<unknown>;
14
+ close(): Promise<unknown>;
15
+ query(...args: any[]): Promise<unknown>;
16
+ transaction<TResult>(run: (transaction: SequelizeTransactionLike) => Promise<TResult>): Promise<TResult>;
17
+ };
18
+ type SequelizeDriverConfig<TSchema extends SchemaDefinition<any>> = {
19
+ sequelize: SequelizeLike;
20
+ dialect?: SequelizeDriverDialect;
21
+ capabilities?: OrmDriverCapabilityInput;
22
+ handle?: SequelizeDriverHandle<SequelizeLike>;
23
+ };
24
+ declare function normalizeSequelizeDialect(value: unknown): SequelizeDriverDialect | undefined;
25
+ declare function resolveSequelizeDialect(sequelize: SequelizeLike, override?: SequelizeDriverDialect): SequelizeDriverDialect;
26
+ declare function createSequelizeDriver<TSchema extends SchemaDefinition<any>>(config: SequelizeDriverConfig<TSchema>): OrmDriver<TSchema, SequelizeDriverHandle<SequelizeLike>>;
27
+
28
+ export { type SequelizeDriverConfig, type SequelizeDriverDialect, type SequelizeDriverHandle, type SequelizeLike, type SequelizeTransactionLike, createSequelizeDriver, normalizeSequelizeDialect, resolveSequelizeDialect };
package/dist/index.js ADDED
@@ -0,0 +1,177 @@
1
+ // src/index.ts
2
+ import {
3
+ createDriverHandle
4
+ } from "@farming-labs/orm";
5
+ import { createSqlDriverFromAdapter } from "@farming-labs/orm-sql";
6
+ function isRecord(value) {
7
+ return !!value && typeof value === "object";
8
+ }
9
+ function toNumber(value) {
10
+ if (typeof value === "number" && Number.isFinite(value)) return value;
11
+ if (typeof value === "bigint") return Number(value);
12
+ return void 0;
13
+ }
14
+ function isSqlSelectLike(sql) {
15
+ return /^\s*(select|with|pragma|explain)\b/i.test(sql);
16
+ }
17
+ function formatMysqlDateForDecoder(value) {
18
+ return value.toISOString().replace("T", " ").replace("Z", "");
19
+ }
20
+ function normalizeMysqlRowValue(value) {
21
+ if (value instanceof Date) {
22
+ return formatMysqlDateForDecoder(value);
23
+ }
24
+ if (Array.isArray(value)) {
25
+ return value.map((entry) => normalizeMysqlRowValue(entry));
26
+ }
27
+ if (isRecord(value)) {
28
+ return Object.fromEntries(
29
+ Object.entries(value).map(([key, entry]) => [key, normalizeMysqlRowValue(entry)])
30
+ );
31
+ }
32
+ return value;
33
+ }
34
+ function normalizeRowsForDialect(rows, dialect) {
35
+ if (dialect !== "mysql") {
36
+ return rows;
37
+ }
38
+ return rows.map((row) => normalizeMysqlRowValue(row));
39
+ }
40
+ function normalizeSequelizeDialect(value) {
41
+ switch (value) {
42
+ case "postgres":
43
+ case "postgresql":
44
+ return "postgres";
45
+ case "mysql":
46
+ case "mariadb":
47
+ return "mysql";
48
+ default:
49
+ return void 0;
50
+ }
51
+ }
52
+ function resolveSequelizeDialect(sequelize, override) {
53
+ const dialect = override ?? normalizeSequelizeDialect(sequelize.options?.dialect);
54
+ if (!dialect) {
55
+ throw new Error(
56
+ 'Could not determine the Sequelize dialect. Pass `dialect` explicitly or use a supported Sequelize dialect such as "postgres", "postgresql", "mysql", or "mariadb".'
57
+ );
58
+ }
59
+ return dialect;
60
+ }
61
+ function normalizeSequelizeResult(sql, result, dialect) {
62
+ if (!Array.isArray(result)) {
63
+ return {
64
+ rows: [],
65
+ affectedRows: 0
66
+ };
67
+ }
68
+ const [rowsOrResult, metadata] = result;
69
+ const rows = Array.isArray(rowsOrResult) ? rowsOrResult : isRecord(rowsOrResult) ? [rowsOrResult] : [];
70
+ const metadataRecord = isRecord(metadata) ? metadata : void 0;
71
+ const rowsRecord = isRecord(rowsOrResult) ? rowsOrResult : void 0;
72
+ const affectedRows = toNumber(metadataRecord?.rowCount) ?? toNumber(metadataRecord?.affectedRows) ?? toNumber(rowsRecord?.rowCount) ?? toNumber(rowsRecord?.affectedRows) ?? (typeof metadata === "number" ? metadata : void 0) ?? (isSqlSelectLike(sql) ? rows.length : 0);
73
+ const insertId = metadataRecord?.insertId ?? rowsRecord?.insertId;
74
+ return {
75
+ rows: normalizeRowsForDialect(rows, dialect),
76
+ affectedRows,
77
+ insertId
78
+ };
79
+ }
80
+ function sequelizeDriverCapabilities(dialect) {
81
+ return {
82
+ numericIds: "generated",
83
+ supportsJSON: true,
84
+ supportsDates: true,
85
+ supportsBooleans: true,
86
+ supportsTransactions: true,
87
+ supportsSchemaNamespaces: dialect === "postgres",
88
+ supportsTransactionalDDL: dialect !== "mysql",
89
+ nativeRelationLoading: "partial",
90
+ textComparison: "database-default",
91
+ textMatching: {
92
+ equality: "database-default",
93
+ contains: "database-default",
94
+ ordering: "database-default"
95
+ },
96
+ upsert: "native",
97
+ returning: {
98
+ create: true,
99
+ update: true,
100
+ delete: false
101
+ },
102
+ returningMode: {
103
+ create: "record",
104
+ update: "record",
105
+ delete: "none"
106
+ },
107
+ nativeRelations: {
108
+ singularChains: true,
109
+ hasMany: true,
110
+ manyToMany: true,
111
+ filtered: false,
112
+ ordered: false,
113
+ paginated: false
114
+ }
115
+ };
116
+ }
117
+ function queryOptionsForDialect(dialect, params, transaction) {
118
+ return {
119
+ ...dialect === "postgres" ? { bind: params } : { replacements: params },
120
+ ...transaction ? { transaction } : {},
121
+ raw: true
122
+ };
123
+ }
124
+ function createSequelizeAdapter(sequelize, dialect) {
125
+ return {
126
+ dialect,
127
+ async query(sql, params) {
128
+ await sequelize.authenticate();
129
+ return normalizeSequelizeResult(
130
+ sql,
131
+ await sequelize.query(sql, queryOptionsForDialect(dialect, params)),
132
+ dialect
133
+ );
134
+ },
135
+ async transaction(run) {
136
+ await sequelize.authenticate();
137
+ return sequelize.transaction(async (transaction) => {
138
+ const transactionAdapter = {
139
+ dialect,
140
+ async query(sql, params) {
141
+ return normalizeSequelizeResult(
142
+ sql,
143
+ await sequelize.query(sql, queryOptionsForDialect(dialect, params, transaction)),
144
+ dialect
145
+ );
146
+ },
147
+ async transaction(nestedRun) {
148
+ return nestedRun(transactionAdapter);
149
+ }
150
+ };
151
+ return run(transactionAdapter);
152
+ });
153
+ }
154
+ };
155
+ }
156
+ function createSequelizeDriver(config) {
157
+ const dialect = resolveSequelizeDialect(config.sequelize, config.dialect);
158
+ const handle = config.handle ?? createDriverHandle({
159
+ kind: "sequelize",
160
+ client: config.sequelize,
161
+ dialect,
162
+ capabilities: {
163
+ ...sequelizeDriverCapabilities(dialect),
164
+ ...config.capabilities
165
+ }
166
+ });
167
+ return createSqlDriverFromAdapter(
168
+ createSequelizeAdapter(config.sequelize, dialect),
169
+ handle
170
+ );
171
+ }
172
+ export {
173
+ createSequelizeDriver,
174
+ normalizeSequelizeDialect,
175
+ resolveSequelizeDialect
176
+ };
177
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n createDriverHandle,\n type OrmDriver,\n type OrmDriverCapabilityInput,\n type OrmDriverHandle,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { createSqlDriverFromAdapter, type SqlAdapterLike } from \"@farming-labs/orm-sql\";\n\ntype SqlDialect = \"mysql\" | \"postgres\";\ntype SqlRow = Record<string, unknown>;\ntype SqlQueryResult = {\n rows: SqlRow[];\n affectedRows: number;\n insertId?: unknown;\n};\n\ntype SequelizeQueryOptionsLike = {\n bind?: readonly unknown[];\n replacements?: readonly unknown[];\n transaction?: SequelizeTransactionLike;\n raw?: boolean;\n};\n\ntype SequelizeQueryMetadataLike = {\n rowCount?: number;\n affectedRows?: number;\n insertId?: unknown;\n};\n\nexport type SequelizeDriverDialect = SqlDialect;\nexport type SequelizeDriverHandle<\n TClient = unknown,\n TDialect extends SequelizeDriverDialect = SequelizeDriverDialect,\n> = OrmDriverHandle<\"sequelize\", TClient, TDialect>;\n\nexport type SequelizeTransactionLike = {\n afterCommit?(callback: () => void): void;\n};\n\nexport type SequelizeLike = {\n readonly options?: {\n dialect?: string;\n };\n authenticate(): Promise<unknown>;\n close(): Promise<unknown>;\n query(...args: any[]): Promise<unknown>;\n transaction<TResult>(\n run: (transaction: SequelizeTransactionLike) => Promise<TResult>,\n ): Promise<TResult>;\n};\n\nexport type SequelizeDriverConfig<TSchema extends SchemaDefinition<any>> = {\n sequelize: SequelizeLike;\n dialect?: SequelizeDriverDialect;\n capabilities?: OrmDriverCapabilityInput;\n handle?: SequelizeDriverHandle<SequelizeLike>;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nfunction toNumber(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"bigint\") return Number(value);\n return undefined;\n}\n\nfunction isSqlSelectLike(sql: string) {\n return /^\\s*(select|with|pragma|explain)\\b/i.test(sql);\n}\n\nfunction formatMysqlDateForDecoder(value: Date) {\n return value.toISOString().replace(\"T\", \" \").replace(\"Z\", \"\");\n}\n\nfunction normalizeMysqlRowValue(value: unknown): unknown {\n if (value instanceof Date) {\n return formatMysqlDateForDecoder(value);\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeMysqlRowValue(entry));\n }\n\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, normalizeMysqlRowValue(entry)]),\n );\n }\n\n return value;\n}\n\nfunction normalizeRowsForDialect(rows: SqlRow[], dialect: SequelizeDriverDialect) {\n if (dialect !== \"mysql\") {\n return rows;\n }\n\n return rows.map((row) => normalizeMysqlRowValue(row) as SqlRow);\n}\n\nexport function normalizeSequelizeDialect(value: unknown): SequelizeDriverDialect | undefined {\n switch (value) {\n case \"postgres\":\n case \"postgresql\":\n return \"postgres\";\n case \"mysql\":\n case \"mariadb\":\n return \"mysql\";\n default:\n return undefined;\n }\n}\n\nexport function resolveSequelizeDialect(\n sequelize: SequelizeLike,\n override?: SequelizeDriverDialect,\n): SequelizeDriverDialect {\n const dialect = override ?? normalizeSequelizeDialect(sequelize.options?.dialect);\n if (!dialect) {\n throw new Error(\n 'Could not determine the Sequelize dialect. Pass `dialect` explicitly or use a supported Sequelize dialect such as \"postgres\", \"postgresql\", \"mysql\", or \"mariadb\".',\n );\n }\n\n return dialect;\n}\n\nfunction normalizeSequelizeResult(\n sql: string,\n result: unknown,\n dialect: SequelizeDriverDialect,\n): SqlQueryResult {\n if (!Array.isArray(result)) {\n return {\n rows: [],\n affectedRows: 0,\n };\n }\n\n const [rowsOrResult, metadata] = result as [unknown, unknown];\n const rows = Array.isArray(rowsOrResult)\n ? (rowsOrResult as SqlRow[])\n : isRecord(rowsOrResult)\n ? [rowsOrResult as SqlRow]\n : [];\n\n const metadataRecord = isRecord(metadata) ? (metadata as SequelizeQueryMetadataLike) : undefined;\n const rowsRecord = isRecord(rowsOrResult)\n ? (rowsOrResult as SequelizeQueryMetadataLike)\n : undefined;\n\n const affectedRows =\n toNumber(metadataRecord?.rowCount) ??\n toNumber(metadataRecord?.affectedRows) ??\n toNumber(rowsRecord?.rowCount) ??\n toNumber(rowsRecord?.affectedRows) ??\n (typeof metadata === \"number\" ? metadata : undefined) ??\n (isSqlSelectLike(sql) ? rows.length : 0);\n\n const insertId = metadataRecord?.insertId ?? rowsRecord?.insertId;\n\n return {\n rows: normalizeRowsForDialect(rows, dialect),\n affectedRows,\n insertId,\n };\n}\n\nfunction sequelizeDriverCapabilities(dialect: SequelizeDriverDialect): OrmDriverCapabilityInput {\n return {\n numericIds: \"generated\",\n supportsJSON: true,\n supportsDates: true,\n supportsBooleans: true,\n supportsTransactions: true,\n supportsSchemaNamespaces: dialect === \"postgres\",\n supportsTransactionalDDL: dialect !== \"mysql\",\n nativeRelationLoading: \"partial\",\n textComparison: \"database-default\",\n textMatching: {\n equality: \"database-default\",\n contains: \"database-default\",\n ordering: \"database-default\",\n },\n upsert: \"native\",\n returning: {\n create: true,\n update: true,\n delete: false,\n },\n returningMode: {\n create: \"record\",\n update: \"record\",\n delete: \"none\",\n },\n nativeRelations: {\n singularChains: true,\n hasMany: true,\n manyToMany: true,\n filtered: false,\n ordered: false,\n paginated: false,\n },\n };\n}\n\nfunction queryOptionsForDialect(\n dialect: SequelizeDriverDialect,\n params: unknown[],\n transaction?: SequelizeTransactionLike,\n): SequelizeQueryOptionsLike {\n return {\n ...(dialect === \"postgres\" ? { bind: params } : { replacements: params }),\n ...(transaction ? { transaction } : {}),\n raw: true,\n };\n}\n\nfunction createSequelizeAdapter(\n sequelize: SequelizeLike,\n dialect: SequelizeDriverDialect,\n): SqlAdapterLike {\n return {\n dialect,\n async query(sql, params) {\n await sequelize.authenticate();\n return normalizeSequelizeResult(\n sql,\n await sequelize.query(sql, queryOptionsForDialect(dialect, params)),\n dialect,\n );\n },\n async transaction<TResult>(run: (adapter: SqlAdapterLike) => Promise<TResult>) {\n await sequelize.authenticate();\n\n return sequelize.transaction(async (transaction) => {\n const transactionAdapter: SqlAdapterLike = {\n dialect,\n async query(sql, params) {\n return normalizeSequelizeResult(\n sql,\n await sequelize.query(sql, queryOptionsForDialect(dialect, params, transaction)),\n dialect,\n );\n },\n async transaction<TResultInner>(\n nestedRun: (adapter: SqlAdapterLike) => Promise<TResultInner>,\n ) {\n return nestedRun(transactionAdapter);\n },\n };\n\n return run(transactionAdapter);\n });\n },\n };\n}\n\nexport function createSequelizeDriver<TSchema extends SchemaDefinition<any>>(\n config: SequelizeDriverConfig<TSchema>,\n): OrmDriver<TSchema, SequelizeDriverHandle<SequelizeLike>> {\n const dialect = resolveSequelizeDialect(config.sequelize, config.dialect);\n const handle =\n config.handle ??\n createDriverHandle({\n kind: \"sequelize\",\n client: config.sequelize,\n dialect,\n capabilities: {\n ...sequelizeDriverCapabilities(dialect),\n ...config.capabilities,\n },\n });\n\n return createSqlDriverFromAdapter<TSchema, SequelizeDriverHandle<SequelizeLike>>(\n createSequelizeAdapter(config.sequelize, dialect),\n handle,\n );\n}\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@farming-labs/orm-sequelize",
3
+ "version": "0.0.34",
4
+ "files": [
5
+ "dist"
6
+ ],
7
+ "type": "module",
8
+ "main": "./dist/index.cjs",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js",
15
+ "require": "./dist/index.cjs"
16
+ }
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "dependencies": {
22
+ "@farming-labs/orm": "0.0.34",
23
+ "@farming-labs/orm-sql": "0.0.34"
24
+ },
25
+ "devDependencies": {
26
+ "@types/pg": "^8.15.6",
27
+ "mysql2": "^3.15.2",
28
+ "pg": "^8.16.3",
29
+ "sequelize": "^6.37.8",
30
+ "tsup": "^8.4.0"
31
+ },
32
+ "peerDependencies": {
33
+ "sequelize": "^6.37.8"
34
+ },
35
+ "scripts": {
36
+ "build": "tsx ./scripts/build.ts",
37
+ "test": "vitest run --config vitest.local.config.ts",
38
+ "typecheck": "tsc --noEmit"
39
+ }
40
+ }