@restura/core 0.1.0-alpha.22 → 0.1.0-alpha.24
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/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +129 -131
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +129 -131
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -711,9 +711,7 @@ function addApiResponseFunctions(req, res, next) {
|
|
|
711
711
|
function authenticateUser(applicationAuthenticateHandler) {
|
|
712
712
|
return (req, res, next) => {
|
|
713
713
|
applicationAuthenticateHandler(req, res, (userDetails) => {
|
|
714
|
-
req.requesterDetails
|
|
715
|
-
req.requesterDetails.ipAddress = req.ip || "";
|
|
716
|
-
req.requesterDetails = __spreadValues(__spreadValues({}, req.requesterDetails), userDetails);
|
|
714
|
+
req.requesterDetails = __spreadValues({ host: req.hostname, ipAddress: req.ip || "" }, userDetails);
|
|
717
715
|
next();
|
|
718
716
|
});
|
|
719
717
|
};
|
|
@@ -1229,6 +1227,133 @@ import getDiff from "@wmfs/pg-diff-sync";
|
|
|
1229
1227
|
import pgInfo from "@wmfs/pg-info";
|
|
1230
1228
|
import pg2 from "pg";
|
|
1231
1229
|
|
|
1230
|
+
// src/restura/eventManager.ts
|
|
1231
|
+
import Bluebird2 from "bluebird";
|
|
1232
|
+
var EventManager = class {
|
|
1233
|
+
constructor() {
|
|
1234
|
+
this.actionHandlers = {
|
|
1235
|
+
DATABASE_ROW_DELETE: [],
|
|
1236
|
+
DATABASE_ROW_INSERT: [],
|
|
1237
|
+
DATABASE_COLUMN_UPDATE: []
|
|
1238
|
+
};
|
|
1239
|
+
}
|
|
1240
|
+
addRowInsertHandler(onInsert, filter) {
|
|
1241
|
+
this.actionHandlers.DATABASE_ROW_INSERT.push({
|
|
1242
|
+
callback: onInsert,
|
|
1243
|
+
filter
|
|
1244
|
+
});
|
|
1245
|
+
}
|
|
1246
|
+
addColumnChangeHandler(onUpdate, filter) {
|
|
1247
|
+
this.actionHandlers.DATABASE_COLUMN_UPDATE.push({
|
|
1248
|
+
callback: onUpdate,
|
|
1249
|
+
filter
|
|
1250
|
+
});
|
|
1251
|
+
}
|
|
1252
|
+
addRowDeleteHandler(onDelete, filter) {
|
|
1253
|
+
this.actionHandlers.DATABASE_ROW_DELETE.push({
|
|
1254
|
+
callback: onDelete,
|
|
1255
|
+
filter
|
|
1256
|
+
});
|
|
1257
|
+
}
|
|
1258
|
+
async fireActionFromDbTrigger(sqlMutationData, result) {
|
|
1259
|
+
if (sqlMutationData.mutationType === "INSERT") {
|
|
1260
|
+
await this.fireInsertActions(sqlMutationData, result);
|
|
1261
|
+
} else if (sqlMutationData.mutationType === "UPDATE") {
|
|
1262
|
+
await this.fireUpdateActions(sqlMutationData, result);
|
|
1263
|
+
} else if (sqlMutationData.mutationType === "DELETE") {
|
|
1264
|
+
await this.fireDeleteActions(sqlMutationData, result);
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1267
|
+
async fireInsertActions(data, triggerResult) {
|
|
1268
|
+
await Bluebird2.map(
|
|
1269
|
+
this.actionHandlers.DATABASE_ROW_INSERT,
|
|
1270
|
+
({ callback, filter }) => {
|
|
1271
|
+
if (!this.hasHandlersForEventType("DATABASE_ROW_INSERT", filter, triggerResult)) return;
|
|
1272
|
+
const insertData = {
|
|
1273
|
+
tableName: triggerResult.table,
|
|
1274
|
+
insertId: triggerResult.record.id,
|
|
1275
|
+
insertObject: triggerResult.record,
|
|
1276
|
+
queryMetadata: data.queryMetadata
|
|
1277
|
+
};
|
|
1278
|
+
callback(insertData, data.queryMetadata);
|
|
1279
|
+
},
|
|
1280
|
+
{ concurrency: 10 }
|
|
1281
|
+
);
|
|
1282
|
+
}
|
|
1283
|
+
async fireDeleteActions(data, triggerResult) {
|
|
1284
|
+
await Bluebird2.map(
|
|
1285
|
+
this.actionHandlers.DATABASE_ROW_DELETE,
|
|
1286
|
+
({ callback, filter }) => {
|
|
1287
|
+
if (!this.hasHandlersForEventType("DATABASE_ROW_DELETE", filter, triggerResult)) return;
|
|
1288
|
+
const deleteData = {
|
|
1289
|
+
tableName: triggerResult.table,
|
|
1290
|
+
deletedRow: triggerResult.previousRecord,
|
|
1291
|
+
queryMetadata: data.queryMetadata
|
|
1292
|
+
};
|
|
1293
|
+
callback(deleteData, data.queryMetadata);
|
|
1294
|
+
},
|
|
1295
|
+
{ concurrency: 10 }
|
|
1296
|
+
);
|
|
1297
|
+
}
|
|
1298
|
+
async fireUpdateActions(data, triggerResult) {
|
|
1299
|
+
await Bluebird2.map(
|
|
1300
|
+
this.actionHandlers.DATABASE_COLUMN_UPDATE,
|
|
1301
|
+
({ callback, filter }) => {
|
|
1302
|
+
if (!this.hasHandlersForEventType("DATABASE_COLUMN_UPDATE", filter, triggerResult)) return;
|
|
1303
|
+
const columnChangeData = {
|
|
1304
|
+
tableName: triggerResult.table,
|
|
1305
|
+
rowId: triggerResult.record.id,
|
|
1306
|
+
newData: triggerResult.record,
|
|
1307
|
+
oldData: triggerResult.previousRecord,
|
|
1308
|
+
queryMetadata: data.queryMetadata
|
|
1309
|
+
};
|
|
1310
|
+
callback(columnChangeData, data.queryMetadata);
|
|
1311
|
+
},
|
|
1312
|
+
{ concurrency: 10 }
|
|
1313
|
+
);
|
|
1314
|
+
}
|
|
1315
|
+
hasHandlersForEventType(eventType, filter, triggerResult) {
|
|
1316
|
+
if (filter) {
|
|
1317
|
+
switch (eventType) {
|
|
1318
|
+
case "DATABASE_ROW_INSERT":
|
|
1319
|
+
case "DATABASE_ROW_DELETE":
|
|
1320
|
+
if (filter.tableName && filter.tableName !== triggerResult.table) return false;
|
|
1321
|
+
break;
|
|
1322
|
+
case "DATABASE_COLUMN_UPDATE":
|
|
1323
|
+
const filterColumnChange = filter;
|
|
1324
|
+
if (filterColumnChange.tableName !== filter.tableName) return false;
|
|
1325
|
+
if (!filterColumnChange.columns.some((item) => {
|
|
1326
|
+
const updatedColumns = Object.keys(
|
|
1327
|
+
changedValues(triggerResult.record, triggerResult.previousRecord)
|
|
1328
|
+
);
|
|
1329
|
+
return updatedColumns.includes(item);
|
|
1330
|
+
}))
|
|
1331
|
+
return false;
|
|
1332
|
+
break;
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
return true;
|
|
1336
|
+
}
|
|
1337
|
+
};
|
|
1338
|
+
var eventManager = new EventManager();
|
|
1339
|
+
var eventManager_default = eventManager;
|
|
1340
|
+
function changedValues(record, previousRecord) {
|
|
1341
|
+
const changed = {};
|
|
1342
|
+
for (const i in previousRecord) {
|
|
1343
|
+
if (previousRecord[i] !== record[i]) {
|
|
1344
|
+
if (typeof previousRecord[i] === "object" && typeof record[i] === "object") {
|
|
1345
|
+
const nestedChanged = changedValues(record[i], previousRecord[i]);
|
|
1346
|
+
if (Object.keys(nestedChanged).length > 0) {
|
|
1347
|
+
changed[i] = record[i];
|
|
1348
|
+
}
|
|
1349
|
+
} else {
|
|
1350
|
+
changed[i] = record[i];
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1354
|
+
return changed;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1232
1357
|
// src/restura/sql/PsqlPool.ts
|
|
1233
1358
|
import pg from "pg";
|
|
1234
1359
|
|
|
@@ -1573,133 +1698,6 @@ var filterPsqlParser = peg.generate(filterSqlGrammar, {
|
|
|
1573
1698
|
});
|
|
1574
1699
|
var filterPsqlParser_default = filterPsqlParser;
|
|
1575
1700
|
|
|
1576
|
-
// src/restura/eventManager.ts
|
|
1577
|
-
import Bluebird2 from "bluebird";
|
|
1578
|
-
var EventManager = class {
|
|
1579
|
-
constructor() {
|
|
1580
|
-
this.actionHandlers = {
|
|
1581
|
-
DATABASE_ROW_DELETE: [],
|
|
1582
|
-
DATABASE_ROW_INSERT: [],
|
|
1583
|
-
DATABASE_COLUMN_UPDATE: []
|
|
1584
|
-
};
|
|
1585
|
-
}
|
|
1586
|
-
addRowInsertHandler(onInsert, filter) {
|
|
1587
|
-
this.actionHandlers.DATABASE_ROW_INSERT.push({
|
|
1588
|
-
callback: onInsert,
|
|
1589
|
-
filter
|
|
1590
|
-
});
|
|
1591
|
-
}
|
|
1592
|
-
addColumnChangeHandler(onUpdate, filter) {
|
|
1593
|
-
this.actionHandlers.DATABASE_COLUMN_UPDATE.push({
|
|
1594
|
-
callback: onUpdate,
|
|
1595
|
-
filter
|
|
1596
|
-
});
|
|
1597
|
-
}
|
|
1598
|
-
addRowDeleteHandler(onDelete, filter) {
|
|
1599
|
-
this.actionHandlers.DATABASE_ROW_DELETE.push({
|
|
1600
|
-
callback: onDelete,
|
|
1601
|
-
filter
|
|
1602
|
-
});
|
|
1603
|
-
}
|
|
1604
|
-
async fireActionFromDbTrigger(sqlMutationData, result) {
|
|
1605
|
-
if (sqlMutationData.mutationType === "INSERT") {
|
|
1606
|
-
await this.fireInsertActions(sqlMutationData, result);
|
|
1607
|
-
} else if (sqlMutationData.mutationType === "UPDATE") {
|
|
1608
|
-
await this.fireUpdateActions(sqlMutationData, result);
|
|
1609
|
-
} else if (sqlMutationData.mutationType === "DELETE") {
|
|
1610
|
-
await this.fireDeleteActions(sqlMutationData, result);
|
|
1611
|
-
}
|
|
1612
|
-
}
|
|
1613
|
-
async fireInsertActions(data, triggerResult) {
|
|
1614
|
-
await Bluebird2.map(
|
|
1615
|
-
this.actionHandlers.DATABASE_ROW_INSERT,
|
|
1616
|
-
({ callback, filter }) => {
|
|
1617
|
-
if (!this.hasHandlersForEventType("DATABASE_ROW_INSERT", filter, triggerResult)) return;
|
|
1618
|
-
const insertData = {
|
|
1619
|
-
tableName: triggerResult.table,
|
|
1620
|
-
insertId: triggerResult.record.id,
|
|
1621
|
-
insertObject: triggerResult.record,
|
|
1622
|
-
queryMetadata: data.queryMetadata
|
|
1623
|
-
};
|
|
1624
|
-
callback(insertData, data.queryMetadata);
|
|
1625
|
-
},
|
|
1626
|
-
{ concurrency: 10 }
|
|
1627
|
-
);
|
|
1628
|
-
}
|
|
1629
|
-
async fireDeleteActions(data, triggerResult) {
|
|
1630
|
-
await Bluebird2.map(
|
|
1631
|
-
this.actionHandlers.DATABASE_ROW_DELETE,
|
|
1632
|
-
({ callback, filter }) => {
|
|
1633
|
-
if (!this.hasHandlersForEventType("DATABASE_ROW_DELETE", filter, triggerResult)) return;
|
|
1634
|
-
const deleteData = {
|
|
1635
|
-
tableName: triggerResult.table,
|
|
1636
|
-
deletedRow: triggerResult.previousRecord,
|
|
1637
|
-
queryMetadata: data.queryMetadata
|
|
1638
|
-
};
|
|
1639
|
-
callback(deleteData, data.queryMetadata);
|
|
1640
|
-
},
|
|
1641
|
-
{ concurrency: 10 }
|
|
1642
|
-
);
|
|
1643
|
-
}
|
|
1644
|
-
async fireUpdateActions(data, triggerResult) {
|
|
1645
|
-
await Bluebird2.map(
|
|
1646
|
-
this.actionHandlers.DATABASE_COLUMN_UPDATE,
|
|
1647
|
-
({ callback, filter }) => {
|
|
1648
|
-
if (!this.hasHandlersForEventType("DATABASE_COLUMN_UPDATE", filter, triggerResult)) return;
|
|
1649
|
-
const columnChangeData = {
|
|
1650
|
-
tableName: triggerResult.table,
|
|
1651
|
-
rowId: triggerResult.record.id,
|
|
1652
|
-
newData: triggerResult.record,
|
|
1653
|
-
oldData: triggerResult.previousRecord,
|
|
1654
|
-
queryMetadata: data.queryMetadata
|
|
1655
|
-
};
|
|
1656
|
-
callback(columnChangeData, data.queryMetadata);
|
|
1657
|
-
},
|
|
1658
|
-
{ concurrency: 10 }
|
|
1659
|
-
);
|
|
1660
|
-
}
|
|
1661
|
-
hasHandlersForEventType(eventType, filter, triggerResult) {
|
|
1662
|
-
if (filter) {
|
|
1663
|
-
switch (eventType) {
|
|
1664
|
-
case "DATABASE_ROW_INSERT":
|
|
1665
|
-
case "DATABASE_ROW_DELETE":
|
|
1666
|
-
if (filter.tableName && filter.tableName !== triggerResult.table) return false;
|
|
1667
|
-
break;
|
|
1668
|
-
case "DATABASE_COLUMN_UPDATE":
|
|
1669
|
-
const filterColumnChange = filter;
|
|
1670
|
-
if (filterColumnChange.tableName !== filter.tableName) return false;
|
|
1671
|
-
if (!filterColumnChange.columns.some((item) => {
|
|
1672
|
-
const updatedColumns = Object.keys(
|
|
1673
|
-
changedValues(triggerResult.record, triggerResult.previousRecord)
|
|
1674
|
-
);
|
|
1675
|
-
return updatedColumns.includes(item);
|
|
1676
|
-
}))
|
|
1677
|
-
return false;
|
|
1678
|
-
break;
|
|
1679
|
-
}
|
|
1680
|
-
}
|
|
1681
|
-
return true;
|
|
1682
|
-
}
|
|
1683
|
-
};
|
|
1684
|
-
var eventManager = new EventManager();
|
|
1685
|
-
var eventManager_default = eventManager;
|
|
1686
|
-
function changedValues(record, previousRecord) {
|
|
1687
|
-
const changed = {};
|
|
1688
|
-
for (const i in previousRecord) {
|
|
1689
|
-
if (previousRecord[i] !== record[i]) {
|
|
1690
|
-
if (typeof previousRecord[i] === "object" && typeof record[i] === "object") {
|
|
1691
|
-
const nestedChanged = changedValues(record[i], previousRecord[i]);
|
|
1692
|
-
if (Object.keys(nestedChanged).length > 0) {
|
|
1693
|
-
changed[i] = record[i];
|
|
1694
|
-
}
|
|
1695
|
-
} else {
|
|
1696
|
-
changed[i] = record[i];
|
|
1697
|
-
}
|
|
1698
|
-
}
|
|
1699
|
-
}
|
|
1700
|
-
return changed;
|
|
1701
|
-
}
|
|
1702
|
-
|
|
1703
1701
|
// src/restura/sql/PsqlEngine.ts
|
|
1704
1702
|
var { Client } = pg2;
|
|
1705
1703
|
var systemUser = {
|
|
@@ -1728,7 +1726,7 @@ var PsqlEngine = class extends SqlEngine {
|
|
|
1728
1726
|
database: this.psqlConnectionPool.poolConfig.database,
|
|
1729
1727
|
password: this.psqlConnectionPool.poolConfig.password,
|
|
1730
1728
|
port: this.psqlConnectionPool.poolConfig.port,
|
|
1731
|
-
connectionTimeoutMillis:
|
|
1729
|
+
connectionTimeoutMillis: this.psqlConnectionPool.poolConfig.connectionTimeoutMillis
|
|
1732
1730
|
});
|
|
1733
1731
|
await this.triggerClient.connect();
|
|
1734
1732
|
const promises = [];
|