linkgress-orm 0.0.1
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/LICENSE +21 -0
- package/README.md +196 -0
- package/dist/database/database-client.interface.d.ts +45 -0
- package/dist/database/database-client.interface.d.ts.map +1 -0
- package/dist/database/database-client.interface.js +20 -0
- package/dist/database/database-client.interface.js.map +1 -0
- package/dist/database/index.d.ts +5 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +10 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/pg-client.d.ts +30 -0
- package/dist/database/pg-client.d.ts.map +1 -0
- package/dist/database/pg-client.js +76 -0
- package/dist/database/pg-client.js.map +1 -0
- package/dist/database/postgres-client.d.ts +44 -0
- package/dist/database/postgres-client.d.ts.map +1 -0
- package/dist/database/postgres-client.js +111 -0
- package/dist/database/postgres-client.js.map +1 -0
- package/dist/database/types.d.ts +200 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +8 -0
- package/dist/database/types.js.map +1 -0
- package/dist/entity/base-entity.d.ts +21 -0
- package/dist/entity/base-entity.d.ts.map +1 -0
- package/dist/entity/base-entity.js +27 -0
- package/dist/entity/base-entity.js.map +1 -0
- package/dist/entity/db-column.d.ts +61 -0
- package/dist/entity/db-column.d.ts.map +1 -0
- package/dist/entity/db-column.js +35 -0
- package/dist/entity/db-column.js.map +1 -0
- package/dist/entity/db-context.d.ts +665 -0
- package/dist/entity/db-context.d.ts.map +1 -0
- package/dist/entity/db-context.js +1463 -0
- package/dist/entity/db-context.js.map +1 -0
- package/dist/entity/entity-base.d.ts +76 -0
- package/dist/entity/entity-base.d.ts.map +1 -0
- package/dist/entity/entity-base.js +42 -0
- package/dist/entity/entity-base.js.map +1 -0
- package/dist/entity/entity-builder.d.ts +171 -0
- package/dist/entity/entity-builder.d.ts.map +1 -0
- package/dist/entity/entity-builder.js +376 -0
- package/dist/entity/entity-builder.js.map +1 -0
- package/dist/entity/model-config.d.ts +18 -0
- package/dist/entity/model-config.d.ts.map +1 -0
- package/dist/entity/model-config.js +157 -0
- package/dist/entity/model-config.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/migration/db-schema-manager.d.ts +228 -0
- package/dist/migration/db-schema-manager.d.ts.map +1 -0
- package/dist/migration/db-schema-manager.js +1055 -0
- package/dist/migration/db-schema-manager.js.map +1 -0
- package/dist/migration/enum-migrator.d.ts +29 -0
- package/dist/migration/enum-migrator.d.ts.map +1 -0
- package/dist/migration/enum-migrator.js +137 -0
- package/dist/migration/enum-migrator.js.map +1 -0
- package/dist/query/collection-strategy.factory.d.ts +16 -0
- package/dist/query/collection-strategy.factory.d.ts.map +1 -0
- package/dist/query/collection-strategy.factory.js +37 -0
- package/dist/query/collection-strategy.factory.js.map +1 -0
- package/dist/query/collection-strategy.interface.d.ts +146 -0
- package/dist/query/collection-strategy.interface.d.ts.map +1 -0
- package/dist/query/collection-strategy.interface.js +3 -0
- package/dist/query/collection-strategy.interface.js.map +1 -0
- package/dist/query/conditions.d.ts +222 -0
- package/dist/query/conditions.d.ts.map +1 -0
- package/dist/query/conditions.js +446 -0
- package/dist/query/conditions.js.map +1 -0
- package/dist/query/cte-builder.d.ts +95 -0
- package/dist/query/cte-builder.d.ts.map +1 -0
- package/dist/query/cte-builder.js +172 -0
- package/dist/query/cte-builder.js.map +1 -0
- package/dist/query/grouped-query.d.ts +186 -0
- package/dist/query/grouped-query.d.ts.map +1 -0
- package/dist/query/grouped-query.js +588 -0
- package/dist/query/grouped-query.js.map +1 -0
- package/dist/query/join-builder.d.ts +106 -0
- package/dist/query/join-builder.d.ts.map +1 -0
- package/dist/query/join-builder.js +275 -0
- package/dist/query/join-builder.js.map +1 -0
- package/dist/query/query-builder.d.ts +543 -0
- package/dist/query/query-builder.d.ts.map +1 -0
- package/dist/query/query-builder.js +2649 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
- package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
- package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.js +456 -0
- package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
- package/dist/query/subquery.d.ts +152 -0
- package/dist/query/subquery.d.ts.map +1 -0
- package/dist/query/subquery.js +206 -0
- package/dist/query/subquery.js.map +1 -0
- package/dist/schema/column-builder.d.ts +127 -0
- package/dist/schema/column-builder.d.ts.map +1 -0
- package/dist/schema/column-builder.js +184 -0
- package/dist/schema/column-builder.js.map +1 -0
- package/dist/schema/inference.d.ts +26 -0
- package/dist/schema/inference.d.ts.map +1 -0
- package/dist/schema/inference.js +3 -0
- package/dist/schema/inference.js.map +1 -0
- package/dist/schema/navigation.d.ts +215 -0
- package/dist/schema/navigation.d.ts.map +1 -0
- package/dist/schema/navigation.js +233 -0
- package/dist/schema/navigation.js.map +1 -0
- package/dist/schema/row-type.d.ts +26 -0
- package/dist/schema/row-type.d.ts.map +1 -0
- package/dist/schema/row-type.js +3 -0
- package/dist/schema/row-type.js.map +1 -0
- package/dist/schema/sequence-builder.d.ts +87 -0
- package/dist/schema/sequence-builder.d.ts.map +1 -0
- package/dist/schema/sequence-builder.js +123 -0
- package/dist/schema/sequence-builder.js.map +1 -0
- package/dist/schema/table-builder.d.ts +122 -0
- package/dist/schema/table-builder.d.ts.map +1 -0
- package/dist/schema/table-builder.js +132 -0
- package/dist/schema/table-builder.js.map +1 -0
- package/dist/schema/typed-schema.d.ts +22 -0
- package/dist/schema/typed-schema.d.ts.map +1 -0
- package/dist/schema/typed-schema.js +28 -0
- package/dist/schema/typed-schema.js.map +1 -0
- package/dist/types/column-types.d.ts +20 -0
- package/dist/types/column-types.d.ts.map +1 -0
- package/dist/types/column-types.js +14 -0
- package/dist/types/column-types.js.map +1 -0
- package/dist/types/custom-types.d.ts +85 -0
- package/dist/types/custom-types.d.ts.map +1 -0
- package/dist/types/custom-types.js +132 -0
- package/dist/types/custom-types.js.map +1 -0
- package/dist/types/enum-builder.d.ts +31 -0
- package/dist/types/enum-builder.d.ts.map +1 -0
- package/dist/types/enum-builder.js +46 -0
- package/dist/types/enum-builder.js.map +1 -0
- package/dist/types/metadata.d.ts +67 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/metadata.js +57 -0
- package/dist/types/metadata.js.map +1 -0
- package/dist/types/type-mapper.d.ts +49 -0
- package/dist/types/type-mapper.d.ts.map +1 -0
- package/dist/types/type-mapper.js +49 -0
- package/dist/types/type-mapper.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.interval = exports.vector = exports.point = exports.enumType = exports.array = exports.json = exports.CustomTypeBuilder = void 0;
|
|
4
|
+
exports.customType = customType;
|
|
5
|
+
/**
|
|
6
|
+
* Custom type builder
|
|
7
|
+
*/
|
|
8
|
+
class CustomTypeBuilder {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Gets the custom type definition
|
|
14
|
+
*/
|
|
15
|
+
getType() {
|
|
16
|
+
return {
|
|
17
|
+
dataType: this.config.dataType,
|
|
18
|
+
toDriver: this.config.toDriver,
|
|
19
|
+
fromDriver: this.config.fromDriver,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets the PostgreSQL type name
|
|
24
|
+
*/
|
|
25
|
+
get dataType() {
|
|
26
|
+
return this.config.dataType;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.CustomTypeBuilder = CustomTypeBuilder;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a custom type
|
|
32
|
+
*/
|
|
33
|
+
function customType(config) {
|
|
34
|
+
return new CustomTypeBuilder(config);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Common custom types
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* JSON type with automatic serialization
|
|
41
|
+
*/
|
|
42
|
+
const json = () => customType({
|
|
43
|
+
dataType: 'jsonb',
|
|
44
|
+
toDriver: (value) => JSON.stringify(value),
|
|
45
|
+
fromDriver: (value) => JSON.parse(value),
|
|
46
|
+
});
|
|
47
|
+
exports.json = json;
|
|
48
|
+
/**
|
|
49
|
+
* Array type
|
|
50
|
+
*/
|
|
51
|
+
const array = (itemType) => customType({
|
|
52
|
+
dataType: `${itemType}[]`,
|
|
53
|
+
toDriver: (value) => JSON.stringify(value),
|
|
54
|
+
fromDriver: (value) => JSON.parse(value),
|
|
55
|
+
});
|
|
56
|
+
exports.array = array;
|
|
57
|
+
/**
|
|
58
|
+
* Enum type
|
|
59
|
+
*/
|
|
60
|
+
const enumType = (enumName, values) => customType({
|
|
61
|
+
dataType: enumName,
|
|
62
|
+
toDriver: (value) => value,
|
|
63
|
+
fromDriver: (value) => value,
|
|
64
|
+
});
|
|
65
|
+
exports.enumType = enumType;
|
|
66
|
+
const point = () => customType({
|
|
67
|
+
dataType: 'point',
|
|
68
|
+
toDriver: (value) => `(${value.x},${value.y})`,
|
|
69
|
+
fromDriver: (value) => {
|
|
70
|
+
const match = value.match(/\((-?\d+\.?\d*),(-?\d+\.?\d*)\)/);
|
|
71
|
+
if (!match)
|
|
72
|
+
throw new Error(`Invalid point format: ${value}`);
|
|
73
|
+
return { x: parseFloat(match[1]), y: parseFloat(match[2]) };
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
exports.point = point;
|
|
77
|
+
/**
|
|
78
|
+
* Vector type (for pgvector extension)
|
|
79
|
+
*/
|
|
80
|
+
const vector = (dimensions) => customType({
|
|
81
|
+
dataType: `vector(${dimensions})`,
|
|
82
|
+
toDriver: (value) => `[${value.join(',')}]`,
|
|
83
|
+
fromDriver: (value) => {
|
|
84
|
+
const match = value.match(/\[(.*)\]/);
|
|
85
|
+
if (!match)
|
|
86
|
+
throw new Error(`Invalid vector format: ${value}`);
|
|
87
|
+
return match[1].split(',').map(parseFloat);
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
exports.vector = vector;
|
|
91
|
+
const interval = () => customType({
|
|
92
|
+
dataType: 'interval',
|
|
93
|
+
toDriver: (value) => {
|
|
94
|
+
const parts = [];
|
|
95
|
+
if (value.years)
|
|
96
|
+
parts.push(`${value.years} years`);
|
|
97
|
+
if (value.months)
|
|
98
|
+
parts.push(`${value.months} months`);
|
|
99
|
+
if (value.days)
|
|
100
|
+
parts.push(`${value.days} days`);
|
|
101
|
+
if (value.hours)
|
|
102
|
+
parts.push(`${value.hours} hours`);
|
|
103
|
+
if (value.minutes)
|
|
104
|
+
parts.push(`${value.minutes} minutes`);
|
|
105
|
+
if (value.seconds)
|
|
106
|
+
parts.push(`${value.seconds} seconds`);
|
|
107
|
+
return parts.join(' ');
|
|
108
|
+
},
|
|
109
|
+
fromDriver: (value) => {
|
|
110
|
+
const interval = {};
|
|
111
|
+
const parts = value.split(' ');
|
|
112
|
+
for (let i = 0; i < parts.length; i += 2) {
|
|
113
|
+
const num = parseFloat(parts[i]);
|
|
114
|
+
const unit = parts[i + 1];
|
|
115
|
+
if (unit.startsWith('year'))
|
|
116
|
+
interval.years = num;
|
|
117
|
+
else if (unit.startsWith('mon'))
|
|
118
|
+
interval.months = num;
|
|
119
|
+
else if (unit.startsWith('day'))
|
|
120
|
+
interval.days = num;
|
|
121
|
+
else if (unit.startsWith('hour'))
|
|
122
|
+
interval.hours = num;
|
|
123
|
+
else if (unit.startsWith('min'))
|
|
124
|
+
interval.minutes = num;
|
|
125
|
+
else if (unit.startsWith('sec'))
|
|
126
|
+
interval.seconds = num;
|
|
127
|
+
}
|
|
128
|
+
return interval;
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
exports.interval = interval;
|
|
132
|
+
//# sourceMappingURL=custom-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-types.js","sourceRoot":"","sources":["../../src/types/custom-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL ENUM type builder
|
|
3
|
+
*/
|
|
4
|
+
export interface EnumTypeDefinition {
|
|
5
|
+
name: string;
|
|
6
|
+
values: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Registry to store all enum types defined in the schema
|
|
10
|
+
*/
|
|
11
|
+
export declare class EnumTypeRegistry {
|
|
12
|
+
private static enums;
|
|
13
|
+
static register(name: string, values: string[]): void;
|
|
14
|
+
static get(name: string): EnumTypeDefinition | undefined;
|
|
15
|
+
static getAll(): Map<string, EnumTypeDefinition>;
|
|
16
|
+
static clear(): void;
|
|
17
|
+
static has(name: string): boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a PostgreSQL ENUM type
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const statusEnum = pgEnum('order_status', ['pending', 'processing', 'completed', 'cancelled']);
|
|
24
|
+
* entity.property(e => e.status).hasType(enumColumn('status', statusEnum));
|
|
25
|
+
*/
|
|
26
|
+
export declare function pgEnum<T extends readonly string[]>(name: string, values: T): EnumTypeDefinition;
|
|
27
|
+
/**
|
|
28
|
+
* Type helper to extract enum values as a union type
|
|
29
|
+
*/
|
|
30
|
+
export type EnumValues<T extends EnumTypeDefinition> = T['values'][number];
|
|
31
|
+
//# sourceMappingURL=enum-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum-builder.d.ts","sourceRoot":"","sources":["../../src/types/enum-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAyC;IAE7D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIxD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAIhD,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGlC;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,EAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,GACR,kBAAkB,CAUpB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,kBAAkB,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PostgreSQL ENUM type builder
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EnumTypeRegistry = void 0;
|
|
7
|
+
exports.pgEnum = pgEnum;
|
|
8
|
+
/**
|
|
9
|
+
* Registry to store all enum types defined in the schema
|
|
10
|
+
*/
|
|
11
|
+
class EnumTypeRegistry {
|
|
12
|
+
static register(name, values) {
|
|
13
|
+
this.enums.set(name, { name, values });
|
|
14
|
+
}
|
|
15
|
+
static get(name) {
|
|
16
|
+
return this.enums.get(name);
|
|
17
|
+
}
|
|
18
|
+
static getAll() {
|
|
19
|
+
return new Map(this.enums);
|
|
20
|
+
}
|
|
21
|
+
static clear() {
|
|
22
|
+
this.enums.clear();
|
|
23
|
+
}
|
|
24
|
+
static has(name) {
|
|
25
|
+
return this.enums.has(name);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.EnumTypeRegistry = EnumTypeRegistry;
|
|
29
|
+
EnumTypeRegistry.enums = new Map();
|
|
30
|
+
/**
|
|
31
|
+
* Create a PostgreSQL ENUM type
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const statusEnum = pgEnum('order_status', ['pending', 'processing', 'completed', 'cancelled']);
|
|
35
|
+
* entity.property(e => e.status).hasType(enumColumn('status', statusEnum));
|
|
36
|
+
*/
|
|
37
|
+
function pgEnum(name, values) {
|
|
38
|
+
const enumDef = {
|
|
39
|
+
name,
|
|
40
|
+
values: [...values],
|
|
41
|
+
};
|
|
42
|
+
// Register the enum type globally
|
|
43
|
+
EnumTypeRegistry.register(name, enumDef.values);
|
|
44
|
+
return enumDef;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=enum-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum-builder.js","sourceRoot":"","sources":["../../src/types/enum-builder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAyCH,wBAaC;AA/CD;;GAEG;AACH,MAAa,gBAAgB;IAG3B,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,MAAgB;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;;AArBH,4CAsBC;AArBgB,sBAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;AAuB/D;;;;;;GAMG;AACH,SAAgB,MAAM,CACpB,IAAY,EACZ,MAAS;IAET,MAAM,OAAO,GAAuB;QAClC,IAAI;QACJ,MAAM,EAAE,CAAC,GAAG,MAAM,CAAa;KAChC,CAAC;IAEF,kCAAkC;IAClC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ColumnType } from './column-types';
|
|
2
|
+
/**
|
|
3
|
+
* Metadata storage key
|
|
4
|
+
*/
|
|
5
|
+
export declare const METADATA_KEY: unique symbol;
|
|
6
|
+
/**
|
|
7
|
+
* Column metadata
|
|
8
|
+
*/
|
|
9
|
+
export interface ColumnMetadata {
|
|
10
|
+
propertyKey: string;
|
|
11
|
+
columnName: string;
|
|
12
|
+
type: ColumnType;
|
|
13
|
+
nullable: boolean;
|
|
14
|
+
primaryKey: boolean;
|
|
15
|
+
autoIncrement: boolean;
|
|
16
|
+
unique: boolean;
|
|
17
|
+
default?: any;
|
|
18
|
+
length?: number;
|
|
19
|
+
precision?: number;
|
|
20
|
+
scale?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Navigation property types
|
|
24
|
+
*/
|
|
25
|
+
export declare enum NavigationType {
|
|
26
|
+
OneToMany = "OneToMany",
|
|
27
|
+
ManyToOne = "ManyToOne",
|
|
28
|
+
ManyToMany = "ManyToMany"
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Navigation property metadata
|
|
32
|
+
*/
|
|
33
|
+
export interface NavigationMetadata {
|
|
34
|
+
propertyKey: string;
|
|
35
|
+
type: NavigationType;
|
|
36
|
+
targetEntity: () => Function;
|
|
37
|
+
foreignKey?: string;
|
|
38
|
+
inverseSide?: string;
|
|
39
|
+
joinTable?: {
|
|
40
|
+
name: string;
|
|
41
|
+
joinColumn: string;
|
|
42
|
+
inverseJoinColumn: string;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Table metadata
|
|
47
|
+
*/
|
|
48
|
+
export interface TableMetadata {
|
|
49
|
+
tableName: string;
|
|
50
|
+
schema?: string;
|
|
51
|
+
columns: Map<string, ColumnMetadata>;
|
|
52
|
+
navigations: Map<string, NavigationMetadata>;
|
|
53
|
+
primaryKeys: string[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* DbEntity metadata storage
|
|
57
|
+
*/
|
|
58
|
+
export declare class MetadataStorage {
|
|
59
|
+
private static tables;
|
|
60
|
+
static getTableMetadata(target: Function): TableMetadata | undefined;
|
|
61
|
+
static setTableMetadata(target: Function, metadata: TableMetadata): void;
|
|
62
|
+
static ensureTableMetadata(target: Function): TableMetadata;
|
|
63
|
+
static addColumn(target: Function, column: ColumnMetadata): void;
|
|
64
|
+
static addNavigation(target: Function, navigation: NavigationMetadata): void;
|
|
65
|
+
static getAllMetadata(): Map<Function, TableMetadata>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/types/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,YAAY,eAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,UAAU,eAAe;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC;IACrB,YAAY,EAAE,MAAM,QAAQ,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC7C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAsC;IAE3D,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS;IAIpE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIxE,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa;IAc3D,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAQhE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAK5E,MAAM,CAAC,cAAc,IAAI,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC;CAGtD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetadataStorage = exports.NavigationType = exports.METADATA_KEY = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Metadata storage key
|
|
6
|
+
*/
|
|
7
|
+
exports.METADATA_KEY = Symbol('linkgress:metadata');
|
|
8
|
+
/**
|
|
9
|
+
* Navigation property types
|
|
10
|
+
*/
|
|
11
|
+
var NavigationType;
|
|
12
|
+
(function (NavigationType) {
|
|
13
|
+
NavigationType["OneToMany"] = "OneToMany";
|
|
14
|
+
NavigationType["ManyToOne"] = "ManyToOne";
|
|
15
|
+
NavigationType["ManyToMany"] = "ManyToMany";
|
|
16
|
+
})(NavigationType || (exports.NavigationType = NavigationType = {}));
|
|
17
|
+
/**
|
|
18
|
+
* DbEntity metadata storage
|
|
19
|
+
*/
|
|
20
|
+
class MetadataStorage {
|
|
21
|
+
static getTableMetadata(target) {
|
|
22
|
+
return this.tables.get(target);
|
|
23
|
+
}
|
|
24
|
+
static setTableMetadata(target, metadata) {
|
|
25
|
+
this.tables.set(target, metadata);
|
|
26
|
+
}
|
|
27
|
+
static ensureTableMetadata(target) {
|
|
28
|
+
let metadata = this.tables.get(target);
|
|
29
|
+
if (!metadata) {
|
|
30
|
+
metadata = {
|
|
31
|
+
tableName: target.name,
|
|
32
|
+
columns: new Map(),
|
|
33
|
+
navigations: new Map(),
|
|
34
|
+
primaryKeys: [],
|
|
35
|
+
};
|
|
36
|
+
this.tables.set(target, metadata);
|
|
37
|
+
}
|
|
38
|
+
return metadata;
|
|
39
|
+
}
|
|
40
|
+
static addColumn(target, column) {
|
|
41
|
+
const metadata = this.ensureTableMetadata(target);
|
|
42
|
+
metadata.columns.set(column.propertyKey, column);
|
|
43
|
+
if (column.primaryKey) {
|
|
44
|
+
metadata.primaryKeys.push(column.propertyKey);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static addNavigation(target, navigation) {
|
|
48
|
+
const metadata = this.ensureTableMetadata(target);
|
|
49
|
+
metadata.navigations.set(navigation.propertyKey, navigation);
|
|
50
|
+
}
|
|
51
|
+
static getAllMetadata() {
|
|
52
|
+
return this.tables;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.MetadataStorage = MetadataStorage;
|
|
56
|
+
MetadataStorage.tables = new Map();
|
|
57
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/types/metadata.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAmBzD;;GAEG;AACH,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;IACvB,2CAAyB,CAAA;AAC3B,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AA6BD;;GAEG;AACH,MAAa,eAAe;IAG1B,MAAM,CAAC,gBAAgB,CAAC,MAAgB;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAgB,EAAE,QAAuB;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,MAAgB;QACzC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG;gBACT,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,OAAO,EAAE,IAAI,GAAG,EAAE;gBAClB,WAAW,EAAE,IAAI,GAAG,EAAE;gBACtB,WAAW,EAAE,EAAE;aAChB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAAgB,EAAE,MAAsB;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAClD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,MAAgB,EAAE,UAA8B;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAClD,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;;AAxCH,0CAyCC;AAxCgB,sBAAM,GAAG,IAAI,GAAG,EAA2B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom type mapper for bidirectional data transformation
|
|
3
|
+
*/
|
|
4
|
+
export interface TypeMapper<TData = any, TDriver = any> {
|
|
5
|
+
/**
|
|
6
|
+
* Convert from application data type to database driver type
|
|
7
|
+
*/
|
|
8
|
+
toDriver(value: TData | null | undefined): TDriver | null;
|
|
9
|
+
/**
|
|
10
|
+
* Convert from database driver type to application data type
|
|
11
|
+
*/
|
|
12
|
+
fromDriver(value: TDriver | null | undefined): TData | null;
|
|
13
|
+
/**
|
|
14
|
+
* Optional: Get the PostgreSQL data type for schema generation
|
|
15
|
+
*/
|
|
16
|
+
dataType?: () => string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Custom type definition with mapper
|
|
20
|
+
*/
|
|
21
|
+
export interface CustomTypeDefinition<TData = any, TDriver = any> {
|
|
22
|
+
dataType: () => string;
|
|
23
|
+
toDriver: (value: TData | null | undefined) => TDriver | null;
|
|
24
|
+
fromDriver: (value: TDriver | null | undefined) => TData | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a custom type mapper
|
|
28
|
+
*/
|
|
29
|
+
export declare function customType<T extends {
|
|
30
|
+
data: any;
|
|
31
|
+
driverData?: any;
|
|
32
|
+
}>(config: CustomTypeDefinition<T['data'], T['driverData'] extends never ? T['data'] : T['driverData']>): TypeMapper<T['data'], T['driverData'] extends never ? T['data'] : T['driverData']>;
|
|
33
|
+
/**
|
|
34
|
+
* Identity mapper (no transformation)
|
|
35
|
+
*/
|
|
36
|
+
export declare const identityMapper: TypeMapper;
|
|
37
|
+
/**
|
|
38
|
+
* Apply a mapper to a value (toDriver direction)
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyToDriver<TData, TDriver>(mapper: TypeMapper<TData, TDriver> | undefined, value: TData | null | undefined): TDriver | null;
|
|
41
|
+
/**
|
|
42
|
+
* Apply a mapper to a value (fromDriver direction)
|
|
43
|
+
*/
|
|
44
|
+
export declare function applyFromDriver<TData, TDriver>(mapper: TypeMapper<TData, TDriver> | undefined, value: TDriver | null | undefined): TData | null;
|
|
45
|
+
/**
|
|
46
|
+
* Apply mapper to array of values
|
|
47
|
+
*/
|
|
48
|
+
export declare function applyFromDriverArray<TData, TDriver>(mapper: TypeMapper<TData, TDriver> | undefined, values: (TDriver | null)[]): (TData | null)[];
|
|
49
|
+
//# sourceMappingURL=type-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-mapper.d.ts","sourceRoot":"","sources":["../../src/types/type-mapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IACpD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;IAE1D;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IAC9D,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC;IAC9D,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,KAAK,KAAK,GAAG,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,UAAU,CAAC,EAAE,GAAG,CAAA;CAAE,EAClE,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,GACnG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAMpF;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAG5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAC1C,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,SAAS,EAC9C,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAC9B,OAAO,GAAG,IAAI,CAGhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAC5C,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,SAAS,EAC9C,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAChC,KAAK,GAAG,IAAI,CAGd;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EACjD,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,SAAS,EAC9C,MAAM,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,GACzB,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAGlB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.identityMapper = void 0;
|
|
4
|
+
exports.customType = customType;
|
|
5
|
+
exports.applyToDriver = applyToDriver;
|
|
6
|
+
exports.applyFromDriver = applyFromDriver;
|
|
7
|
+
exports.applyFromDriverArray = applyFromDriverArray;
|
|
8
|
+
/**
|
|
9
|
+
* Create a custom type mapper
|
|
10
|
+
*/
|
|
11
|
+
function customType(config) {
|
|
12
|
+
return {
|
|
13
|
+
dataType: config.dataType,
|
|
14
|
+
toDriver: config.toDriver,
|
|
15
|
+
fromDriver: config.fromDriver,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Identity mapper (no transformation)
|
|
20
|
+
*/
|
|
21
|
+
exports.identityMapper = {
|
|
22
|
+
toDriver: (value) => value,
|
|
23
|
+
fromDriver: (value) => value,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Apply a mapper to a value (toDriver direction)
|
|
27
|
+
*/
|
|
28
|
+
function applyToDriver(mapper, value) {
|
|
29
|
+
if (!mapper)
|
|
30
|
+
return value;
|
|
31
|
+
return mapper.toDriver(value);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Apply a mapper to a value (fromDriver direction)
|
|
35
|
+
*/
|
|
36
|
+
function applyFromDriver(mapper, value) {
|
|
37
|
+
if (!mapper)
|
|
38
|
+
return value;
|
|
39
|
+
return mapper.fromDriver(value);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Apply mapper to array of values
|
|
43
|
+
*/
|
|
44
|
+
function applyFromDriverArray(mapper, values) {
|
|
45
|
+
if (!mapper)
|
|
46
|
+
return values;
|
|
47
|
+
return values.map(v => mapper.fromDriver(v));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=type-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-mapper.js","sourceRoot":"","sources":["../../src/types/type-mapper.ts"],"names":[],"mappings":";;;AAgCA,gCAQC;AAaD,sCAMC;AAKD,0CAMC;AAKD,oDAMC;AApDD;;GAEG;AACH,SAAgB,UAAU,CACxB,MAAoG;IAEpG,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED;;GAEG;AACU,QAAA,cAAc,GAAe;IACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IAC1B,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CAC7B,CAAC;AAEF;;GAEG;AACH,SAAgB,aAAa,CAC3B,MAA8C,EAC9C,KAA+B;IAE/B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAY,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,MAA8C,EAC9C,KAAiC;IAEjC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAY,CAAC;IACjC,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAA8C,EAC9C,MAA0B;IAE1B,IAAI,CAAC,MAAM;QAAE,OAAO,MAAe,CAAC;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "linkgress-orm",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A lightweight, type-safe ORM for PostgreSQL with LINQ-style queries and automatic type inference",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"README.md",
|
|
11
|
+
"LICENSE"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "npm run clean && tsc",
|
|
15
|
+
"build:dev": "tsc --project tsconfig.dev.json",
|
|
16
|
+
"clean": "node -e \"require('fs').rmSync('dist', {recursive:true, force:true})\"",
|
|
17
|
+
"type-check": "tsc --noEmit",
|
|
18
|
+
"type-check:dev": "tsc --project tsconfig.dev.json --noEmit",
|
|
19
|
+
"dev": "ts-node debug/index.ts",
|
|
20
|
+
"watch": "tsc --watch",
|
|
21
|
+
"watch:dev": "tsc --project tsconfig.dev.json --watch",
|
|
22
|
+
"migrate": "ts-node debug/schema/migration.ts",
|
|
23
|
+
"test": "jest",
|
|
24
|
+
"test:watch": "jest --watch",
|
|
25
|
+
"test:coverage": "jest --coverage",
|
|
26
|
+
"test:verbose": "jest --verbose",
|
|
27
|
+
"test:single": "jest --testNamePattern",
|
|
28
|
+
"prepublishOnly": "npm run build && npm test"
|
|
29
|
+
},
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/brunolau/linkgress-orm.git"
|
|
33
|
+
},
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/brunolau/linkgress-orm/issues"
|
|
36
|
+
},
|
|
37
|
+
"homepage": "https://github.com/brunolau/linkgress-orm#readme",
|
|
38
|
+
"keywords": [
|
|
39
|
+
"orm",
|
|
40
|
+
"postgresql",
|
|
41
|
+
"postgres",
|
|
42
|
+
"typescript",
|
|
43
|
+
"linq",
|
|
44
|
+
"query-builder",
|
|
45
|
+
"sql",
|
|
46
|
+
"database"
|
|
47
|
+
],
|
|
48
|
+
"author": "",
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=16.0.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@jest/globals": "^30.2.0",
|
|
55
|
+
"@types/jest": "^30.0.0",
|
|
56
|
+
"@types/node": "^20.0.0",
|
|
57
|
+
"@types/pg": "^8.10.0",
|
|
58
|
+
"dotenv": "^16.4.0",
|
|
59
|
+
"jest": "^30.2.0",
|
|
60
|
+
"pg": "^8.11.0",
|
|
61
|
+
"ts-jest": "^29.4.5",
|
|
62
|
+
"ts-node": "^10.9.0",
|
|
63
|
+
"typescript": "^5.3.0"
|
|
64
|
+
},
|
|
65
|
+
"peerDependencies": {
|
|
66
|
+
"pg": "^8.0.0",
|
|
67
|
+
"postgres": "^3.0.0"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"pg": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"postgres": {
|
|
74
|
+
"optional": true
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|