litedbmodel 2.2.7 → 2.2.8
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/README.md +2 -1
- package/dist/Column.d.ts +13 -2
- package/dist/Column.d.ts.map +1 -1
- package/dist/Column.js +30 -10
- package/dist/Column.js.map +1 -1
- package/dist/DBModel.d.ts +15 -2
- package/dist/DBModel.d.ts.map +1 -1
- package/dist/DBModel.js +40 -25
- package/dist/DBModel.js.map +1 -1
- package/dist/TypeCast.d.ts +2 -2
- package/dist/TypeCast.d.ts.map +1 -1
- package/dist/TypeCast.js +7 -9
- package/dist/TypeCast.js.map +1 -1
- package/dist/decorators.d.ts +8 -0
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +29 -18
- package/dist/decorators.js.map +1 -1
- package/dist/drivers/MysqlHelper.d.ts +3 -3
- package/dist/drivers/MysqlHelper.d.ts.map +1 -1
- package/dist/drivers/MysqlHelper.js +3 -17
- package/dist/drivers/MysqlHelper.js.map +1 -1
- package/dist/drivers/MysqlSqlBuilder.d.ts.map +1 -1
- package/dist/drivers/MysqlSqlBuilder.js +2 -13
- package/dist/drivers/MysqlSqlBuilder.js.map +1 -1
- package/dist/drivers/PostgresHelper.d.ts +3 -2
- package/dist/drivers/PostgresHelper.d.ts.map +1 -1
- package/dist/drivers/PostgresHelper.js +3 -16
- package/dist/drivers/PostgresHelper.js.map +1 -1
- package/dist/drivers/PostgresSqlBuilder.d.ts.map +1 -1
- package/dist/drivers/PostgresSqlBuilder.js +2 -14
- package/dist/drivers/PostgresSqlBuilder.js.map +1 -1
- package/dist/drivers/SqliteHelper.d.ts +4 -2
- package/dist/drivers/SqliteHelper.d.ts.map +1 -1
- package/dist/drivers/SqliteHelper.js +4 -2
- package/dist/drivers/SqliteHelper.js.map +1 -1
- package/dist/drivers/SqliteSqlBuilder.d.ts.map +1 -1
- package/dist/drivers/SqliteSqlBuilder.js +2 -13
- package/dist/drivers/SqliteSqlBuilder.js.map +1 -1
- package/dist/index.cjs +666 -687
- package/dist/scp/decorator-adapter.d.ts +1 -0
- package/dist/scp/decorator-adapter.d.ts.map +1 -1
- package/dist/scp/decorator-adapter.js +2 -0
- package/dist/scp/decorator-adapter.js.map +1 -1
- package/dist/scp/index.cjs +63 -52
- package/dist/scp/index.mjs +63 -52
- package/docs/BENCHMARK.md +1 -1
- package/docs/COMPARISON.md +1 -1
- package/docs/api/README.md +1 -1
- package/docs/api/classes/Conditions.md +10 -10
- package/docs/api/classes/DBHandler.md +1 -1
- package/docs/api/classes/DBModel.md +81 -81
- package/docs/api/classes/LimitExceededError.md +1 -1
- package/docs/api/classes/Middleware.md +1 -1
- package/docs/api/classes/SqlRaw.md +1 -1
- package/docs/api/classes/SqlRef.md +1 -1
- package/docs/api/classes/Values.md +6 -6
- package/docs/api/classes/WriteInReadOnlyContextError.md +1 -1
- package/docs/api/classes/WriteOutsideTransactionError.md +1 -1
- package/docs/api/functions/belongsTo.md +2 -2
- package/docs/api/functions/closeAllPools.md +1 -1
- package/docs/api/functions/condsToRecord.md +4 -3
- package/docs/api/functions/createMiddleware.md +1 -1
- package/docs/api/functions/createPostgresDriver.md +1 -1
- package/docs/api/functions/createSqliteDriver.md +1 -1
- package/docs/api/functions/dbCast.md +1 -1
- package/docs/api/functions/dbCastIn.md +1 -1
- package/docs/api/functions/dbDynamic.md +1 -1
- package/docs/api/functions/dbFalse.md +1 -1
- package/docs/api/functions/dbImmediate.md +1 -1
- package/docs/api/functions/dbIn.md +1 -1
- package/docs/api/functions/dbNotNull.md +1 -1
- package/docs/api/functions/dbNow.md +1 -1
- package/docs/api/functions/dbNull.md +1 -1
- package/docs/api/functions/dbRaw.md +1 -1
- package/docs/api/functions/dbTrue.md +1 -1
- package/docs/api/functions/dbUuid.md +1 -1
- package/docs/api/functions/dbUuidIn.md +1 -1
- package/docs/api/functions/formatLocalDate.md +2 -2
- package/docs/api/functions/formatUTCDate.md +2 -2
- package/docs/api/functions/getDBConfig.md +1 -1
- package/docs/api/functions/getDBHandler.md +1 -1
- package/docs/api/functions/getTransactionConnection.md +2 -2
- package/docs/api/functions/getTransactionContext.md +2 -2
- package/docs/api/functions/hasMany.md +2 -2
- package/docs/api/functions/hasOne.md +2 -2
- package/docs/api/functions/initDBHandler.md +1 -1
- package/docs/api/functions/isAnySqlFragment.md +1 -1
- package/docs/api/functions/isConnectionError.md +1 -1
- package/docs/api/functions/isSqlCondition.md +1 -1
- package/docs/api/functions/isSqlFragment.md +1 -1
- package/docs/api/functions/isSqlRaw.md +1 -1
- package/docs/api/functions/isSqlRef.md +1 -1
- package/docs/api/functions/isSqlTypedFragment.md +1 -1
- package/docs/api/functions/model.md +4 -4
- package/docs/api/functions/parentRef.md +1 -1
- package/docs/api/functions/sql.md +1 -1
- package/docs/api/globals.md +24 -21
- package/docs/api/interfaces/Column.md +32 -31
- package/docs/api/interfaces/ColumnDecorator.md +1 -1
- package/docs/api/interfaces/ColumnOptions.md +1 -1
- package/docs/api/interfaces/CreatedMiddlewareClass.md +1 -1
- package/docs/api/interfaces/DBConfig.md +1 -1
- package/docs/api/interfaces/DBConfigOptions.md +1 -1
- package/docs/api/interfaces/DeleteOptions.md +1 -1
- package/docs/api/interfaces/InsertOptions.md +1 -1
- package/docs/api/interfaces/LimitConfig.md +1 -1
- package/docs/api/interfaces/MiddlewareConfig.md +1 -1
- package/docs/api/interfaces/ModelClassDecorator.md +4 -4
- package/docs/api/interfaces/ModelOptions.md +1 -1
- package/docs/api/interfaces/PkeyResult.md +1 -1
- package/docs/api/interfaces/RelationDecorator.md +1 -1
- package/docs/api/interfaces/SelectOptions.md +1 -1
- package/docs/api/interfaces/SqlCondition.md +1 -1
- package/docs/api/interfaces/SqlFragment.md +1 -1
- package/docs/api/interfaces/SqlTypedFragment.md +1 -1
- package/docs/api/interfaces/TransactionOptions.md +1 -1
- package/docs/api/interfaces/UpdateManyOptions.md +1 -1
- package/docs/api/interfaces/UpdateOptions.md +1 -1
- package/docs/architecture.md +12 -8
- package/package.json +1 -1
|
@@ -54,6 +54,7 @@ export type KeyTypeResolver = (table: string, column: string) => BcScalar;
|
|
|
54
54
|
*
|
|
55
55
|
* The RHS matches the decorator families 1:1:
|
|
56
56
|
* - `boolean` → `BOOLEAN` (`@column.boolean()` / auto `Boolean`)
|
|
57
|
+
* - `numeric` → `NUMERIC` (`@column.decimal()` — read de-box: exact decimal string)
|
|
57
58
|
* - `bigint` → `BIGINT` (`@column.bigint()` / auto `BigInt` — read de-box: exact string)
|
|
58
59
|
* - `timestamp` → `TIMESTAMP` (`@column.datetime()` / auto `Date` — read de-box: TZ string)
|
|
59
60
|
* - `date` → `DATE` (`@column.date()` — read de-box: YYYY-MM-DD string)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator-adapter.d.ts","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAqB,KAAK,YAAY,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACtG,OAAO,EAAkF,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACnJ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAkC,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGnG;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC;AAI1E
|
|
1
|
+
{"version":3,"file":"decorator-adapter.d.ts","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,7 @@ const Column_1 = require("../Column");
|
|
|
55
55
|
*
|
|
56
56
|
* The RHS matches the decorator families 1:1:
|
|
57
57
|
* - `boolean` → `BOOLEAN` (`@column.boolean()` / auto `Boolean`)
|
|
58
|
+
* - `numeric` → `NUMERIC` (`@column.decimal()` — read de-box: exact decimal string)
|
|
58
59
|
* - `bigint` → `BIGINT` (`@column.bigint()` / auto `BigInt` — read de-box: exact string)
|
|
59
60
|
* - `timestamp` → `TIMESTAMP` (`@column.datetime()` / auto `Date` — read de-box: TZ string)
|
|
60
61
|
* - `date` → `DATE` (`@column.date()` — read de-box: YYYY-MM-DD string)
|
|
@@ -64,6 +65,7 @@ const Column_1 = require("../Column");
|
|
|
64
65
|
*/
|
|
65
66
|
exports.COLUMN_FAMILY_SQL_TYPE = {
|
|
66
67
|
boolean: 'BOOLEAN',
|
|
68
|
+
numeric: 'NUMERIC',
|
|
67
69
|
bigint: 'BIGINT',
|
|
68
70
|
timestamp: 'TIMESTAMP',
|
|
69
71
|
date: 'DATE',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator-adapter.js","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;
|
|
1
|
+
{"version":3,"file":"decorator-adapter.js","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/scp/index.cjs
CHANGED
|
@@ -2284,6 +2284,11 @@ function andTrailing(head, tails) {
|
|
|
2284
2284
|
return [head, ...guardedTails];
|
|
2285
2285
|
}
|
|
2286
2286
|
|
|
2287
|
+
// src/drivers/PostgresHelper.ts
|
|
2288
|
+
function castToJson(val) {
|
|
2289
|
+
return val ?? null;
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2287
2292
|
// src/TypeCast.ts
|
|
2288
2293
|
var defaultTypeCast = {
|
|
2289
2294
|
castToDatetime(val) {
|
|
@@ -2408,17 +2413,15 @@ var defaultTypeCast = {
|
|
|
2408
2413
|
}
|
|
2409
2414
|
return [];
|
|
2410
2415
|
},
|
|
2416
|
+
// A string is JSON text to decode; any other value is already a JSON value
|
|
2411
2417
|
castToJson(val) {
|
|
2412
2418
|
if (val === null || val === void 0) return null;
|
|
2413
|
-
if (typeof val
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
return null;
|
|
2419
|
-
}
|
|
2419
|
+
if (typeof val !== "string") return val;
|
|
2420
|
+
try {
|
|
2421
|
+
return JSON.parse(val);
|
|
2422
|
+
} catch {
|
|
2423
|
+
return null;
|
|
2420
2424
|
}
|
|
2421
|
-
return null;
|
|
2422
2425
|
}
|
|
2423
2426
|
};
|
|
2424
2427
|
function parsePostgresArray(literal) {
|
|
@@ -2475,7 +2478,7 @@ function castToBooleanArray(val) {
|
|
|
2475
2478
|
function castToDatetimeArray(val) {
|
|
2476
2479
|
return currentTypeCast.castToDatetimeArray(val);
|
|
2477
2480
|
}
|
|
2478
|
-
function
|
|
2481
|
+
function castToJson2(val) {
|
|
2479
2482
|
return currentTypeCast.castToJson(val);
|
|
2480
2483
|
}
|
|
2481
2484
|
function formatLocalDate(d) {
|
|
@@ -2519,16 +2522,7 @@ var postgresTypeCast = {
|
|
|
2519
2522
|
return JSON.stringify(val);
|
|
2520
2523
|
},
|
|
2521
2524
|
deserializeJson(val) {
|
|
2522
|
-
|
|
2523
|
-
if (typeof val === "object") return val;
|
|
2524
|
-
if (typeof val === "string") {
|
|
2525
|
-
try {
|
|
2526
|
-
return JSON.parse(val);
|
|
2527
|
-
} catch {
|
|
2528
|
-
return null;
|
|
2529
|
-
}
|
|
2530
|
-
}
|
|
2531
|
-
return null;
|
|
2525
|
+
return castToJson(val);
|
|
2532
2526
|
},
|
|
2533
2527
|
serializeBooleanArray(val) {
|
|
2534
2528
|
if (val === null || val === void 0) return null;
|
|
@@ -2832,6 +2826,11 @@ var postgresSqlBuilder = {
|
|
|
2832
2826
|
inferPgType
|
|
2833
2827
|
};
|
|
2834
2828
|
|
|
2829
|
+
// src/drivers/MysqlHelper.ts
|
|
2830
|
+
function castToJson3(val) {
|
|
2831
|
+
return val ?? null;
|
|
2832
|
+
}
|
|
2833
|
+
|
|
2835
2834
|
// src/drivers/MysqlSqlBuilder.ts
|
|
2836
2835
|
var mysqlTypeCast = {
|
|
2837
2836
|
driverName: "mysql",
|
|
@@ -2857,16 +2856,7 @@ var mysqlTypeCast = {
|
|
|
2857
2856
|
return JSON.stringify(val);
|
|
2858
2857
|
},
|
|
2859
2858
|
deserializeJson(val) {
|
|
2860
|
-
|
|
2861
|
-
if (typeof val === "object") return val;
|
|
2862
|
-
if (typeof val === "string") {
|
|
2863
|
-
try {
|
|
2864
|
-
return JSON.parse(val);
|
|
2865
|
-
} catch {
|
|
2866
|
-
return null;
|
|
2867
|
-
}
|
|
2868
|
-
}
|
|
2869
|
-
return null;
|
|
2859
|
+
return castToJson3(val);
|
|
2870
2860
|
},
|
|
2871
2861
|
serializeBooleanArray(val) {
|
|
2872
2862
|
if (val === null || val === void 0) return null;
|
|
@@ -3034,6 +3024,24 @@ var mysqlSqlBuilder = {
|
|
|
3034
3024
|
}
|
|
3035
3025
|
};
|
|
3036
3026
|
|
|
3027
|
+
// src/drivers/SqliteHelper.ts
|
|
3028
|
+
function castToJson4(val) {
|
|
3029
|
+
if (val === null || val === void 0) {
|
|
3030
|
+
return null;
|
|
3031
|
+
}
|
|
3032
|
+
if (typeof val === "object" || typeof val === "number") {
|
|
3033
|
+
return val;
|
|
3034
|
+
}
|
|
3035
|
+
if (typeof val === "string") {
|
|
3036
|
+
try {
|
|
3037
|
+
return JSON.parse(val);
|
|
3038
|
+
} catch {
|
|
3039
|
+
return null;
|
|
3040
|
+
}
|
|
3041
|
+
}
|
|
3042
|
+
return null;
|
|
3043
|
+
}
|
|
3044
|
+
|
|
3037
3045
|
// src/drivers/SqliteSqlBuilder.ts
|
|
3038
3046
|
var sqliteTypeCast = {
|
|
3039
3047
|
driverName: "sqlite",
|
|
@@ -3059,16 +3067,7 @@ var sqliteTypeCast = {
|
|
|
3059
3067
|
return JSON.stringify(val);
|
|
3060
3068
|
},
|
|
3061
3069
|
deserializeJson(val) {
|
|
3062
|
-
|
|
3063
|
-
if (typeof val === "object") return val;
|
|
3064
|
-
if (typeof val === "string") {
|
|
3065
|
-
try {
|
|
3066
|
-
return JSON.parse(val);
|
|
3067
|
-
} catch {
|
|
3068
|
-
return null;
|
|
3069
|
-
}
|
|
3070
|
-
}
|
|
3071
|
-
return null;
|
|
3070
|
+
return castToJson4(val);
|
|
3072
3071
|
},
|
|
3073
3072
|
serializeBooleanArray(val) {
|
|
3074
3073
|
if (val === null || val === void 0) return null;
|
|
@@ -6365,6 +6364,14 @@ function rejectNonText(family, val) {
|
|
|
6365
6364
|
}
|
|
6366
6365
|
return val;
|
|
6367
6366
|
}
|
|
6367
|
+
function materializeString(family, v) {
|
|
6368
|
+
if (v === void 0 || v === null) return v;
|
|
6369
|
+
if (typeof v === "string") return v;
|
|
6370
|
+
if (typeof v === "number" || typeof v === "bigint" || typeof v === "boolean") return String(v);
|
|
6371
|
+
throw new Error(
|
|
6372
|
+
`materialize ${family}: driver returned ${typeof v} for a ${family} column. Use @column.passthrough() for a BYTEA/BLOB column, or @column.json<T>() for JSON.`
|
|
6373
|
+
);
|
|
6374
|
+
}
|
|
6368
6375
|
function createColumnDecorator(typeCast, serialize, sqlCast, baseSqlType) {
|
|
6369
6376
|
return function(columnNameOrOptions) {
|
|
6370
6377
|
return function(targetOrValue, keyOrContext) {
|
|
@@ -6394,7 +6401,7 @@ function createColumnDecorator(typeCast, serialize, sqlCast, baseSqlType) {
|
|
|
6394
6401
|
}
|
|
6395
6402
|
function requireColumnFamily() {
|
|
6396
6403
|
throw new Error(
|
|
6397
|
-
"litedbmodel: `@column()` no longer declares a column \u2014 a column must state its type with a family: @column.text() / .number() / .boolean() / .bigint() / .datetime() / .date() / .uuid() / .json() / .stringArray() / .intArray() / .numericArray() / .booleanArray() / .datetimeArray() / .passthrough() / .custom(). Every family takes the same argument as `@column()` did (`@column.text('db_name')`, `@column.number({ primaryKey: true })`). The bare form inferred the type from `emitDecoratorMetadata`, which esbuild (tsx/vite/vitest) never emits and standard decorators do not have, so it silently produced untyped reads."
|
|
6404
|
+
"litedbmodel: `@column()` no longer declares a column \u2014 a column must state its type with a family: @column.text() / .decimal() / .number() / .boolean() / .bigint() / .datetime() / .date() / .uuid() / .json() / .stringArray() / .intArray() / .numericArray() / .booleanArray() / .datetimeArray() / .passthrough() / .custom(). Every family takes the same argument as `@column()` did (`@column.text('db_name')`, `@column.number({ primaryKey: true })`). The bare form inferred the type from `emitDecoratorMetadata`, which esbuild (tsx/vite/vitest) never emits and standard decorators do not have, so it silently produced untyped reads."
|
|
6398
6405
|
);
|
|
6399
6406
|
}
|
|
6400
6407
|
function serializeArray(val, typeCast) {
|
|
@@ -6447,17 +6454,8 @@ var column = Object.assign(
|
|
|
6447
6454
|
* @example @column.text('user_name') name?: string;
|
|
6448
6455
|
*/
|
|
6449
6456
|
text: (columnNameOrOptions) => createColumnDecorator(
|
|
6450
|
-
|
|
6451
|
-
//
|
|
6452
|
-
// declaration says, and the declared type would be a lie on that dialect alone.
|
|
6453
|
-
(v) => {
|
|
6454
|
-
if (v === void 0 || v === null) return v;
|
|
6455
|
-
if (typeof v === "string") return v;
|
|
6456
|
-
if (typeof v === "number" || typeof v === "bigint" || typeof v === "boolean") return String(v);
|
|
6457
|
-
throw new Error(
|
|
6458
|
-
`materialize text: driver returned ${typeof v} for a text column. Use @column.passthrough() for a BYTEA/BLOB column, or @column.json<T>() for JSON.`
|
|
6459
|
-
);
|
|
6460
|
-
},
|
|
6457
|
+
(v) => materializeString("text", v),
|
|
6458
|
+
// the family DECLARES `string`, so it hands back one
|
|
6461
6459
|
(val) => rejectNonText("text", val),
|
|
6462
6460
|
// …and it cannot SERIALIZE a Date or an object
|
|
6463
6461
|
void 0,
|
|
@@ -6465,6 +6463,18 @@ var column = Object.assign(
|
|
|
6465
6463
|
"TEXT"
|
|
6466
6464
|
// §4.1 token: types the SCP typed read
|
|
6467
6465
|
)(columnNameOrOptions),
|
|
6466
|
+
/**
|
|
6467
|
+
* Exact decimal type (NUMERIC / DECIMAL) — read back as its exact decimal STRING (a JS number
|
|
6468
|
+
* rounds past 2^53). The family states the column is `numeric`, so a write binds the string as a
|
|
6469
|
+
* numeric — a batch write (`createMany` / `updateMany`) included.
|
|
6470
|
+
* @example @column.decimal() price?: string;
|
|
6471
|
+
*/
|
|
6472
|
+
decimal: (columnNameOrOptions) => createColumnDecorator(
|
|
6473
|
+
(v) => materializeString("decimal", v),
|
|
6474
|
+
(val) => rejectNonText("decimal", val),
|
|
6475
|
+
"numeric"
|
|
6476
|
+
// sqlCast for WHERE / INSERT / batch-write type casting
|
|
6477
|
+
)(columnNameOrOptions),
|
|
6468
6478
|
/**
|
|
6469
6479
|
* Boolean type conversion
|
|
6470
6480
|
* Converts 't'/'f', 'true'/'false', 1/0 to boolean
|
|
@@ -6675,7 +6685,7 @@ var column = Object.assign(
|
|
|
6675
6685
|
(v) => {
|
|
6676
6686
|
if (v === void 0) return void 0;
|
|
6677
6687
|
if (v === null) return null;
|
|
6678
|
-
return
|
|
6688
|
+
return castToJson2(v);
|
|
6679
6689
|
},
|
|
6680
6690
|
serializeJson,
|
|
6681
6691
|
"jsonb"
|
|
@@ -6773,6 +6783,7 @@ function getPrimaryKey(modelClass) {
|
|
|
6773
6783
|
// src/scp/decorator-adapter.ts
|
|
6774
6784
|
var COLUMN_FAMILY_SQL_TYPE = {
|
|
6775
6785
|
boolean: "BOOLEAN",
|
|
6786
|
+
numeric: "NUMERIC",
|
|
6776
6787
|
bigint: "BIGINT",
|
|
6777
6788
|
timestamp: "TIMESTAMP",
|
|
6778
6789
|
date: "DATE",
|
package/dist/scp/index.mjs
CHANGED
|
@@ -2108,6 +2108,11 @@ function andTrailing(head, tails) {
|
|
|
2108
2108
|
return [head, ...guardedTails];
|
|
2109
2109
|
}
|
|
2110
2110
|
|
|
2111
|
+
// src/drivers/PostgresHelper.ts
|
|
2112
|
+
function castToJson(val) {
|
|
2113
|
+
return val ?? null;
|
|
2114
|
+
}
|
|
2115
|
+
|
|
2111
2116
|
// src/TypeCast.ts
|
|
2112
2117
|
var defaultTypeCast = {
|
|
2113
2118
|
castToDatetime(val) {
|
|
@@ -2232,17 +2237,15 @@ var defaultTypeCast = {
|
|
|
2232
2237
|
}
|
|
2233
2238
|
return [];
|
|
2234
2239
|
},
|
|
2240
|
+
// A string is JSON text to decode; any other value is already a JSON value
|
|
2235
2241
|
castToJson(val) {
|
|
2236
2242
|
if (val === null || val === void 0) return null;
|
|
2237
|
-
if (typeof val
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
return null;
|
|
2243
|
-
}
|
|
2243
|
+
if (typeof val !== "string") return val;
|
|
2244
|
+
try {
|
|
2245
|
+
return JSON.parse(val);
|
|
2246
|
+
} catch {
|
|
2247
|
+
return null;
|
|
2244
2248
|
}
|
|
2245
|
-
return null;
|
|
2246
2249
|
}
|
|
2247
2250
|
};
|
|
2248
2251
|
function parsePostgresArray(literal) {
|
|
@@ -2299,7 +2302,7 @@ function castToBooleanArray(val) {
|
|
|
2299
2302
|
function castToDatetimeArray(val) {
|
|
2300
2303
|
return currentTypeCast.castToDatetimeArray(val);
|
|
2301
2304
|
}
|
|
2302
|
-
function
|
|
2305
|
+
function castToJson2(val) {
|
|
2303
2306
|
return currentTypeCast.castToJson(val);
|
|
2304
2307
|
}
|
|
2305
2308
|
function formatLocalDate(d) {
|
|
@@ -2343,16 +2346,7 @@ var postgresTypeCast = {
|
|
|
2343
2346
|
return JSON.stringify(val);
|
|
2344
2347
|
},
|
|
2345
2348
|
deserializeJson(val) {
|
|
2346
|
-
|
|
2347
|
-
if (typeof val === "object") return val;
|
|
2348
|
-
if (typeof val === "string") {
|
|
2349
|
-
try {
|
|
2350
|
-
return JSON.parse(val);
|
|
2351
|
-
} catch {
|
|
2352
|
-
return null;
|
|
2353
|
-
}
|
|
2354
|
-
}
|
|
2355
|
-
return null;
|
|
2349
|
+
return castToJson(val);
|
|
2356
2350
|
},
|
|
2357
2351
|
serializeBooleanArray(val) {
|
|
2358
2352
|
if (val === null || val === void 0) return null;
|
|
@@ -2656,6 +2650,11 @@ var postgresSqlBuilder = {
|
|
|
2656
2650
|
inferPgType
|
|
2657
2651
|
};
|
|
2658
2652
|
|
|
2653
|
+
// src/drivers/MysqlHelper.ts
|
|
2654
|
+
function castToJson3(val) {
|
|
2655
|
+
return val ?? null;
|
|
2656
|
+
}
|
|
2657
|
+
|
|
2659
2658
|
// src/drivers/MysqlSqlBuilder.ts
|
|
2660
2659
|
var mysqlTypeCast = {
|
|
2661
2660
|
driverName: "mysql",
|
|
@@ -2681,16 +2680,7 @@ var mysqlTypeCast = {
|
|
|
2681
2680
|
return JSON.stringify(val);
|
|
2682
2681
|
},
|
|
2683
2682
|
deserializeJson(val) {
|
|
2684
|
-
|
|
2685
|
-
if (typeof val === "object") return val;
|
|
2686
|
-
if (typeof val === "string") {
|
|
2687
|
-
try {
|
|
2688
|
-
return JSON.parse(val);
|
|
2689
|
-
} catch {
|
|
2690
|
-
return null;
|
|
2691
|
-
}
|
|
2692
|
-
}
|
|
2693
|
-
return null;
|
|
2683
|
+
return castToJson3(val);
|
|
2694
2684
|
},
|
|
2695
2685
|
serializeBooleanArray(val) {
|
|
2696
2686
|
if (val === null || val === void 0) return null;
|
|
@@ -2858,6 +2848,24 @@ var mysqlSqlBuilder = {
|
|
|
2858
2848
|
}
|
|
2859
2849
|
};
|
|
2860
2850
|
|
|
2851
|
+
// src/drivers/SqliteHelper.ts
|
|
2852
|
+
function castToJson4(val) {
|
|
2853
|
+
if (val === null || val === void 0) {
|
|
2854
|
+
return null;
|
|
2855
|
+
}
|
|
2856
|
+
if (typeof val === "object" || typeof val === "number") {
|
|
2857
|
+
return val;
|
|
2858
|
+
}
|
|
2859
|
+
if (typeof val === "string") {
|
|
2860
|
+
try {
|
|
2861
|
+
return JSON.parse(val);
|
|
2862
|
+
} catch {
|
|
2863
|
+
return null;
|
|
2864
|
+
}
|
|
2865
|
+
}
|
|
2866
|
+
return null;
|
|
2867
|
+
}
|
|
2868
|
+
|
|
2861
2869
|
// src/drivers/SqliteSqlBuilder.ts
|
|
2862
2870
|
var sqliteTypeCast = {
|
|
2863
2871
|
driverName: "sqlite",
|
|
@@ -2883,16 +2891,7 @@ var sqliteTypeCast = {
|
|
|
2883
2891
|
return JSON.stringify(val);
|
|
2884
2892
|
},
|
|
2885
2893
|
deserializeJson(val) {
|
|
2886
|
-
|
|
2887
|
-
if (typeof val === "object") return val;
|
|
2888
|
-
if (typeof val === "string") {
|
|
2889
|
-
try {
|
|
2890
|
-
return JSON.parse(val);
|
|
2891
|
-
} catch {
|
|
2892
|
-
return null;
|
|
2893
|
-
}
|
|
2894
|
-
}
|
|
2895
|
-
return null;
|
|
2894
|
+
return castToJson4(val);
|
|
2896
2895
|
},
|
|
2897
2896
|
serializeBooleanArray(val) {
|
|
2898
2897
|
if (val === null || val === void 0) return null;
|
|
@@ -5810,6 +5809,14 @@ function rejectNonText(family, val) {
|
|
|
5810
5809
|
}
|
|
5811
5810
|
return val;
|
|
5812
5811
|
}
|
|
5812
|
+
function materializeString(family, v) {
|
|
5813
|
+
if (v === void 0 || v === null) return v;
|
|
5814
|
+
if (typeof v === "string") return v;
|
|
5815
|
+
if (typeof v === "number" || typeof v === "bigint" || typeof v === "boolean") return String(v);
|
|
5816
|
+
throw new Error(
|
|
5817
|
+
`materialize ${family}: driver returned ${typeof v} for a ${family} column. Use @column.passthrough() for a BYTEA/BLOB column, or @column.json<T>() for JSON.`
|
|
5818
|
+
);
|
|
5819
|
+
}
|
|
5813
5820
|
function createColumnDecorator(typeCast, serialize, sqlCast, baseSqlType) {
|
|
5814
5821
|
return function(columnNameOrOptions) {
|
|
5815
5822
|
return function(targetOrValue, keyOrContext) {
|
|
@@ -5839,7 +5846,7 @@ function createColumnDecorator(typeCast, serialize, sqlCast, baseSqlType) {
|
|
|
5839
5846
|
}
|
|
5840
5847
|
function requireColumnFamily() {
|
|
5841
5848
|
throw new Error(
|
|
5842
|
-
"litedbmodel: `@column()` no longer declares a column \u2014 a column must state its type with a family: @column.text() / .number() / .boolean() / .bigint() / .datetime() / .date() / .uuid() / .json() / .stringArray() / .intArray() / .numericArray() / .booleanArray() / .datetimeArray() / .passthrough() / .custom(). Every family takes the same argument as `@column()` did (`@column.text('db_name')`, `@column.number({ primaryKey: true })`). The bare form inferred the type from `emitDecoratorMetadata`, which esbuild (tsx/vite/vitest) never emits and standard decorators do not have, so it silently produced untyped reads."
|
|
5849
|
+
"litedbmodel: `@column()` no longer declares a column \u2014 a column must state its type with a family: @column.text() / .decimal() / .number() / .boolean() / .bigint() / .datetime() / .date() / .uuid() / .json() / .stringArray() / .intArray() / .numericArray() / .booleanArray() / .datetimeArray() / .passthrough() / .custom(). Every family takes the same argument as `@column()` did (`@column.text('db_name')`, `@column.number({ primaryKey: true })`). The bare form inferred the type from `emitDecoratorMetadata`, which esbuild (tsx/vite/vitest) never emits and standard decorators do not have, so it silently produced untyped reads."
|
|
5843
5850
|
);
|
|
5844
5851
|
}
|
|
5845
5852
|
function serializeArray(val, typeCast) {
|
|
@@ -5892,17 +5899,8 @@ var column = Object.assign(
|
|
|
5892
5899
|
* @example @column.text('user_name') name?: string;
|
|
5893
5900
|
*/
|
|
5894
5901
|
text: (columnNameOrOptions) => createColumnDecorator(
|
|
5895
|
-
|
|
5896
|
-
//
|
|
5897
|
-
// declaration says, and the declared type would be a lie on that dialect alone.
|
|
5898
|
-
(v) => {
|
|
5899
|
-
if (v === void 0 || v === null) return v;
|
|
5900
|
-
if (typeof v === "string") return v;
|
|
5901
|
-
if (typeof v === "number" || typeof v === "bigint" || typeof v === "boolean") return String(v);
|
|
5902
|
-
throw new Error(
|
|
5903
|
-
`materialize text: driver returned ${typeof v} for a text column. Use @column.passthrough() for a BYTEA/BLOB column, or @column.json<T>() for JSON.`
|
|
5904
|
-
);
|
|
5905
|
-
},
|
|
5902
|
+
(v) => materializeString("text", v),
|
|
5903
|
+
// the family DECLARES `string`, so it hands back one
|
|
5906
5904
|
(val) => rejectNonText("text", val),
|
|
5907
5905
|
// …and it cannot SERIALIZE a Date or an object
|
|
5908
5906
|
void 0,
|
|
@@ -5910,6 +5908,18 @@ var column = Object.assign(
|
|
|
5910
5908
|
"TEXT"
|
|
5911
5909
|
// §4.1 token: types the SCP typed read
|
|
5912
5910
|
)(columnNameOrOptions),
|
|
5911
|
+
/**
|
|
5912
|
+
* Exact decimal type (NUMERIC / DECIMAL) — read back as its exact decimal STRING (a JS number
|
|
5913
|
+
* rounds past 2^53). The family states the column is `numeric`, so a write binds the string as a
|
|
5914
|
+
* numeric — a batch write (`createMany` / `updateMany`) included.
|
|
5915
|
+
* @example @column.decimal() price?: string;
|
|
5916
|
+
*/
|
|
5917
|
+
decimal: (columnNameOrOptions) => createColumnDecorator(
|
|
5918
|
+
(v) => materializeString("decimal", v),
|
|
5919
|
+
(val) => rejectNonText("decimal", val),
|
|
5920
|
+
"numeric"
|
|
5921
|
+
// sqlCast for WHERE / INSERT / batch-write type casting
|
|
5922
|
+
)(columnNameOrOptions),
|
|
5913
5923
|
/**
|
|
5914
5924
|
* Boolean type conversion
|
|
5915
5925
|
* Converts 't'/'f', 'true'/'false', 1/0 to boolean
|
|
@@ -6120,7 +6130,7 @@ var column = Object.assign(
|
|
|
6120
6130
|
(v) => {
|
|
6121
6131
|
if (v === void 0) return void 0;
|
|
6122
6132
|
if (v === null) return null;
|
|
6123
|
-
return
|
|
6133
|
+
return castToJson2(v);
|
|
6124
6134
|
},
|
|
6125
6135
|
serializeJson,
|
|
6126
6136
|
"jsonb"
|
|
@@ -6218,6 +6228,7 @@ function getPrimaryKey(modelClass) {
|
|
|
6218
6228
|
// src/scp/decorator-adapter.ts
|
|
6219
6229
|
var COLUMN_FAMILY_SQL_TYPE = {
|
|
6220
6230
|
boolean: "BOOLEAN",
|
|
6231
|
+
numeric: "NUMERIC",
|
|
6221
6232
|
bigint: "BIGINT",
|
|
6222
6233
|
timestamp: "TIMESTAMP",
|
|
6223
6234
|
date: "DATE",
|
package/docs/BENCHMARK.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Benchmark comparing litedbmodel with Prisma, Kysely, Drizzle, and TypeORM on PostgreSQL.
|
|
4
4
|
|
|
5
5
|
<!--@embedoc:package_version-->
|
|
6
|
-
**Version:** litedbmodel **2.2.
|
|
6
|
+
**Version:** litedbmodel **2.2.8**
|
|
7
7
|
<!--@embedoc:end-->
|
|
8
8
|
|
|
9
9
|
> Measured on PostgreSQL 16 · Apple Silicon (arm64).
|
package/docs/COMPARISON.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
A detailed comparison of litedbmodel with popular TypeScript/JavaScript ORMs.
|
|
4
4
|
|
|
5
5
|
<!--@embedoc:package_version label="Benchmark figures"-->
|
|
6
|
-
**Benchmark figures:** litedbmodel **2.2.
|
|
6
|
+
**Benchmark figures:** litedbmodel **2.2.8**
|
|
7
7
|
<!--@embedoc:end-->
|
|
8
8
|
|
|
9
9
|
> The only performance number on this page is the machine-computed win count below; the full
|
package/docs/api/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[**litedbmodel v2.2.
|
|
1
|
+
[**litedbmodel v2.2.8**](../README.md)
|
|
2
2
|
|
|
3
3
|
***
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Class: Conditions\<Model\>
|
|
8
8
|
|
|
9
|
-
Defined in: [Column.ts:
|
|
9
|
+
Defined in: [Column.ts:639](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L639)
|
|
10
10
|
|
|
11
11
|
Type-safe builder for query conditions.
|
|
12
12
|
Use array literals for static conditions, builder for dynamic construction.
|
|
@@ -47,7 +47,7 @@ if (query.active) where.add(User.is_active, true);
|
|
|
47
47
|
new Conditions<Model>(initial?: Conds): Conditions<Model>;
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Defined in: [Column.ts:
|
|
50
|
+
Defined in: [Column.ts:645](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L645)
|
|
51
51
|
|
|
52
52
|
Create a Conditions builder, optionally with initial conditions.
|
|
53
53
|
|
|
@@ -71,7 +71,7 @@ Create a Conditions builder, optionally with initial conditions.
|
|
|
71
71
|
get length(): number;
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
Defined in: [Column.ts:
|
|
74
|
+
Defined in: [Column.ts:711](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L711)
|
|
75
75
|
|
|
76
76
|
Get the number of conditions.
|
|
77
77
|
|
|
@@ -87,7 +87,7 @@ Get the number of conditions.
|
|
|
87
87
|
add<V>(column: Column<V, Model>, value: V | null | undefined): this;
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
Defined in: [Column.ts:
|
|
90
|
+
Defined in: [Column.ts:654](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L654)
|
|
91
91
|
|
|
92
92
|
Add a type-safe column equality condition.
|
|
93
93
|
|
|
@@ -116,7 +116,7 @@ Add a type-safe column equality condition.
|
|
|
116
116
|
addRaw(condition: string, value?: unknown): this;
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
Defined in: [Column.ts:
|
|
119
|
+
Defined in: [Column.ts:662](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L662)
|
|
120
120
|
|
|
121
121
|
Add a raw condition with template literal (e.g., `${User.age} > ?`).
|
|
122
122
|
|
|
@@ -141,7 +141,7 @@ Add a raw condition with template literal (e.g., `${User.age} > ?`).
|
|
|
141
141
|
addSql<V>(fragment: SqlTypedFragment<V, Model>, value: V): this;
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
Defined in: [Column.ts:
|
|
144
|
+
Defined in: [Column.ts:681](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L681)
|
|
145
145
|
|
|
146
146
|
Add a type-safe sql-tagged condition.
|
|
147
147
|
|
|
@@ -176,7 +176,7 @@ where.addSql(sql`${User.deleted_at} IS NULL`);
|
|
|
176
176
|
addSql(fragment: SqlTypedFragment<any, Model>): this;
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
-
Defined in: [Column.ts:
|
|
179
|
+
Defined in: [Column.ts:682](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L682)
|
|
180
180
|
|
|
181
181
|
Add a type-safe sql-tagged condition.
|
|
182
182
|
|
|
@@ -206,7 +206,7 @@ where.addSql(sql`${User.deleted_at} IS NULL`);
|
|
|
206
206
|
or(...condGroups: readonly Conds[]): this;
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
-
Defined in: [Column.ts:
|
|
209
|
+
Defined in: [Column.ts:696](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L696)
|
|
210
210
|
|
|
211
211
|
Add an OR condition group.
|
|
212
212
|
|
|
@@ -228,7 +228,7 @@ Add an OR condition group.
|
|
|
228
228
|
build(): Conds;
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
-
Defined in: [Column.ts:
|
|
231
|
+
Defined in: [Column.ts:704](https://github.com/foo-ogawa/litedbmodel/blob/main/src/Column.ts#L704)
|
|
232
232
|
|
|
233
233
|
Build the final array for use with find/count/delete.
|
|
234
234
|
|