prostgles-server 2.0.178 → 2.0.181

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.
Files changed (103) hide show
  1. package/dist/AuthHandler.d.ts +4 -4
  2. package/dist/AuthHandler.d.ts.map +1 -1
  3. package/dist/DBSchemaBuilder.d.ts +6 -6
  4. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  5. package/dist/DBSchemaBuilder.js +38 -15
  6. package/dist/DBSchemaBuilder.js.map +1 -1
  7. package/dist/DboBuilder.d.ts +20 -21
  8. package/dist/DboBuilder.d.ts.map +1 -1
  9. package/dist/DboBuilder.js +7 -2
  10. package/dist/DboBuilder.js.map +1 -1
  11. package/dist/Prostgles.d.ts +8 -10
  12. package/dist/Prostgles.d.ts.map +1 -1
  13. package/dist/Prostgles.js.map +1 -1
  14. package/dist/PubSubManager.js +1 -1
  15. package/dist/PubSubManager.js.map +1 -1
  16. package/dist/PublishParser.d.ts +37 -37
  17. package/dist/PublishParser.d.ts.map +1 -1
  18. package/dist/PublishParser.js.map +1 -1
  19. package/dist/index.d.ts +2 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/lib/AuthHandler.d.ts +148 -0
  23. package/lib/AuthHandler.d.ts.map +1 -0
  24. package/lib/AuthHandler.js +411 -0
  25. package/lib/AuthHandler.ts +3 -3
  26. package/lib/DBEventsManager.d.ts +38 -0
  27. package/lib/DBEventsManager.d.ts.map +1 -0
  28. package/lib/DBEventsManager.js +136 -0
  29. package/lib/DBSchemaBuilder.d.ts +11 -0
  30. package/lib/DBSchemaBuilder.d.ts.map +1 -0
  31. package/lib/DBSchemaBuilder.js +108 -0
  32. package/lib/DBSchemaBuilder.ts +75 -33
  33. package/lib/DboBuilder.d.ts +428 -0
  34. package/lib/DboBuilder.d.ts.map +1 -0
  35. package/lib/DboBuilder.js +3083 -0
  36. package/lib/DboBuilder.ts +33 -27
  37. package/lib/FileManager.d.ts +168 -0
  38. package/lib/FileManager.d.ts.map +1 -0
  39. package/lib/FileManager.js +474 -0
  40. package/lib/Filtering.d.ts +15 -0
  41. package/lib/Filtering.d.ts.map +1 -0
  42. package/lib/Filtering.js +299 -0
  43. package/lib/PostgresNotifListenManager.d.ts +27 -0
  44. package/lib/PostgresNotifListenManager.d.ts.map +1 -0
  45. package/lib/PostgresNotifListenManager.js +122 -0
  46. package/lib/Prostgles.d.ts +193 -0
  47. package/lib/Prostgles.d.ts.map +1 -0
  48. package/lib/Prostgles.js +579 -0
  49. package/lib/Prostgles.ts +6 -6
  50. package/lib/PubSubManager.d.ts +157 -0
  51. package/lib/PubSubManager.d.ts.map +1 -0
  52. package/lib/PubSubManager.js +1400 -0
  53. package/lib/PubSubManager.ts +1 -1
  54. package/lib/PublishParser.d.ts +262 -0
  55. package/lib/PublishParser.d.ts.map +1 -0
  56. package/lib/PublishParser.js +390 -0
  57. package/lib/PublishParser.ts +39 -38
  58. package/lib/QueryBuilder.d.ts +124 -0
  59. package/lib/QueryBuilder.d.ts.map +1 -0
  60. package/lib/QueryBuilder.js +1349 -0
  61. package/lib/SyncReplication.d.ts +34 -0
  62. package/lib/SyncReplication.d.ts.map +1 -0
  63. package/lib/SyncReplication.js +411 -0
  64. package/lib/TableConfig.d.ts +175 -0
  65. package/lib/TableConfig.d.ts.map +1 -0
  66. package/lib/TableConfig.js +231 -0
  67. package/lib/index.d.ts +10 -0
  68. package/lib/index.d.ts.map +1 -0
  69. package/lib/index.js +45 -0
  70. package/lib/index.ts +3 -4
  71. package/lib/shortestPath.d.ts +10 -0
  72. package/lib/shortestPath.d.ts.map +1 -0
  73. package/lib/shortestPath.js +111 -0
  74. package/lib/utils.d.ts +2 -0
  75. package/lib/utils.d.ts.map +1 -0
  76. package/lib/utils.js +5 -0
  77. package/package.json +3 -3
  78. package/tests/client/PID.txt +1 -1
  79. package/tests/client/index.d.ts +1 -1
  80. package/tests/client/index.d.ts.map +1 -1
  81. package/tests/client/package-lock.json +15 -15
  82. package/tests/client/package.json +1 -1
  83. package/tests/client_only_queries.d.ts +4 -0
  84. package/tests/client_only_queries.d.ts.map +1 -0
  85. package/tests/isomorphic_queries.d.ts +6 -0
  86. package/tests/isomorphic_queries.d.ts.map +1 -0
  87. package/tests/server/DBoGenerated.d.ts +227 -323
  88. package/tests/server/dboTypeCheck.d.ts +2 -0
  89. package/tests/server/dboTypeCheck.d.ts.map +1 -0
  90. package/tests/server/dboTypeCheck.js +16 -0
  91. package/tests/server/dboTypeCheck.ts +20 -0
  92. package/tests/server/index.d.ts +2 -0
  93. package/tests/server/index.d.ts.map +1 -0
  94. package/tests/server/index.js +11 -11
  95. package/tests/server/index.ts +23 -16
  96. package/tests/server/package-lock.json +5 -5
  97. package/tests/server/publishTypeCheck.d.ts +2 -0
  98. package/tests/server/publishTypeCheck.d.ts.map +1 -0
  99. package/tests/server/publishTypeCheck.js +120 -0
  100. package/tests/server/publishTypeCheck.ts +129 -0
  101. package/tests/server/tsconfig.json +4 -5
  102. package/tests/server_only_queries.d.ts +2 -0
  103. package/tests/server_only_queries.d.ts.map +1 -0
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testDboTypes = void 0;
4
+ const testDboTypes = () => {
5
+ (async () => {
6
+ const dbo = 1;
7
+ dbo.someTable?.find;
8
+ const dbo1 = 1;
9
+ dbo1.w?.find;
10
+ const db = 1;
11
+ db.items2.find;
12
+ const values = await db.items2.find({}, { select: { items_id: 1 }, returnType: "values" });
13
+ const numArr = values;
14
+ });
15
+ };
16
+ exports.testDboTypes = testDboTypes;
@@ -0,0 +1,20 @@
1
+ import type { DBOFullyTyped } from "../../dist/DBSchemaBuilder";
2
+ import type { DBHandlerServer } from "../../dist/DboBuilder";
3
+ import { DBSchemaGenerated } from "./DBoGenerated";
4
+
5
+ export const testDboTypes = () => {
6
+ (async () => {
7
+ const dbo: DBOFullyTyped = 1 as any;
8
+ dbo.someTable?.find;
9
+
10
+ const dbo1: DBHandlerServer = 1 as any;
11
+ dbo1.w?.find;
12
+
13
+
14
+ const db: DBOFullyTyped<DBSchemaGenerated> = 1 as any;
15
+ db.items2.find;
16
+
17
+ const values = await db.items2.find({}, { select: { items_id: 1 }, returnType: "values" });
18
+ const numArr: number[] = values;
19
+ })
20
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":""}
@@ -45,6 +45,12 @@ const dbConnection = {
45
45
  // user: "usr",
46
46
  // password: "usr",
47
47
  };
48
+ function dd() {
49
+ const dbo = 1;
50
+ if (!dbo)
51
+ return;
52
+ dbo.tbl.find;
53
+ }
48
54
  (async () => {
49
55
  log("created prostgles");
50
56
  const tableConfig = {
@@ -80,6 +86,7 @@ const dbConnection = {
80
86
  }
81
87
  }
82
88
  };
89
+ // ProstglesInitOptions<DBSchemaGenerated>
83
90
  let prgl = await (0, prostgles_server_1.default)({
84
91
  dbConnection,
85
92
  sqlFilePath: path_1.default.join(__dirname + '/init.sql'),
@@ -109,6 +116,8 @@ const dbConnection = {
109
116
  onSocketDisconnect: (socket, db) => {
110
117
  log("onSocketDisconnect");
111
118
  console.trace("onSocketDisconnect");
119
+ // const c: DBOFullyTyped<DBSchemaGenerated> = 1 as any;
120
+ // c["*"].
112
121
  },
113
122
  onSocketConnect: (socket, db) => {
114
123
  log("onSocketConnect");
@@ -187,7 +196,7 @@ const dbConnection = {
187
196
  };
188
197
  },
189
198
  publish: async ({ user }) => {
190
- return {
199
+ const res = {
191
200
  shapes: "*",
192
201
  items: "*",
193
202
  items2: "*",
@@ -261,16 +270,7 @@ const dbConnection = {
261
270
  }
262
271
  }
263
272
  };
264
- // return {
265
- // items: {
266
- // select: {
267
- // fields: "*",
268
- // forcedFilter: {
269
- // $exists: { items3: { name: "a" } }
270
- // }
271
- // }
272
- // }
273
- // };
273
+ return res;
274
274
  },
275
275
  // joins: "inferred",
276
276
  joins: [
@@ -5,7 +5,9 @@ import prostgles from "prostgles-server";
5
5
  const app = express();
6
6
  const http = require('http').createServer(app);
7
7
  const { exec } = require('child_process');
8
+ import { testPublishTypes } from "./publishTypeCheck";
8
9
 
10
+ import { testDboTypes } from "./dboTypeCheck"
9
11
 
10
12
  const clientTest = (process.env.TEST_TYPE === "client");
11
13
  const io = !clientTest? undefined : require("socket.io")(http, { path: "/teztz/s" });
@@ -15,10 +17,13 @@ http.listen(3001);
15
17
  import isomorphic from "../isomorphic_queries";
16
18
  import server_only_queries from "../server_only_queries";
17
19
 
18
- import { DBObj, DBSchema } from "./DBoGenerated";
20
+ import { DBSchemaGenerated } from "./DBoGenerated";
19
21
  // type DBObj = any;
20
22
 
21
23
  import { TableConfig } from '../../dist/TableConfig';
24
+ import { DBOFullyTyped } from "../../lib/DBSchemaBuilder";
25
+ import { ProstglesInitOptions } from "../../dist/Prostgles";
26
+ import { PublishFullyTyped } from "../../dist/DBSchemaBuilder";
22
27
 
23
28
  const log = (msg: string, extra?: any, trace?: boolean) => {
24
29
  const msgs = ["(server): " + msg, extra].filter(v => v);
@@ -59,6 +64,14 @@ const dbConnection = {
59
64
  // password: "usr",
60
65
  };
61
66
 
67
+ function dd(){
68
+
69
+ const dbo: DBOFullyTyped<{ tbl: { is_view: true; columns: { col1: { type: number } } }}> = 1 as any
70
+ if(!dbo) return;
71
+ dbo.tbl.find
72
+
73
+ }
74
+
62
75
  (async () => {
63
76
 
64
77
 
@@ -96,8 +109,9 @@ const dbConnection = {
96
109
  }
97
110
  }
98
111
  }
99
- }
100
- let prgl = await prostgles<DBSchema>({
112
+ }
113
+ // ProstglesInitOptions<DBSchemaGenerated>
114
+ let prgl = await prostgles<DBSchemaGenerated>({
101
115
  dbConnection,
102
116
  sqlFilePath: path.join(__dirname+'/init.sql'),
103
117
  io,
@@ -127,7 +141,9 @@ const dbConnection = {
127
141
 
128
142
  onSocketDisconnect: (socket, db) => {
129
143
  log("onSocketDisconnect")
130
- console.trace("onSocketDisconnect")
144
+ console.trace("onSocketDisconnect");
145
+ // const c: DBOFullyTyped<DBSchemaGenerated> = 1 as any;
146
+ // c["*"].
131
147
  },
132
148
 
133
149
  onSocketConnect: (socket, db) => {
@@ -210,7 +226,7 @@ const dbConnection = {
210
226
  }
211
227
  },
212
228
  publish: async ({ user }) => {
213
- return {
229
+ const res: PublishFullyTyped<DBSchemaGenerated> = {
214
230
  shapes: "*",
215
231
  items: "*",
216
232
  items2: "*",
@@ -286,16 +302,7 @@ const dbConnection = {
286
302
  }
287
303
  };
288
304
 
289
- // return {
290
- // items: {
291
- // select: {
292
- // fields: "*",
293
- // forcedFilter: {
294
- // $exists: { items3: { name: "a" } }
295
- // }
296
- // }
297
- // }
298
- // };
305
+ return res;
299
306
  },
300
307
  // joins: "inferred",
301
308
  joins: [
@@ -388,4 +395,4 @@ async function tout(millis){
388
395
  re(true);
389
396
  }, millis)
390
397
  })
391
- }
398
+ }
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "../..": {
23
23
  "name": "prostgles-server",
24
- "version": "2.0.177",
24
+ "version": "2.0.180",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
27
  "@aws-sdk/client-s3": "^3.95.0",
@@ -29,7 +29,7 @@
29
29
  "bluebird": "^3.7.2",
30
30
  "file-type": "^16.5.3",
31
31
  "pg-promise": "^10.11.1",
32
- "prostgles-types": "^1.5.153",
32
+ "prostgles-types": "^1.5.156",
33
33
  "sharp": "^0.30.5"
34
34
  },
35
35
  "devDependencies": {
@@ -37,7 +37,7 @@
37
37
  "@types/bluebird": "^3.5.36",
38
38
  "@types/node": "^14.14.35",
39
39
  "@types/sharp": "^0.30.2",
40
- "typescript": "^4.7.2"
40
+ "typescript": "^4.7.3"
41
41
  }
42
42
  },
43
43
  "node_modules/@types/component-emitter": {
@@ -1371,9 +1371,9 @@
1371
1371
  "bluebird": "^3.7.2",
1372
1372
  "file-type": "^16.5.3",
1373
1373
  "pg-promise": "^10.11.1",
1374
- "prostgles-types": "^1.5.153",
1374
+ "prostgles-types": "^1.5.156",
1375
1375
  "sharp": "^0.30.5",
1376
- "typescript": "^4.7.2"
1376
+ "typescript": "^4.7.3"
1377
1377
  }
1378
1378
  },
1379
1379
  "proxy-addr": {
@@ -0,0 +1,2 @@
1
+ export declare const testPublishTypes: () => void;
2
+ //# sourceMappingURL=publishTypeCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishTypeCheck.d.ts","sourceRoot":"","sources":["publishTypeCheck.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,YA2H5B,CAAA"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testPublishTypes = void 0;
4
+ const testPublishTypes = () => {
5
+ (() => {
6
+ const p1 = {
7
+ items: {
8
+ delete: "*",
9
+ select: {
10
+ fields: { h: 1, id: 1 },
11
+ forcedFilter: { h: { $overlaps: ["23", "32"] } }
12
+ }
13
+ },
14
+ items3: "*"
15
+ };
16
+ const p2 = "*";
17
+ const p11 = {
18
+ items: {
19
+ delete: "*",
20
+ select: {
21
+ fields: { h: 1, id: 1 },
22
+ forcedFilter: { h: { $overlaps: ["23", "32"] } }
23
+ }
24
+ },
25
+ items3: "*"
26
+ };
27
+ const p12 = "*";
28
+ const res = {
29
+ shapes: "*",
30
+ items: "*",
31
+ items2: "*",
32
+ items3: "*",
33
+ v_items: "*",
34
+ various: "*",
35
+ tr1: "*",
36
+ tr2: "*",
37
+ planes: {
38
+ select: "*",
39
+ update: "*",
40
+ insert: "*",
41
+ delete: "*",
42
+ sync: {
43
+ id_fields: ["id"],
44
+ synced_field: "last_updated"
45
+ }
46
+ },
47
+ items4: {
48
+ select: Math.random() ? "*" : {
49
+ fields: { name: 0 },
50
+ forcedFilter: { name: "abc" }
51
+ },
52
+ insert: "*",
53
+ update: "*",
54
+ delete: "*"
55
+ },
56
+ items4_pub: "*",
57
+ "*": {
58
+ select: { fields: { "*": 0 } },
59
+ insert: "*",
60
+ update: "*",
61
+ },
62
+ [`"*"`]: {
63
+ select: { fields: { [`"*"`]: 0 } },
64
+ insert: "*",
65
+ update: "*",
66
+ },
67
+ obj_table: "*",
68
+ media: "*",
69
+ items_with_one_media: "*",
70
+ items_with_media: "*",
71
+ prostgles_lookup_media_items_with_one_media: "*",
72
+ prostgles_lookup_media_items_with_media: "*",
73
+ insert_rules: {
74
+ insert: {
75
+ fields: "*",
76
+ returningFields: { name: 1 },
77
+ validate: async (row) => {
78
+ if (row.name === "a")
79
+ row.name = "b";
80
+ return row;
81
+ }
82
+ }
83
+ },
84
+ uuid_text: {
85
+ insert: {
86
+ fields: "*",
87
+ forcedData: {
88
+ id: 'c81089e1-c4c1-45d7-a73d-e2d613cb7c3e'
89
+ }
90
+ },
91
+ update: {
92
+ fields: [],
93
+ dynamicFields: [{
94
+ fields: { id: 1 },
95
+ filter: {
96
+ id: 'c81089e1-c4c1-45d7-a73d-e2d613cb7c3e'
97
+ }
98
+ }]
99
+ }
100
+ }
101
+ };
102
+ const res2 = res;
103
+ const res3 = {
104
+ items: {
105
+ select: {
106
+ fields: {
107
+ h: 1
108
+ },
109
+ forcedFilter: {
110
+ // "h.$eq": ["2"]
111
+ $and: [
112
+ { "h.$eq": ["2"] }
113
+ ]
114
+ }
115
+ }
116
+ }
117
+ };
118
+ });
119
+ };
120
+ exports.testPublishTypes = testPublishTypes;
@@ -0,0 +1,129 @@
1
+
2
+ import { DBSchemaGenerated } from "./DBoGenerated";
3
+
4
+ import { PublishFullyTyped } from "../../dist/DBSchemaBuilder";
5
+ import { FullFilter } from "prostgles-types";
6
+ export const testPublishTypes = () => {
7
+ (() => {
8
+ const p1: PublishFullyTyped<DBSchemaGenerated> = {
9
+ items: {
10
+ delete: "*",
11
+ select: {
12
+ fields: { h: 1, id: 1 },
13
+ forcedFilter: { h: { $overlaps: ["23", "32"]} }
14
+ }
15
+ },
16
+ items3: "*"
17
+ }
18
+ const p2: PublishFullyTyped<DBSchemaGenerated> = "*"
19
+
20
+ const p11: PublishFullyTyped = {
21
+ items: {
22
+ delete: "*",
23
+ select: {
24
+ fields: { h: 1, id: 1 },
25
+ forcedFilter: { h: { $overlaps: ["23", "32"]} }
26
+ }
27
+ },
28
+ items3: "*"
29
+ };
30
+
31
+ const p12: PublishFullyTyped = "*";
32
+
33
+
34
+
35
+ const res: PublishFullyTyped = {
36
+ shapes: "*",
37
+ items: "*",
38
+ items2: "*",
39
+ items3: "*",
40
+ v_items: "*",
41
+ various: "*",
42
+ tr1: "*",
43
+ tr2: "*",
44
+ planes: {
45
+ select: "*",
46
+ update: "*",
47
+ insert: "*",
48
+ delete: "*",
49
+ sync: {
50
+ id_fields: ["id"],
51
+ synced_field: "last_updated"
52
+ }
53
+ },
54
+
55
+ items4: {
56
+ select: Math.random()? "*" : {
57
+ fields: { name: 0 },
58
+ forcedFilter: { name: "abc" }
59
+ },
60
+ insert: "*",
61
+ update: "*",
62
+ delete: "*"
63
+ },
64
+
65
+ items4_pub: "*",
66
+ "*": {
67
+ select: { fields: { "*": 0 }},
68
+ insert: "*",
69
+ update: "*",
70
+ },
71
+ [`"*"`]: {
72
+ select: { fields: { [`"*"`]: 0 }},
73
+ insert: "*",
74
+ update: "*",
75
+ },
76
+ obj_table: "*",
77
+ media: "*",
78
+ items_with_one_media: "*",
79
+ items_with_media: "*",
80
+ prostgles_lookup_media_items_with_one_media: "*",
81
+ prostgles_lookup_media_items_with_media: "*",
82
+ insert_rules: {
83
+ insert: {
84
+ fields: "*",
85
+ returningFields: { name: 1 },
86
+ validate: async (row) => {
87
+ if(row.name === "a") row.name = "b"
88
+ return row
89
+ }
90
+ }
91
+ },
92
+ uuid_text: {
93
+ insert: {
94
+ fields: "*",
95
+ forcedData: {
96
+ id: 'c81089e1-c4c1-45d7-a73d-e2d613cb7c3e'
97
+ }
98
+ },
99
+ update: {
100
+ fields: [],
101
+ dynamicFields: [{
102
+ fields: { id: 1 },
103
+ filter: {
104
+ id: 'c81089e1-c4c1-45d7-a73d-e2d613cb7c3e'
105
+ }
106
+ }]
107
+ }
108
+ }
109
+ };
110
+
111
+ const res2: PublishFullyTyped<DBSchemaGenerated> = res;
112
+ const res3: PublishFullyTyped<DBSchemaGenerated> = {
113
+ items: {
114
+ select: {
115
+ fields: {
116
+ h: 1
117
+ },
118
+ forcedFilter: {
119
+ // "h.$eq": ["2"]
120
+ $and: [
121
+ { "h.$eq": ["2"] }
122
+ ]
123
+ }
124
+ }
125
+ }
126
+ };
127
+
128
+ })
129
+ }
@@ -1,17 +1,16 @@
1
1
  {
2
2
  "files": ["./index.ts"],
3
3
  "compilerOptions": {
4
- // "outDir": "dist",
5
4
  "target": "es2020",
6
5
  "lib": [ "es2020" ],
7
6
  "esModuleInterop" : true,
8
7
  "allowSyntheticDefaultImports": true,
8
+ "resolveJsonModule": true,
9
9
  "allowJs": true,
10
10
  "module": "commonjs",
11
- // "sourceMap": true,
12
- // "rootDir": ".",
13
- // "declaration": true,
14
- // "declarationMap": true,
11
+ "moduleResolution": "node",
12
+ "declaration": true,
13
+ "declarationMap": true,
15
14
  "keyofStringsOnly": true
16
15
  },
17
16
  "exclude": [
@@ -0,0 +1,2 @@
1
+ export default function f(db: any): Promise<void>;
2
+ //# sourceMappingURL=server_only_queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server_only_queries.d.ts","sourceRoot":"","sources":["server_only_queries.ts"],"names":[],"mappings":"AAAA,wBAA8B,CAAC,CAAC,EAAE,EAAE,GAAG,iBActC"}