@prisma-next/adapter-sqlite 0.5.0-dev.8 → 0.5.0-dev.80
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 +3 -3
- package/dist/{adapter-CcfiEUus.mjs → adapter-C4IjVF9z.mjs} +56 -63
- package/dist/adapter-C4IjVF9z.mjs.map +1 -0
- package/dist/{adapter-BG7_o_3h.d.mts → adapter-DswQk5bT.d.mts} +8 -5
- package/dist/adapter-DswQk5bT.d.mts.map +1 -0
- package/dist/adapter.d.mts +1 -2
- package/dist/adapter.mjs +2 -4
- package/dist/codec-types.d.mts +2 -42
- package/dist/codec-types.mjs +1 -3
- package/dist/column-types.d.mts +1 -5
- package/dist/column-types.d.mts.map +1 -1
- package/dist/column-types.mjs +3 -8
- package/dist/column-types.mjs.map +1 -1
- package/dist/control.d.mts +41 -3
- package/dist/control.d.mts.map +1 -1
- package/dist/control.mjs +441 -10
- package/dist/control.mjs.map +1 -1
- package/dist/{descriptor-meta-Bg-c1LmL.mjs → descriptor-meta-DA4lgWT_.mjs} +2 -2
- package/dist/{descriptor-meta-Bg-c1LmL.mjs.map → descriptor-meta-DA4lgWT_.mjs.map} +1 -1
- package/dist/runtime.d.mts +2 -3
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +21 -15
- package/dist/runtime.mjs.map +1 -1
- package/dist/{types-gAqc4ucF.d.mts → types-bTlW__XL.d.mts} +1 -1
- package/dist/types-bTlW__XL.d.mts.map +1 -0
- package/dist/types.d.mts +1 -1
- package/dist/types.mjs +1 -1
- package/package.json +25 -20
- package/src/core/adapter.ts +89 -72
- package/src/core/column-types.ts +1 -7
- package/src/core/control-adapter.ts +331 -15
- package/src/core/control-mutation-defaults.ts +358 -0
- package/src/core/runtime-adapter.ts +19 -12
- package/src/exports/codec-types.ts +2 -6
- package/src/exports/column-types.ts +0 -1
- package/src/exports/control.ts +45 -1
- package/dist/adapter-BG7_o_3h.d.mts.map +0 -1
- package/dist/adapter-CcfiEUus.mjs.map +0 -1
- package/dist/codec-ids-o_Z8i4nt.mjs +0 -15
- package/dist/codec-ids-o_Z8i4nt.mjs.map +0 -1
- package/dist/codec-types.d.mts.map +0 -1
- package/dist/codecs-ANhEQz9X.mjs +0 -102
- package/dist/codecs-ANhEQz9X.mjs.map +0 -1
- package/dist/types-gAqc4ucF.d.mts.map +0 -1
- package/src/core/codec-ids.ts +0 -14
- package/src/core/codecs.ts +0 -129
- package/src/core/sql-utils.ts +0 -35
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codecs-ANhEQz9X.mjs","names":[],"sources":["../src/core/codecs.ts"],"sourcesContent":["import { codec, defineCodecs, sqlCodecDefinitions } from '@prisma-next/sql-relational-core/ast';\nimport {\n SQLITE_BIGINT_CODEC_ID,\n SQLITE_BLOB_CODEC_ID,\n SQLITE_BOOLEAN_CODEC_ID,\n SQLITE_DATETIME_CODEC_ID,\n SQLITE_INTEGER_CODEC_ID,\n SQLITE_JSON_CODEC_ID,\n SQLITE_REAL_CODEC_ID,\n SQLITE_TEXT_CODEC_ID,\n} from './codec-ids';\n\nconst sqlCharCodec = sqlCodecDefinitions.char.codec;\nconst sqlVarcharCodec = sqlCodecDefinitions.varchar.codec;\nconst sqlIntCodec = sqlCodecDefinitions.int.codec;\nconst sqlFloatCodec = sqlCodecDefinitions.float.codec;\n\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | { readonly [key: string]: JsonValue }\n | readonly JsonValue[];\n\nconst sqliteTextCodec = codec({\n typeId: SQLITE_TEXT_CODEC_ID,\n targetTypes: ['text'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n});\n\nconst sqliteIntegerCodec = codec({\n typeId: SQLITE_INTEGER_CODEC_ID,\n targetTypes: ['integer'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst sqliteRealCodec = codec({\n typeId: SQLITE_REAL_CODEC_ID,\n targetTypes: ['real'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst sqliteBlobCodec = codec({\n typeId: SQLITE_BLOB_CODEC_ID,\n targetTypes: ['blob'],\n traits: ['equality'],\n encode: (value: Uint8Array): Uint8Array => value,\n decode: (wire: Uint8Array): Uint8Array => wire,\n encodeJson: (value: Uint8Array): string => Buffer.from(value).toString('base64'),\n decodeJson: (json: JsonValue): Uint8Array => {\n if (typeof json !== 'string') {\n throw new TypeError('sqlite/blob@1 contract value must be a base64 string');\n }\n return new Uint8Array(Buffer.from(json, 'base64'));\n },\n});\n\nconst sqliteBooleanCodec = codec({\n typeId: SQLITE_BOOLEAN_CODEC_ID,\n targetTypes: ['integer'],\n traits: ['equality', 'boolean'],\n encode: (value: boolean): number => (value ? 1 : 0),\n decode: (wire: number): boolean => wire !== 0,\n});\n\nconst sqliteDatetimeCodec = codec({\n typeId: SQLITE_DATETIME_CODEC_ID,\n targetTypes: ['text'],\n traits: ['equality', 'order'],\n encode: (value: Date): string => value.toISOString(),\n decode: (wire: string): Date => new Date(wire),\n encodeJson: (value: Date): string => value.toISOString(),\n decodeJson: (json: JsonValue): Date => {\n if (typeof json !== 'string') {\n throw new TypeError('sqlite/datetime@1 contract value must be an ISO-8601 string');\n }\n return new Date(json);\n },\n});\n\nconst sqliteJsonCodec = codec({\n typeId: SQLITE_JSON_CODEC_ID,\n targetTypes: ['text'],\n traits: ['equality'],\n encode: (value: JsonValue): string => JSON.stringify(value),\n decode: (wire: string | JsonValue): JsonValue =>\n typeof wire === 'string' ? (JSON.parse(wire) as JsonValue) : wire,\n});\n\nconst sqliteBigintCodec = codec({\n typeId: SQLITE_BIGINT_CODEC_ID,\n targetTypes: ['integer'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: bigint): number | bigint => value,\n decode: (wire: number | bigint): bigint => BigInt(wire),\n encodeJson: (value: bigint): string => value.toString(),\n decodeJson: (json: JsonValue): bigint => {\n if (typeof json !== 'string' && typeof json !== 'number') {\n throw new TypeError('sqlite/bigint@1 contract value must be a string or number');\n }\n return BigInt(json);\n },\n});\n\nconst codecs = defineCodecs()\n .add('char', sqlCharCodec)\n .add('varchar', sqlVarcharCodec)\n .add('int', sqlIntCodec)\n .add('float', sqlFloatCodec)\n .add('text', sqliteTextCodec)\n .add('integer', sqliteIntegerCodec)\n .add('real', sqliteRealCodec)\n .add('blob', sqliteBlobCodec)\n .add('boolean', sqliteBooleanCodec)\n .add('datetime', sqliteDatetimeCodec)\n .add('json', sqliteJsonCodec)\n .add('bigint', sqliteBigintCodec);\n\nexport const codecDefinitions = codecs.codecDefinitions;\nexport const dataTypes = codecs.dataTypes;\n\nexport type CodecTypes = typeof codecs.CodecTypes;\n"],"mappings":";;;;AAYA,MAAM,eAAe,oBAAoB,KAAK;AAC9C,MAAM,kBAAkB,oBAAoB,QAAQ;AACpD,MAAM,cAAc,oBAAoB,IAAI;AAC5C,MAAM,gBAAgB,oBAAoB,MAAM;AAUhD,MAAM,kBAAkB,MAAM;CAC5B,QAAQ;CACR,aAAa,CAAC,OAAO;CACrB,QAAQ;EAAC;EAAY;EAAS;EAAU;CACxC,SAAS,UAA0B;CACnC,SAAS,SAAyB;CACnC,CAAC;AAEF,MAAM,qBAAqB,MAAM;CAC/B,QAAQ;CACR,aAAa,CAAC,UAAU;CACxB,QAAQ;EAAC;EAAY;EAAS;EAAU;CACxC,SAAS,UAA0B;CACnC,SAAS,SAAyB;CACnC,CAAC;AAEF,MAAM,kBAAkB,MAAM;CAC5B,QAAQ;CACR,aAAa,CAAC,OAAO;CACrB,QAAQ;EAAC;EAAY;EAAS;EAAU;CACxC,SAAS,UAA0B;CACnC,SAAS,SAAyB;CACnC,CAAC;AAEF,MAAM,kBAAkB,MAAM;CAC5B,QAAQ;CACR,aAAa,CAAC,OAAO;CACrB,QAAQ,CAAC,WAAW;CACpB,SAAS,UAAkC;CAC3C,SAAS,SAAiC;CAC1C,aAAa,UAA8B,OAAO,KAAK,MAAM,CAAC,SAAS,SAAS;CAChF,aAAa,SAAgC;AAC3C,MAAI,OAAO,SAAS,SAClB,OAAM,IAAI,UAAU,uDAAuD;AAE7E,SAAO,IAAI,WAAW,OAAO,KAAK,MAAM,SAAS,CAAC;;CAErD,CAAC;AAEF,MAAM,qBAAqB,MAAM;CAC/B,QAAQ;CACR,aAAa,CAAC,UAAU;CACxB,QAAQ,CAAC,YAAY,UAAU;CAC/B,SAAS,UAA4B,QAAQ,IAAI;CACjD,SAAS,SAA0B,SAAS;CAC7C,CAAC;AAEF,MAAM,sBAAsB,MAAM;CAChC,QAAQ;CACR,aAAa,CAAC,OAAO;CACrB,QAAQ,CAAC,YAAY,QAAQ;CAC7B,SAAS,UAAwB,MAAM,aAAa;CACpD,SAAS,SAAuB,IAAI,KAAK,KAAK;CAC9C,aAAa,UAAwB,MAAM,aAAa;CACxD,aAAa,SAA0B;AACrC,MAAI,OAAO,SAAS,SAClB,OAAM,IAAI,UAAU,8DAA8D;AAEpF,SAAO,IAAI,KAAK,KAAK;;CAExB,CAAC;AAEF,MAAM,kBAAkB,MAAM;CAC5B,QAAQ;CACR,aAAa,CAAC,OAAO;CACrB,QAAQ,CAAC,WAAW;CACpB,SAAS,UAA6B,KAAK,UAAU,MAAM;CAC3D,SAAS,SACP,OAAO,SAAS,WAAY,KAAK,MAAM,KAAK,GAAiB;CAChE,CAAC;AAEF,MAAM,oBAAoB,MAAM;CAC9B,QAAQ;CACR,aAAa,CAAC,UAAU;CACxB,QAAQ;EAAC;EAAY;EAAS;EAAU;CACxC,SAAS,UAAmC;CAC5C,SAAS,SAAkC,OAAO,KAAK;CACvD,aAAa,UAA0B,MAAM,UAAU;CACvD,aAAa,SAA4B;AACvC,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,SAC9C,OAAM,IAAI,UAAU,4DAA4D;AAElF,SAAO,OAAO,KAAK;;CAEtB,CAAC;AAEF,MAAM,SAAS,cAAc,CAC1B,IAAI,QAAQ,aAAa,CACzB,IAAI,WAAW,gBAAgB,CAC/B,IAAI,OAAO,YAAY,CACvB,IAAI,SAAS,cAAc,CAC3B,IAAI,QAAQ,gBAAgB,CAC5B,IAAI,WAAW,mBAAmB,CAClC,IAAI,QAAQ,gBAAgB,CAC5B,IAAI,QAAQ,gBAAgB,CAC5B,IAAI,WAAW,mBAAmB,CAClC,IAAI,YAAY,oBAAoB,CACpC,IAAI,QAAQ,gBAAgB,CAC5B,IAAI,UAAU,kBAAkB;AAEnC,MAAa,mBAAmB,OAAO;AACvC,MAAa,YAAY,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-gAqc4ucF.d.mts","names":[],"sources":["../src/core/types.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,oBAAA;;AAAjB;AAIY,KAAA,cAAA,GAAiB,QAAS,CAAA,UAAT,CAAA,GAAA;EAEjB,SAAA,MAAA,EAAA,QAAsB;;KAAtB,sBAAA,GAAyB"}
|
package/src/core/codec-ids.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
SQL_CHAR_CODEC_ID,
|
|
3
|
-
SQL_FLOAT_CODEC_ID,
|
|
4
|
-
SQL_INT_CODEC_ID,
|
|
5
|
-
SQL_VARCHAR_CODEC_ID,
|
|
6
|
-
} from '@prisma-next/sql-relational-core/ast';
|
|
7
|
-
export const SQLITE_TEXT_CODEC_ID = 'sqlite/text@1' as const;
|
|
8
|
-
export const SQLITE_INTEGER_CODEC_ID = 'sqlite/integer@1' as const;
|
|
9
|
-
export const SQLITE_REAL_CODEC_ID = 'sqlite/real@1' as const;
|
|
10
|
-
export const SQLITE_BLOB_CODEC_ID = 'sqlite/blob@1' as const;
|
|
11
|
-
export const SQLITE_BOOLEAN_CODEC_ID = 'sqlite/boolean@1' as const;
|
|
12
|
-
export const SQLITE_DATETIME_CODEC_ID = 'sqlite/datetime@1' as const;
|
|
13
|
-
export const SQLITE_JSON_CODEC_ID = 'sqlite/json@1' as const;
|
|
14
|
-
export const SQLITE_BIGINT_CODEC_ID = 'sqlite/bigint@1' as const;
|
package/src/core/codecs.ts
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { codec, defineCodecs, sqlCodecDefinitions } from '@prisma-next/sql-relational-core/ast';
|
|
2
|
-
import {
|
|
3
|
-
SQLITE_BIGINT_CODEC_ID,
|
|
4
|
-
SQLITE_BLOB_CODEC_ID,
|
|
5
|
-
SQLITE_BOOLEAN_CODEC_ID,
|
|
6
|
-
SQLITE_DATETIME_CODEC_ID,
|
|
7
|
-
SQLITE_INTEGER_CODEC_ID,
|
|
8
|
-
SQLITE_JSON_CODEC_ID,
|
|
9
|
-
SQLITE_REAL_CODEC_ID,
|
|
10
|
-
SQLITE_TEXT_CODEC_ID,
|
|
11
|
-
} from './codec-ids';
|
|
12
|
-
|
|
13
|
-
const sqlCharCodec = sqlCodecDefinitions.char.codec;
|
|
14
|
-
const sqlVarcharCodec = sqlCodecDefinitions.varchar.codec;
|
|
15
|
-
const sqlIntCodec = sqlCodecDefinitions.int.codec;
|
|
16
|
-
const sqlFloatCodec = sqlCodecDefinitions.float.codec;
|
|
17
|
-
|
|
18
|
-
export type JsonValue =
|
|
19
|
-
| string
|
|
20
|
-
| number
|
|
21
|
-
| boolean
|
|
22
|
-
| null
|
|
23
|
-
| { readonly [key: string]: JsonValue }
|
|
24
|
-
| readonly JsonValue[];
|
|
25
|
-
|
|
26
|
-
const sqliteTextCodec = codec({
|
|
27
|
-
typeId: SQLITE_TEXT_CODEC_ID,
|
|
28
|
-
targetTypes: ['text'],
|
|
29
|
-
traits: ['equality', 'order', 'textual'],
|
|
30
|
-
encode: (value: string): string => value,
|
|
31
|
-
decode: (wire: string): string => wire,
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
const sqliteIntegerCodec = codec({
|
|
35
|
-
typeId: SQLITE_INTEGER_CODEC_ID,
|
|
36
|
-
targetTypes: ['integer'],
|
|
37
|
-
traits: ['equality', 'order', 'numeric'],
|
|
38
|
-
encode: (value: number): number => value,
|
|
39
|
-
decode: (wire: number): number => wire,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
const sqliteRealCodec = codec({
|
|
43
|
-
typeId: SQLITE_REAL_CODEC_ID,
|
|
44
|
-
targetTypes: ['real'],
|
|
45
|
-
traits: ['equality', 'order', 'numeric'],
|
|
46
|
-
encode: (value: number): number => value,
|
|
47
|
-
decode: (wire: number): number => wire,
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
const sqliteBlobCodec = codec({
|
|
51
|
-
typeId: SQLITE_BLOB_CODEC_ID,
|
|
52
|
-
targetTypes: ['blob'],
|
|
53
|
-
traits: ['equality'],
|
|
54
|
-
encode: (value: Uint8Array): Uint8Array => value,
|
|
55
|
-
decode: (wire: Uint8Array): Uint8Array => wire,
|
|
56
|
-
encodeJson: (value: Uint8Array): string => Buffer.from(value).toString('base64'),
|
|
57
|
-
decodeJson: (json: JsonValue): Uint8Array => {
|
|
58
|
-
if (typeof json !== 'string') {
|
|
59
|
-
throw new TypeError('sqlite/blob@1 contract value must be a base64 string');
|
|
60
|
-
}
|
|
61
|
-
return new Uint8Array(Buffer.from(json, 'base64'));
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
const sqliteBooleanCodec = codec({
|
|
66
|
-
typeId: SQLITE_BOOLEAN_CODEC_ID,
|
|
67
|
-
targetTypes: ['integer'],
|
|
68
|
-
traits: ['equality', 'boolean'],
|
|
69
|
-
encode: (value: boolean): number => (value ? 1 : 0),
|
|
70
|
-
decode: (wire: number): boolean => wire !== 0,
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
const sqliteDatetimeCodec = codec({
|
|
74
|
-
typeId: SQLITE_DATETIME_CODEC_ID,
|
|
75
|
-
targetTypes: ['text'],
|
|
76
|
-
traits: ['equality', 'order'],
|
|
77
|
-
encode: (value: Date): string => value.toISOString(),
|
|
78
|
-
decode: (wire: string): Date => new Date(wire),
|
|
79
|
-
encodeJson: (value: Date): string => value.toISOString(),
|
|
80
|
-
decodeJson: (json: JsonValue): Date => {
|
|
81
|
-
if (typeof json !== 'string') {
|
|
82
|
-
throw new TypeError('sqlite/datetime@1 contract value must be an ISO-8601 string');
|
|
83
|
-
}
|
|
84
|
-
return new Date(json);
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
const sqliteJsonCodec = codec({
|
|
89
|
-
typeId: SQLITE_JSON_CODEC_ID,
|
|
90
|
-
targetTypes: ['text'],
|
|
91
|
-
traits: ['equality'],
|
|
92
|
-
encode: (value: JsonValue): string => JSON.stringify(value),
|
|
93
|
-
decode: (wire: string | JsonValue): JsonValue =>
|
|
94
|
-
typeof wire === 'string' ? (JSON.parse(wire) as JsonValue) : wire,
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
const sqliteBigintCodec = codec({
|
|
98
|
-
typeId: SQLITE_BIGINT_CODEC_ID,
|
|
99
|
-
targetTypes: ['integer'],
|
|
100
|
-
traits: ['equality', 'order', 'numeric'],
|
|
101
|
-
encode: (value: bigint): number | bigint => value,
|
|
102
|
-
decode: (wire: number | bigint): bigint => BigInt(wire),
|
|
103
|
-
encodeJson: (value: bigint): string => value.toString(),
|
|
104
|
-
decodeJson: (json: JsonValue): bigint => {
|
|
105
|
-
if (typeof json !== 'string' && typeof json !== 'number') {
|
|
106
|
-
throw new TypeError('sqlite/bigint@1 contract value must be a string or number');
|
|
107
|
-
}
|
|
108
|
-
return BigInt(json);
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
const codecs = defineCodecs()
|
|
113
|
-
.add('char', sqlCharCodec)
|
|
114
|
-
.add('varchar', sqlVarcharCodec)
|
|
115
|
-
.add('int', sqlIntCodec)
|
|
116
|
-
.add('float', sqlFloatCodec)
|
|
117
|
-
.add('text', sqliteTextCodec)
|
|
118
|
-
.add('integer', sqliteIntegerCodec)
|
|
119
|
-
.add('real', sqliteRealCodec)
|
|
120
|
-
.add('blob', sqliteBlobCodec)
|
|
121
|
-
.add('boolean', sqliteBooleanCodec)
|
|
122
|
-
.add('datetime', sqliteDatetimeCodec)
|
|
123
|
-
.add('json', sqliteJsonCodec)
|
|
124
|
-
.add('bigint', sqliteBigintCodec);
|
|
125
|
-
|
|
126
|
-
export const codecDefinitions = codecs.codecDefinitions;
|
|
127
|
-
export const dataTypes = codecs.dataTypes;
|
|
128
|
-
|
|
129
|
-
export type CodecTypes = typeof codecs.CodecTypes;
|
package/src/core/sql-utils.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export class SqlEscapeError extends Error {
|
|
2
|
-
constructor(
|
|
3
|
-
message: string,
|
|
4
|
-
public readonly value: string,
|
|
5
|
-
public readonly kind: 'identifier' | 'literal',
|
|
6
|
-
) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.name = 'SqlEscapeError';
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function quoteIdentifier(identifier: string): string {
|
|
13
|
-
if (identifier.length === 0) {
|
|
14
|
-
throw new SqlEscapeError('Identifier cannot be empty', identifier, 'identifier');
|
|
15
|
-
}
|
|
16
|
-
if (identifier.includes('\0')) {
|
|
17
|
-
throw new SqlEscapeError(
|
|
18
|
-
'Identifier cannot contain null bytes',
|
|
19
|
-
identifier.replace(/\0/g, '\\0'),
|
|
20
|
-
'identifier',
|
|
21
|
-
);
|
|
22
|
-
}
|
|
23
|
-
return `"${identifier.replace(/"/g, '""')}"`;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function escapeLiteral(value: string): string {
|
|
27
|
-
if (value.includes('\0')) {
|
|
28
|
-
throw new SqlEscapeError(
|
|
29
|
-
'Literal value cannot contain null bytes',
|
|
30
|
-
value.replace(/\0/g, '\\0'),
|
|
31
|
-
'literal',
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
return value.replace(/'/g, "''");
|
|
35
|
-
}
|