typeorm-hasura 0.0.20 → 0.0.22

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.
@@ -2,8 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Column = Column;
4
4
  exports.HasuraColumn = Column;
5
- exports.Column = Column;
6
- exports.HasuraColumn = Column;
7
5
  const internalStorage_1 = require("../internalStorage");
8
6
  function Column(options) {
9
7
  return function (object, propertyName) {
@@ -1 +1 @@
1
- {"version":3,"file":"Column.js","sourceRoot":"","sources":["../../../src/decorators/Column.ts"],"names":[],"mappings":";;AAGA,wBAIC;AAGa,8BAAY;AAP1B,wBAIC;AAGa,8BAAY;AAV1B,wDAAqD;AAGrD,SAAgB,MAAM,CAAC,OAAuB;IAC1C,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,iCAAe,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"Column.js","sourceRoot":"","sources":["../../../src/decorators/Column.ts"],"names":[],"mappings":";;AAGA,wBAIC;AAGa,8BAAY;AAV1B,wDAAqD;AAGrD,SAAgB,MAAM,CAAC,OAAuB;IAC1C,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,iCAAe,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC;AACN,CAAC"}
@@ -2,8 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Entity = Entity;
4
4
  exports.HasuraEntity = Entity;
5
- exports.Entity = Entity;
6
- exports.HasuraEntity = Entity;
7
5
  const internalStorage_1 = require("../internalStorage");
8
6
  function Entity(options) {
9
7
  return (target) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../../src/decorators/Entity.ts"],"names":[],"mappings":";;AAGA,wBAIC;AAGa,8BAAY;AAP1B,wBAIC;AAGa,8BAAY;AAV1B,wDAAqD;AAGrD,SAAgB,MAAM,CAAwB,OAA8B;IACxE,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,iCAAe,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../../src/decorators/Entity.ts"],"names":[],"mappings":";;AAGA,wBAIC;AAGa,8BAAY;AAV1B,wDAAqD;AAGrD,SAAgB,MAAM,CAAwB,OAA8B;IACxE,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,iCAAe,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const typeorm_1 = require("typeorm");
4
+ const databaseUrl_1 = require("./databaseUrl");
5
+ describe('mappers', () => {
6
+ describe('databaseUrl', () => {
7
+ it('should return postgres for postgres', () => {
8
+ const dataSource = new typeorm_1.DataSource({
9
+ type: 'postgres',
10
+ host: 'localhost',
11
+ port: 5432,
12
+ username: 'test-user',
13
+ password: 'test-password',
14
+ database: 'test-database',
15
+ });
16
+ expect((0, databaseUrl_1.getDatabaseUrl)({
17
+ name: 'default',
18
+ dataSource
19
+ })).toEqual('postgres://test-user:test-password@localhost:5432/test-database');
20
+ });
21
+ it('should throw for unsupported type', () => {
22
+ const dataSource = new typeorm_1.DataSource({
23
+ type: 'sqljs',
24
+ driver: {}
25
+ });
26
+ expect(() => (0, databaseUrl_1.getDatabaseUrl)({
27
+ name: 'default',
28
+ dataSource
29
+ })).toThrow();
30
+ });
31
+ });
32
+ });
33
+ //# sourceMappingURL=databaseUrl.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databaseUrl.spec.js","sourceRoot":"","sources":["../../../src/mappers/databaseUrl.spec.ts"],"names":[],"mappings":";;AACA,qCAAqC;AACrC,+CAA+C;AAE/C,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC;gBAC9B,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,WAAW;gBACrB,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,eAAe;aAC5B,CAAC,CAAC;YACH,MAAM,CAAC,IAAA,4BAAc,EAAC;gBAClB,IAAI,EAAE,SAAS;gBACf,UAAU;aACb,CAAC,CAAC,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC;gBAC9B,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,EAAE;aACb,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,4BAAc,EAAC;gBACxB,IAAI,EAAE,SAAS;gBACf,UAAU;aACb,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const graphql_tag_1 = require("graphql-tag");
4
+ const graphql_1 = require("./graphql");
5
+ describe("convert graphql document to hasura defs", () => {
6
+ it("Base case", () => expect((0, graphql_1.getGraphQLDefinitions)((0, graphql_tag_1.default) `
7
+ type Query {
8
+ currencyConverter(CurrencyInfo: ConvertCurrencyInputParams!): ConvertedCurrency
9
+ }
10
+
11
+ input ConvertCurrencyInputParams {
12
+ from: String
13
+ to: String
14
+ amt: Int
15
+ }
16
+
17
+ type ConvertedCurrency {
18
+ date: String
19
+ info: ConvertedCurrencyInfo
20
+ query: ConvertedCurrencyQuery
21
+ result: Float
22
+ success: Boolean
23
+ }
24
+
25
+ type ConvertedCurrencyInfo {
26
+ rate: Float
27
+ }
28
+
29
+ type ConvertedCurrencyQuery {
30
+ amount: Int
31
+ from: String
32
+ to: String
33
+ }
34
+ `)).toEqual({
35
+ baseActions: [
36
+ {
37
+ name: "currencyConverter",
38
+ definition: {
39
+ "type": "query",
40
+ output_type: "ConvertedCurrency",
41
+ "arguments": [
42
+ {
43
+ "name": "CurrencyInfo",
44
+ "type": "ConvertCurrencyInputParams!"
45
+ }
46
+ ],
47
+ }
48
+ }
49
+ ],
50
+ "custom_types": {
51
+ "input_objects": [
52
+ {
53
+ "name": "ConvertCurrencyInputParams",
54
+ "fields": [
55
+ {
56
+ "name": "from",
57
+ "type": "String"
58
+ },
59
+ {
60
+ "name": "to",
61
+ "type": "String"
62
+ },
63
+ {
64
+ "name": "amt",
65
+ "type": "Int"
66
+ }
67
+ ]
68
+ }
69
+ ],
70
+ "objects": [
71
+ {
72
+ "name": "ConvertedCurrency",
73
+ "fields": [
74
+ {
75
+ "name": "date",
76
+ "type": "String"
77
+ },
78
+ {
79
+ "name": "info",
80
+ "type": "ConvertedCurrencyInfo"
81
+ },
82
+ {
83
+ "name": "query",
84
+ "type": "ConvertedCurrencyQuery"
85
+ },
86
+ {
87
+ "name": "result",
88
+ "type": "Float"
89
+ },
90
+ {
91
+ "name": "success",
92
+ "type": "Boolean"
93
+ }
94
+ ]
95
+ },
96
+ {
97
+ "name": "ConvertedCurrencyInfo",
98
+ "fields": [
99
+ {
100
+ "name": "rate",
101
+ "type": "Float"
102
+ }
103
+ ]
104
+ },
105
+ {
106
+ "name": "ConvertedCurrencyQuery",
107
+ "fields": [
108
+ {
109
+ "name": "amount",
110
+ "type": "Int"
111
+ },
112
+ {
113
+ "name": "from",
114
+ "type": "String"
115
+ },
116
+ {
117
+ "name": "to",
118
+ "type": "String"
119
+ }
120
+ ]
121
+ },
122
+ ],
123
+ "scalars": []
124
+ }
125
+ }));
126
+ });
127
+ //# sourceMappingURL=graphql.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.spec.js","sourceRoot":"","sources":["../../../src/mappers/graphql.spec.ts"],"names":[],"mappings":";;AAAA,6CAA6B;AAC7B,uCAAiD;AAEjD,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAA,+BAAqB,EAAC,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BrD,CAAC,CAAC,CAAC,OAAO,CAAC;QACR,WAAW,EAAE;YACT;gBACI,IAAI,EAAE,mBAAmB;gBACzB,UAAU,EAAE;oBACR,MAAM,EAAE,OAAO;oBACf,WAAW,EAAE,mBAAmB;oBAChC,WAAW,EAAE;wBACT;4BACI,MAAM,EAAE,cAAc;4BACtB,MAAM,EAAE,6BAA6B;yBACxC;qBACJ;iBACJ;aACJ;SACJ;QACD,cAAc,EAAE;YACZ,eAAe,EAAE;gBACb;oBACI,MAAM,EAAE,4BAA4B;oBACpC,QAAQ,EAAE;wBACN;4BACI,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,QAAQ;yBACnB;wBACD;4BACI,MAAM,EAAE,IAAI;4BACZ,MAAM,EAAE,QAAQ;yBACnB;wBACD;4BACI,MAAM,EAAE,KAAK;4BACb,MAAM,EAAE,KAAK;yBAChB;qBACJ;iBACJ;aACJ;YACD,SAAS,EAAE;gBACP;oBACI,MAAM,EAAE,mBAAmB;oBAC3B,QAAQ,EAAE;wBACN;4BACI,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,QAAQ;yBACnB;wBACD;4BACI,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,uBAAuB;yBAClC;wBACD;4BACI,MAAM,EAAE,OAAO;4BACf,MAAM,EAAE,wBAAwB;yBACnC;wBACD;4BACI,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,OAAO;yBAClB;wBACD;4BACI,MAAM,EAAE,SAAS;4BACjB,MAAM,EAAE,SAAS;yBACpB;qBACJ;iBACJ;gBACD;oBACI,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ,EAAE;wBACN;4BACI,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,OAAO;yBAClB;qBACJ;iBACJ;gBACD;oBACI,MAAM,EAAE,wBAAwB;oBAChC,QAAQ,EAAE;wBACN;4BACI,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,KAAK;yBAChB;wBACD;4BACI,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,QAAQ;yBACnB;wBACD;4BACI,MAAM,EAAE,IAAI;4BACZ,MAAM,EAAE,QAAQ;yBACnB;qBACJ;iBACJ;aACJ;YACD,SAAS,EAAE,EAAE;SAChB;KACJ,CAAC,CAAC,CAAA;AACP,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hasuraKind_1 = require("./hasuraKind");
4
+ describe('mappers', () => {
5
+ describe('hasuraKind', () => {
6
+ it('should return postgres for postgres', () => {
7
+ expect((0, hasuraKind_1.getHasuraKind)('postgres')).toEqual('postgres');
8
+ });
9
+ it('should throw for unsupported type', () => {
10
+ expect(() => (0, hasuraKind_1.getHasuraKind)('mysql')).toThrow();
11
+ });
12
+ });
13
+ });
14
+ //# sourceMappingURL=hasuraKind.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasuraKind.spec.js","sourceRoot":"","sources":["../../../src/mappers/hasuraKind.spec.ts"],"names":[],"mappings":";;AAAA,6CAA6C;AAE7C,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAa,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const permissions_1 = require("./permissions");
4
+ const dataSourceOptions = {};
5
+ const table = {
6
+ columns: [
7
+ { databaseName: "id", type: 'uuid' },
8
+ { databaseName: "name", type: 'text' },
9
+ { databaseName: "orgId", type: 'uuid' },
10
+ { databaseName: "testJsonB", type: 'jsonb' }
11
+ ],
12
+ relations: [
13
+ {
14
+ propertyName: "org",
15
+ inverseEntityMetadata: {
16
+ columns: [
17
+ { databaseName: "id", type: 'uuid' },
18
+ { databaseName: "name", type: 'text' },
19
+ ],
20
+ relations: [{}]
21
+ }
22
+ },
23
+ {
24
+ propertyName: "products",
25
+ inverseEntityMetadata: {
26
+ columns: [
27
+ { databaseName: "id", type: 'uuid' },
28
+ { databaseName: "name", type: 'text' },
29
+ { databaseName: "orgId", type: 'uuid' },
30
+ { databaseName: "userId", type: 'uuid' },
31
+ ],
32
+ relations: [{}]
33
+ }
34
+ }
35
+ ]
36
+ };
37
+ let TestColumns = [
38
+ {
39
+ object: 1,
40
+ propertyName: "id",
41
+ options: {
42
+ permissions: {
43
+ user: ["select", "update"]
44
+ }
45
+ }
46
+ }
47
+ ];
48
+ const cases = [
49
+ {
50
+ input: {
51
+ permissions: {
52
+ user: {
53
+ where: {
54
+ id: "1"
55
+ },
56
+ select: true,
57
+ }
58
+ }
59
+ },
60
+ output: {
61
+ insert_permissions: [],
62
+ select_permissions: [{
63
+ role: "user",
64
+ permission: {
65
+ allow_aggregations: undefined,
66
+ columns: ["id"],
67
+ filter: {
68
+ id: { _eq: "1" }
69
+ },
70
+ limit: undefined
71
+ }
72
+ }],
73
+ update_permissions: [],
74
+ delete_permissions: [],
75
+ }
76
+ },
77
+ {
78
+ input: {
79
+ permissions: {
80
+ user: {
81
+ where: {
82
+ id: "1"
83
+ },
84
+ select: true,
85
+ update: true,
86
+ }
87
+ }
88
+ },
89
+ output: {
90
+ insert_permissions: [],
91
+ select_permissions: [{
92
+ role: "user",
93
+ permission: {
94
+ allow_aggregations: undefined,
95
+ columns: ["id"],
96
+ filter: {
97
+ id: { _eq: "1" }
98
+ },
99
+ limit: undefined
100
+ }
101
+ }],
102
+ update_permissions: [{
103
+ role: "user",
104
+ permission: {
105
+ check: {},
106
+ columns: ["id"],
107
+ filter: {
108
+ id: { _eq: "1" }
109
+ },
110
+ set: undefined
111
+ }
112
+ }],
113
+ delete_permissions: [],
114
+ }
115
+ },
116
+ {
117
+ input: {
118
+ permissions: {
119
+ user: {
120
+ where: {
121
+ id: "1"
122
+ },
123
+ select: true,
124
+ update: {
125
+ where: {
126
+ products: {
127
+ id: "1"
128
+ }
129
+ },
130
+ },
131
+ }
132
+ }
133
+ },
134
+ output: {
135
+ insert_permissions: [],
136
+ select_permissions: [{
137
+ role: "user",
138
+ permission: {
139
+ allow_aggregations: undefined,
140
+ columns: ["id"],
141
+ filter: {
142
+ id: { _eq: "1" }
143
+ },
144
+ limit: undefined
145
+ }
146
+ }],
147
+ update_permissions: [{
148
+ role: "user",
149
+ permission: {
150
+ check: {},
151
+ columns: ["id"],
152
+ filter: {
153
+ _and: [
154
+ { id: { _eq: "1" } },
155
+ {
156
+ products: {
157
+ id: { _eq: "1" }
158
+ }
159
+ }
160
+ ]
161
+ },
162
+ set: undefined
163
+ }
164
+ }],
165
+ delete_permissions: [],
166
+ }
167
+ }
168
+ ];
169
+ describe("convert whereTypeorm to hasuraObj", () => {
170
+ cases.forEach(({ input, output }) => it("input to Equal output", () => expect((0, permissions_1.generatePermissions)(dataSourceOptions, table, { entityOptions: input, columnMetadata: TestColumns }))
171
+ .toEqual(output)));
172
+ });
173
+ //# sourceMappingURL=permissions.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.spec.js","sourceRoot":"","sources":["../../../src/mappers/permissions.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const typeorm_1 = require("typeorm");
4
+ const whereClause_1 = require("./whereClause");
5
+ const table = {
6
+ columns: [
7
+ { databaseName: "id", type: 'uuid' },
8
+ { databaseName: "name", type: 'text' },
9
+ { databaseName: "orgId", type: 'uuid' },
10
+ { databaseName: "testJsonB", type: 'jsonb' }
11
+ ],
12
+ relations: [
13
+ {
14
+ propertyName: "org",
15
+ inverseEntityMetadata: {
16
+ columns: [
17
+ { databaseName: "id", type: 'uuid' },
18
+ { databaseName: "name", type: 'text' },
19
+ ],
20
+ relations: [{}]
21
+ }
22
+ },
23
+ {
24
+ propertyName: "products",
25
+ inverseEntityMetadata: {
26
+ columns: [
27
+ { databaseName: "id", type: 'uuid' },
28
+ { databaseName: "name", type: 'text' },
29
+ { databaseName: "orgId", type: 'uuid' },
30
+ { databaseName: "userId", type: 'uuid' },
31
+ ],
32
+ relations: [{}]
33
+ }
34
+ }
35
+ ]
36
+ };
37
+ const cases = [
38
+ {
39
+ input: {
40
+ id: "1",
41
+ },
42
+ output: {
43
+ id: { _eq: "1" }
44
+ }
45
+ },
46
+ {
47
+ input: {
48
+ id: "1",
49
+ name: "test"
50
+ },
51
+ output: {
52
+ _and: [
53
+ { id: { _eq: "1" } },
54
+ { name: { _eq: "test" } }
55
+ ]
56
+ }
57
+ },
58
+ {
59
+ input: [
60
+ { id: "1", name: "test" },
61
+ { id: "2", name: "test" }
62
+ ],
63
+ output: {
64
+ _or: [
65
+ { _and: [{ id: { _eq: "1" } }, { name: { _eq: "test" } }] },
66
+ { _and: [{ id: { _eq: "2" } }, { name: { _eq: "test" } }] }
67
+ ]
68
+ }
69
+ },
70
+ {
71
+ input: {
72
+ id: (0, typeorm_1.Not)("1")
73
+ },
74
+ output: {
75
+ id: { _neq: "1" }
76
+ }
77
+ },
78
+ {
79
+ input: [
80
+ { id: (0, typeorm_1.Not)("1"), name: "test" },
81
+ { id: "2", name: (0, typeorm_1.In)(["test"]) }
82
+ ],
83
+ output: {
84
+ _or: [
85
+ { _and: [{ id: { _neq: "1" } }, { name: { _eq: "test" } }] },
86
+ { _and: [{ id: { _eq: "2" } }, { name: { _in: ["test"] } }] }
87
+ ],
88
+ },
89
+ },
90
+ {
91
+ input: {
92
+ products: {
93
+ id: "1"
94
+ }
95
+ },
96
+ output: {
97
+ products: {
98
+ id: { _eq: "1" },
99
+ }
100
+ }
101
+ },
102
+ {
103
+ input: {
104
+ products: [
105
+ {
106
+ id: "1"
107
+ },
108
+ {
109
+ id: "2"
110
+ }
111
+ ]
112
+ },
113
+ output: {
114
+ products: {
115
+ _or: [
116
+ { id: { _eq: "1" } },
117
+ { id: { _eq: "2" } }
118
+ ]
119
+ }
120
+ }
121
+ },
122
+ {
123
+ input: {
124
+ products: {
125
+ id: (0, typeorm_1.Not)((0, typeorm_1.IsNull)())
126
+ }
127
+ },
128
+ output: {
129
+ products: {
130
+ id: { _is_null: false },
131
+ }
132
+ }
133
+ },
134
+ {
135
+ input: {
136
+ products: {
137
+ id: (0, typeorm_1.Not)("test")
138
+ }
139
+ },
140
+ output: {
141
+ products: {
142
+ id: { _neq: "test" },
143
+ }
144
+ }
145
+ },
146
+ {
147
+ input: {
148
+ products: {
149
+ id: (0, typeorm_1.IsNull)()
150
+ }
151
+ },
152
+ output: {
153
+ products: {
154
+ id: { _is_null: true },
155
+ }
156
+ }
157
+ },
158
+ {
159
+ input: {
160
+ testJsonB: {
161
+ name: "test"
162
+ }
163
+ },
164
+ output: {
165
+ testJsonB: {
166
+ _contains: {
167
+ name: "test"
168
+ }
169
+ }
170
+ }
171
+ },
172
+ {
173
+ input: {
174
+ testJsonB: (0, typeorm_1.Not)({
175
+ name: "test"
176
+ })
177
+ },
178
+ output: {
179
+ _not: {
180
+ testJsonB: {
181
+ _contains: {
182
+ name: "test"
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
+ ];
189
+ describe("convert whereTypeorm to hasuraObj", () => {
190
+ cases.forEach(({ input, output }) => it("input to Equal output", () => expect((0, whereClause_1.convertWhereClause)(table, input)).toEqual(output)));
191
+ });
192
+ //# sourceMappingURL=whereClause.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whereClause.spec.js","sourceRoot":"","sources":["../../../src/mappers/whereClause.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typeorm-hasura",
3
- "version": "0.0.20",
3
+ "version": "0.0.22",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "hasura",
@@ -24,10 +24,10 @@
24
24
  "url": "https://github.com/utyfua/typeorm-hasura/issues"
25
25
  },
26
26
  "scripts": {
27
- "clean": "rimraf -g dist/*",
28
- "prebuild": "run-s clean",
29
- "build": "run-s build:tsc",
30
- "build:tsc": "tsc --module commonjs",
27
+ "prepublish": "run-s build",
28
+ "prebuild": "rimraf -g dist/*",
29
+ "build": "tsc --module commonjs",
30
+ "pretest": "run-s build",
31
31
  "test": "jest",
32
32
  "test:watch": "jest --watch",
33
33
  "play:gen": "npx env-cmd --silent npx typeorm-ts-node-commonjs migration:generate ./dev-playground/migration/next -d ./dev-playground/data-source.ts",
@@ -52,7 +52,7 @@
52
52
  "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
53
53
  "graphql-tag": "^2.0.0",
54
54
  "hasura-metadata-types": "^2.22.1",
55
- "typeorm": "^0.3.0"
55
+ "typeorm": "^0.3.0 || ^1.0.0 || >=1.0.0-nightly.0 <1.0.1"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/jest": "^29.5.0",
@@ -66,6 +66,7 @@
66
66
  "rimraf": "^6.0.1",
67
67
  "ts-jest": "^29.0.5",
68
68
  "ts-node": "^10.9.1",
69
- "typeorm": "^0.3.14"
69
+ "typeorm": "^0.3.14",
70
+ "typescript": "^5.9.3"
70
71
  }
71
72
  }
package/readme.md CHANGED
@@ -16,7 +16,7 @@ making it easier to manage complex database schemas and permissions when using H
16
16
  > The library does not support ManyToMany relationships.
17
17
 
18
18
  > [!NOTE]
19
- > The library was tested with Hasura v2 and TypeORM v0.3 with PostgreSQL only.
19
+ > The library was tested with Hasura v2 and TypeORM v0.3/v1-nightly.20260426 with PostgreSQL only.
20
20
 
21
21
  ## Installation
22
22
 
@@ -1,32 +1,31 @@
1
1
 
2
+ import { DataSource } from "typeorm";
2
3
  import { getDatabaseUrl } from "./databaseUrl";
3
4
 
4
5
  describe('mappers', () => {
5
6
  describe('databaseUrl', () => {
6
7
  it('should return postgres for postgres', () => {
8
+ const dataSource = new DataSource({
9
+ type: 'postgres',
10
+ host: 'localhost',
11
+ port: 5432,
12
+ username: 'test-user',
13
+ password: 'test-password',
14
+ database: 'test-database',
15
+ });
7
16
  expect(getDatabaseUrl({
8
- dataSource: {
9
- name: 'default',
10
- // @ts-ignore
11
- type: 'postgres',
12
- options: {
13
- type: 'postgres',
14
- host: 'localhost',
15
- port: 5432,
16
- username: 'test-user',
17
- password: 'test-password',
18
- database: 'test-database',
19
- }
20
- }
17
+ name: 'default',
18
+ dataSource
21
19
  })).toEqual('postgres://test-user:test-password@localhost:5432/test-database');
22
20
  });
23
21
  it('should throw for unsupported type', () => {
22
+ const dataSource = new DataSource({
23
+ type: 'sqljs',
24
+ driver: {}
25
+ });
24
26
  expect(() => getDatabaseUrl({
25
- dataSource: {
26
- name: 'default',
27
- // @ts-ignore
28
- type: 'mysql',
29
- }
27
+ name: 'default',
28
+ dataSource
30
29
  })).toThrow();
31
30
  });
32
31
  });