neoorm 0.1.1 → 0.1.3
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 +171 -11
- package/dist/bin/neoorm.js +11 -2
- package/dist/bin/neoorm.js.map +1 -1
- package/dist/codegen/emit-models.d.ts.map +1 -1
- package/dist/codegen/emit-models.js +24 -15
- package/dist/codegen/emit-models.js.map +1 -1
- package/dist/codegen/generate.d.ts +13 -2
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/codegen/generate.js +70 -9
- package/dist/codegen/generate.js.map +1 -1
- package/dist/codegen/schema-to-manifest.d.ts +2 -1
- package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
- package/dist/codegen/schema-to-manifest.js +22 -7
- package/dist/codegen/schema-to-manifest.js.map +1 -1
- package/dist/dialect/postgres.d.ts.map +1 -1
- package/dist/dialect/postgres.js +27 -23
- package/dist/dialect/postgres.js.map +1 -1
- package/dist/dialect/types.d.ts +8 -1
- package/dist/dialect/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/introspect/pull.d.ts.map +1 -1
- package/dist/introspect/pull.js +91 -31
- package/dist/introspect/pull.js.map +1 -1
- package/dist/plugins/builtin.d.ts +15 -0
- package/dist/plugins/builtin.d.ts.map +1 -0
- package/dist/plugins/builtin.js +156 -0
- package/dist/plugins/builtin.js.map +1 -0
- package/dist/plugins/ensure-plugins.d.ts +3 -0
- package/dist/plugins/ensure-plugins.d.ts.map +1 -0
- package/dist/plugins/ensure-plugins.js +19 -0
- package/dist/plugins/ensure-plugins.js.map +1 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/postgis/columns.d.ts +25 -0
- package/dist/plugins/postgis/columns.d.ts.map +1 -0
- package/dist/plugins/postgis/columns.js +82 -0
- package/dist/plugins/postgis/columns.js.map +1 -0
- package/dist/plugins/postgis/geojson.d.ts +4 -0
- package/dist/plugins/postgis/geojson.d.ts.map +1 -0
- package/dist/plugins/postgis/geojson.js +22 -0
- package/dist/plugins/postgis/geojson.js.map +1 -0
- package/dist/plugins/postgis/index.d.ts +4 -0
- package/dist/plugins/postgis/index.d.ts.map +1 -0
- package/dist/plugins/postgis/index.js +6 -0
- package/dist/plugins/postgis/index.js.map +1 -0
- package/dist/plugins/postgis/operators.d.ts +5 -0
- package/dist/plugins/postgis/operators.d.ts.map +1 -0
- package/dist/plugins/postgis/operators.js +35 -0
- package/dist/plugins/postgis/operators.js.map +1 -0
- package/dist/plugins/postgis/plugin.d.ts +3 -0
- package/dist/plugins/postgis/plugin.d.ts.map +1 -0
- package/dist/plugins/postgis/plugin.js +7 -0
- package/dist/plugins/postgis/plugin.js.map +1 -0
- package/dist/plugins/registry.d.ts +10 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +89 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/types.d.ts +32 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/runtime/client.d.ts +1 -1
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +29 -2
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/executor.d.ts +4 -1
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +20 -3
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/query/compile.d.ts +3 -1
- package/dist/runtime/query/compile.d.ts.map +1 -1
- package/dist/runtime/query/compile.js +78 -11
- package/dist/runtime/query/compile.js.map +1 -1
- package/dist/runtime/query/create.d.ts.map +1 -1
- package/dist/runtime/query/create.js +61 -72
- package/dist/runtime/query/create.js.map +1 -1
- package/dist/runtime/query/primary-key.d.ts +4 -0
- package/dist/runtime/query/primary-key.d.ts.map +1 -0
- package/dist/runtime/query/primary-key.js +23 -0
- package/dist/runtime/query/primary-key.js.map +1 -0
- package/dist/runtime/query/update.js +2 -2
- package/dist/runtime/query/update.js.map +1 -1
- package/dist/runtime/query/upsert.d.ts.map +1 -1
- package/dist/runtime/query/upsert.js +2 -12
- package/dist/runtime/query/upsert.js.map +1 -1
- package/dist/runtime/types.d.ts +10 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schema/column.d.ts +8 -10
- package/dist/schema/column.d.ts.map +1 -1
- package/dist/schema/column.js +10 -53
- package/dist/schema/column.js.map +1 -1
- package/dist/schema/index.d.ts +2 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/relation.d.ts +1 -0
- package/dist/schema/relation.d.ts.map +1 -1
- package/dist/schema/relation.js +16 -11
- package/dist/schema/relation.js.map +1 -1
- package/dist/utils/uuid.d.ts +6 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +34 -0
- package/dist/utils/uuid.js.map +1 -0
- package/package.json +13 -5
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { createColumnBuilder } from "../schema/column.js";
|
|
2
|
+
function scalarTsType(col, base) {
|
|
3
|
+
return col.nullable ? `${base} | null` : base;
|
|
4
|
+
}
|
|
5
|
+
const idType = {
|
|
6
|
+
kind: "id",
|
|
7
|
+
createBuilder() {
|
|
8
|
+
return createColumnBuilder({
|
|
9
|
+
kind: "id",
|
|
10
|
+
nullable: false,
|
|
11
|
+
unique: false,
|
|
12
|
+
primary: true,
|
|
13
|
+
defaultNow: false,
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
columnType() {
|
|
17
|
+
return "TEXT";
|
|
18
|
+
},
|
|
19
|
+
columnTsType(col) {
|
|
20
|
+
return scalarTsType(col, "string");
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
const textType = {
|
|
24
|
+
kind: "text",
|
|
25
|
+
createBuilder() {
|
|
26
|
+
return createColumnBuilder({
|
|
27
|
+
kind: "text",
|
|
28
|
+
nullable: true,
|
|
29
|
+
unique: false,
|
|
30
|
+
primary: false,
|
|
31
|
+
defaultNow: false,
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
columnType() {
|
|
35
|
+
return "TEXT";
|
|
36
|
+
},
|
|
37
|
+
columnTsType(col) {
|
|
38
|
+
return scalarTsType(col, "string");
|
|
39
|
+
},
|
|
40
|
+
introspect(pgDataType) {
|
|
41
|
+
return pgDataType === "text" || pgDataType === "character varying";
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const boolType = {
|
|
45
|
+
kind: "bool",
|
|
46
|
+
createBuilder() {
|
|
47
|
+
return createColumnBuilder({
|
|
48
|
+
kind: "bool",
|
|
49
|
+
nullable: true,
|
|
50
|
+
unique: false,
|
|
51
|
+
primary: false,
|
|
52
|
+
defaultNow: false,
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
columnType() {
|
|
56
|
+
return "BOOLEAN";
|
|
57
|
+
},
|
|
58
|
+
columnTsType(col) {
|
|
59
|
+
return scalarTsType(col, "boolean");
|
|
60
|
+
},
|
|
61
|
+
introspect(pgDataType) {
|
|
62
|
+
return pgDataType === "boolean";
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
const intType = {
|
|
66
|
+
kind: "int",
|
|
67
|
+
createBuilder() {
|
|
68
|
+
return createColumnBuilder({
|
|
69
|
+
kind: "int",
|
|
70
|
+
nullable: true,
|
|
71
|
+
unique: false,
|
|
72
|
+
primary: false,
|
|
73
|
+
defaultNow: false,
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
columnType() {
|
|
77
|
+
return "INTEGER";
|
|
78
|
+
},
|
|
79
|
+
columnTsType(col) {
|
|
80
|
+
return scalarTsType(col, "number");
|
|
81
|
+
},
|
|
82
|
+
introspect(pgDataType) {
|
|
83
|
+
return pgDataType === "integer" || pgDataType === "bigint" || pgDataType === "smallint";
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
const timestampType = {
|
|
87
|
+
kind: "timestamp",
|
|
88
|
+
createBuilder() {
|
|
89
|
+
return createColumnBuilder({
|
|
90
|
+
kind: "timestamp",
|
|
91
|
+
nullable: true,
|
|
92
|
+
unique: false,
|
|
93
|
+
primary: false,
|
|
94
|
+
defaultNow: false,
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
columnType() {
|
|
98
|
+
return "TIMESTAMPTZ";
|
|
99
|
+
},
|
|
100
|
+
columnTsType(col) {
|
|
101
|
+
return scalarTsType(col, "string");
|
|
102
|
+
},
|
|
103
|
+
introspect(pgDataType) {
|
|
104
|
+
return (pgDataType.includes("timestamp") ||
|
|
105
|
+
pgDataType === "date" ||
|
|
106
|
+
pgDataType === "time without time zone");
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
const uuidType = {
|
|
110
|
+
kind: "uuid",
|
|
111
|
+
createBuilder(options) {
|
|
112
|
+
const version = options?.version === 4 ? 4 : 7;
|
|
113
|
+
return createColumnBuilder({
|
|
114
|
+
kind: "uuid",
|
|
115
|
+
nullable: true,
|
|
116
|
+
unique: false,
|
|
117
|
+
primary: false,
|
|
118
|
+
defaultNow: false,
|
|
119
|
+
typeOptions: { version },
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
columnType() {
|
|
123
|
+
return "UUID";
|
|
124
|
+
},
|
|
125
|
+
columnTsType(col) {
|
|
126
|
+
return scalarTsType(col, "string");
|
|
127
|
+
},
|
|
128
|
+
introspect(_pgDataType, udtName) {
|
|
129
|
+
return udtName === "uuid";
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
export const builtinPlugin = {
|
|
133
|
+
name: "builtin",
|
|
134
|
+
columnTypes: [idType, textType, boolType, intType, timestampType, uuidType],
|
|
135
|
+
};
|
|
136
|
+
export const id = {
|
|
137
|
+
primary() {
|
|
138
|
+
return idType.createBuilder();
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
export function text() {
|
|
142
|
+
return textType.createBuilder();
|
|
143
|
+
}
|
|
144
|
+
export function bool() {
|
|
145
|
+
return boolType.createBuilder();
|
|
146
|
+
}
|
|
147
|
+
export function int() {
|
|
148
|
+
return intType.createBuilder();
|
|
149
|
+
}
|
|
150
|
+
export function timestamp() {
|
|
151
|
+
return timestampType.createBuilder();
|
|
152
|
+
}
|
|
153
|
+
export function uuid(options) {
|
|
154
|
+
return uuidType.createBuilder(options);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=builtin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/plugins/builtin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-plugins.d.ts","sourceRoot":"","sources":["../../src/plugins/ensure-plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAepD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAMtD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { registerPlugin } from "./registry.js";
|
|
2
|
+
import { builtinPlugin } from "./builtin.js";
|
|
3
|
+
import { postgisPlugin } from "./postgis/plugin.js";
|
|
4
|
+
function activateExtension(name) {
|
|
5
|
+
switch (name) {
|
|
6
|
+
case "postgis":
|
|
7
|
+
registerPlugin(postgisPlugin);
|
|
8
|
+
break;
|
|
9
|
+
default:
|
|
10
|
+
break;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function ensurePlugins(manifest) {
|
|
14
|
+
registerPlugin(builtinPlugin);
|
|
15
|
+
for (const ext of manifest.extensions ?? []) {
|
|
16
|
+
activateExtension(ext);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ensure-plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-plugins.js","sourceRoot":"","sources":["../../src/plugins/ensure-plugins.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,SAAS,iBAAiB,CAAC,IAAY;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9B,MAAM;QACR;YACE,MAAM;IACV,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,cAAc,CAAC,aAAa,CAAC,CAAC;IAE9B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5C,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { ColumnTypePlugin, NeoOrmPlugin, PluginWhereOperator } from "./types.js";
|
|
2
|
+
export { registerPlugin, getPluginRegistry, getColumnType, getColumnTypeOrThrow, clearPluginRegistry, collectExtensions, findIntrospectColumnType, } from "./registry.js";
|
|
3
|
+
export { ensurePlugins } from "./ensure-plugins.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ColumnTypePlugin } from "../types.js";
|
|
2
|
+
export type GeoJsonPoint = {
|
|
3
|
+
type: "Point";
|
|
4
|
+
coordinates: [number, number] | [number, number, number];
|
|
5
|
+
};
|
|
6
|
+
export type GeoJsonPolygon = {
|
|
7
|
+
type: "Polygon";
|
|
8
|
+
coordinates: number[][][];
|
|
9
|
+
};
|
|
10
|
+
export type GeoJsonGeometry = GeoJsonPoint | GeoJsonPolygon | Record<string, unknown>;
|
|
11
|
+
export type GeometryOptions = {
|
|
12
|
+
subtype?: string;
|
|
13
|
+
srid?: number;
|
|
14
|
+
};
|
|
15
|
+
export type GeographyOptions = GeometryOptions;
|
|
16
|
+
export type PointOptions = {
|
|
17
|
+
srid?: number;
|
|
18
|
+
};
|
|
19
|
+
export declare const geometryType: ColumnTypePlugin;
|
|
20
|
+
export declare const geographyType: ColumnTypePlugin;
|
|
21
|
+
export declare const pointType: ColumnTypePlugin;
|
|
22
|
+
export declare function geometry(options?: GeometryOptions): import("../../schema/column.js").ColumnBuilder<unknown>;
|
|
23
|
+
export declare function geography(options?: GeographyOptions): import("../../schema/column.js").ColumnBuilder<unknown>;
|
|
24
|
+
export declare function point(options?: PointOptions): import("../../schema/column.js").ColumnBuilder<unknown>;
|
|
25
|
+
//# sourceMappingURL=columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgis/columns.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AA4EF,eAAO,MAAM,YAAY,kBAAkD,CAAC;AAC5E,eAAO,MAAM,aAAa,kBAAoD,CAAC;AAC/E,eAAO,MAAM,SAAS,kBAGpB,CAAC;AAEH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,2DAEjD;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,2DAEnD;AAED,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,2DAE3C"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { createColumnBuilder } from "../../schema/column.js";
|
|
2
|
+
import { geoJsonFromValue, geoJsonToParam } from "./geojson.js";
|
|
3
|
+
import { postgisWhereOperators } from "./operators.js";
|
|
4
|
+
function spatialSqlType(base, options) {
|
|
5
|
+
const subtype = options?.subtype;
|
|
6
|
+
const srid = options?.srid;
|
|
7
|
+
if (subtype && srid !== undefined) {
|
|
8
|
+
return `${base}(${subtype},${srid})`;
|
|
9
|
+
}
|
|
10
|
+
if (subtype) {
|
|
11
|
+
return `${base}(${subtype})`;
|
|
12
|
+
}
|
|
13
|
+
if (srid !== undefined) {
|
|
14
|
+
return `${base}(${srid})`;
|
|
15
|
+
}
|
|
16
|
+
return base;
|
|
17
|
+
}
|
|
18
|
+
function spatialSelectExpression(col) {
|
|
19
|
+
const sqlName = `"${col.sqlName.replace(/"/g, '""')}"`;
|
|
20
|
+
return `ST_AsGeoJSON(${sqlName})::json AS ${sqlName}`;
|
|
21
|
+
}
|
|
22
|
+
function spatialWriteExpression(col, paramIndex) {
|
|
23
|
+
const srid = col.typeOptions?.["srid"] ?? 4326;
|
|
24
|
+
return `ST_SetSRID(ST_GeomFromGeoJSON($${paramIndex}::json), ${srid})`;
|
|
25
|
+
}
|
|
26
|
+
function createSpatialTypePlugin(kind, base, defaultOptions) {
|
|
27
|
+
return {
|
|
28
|
+
kind,
|
|
29
|
+
createBuilder(options) {
|
|
30
|
+
const merged = { ...defaultOptions, ...options };
|
|
31
|
+
return createColumnBuilder({
|
|
32
|
+
kind,
|
|
33
|
+
nullable: true,
|
|
34
|
+
unique: false,
|
|
35
|
+
primary: false,
|
|
36
|
+
defaultNow: false,
|
|
37
|
+
typeOptions: merged,
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
columnType(col) {
|
|
41
|
+
return spatialSqlType(base, col.typeOptions);
|
|
42
|
+
},
|
|
43
|
+
columnTsType(col) {
|
|
44
|
+
const tsType = kind === "point" ? "GeoJsonPoint" : "GeoJsonGeometry";
|
|
45
|
+
return col.nullable ? `${tsType} | null` : tsType;
|
|
46
|
+
},
|
|
47
|
+
selectExpression: spatialSelectExpression,
|
|
48
|
+
writeExpression: spatialWriteExpression,
|
|
49
|
+
serializeValue(_col, value) {
|
|
50
|
+
return geoJsonToParam(value);
|
|
51
|
+
},
|
|
52
|
+
deserializeValue(_col, dbValue) {
|
|
53
|
+
return geoJsonFromValue(dbValue);
|
|
54
|
+
},
|
|
55
|
+
whereOperators: postgisWhereOperators,
|
|
56
|
+
introspect(_pgDataType, udtName) {
|
|
57
|
+
if (kind === "geography") {
|
|
58
|
+
return udtName === "geography";
|
|
59
|
+
}
|
|
60
|
+
if (kind === "point") {
|
|
61
|
+
return udtName === "geometry";
|
|
62
|
+
}
|
|
63
|
+
return udtName === "geometry";
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export const geometryType = createSpatialTypePlugin("geometry", "geometry");
|
|
68
|
+
export const geographyType = createSpatialTypePlugin("geography", "geography");
|
|
69
|
+
export const pointType = createSpatialTypePlugin("point", "geometry", {
|
|
70
|
+
subtype: "Point",
|
|
71
|
+
srid: 4326,
|
|
72
|
+
});
|
|
73
|
+
export function geometry(options) {
|
|
74
|
+
return geometryType.createBuilder(options);
|
|
75
|
+
}
|
|
76
|
+
export function geography(options) {
|
|
77
|
+
return geographyType.createBuilder(options);
|
|
78
|
+
}
|
|
79
|
+
export function point(options) {
|
|
80
|
+
return pointType.createBuilder(options);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../src/plugins/postgis/columns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAyBvD,SAAS,cAAc,CACrB,IAA8B,EAC9B,OAAyB;IAEzB,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IACjC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,IAAI,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,GAAG,IAAI,IAAI,OAAO,IAAI,IAAI,GAAG,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,IAAI,IAAI,OAAO,GAAG,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAmB;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IACvD,OAAO,gBAAgB,OAAO,cAAc,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAmB,EAAE,UAAkB;IACrE,MAAM,IAAI,GAAI,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;IACvE,OAAO,kCAAkC,UAAU,YAAY,IAAI,GAAG,CAAC;AACzE,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAwC,EACxC,IAA8B,EAC9B,cAAgC;IAEhC,OAAO;QACL,IAAI;QACJ,aAAa,CAAC,OAAiC;YAC7C,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;YACjD,OAAO,mBAAmB,CAAmG;gBAC3H,IAAI;gBACJ,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QACD,UAAU,CAAC,GAAG;YACZ,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,WAA0C,CAAC,CAAC;QAC9E,CAAC;QACD,YAAY,CAAC,GAAG;YACd,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACrE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QACpD,CAAC;QACD,gBAAgB,EAAE,uBAAuB;QACzC,eAAe,EAAE,sBAAsB;QACvC,cAAc,CAAC,IAAI,EAAE,KAAK;YACxB,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,gBAAgB,CAAC,IAAI,EAAE,OAAO;YAC5B,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,cAAc,EAAE,qBAAqB;QACrC,UAAU,CAAC,WAAW,EAAE,OAAO;YAC7B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,OAAO,OAAO,KAAK,WAAW,CAAC;YACjC,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO,OAAO,KAAK,UAAU,CAAC;YAChC,CAAC;YACD,OAAO,OAAO,KAAK,UAAU,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE;IACpE,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,IAAI;CACX,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,OAAyB;IAChD,OAAO,YAAY,CAAC,aAAa,CAAC,OAA8C,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAA0B;IAClD,OAAO,aAAa,CAAC,aAAa,CAAC,OAA8C,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAsB;IAC1C,OAAO,SAAS,CAAC,aAAa,CAAC,OAA8C,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geojson.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgis/geojson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQtD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAWzE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function geoJsonToParam(value) {
|
|
2
|
+
if (value === null || value === undefined) {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
if (typeof value === "string") {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
return JSON.stringify(value);
|
|
9
|
+
}
|
|
10
|
+
export function geoJsonFromValue(dbValue) {
|
|
11
|
+
if (dbValue === null || dbValue === undefined) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dbValue === "string") {
|
|
15
|
+
return JSON.parse(dbValue);
|
|
16
|
+
}
|
|
17
|
+
if (typeof dbValue === "object") {
|
|
18
|
+
return dbValue;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=geojson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geojson.js","sourceRoot":"","sources":["../../../src/plugins/postgis/geojson.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAA0B,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { GeoJsonPoint, GeoJsonPolygon, GeoJsonGeometry, GeometryOptions, GeographyOptions, PointOptions, } from "./columns.js";
|
|
2
|
+
export { geometry, geography, point } from "./columns.js";
|
|
3
|
+
export { postgisPlugin } from "./plugin.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgis/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { registerPlugin } from "../registry.js";
|
|
2
|
+
import { postgisPlugin } from "./plugin.js";
|
|
3
|
+
export { geometry, geography, point } from "./columns.js";
|
|
4
|
+
export { postgisPlugin } from "./plugin.js";
|
|
5
|
+
registerPlugin(postgisPlugin);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/postgis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,cAAc,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ManifestColumn } from "../../dialect/types.js";
|
|
2
|
+
import type { PluginWhereOperator } from "../types.js";
|
|
3
|
+
export declare const postgisWhereOperators: Record<string, PluginWhereOperator>;
|
|
4
|
+
export declare function isPostgisColumn(col: ManifestColumn): boolean;
|
|
5
|
+
//# sourceMappingURL=operators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgis/operators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOvD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CA0BrE,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAE5D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { geoJsonToParam } from "./geojson.js";
|
|
2
|
+
function geomFromGeoJson(paramIndex) {
|
|
3
|
+
return `ST_GeomFromGeoJSON($${paramIndex}::json)`;
|
|
4
|
+
}
|
|
5
|
+
export const postgisWhereOperators = {
|
|
6
|
+
intersects: {
|
|
7
|
+
compile(sqlCol, value, _col, startParamIndex) {
|
|
8
|
+
return {
|
|
9
|
+
sql: `ST_Intersects(${sqlCol}, ${geomFromGeoJson(startParamIndex)})`,
|
|
10
|
+
params: [geoJsonToParam(value)],
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
within: {
|
|
15
|
+
compile(sqlCol, value, _col, startParamIndex) {
|
|
16
|
+
return {
|
|
17
|
+
sql: `ST_Within(${sqlCol}, ${geomFromGeoJson(startParamIndex)})`,
|
|
18
|
+
params: [geoJsonToParam(value)],
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
dWithin: {
|
|
23
|
+
compile(sqlCol, value, _col, startParamIndex) {
|
|
24
|
+
const payload = value;
|
|
25
|
+
return {
|
|
26
|
+
sql: `ST_DWithin(${sqlCol}, ${geomFromGeoJson(startParamIndex)}, $${startParamIndex + 1})`,
|
|
27
|
+
params: [geoJsonToParam(payload.geometry), payload.distance],
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export function isPostgisColumn(col) {
|
|
33
|
+
return col.kind === "geometry" || col.kind === "geography" || col.kind === "point";
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=operators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operators.js","sourceRoot":"","sources":["../../../src/plugins/postgis/operators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,SAAS,eAAe,CAAC,UAAkB;IACzC,OAAO,uBAAuB,UAAU,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAwC;IACxE,UAAU,EAAE;QACV,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe;YAC1C,OAAO;gBACL,GAAG,EAAE,iBAAiB,MAAM,KAAK,eAAe,CAAC,eAAe,CAAC,GAAG;gBACpE,MAAM,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAChC,CAAC;QACJ,CAAC;KACF;IACD,MAAM,EAAE;QACN,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe;YAC1C,OAAO;gBACL,GAAG,EAAE,aAAa,MAAM,KAAK,eAAe,CAAC,eAAe,CAAC,GAAG;gBAChE,MAAM,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAChC,CAAC;QACJ,CAAC;KACF;IACD,OAAO,EAAE;QACP,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe;YAC1C,MAAM,OAAO,GAAG,KAAgD,CAAC;YACjE,OAAO;gBACL,GAAG,EAAE,cAAc,MAAM,KAAK,eAAe,CAAC,eAAe,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG;gBAC1F,MAAM,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;aAC7D,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,GAAmB;IACjD,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgis/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,aAAa,EAAE,YAI3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/postgis/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC;CACtD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ColumnTypePlugin, NeoOrmPlugin } from "./types.js";
|
|
2
|
+
export declare function registerPlugin(plugin: NeoOrmPlugin): void;
|
|
3
|
+
export declare function getPluginRegistry(): readonly NeoOrmPlugin[];
|
|
4
|
+
export declare function getColumnType(kind: string): ColumnTypePlugin | undefined;
|
|
5
|
+
export declare function getColumnTypeOrThrow(kind: string): ColumnTypePlugin;
|
|
6
|
+
export declare function clearPluginRegistry(): void;
|
|
7
|
+
export declare function collectExtensions(plugins: readonly NeoOrmPlugin[]): string[];
|
|
8
|
+
export declare function collectExtensionsForKinds(kinds: readonly string[]): string[];
|
|
9
|
+
export declare function findIntrospectColumnType(pgDataType: string, udtName: string): ColumnTypePlugin | undefined;
|
|
10
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4BjE,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAMzD;AAED,wBAAgB,iBAAiB,IAAI,SAAS,YAAY,EAAE,CAG3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAMxE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAQnE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAQ5E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAiB5E;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,gBAAgB,GAAG,SAAS,CAQ9B"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { builtinPlugin } from "./builtin.js";
|
|
2
|
+
const pluginRegistry = [];
|
|
3
|
+
const columnTypeMap = new Map();
|
|
4
|
+
let builtinsRegistered = false;
|
|
5
|
+
function indexColumnTypes(plugin, allowOverwrite = false) {
|
|
6
|
+
for (const columnType of plugin.columnTypes) {
|
|
7
|
+
if (columnTypeMap.has(columnType.kind) && !allowOverwrite) {
|
|
8
|
+
const existing = columnTypeMap.get(columnType.kind);
|
|
9
|
+
if (existing !== columnType) {
|
|
10
|
+
throw new Error(`Duplicate column type kind registered: ${columnType.kind}`);
|
|
11
|
+
}
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
columnTypeMap.set(columnType.kind, columnType);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function ensureBuiltins() {
|
|
18
|
+
if (builtinsRegistered)
|
|
19
|
+
return;
|
|
20
|
+
builtinsRegistered = true;
|
|
21
|
+
pluginRegistry.push(builtinPlugin);
|
|
22
|
+
indexColumnTypes(builtinPlugin, true);
|
|
23
|
+
}
|
|
24
|
+
export function registerPlugin(plugin) {
|
|
25
|
+
ensureBuiltins();
|
|
26
|
+
if (!pluginRegistry.some((p) => p.name === plugin.name)) {
|
|
27
|
+
pluginRegistry.push(plugin);
|
|
28
|
+
}
|
|
29
|
+
indexColumnTypes(plugin, true);
|
|
30
|
+
}
|
|
31
|
+
export function getPluginRegistry() {
|
|
32
|
+
ensureBuiltins();
|
|
33
|
+
return pluginRegistry;
|
|
34
|
+
}
|
|
35
|
+
export function getColumnType(kind) {
|
|
36
|
+
ensureBuiltins();
|
|
37
|
+
if (kind === "fk") {
|
|
38
|
+
return columnTypeMap.get("text");
|
|
39
|
+
}
|
|
40
|
+
return columnTypeMap.get(kind);
|
|
41
|
+
}
|
|
42
|
+
export function getColumnTypeOrThrow(kind) {
|
|
43
|
+
const columnType = getColumnType(kind);
|
|
44
|
+
if (!columnType) {
|
|
45
|
+
throw new Error(`Unknown column kind "${kind}". Import the plugin that provides this type (e.g. import "neoorm/plugins/postgis").`);
|
|
46
|
+
}
|
|
47
|
+
return columnType;
|
|
48
|
+
}
|
|
49
|
+
export function clearPluginRegistry() {
|
|
50
|
+
pluginRegistry.length = 0;
|
|
51
|
+
columnTypeMap.clear();
|
|
52
|
+
builtinsRegistered = false;
|
|
53
|
+
}
|
|
54
|
+
export function collectExtensions(plugins) {
|
|
55
|
+
const extensions = new Set();
|
|
56
|
+
for (const plugin of plugins) {
|
|
57
|
+
for (const ext of plugin.extensions ?? []) {
|
|
58
|
+
extensions.add(ext);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return [...extensions];
|
|
62
|
+
}
|
|
63
|
+
export function collectExtensionsForKinds(kinds) {
|
|
64
|
+
const extensions = new Set();
|
|
65
|
+
ensureBuiltins();
|
|
66
|
+
for (const kind of kinds) {
|
|
67
|
+
if (kind === "fk")
|
|
68
|
+
continue;
|
|
69
|
+
for (const plugin of pluginRegistry) {
|
|
70
|
+
if (!plugin.columnTypes.some((columnType) => columnType.kind === kind)) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
for (const ext of plugin.extensions ?? []) {
|
|
74
|
+
extensions.add(ext);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return [...extensions];
|
|
79
|
+
}
|
|
80
|
+
export function findIntrospectColumnType(pgDataType, udtName) {
|
|
81
|
+
ensureBuiltins();
|
|
82
|
+
for (const columnType of columnTypeMap.values()) {
|
|
83
|
+
if (columnType.introspect?.(pgDataType, udtName)) {
|
|
84
|
+
return columnType;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ColumnBuilder, ColumnMeta } from "../schema/column.js";
|
|
2
|
+
import type { ManifestColumn } from "../dialect/types.js";
|
|
3
|
+
export type PluginWhereCompileResult = {
|
|
4
|
+
sql: string;
|
|
5
|
+
params: unknown[];
|
|
6
|
+
};
|
|
7
|
+
export type PluginWhereOperator = {
|
|
8
|
+
compile: (sqlCol: string, value: unknown, col: ManifestColumn, startParamIndex: number) => PluginWhereCompileResult;
|
|
9
|
+
};
|
|
10
|
+
export type ColumnTypePlugin = {
|
|
11
|
+
readonly kind: string;
|
|
12
|
+
createBuilder(options?: Record<string, unknown>): ColumnBuilder<unknown>;
|
|
13
|
+
columnType(col: ManifestColumn): string;
|
|
14
|
+
columnTsType(col: ManifestColumn): string;
|
|
15
|
+
formatDefault?(col: ManifestColumn, value: unknown): string;
|
|
16
|
+
selectExpression?(col: ManifestColumn): string;
|
|
17
|
+
writeExpression?(col: ManifestColumn, paramIndex: number): string;
|
|
18
|
+
serializeValue?(col: ManifestColumn, value: unknown): unknown;
|
|
19
|
+
deserializeValue?(col: ManifestColumn, dbValue: unknown): unknown;
|
|
20
|
+
whereOperators?: Record<string, PluginWhereOperator>;
|
|
21
|
+
introspect?(pgDataType: string, udtName: string): boolean;
|
|
22
|
+
};
|
|
23
|
+
export type NeoOrmPlugin = {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly extensions?: readonly string[];
|
|
26
|
+
readonly columnTypes: readonly ColumnTypePlugin[];
|
|
27
|
+
};
|
|
28
|
+
export type ExtendedColumnMeta = ColumnMeta & {
|
|
29
|
+
kind: string;
|
|
30
|
+
typeOptions?: Record<string, unknown>;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,cAAc,EACnB,eAAe,EAAE,MAAM,KACpB,wBAAwB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACzE,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAAC;IACxC,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAAC;IAC1C,aAAa,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5D,gBAAgB,CAAC,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAAC;IAC/C,eAAe,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAClE,cAAc,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9D,gBAAgB,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACrD,UAAU,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":""}
|
package/dist/runtime/client.d.ts
CHANGED
|
@@ -70,5 +70,5 @@ export interface NeoOrmClient {
|
|
|
70
70
|
}
|
|
71
71
|
export declare function createNeoOrmClient<TTables extends Record<string, TableDef>, TIncludes extends Record<keyof TTables & string, unknown> = DefaultWithMap<TTables>, TRowPayloads extends Record<keyof TTables & string, Record<string, unknown>> = DefaultRowPayloadMap<TTables>>(manifest: Manifest, connectionString?: string): TypedNeoOrmClient<TTables, TIncludes, TRowPayloads>;
|
|
72
72
|
export declare function createNeoOrmClientFromPool<TTables extends Record<string, TableDef>, TIncludes extends Record<keyof TTables & string, unknown> = DefaultWithMap<TTables>, TRowPayloads extends Record<keyof TTables & string, Record<string, unknown>> = DefaultRowPayloadMap<TTables>>(manifest: Manifest, pool: Pool): TypedNeoOrmClient<TTables, TIncludes, TRowPayloads>;
|
|
73
|
-
export type { TypedNeoOrmClient, TypedTableRepository, DefaultWithMap, DefaultRowPayloadMap } from "./types.js";
|
|
73
|
+
export type { TypedNeoOrmClient, TypedTableRepository, DefaultWithMap, DefaultRowPayloadMap, TransactionClient, TransactionOptions, TransactionIsolationLevel, } from "./types.js";
|
|
74
74
|
//# sourceMappingURL=client.d.ts.map
|