@antelopejs/dms-marketing 0.3.0 → 0.3.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/dist/db/models/marketing_sessions.model.js +15 -11
- package/dist/db/models/marketing_sessions.model.js.map +1 -1
- package/dist/db/models/marketing_settings.model.d.ts +2 -0
- package/dist/db/models/marketing_settings.model.js +18 -2
- package/dist/db/models/marketing_settings.model.js.map +1 -1
- package/dist/db/tables/marketing_sessions.table.js +3 -0
- package/dist/db/tables/marketing_sessions.table.js.map +1 -1
- package/dist/services/settings.js +13 -15
- package/dist/services/settings.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,18 +15,22 @@ class MarketingSessionsModel extends (0, interface_database_decorators_1.BasicDa
|
|
|
15
15
|
return results[0];
|
|
16
16
|
}
|
|
17
17
|
async getLastActivityByWebsites(websiteIds) {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const latest = await Promise.all(websiteIds.map(async (websiteId) => {
|
|
19
|
+
const rows = await this.table
|
|
20
|
+
.getAll(websiteId, "websiteId")
|
|
21
|
+
.orderBy("lastSeenAt", "desc")
|
|
22
|
+
.slice(0, 1)
|
|
23
|
+
.pluck("lastSeenAt")
|
|
24
|
+
.run();
|
|
25
|
+
return [websiteId, rows[0]?.lastSeenAt];
|
|
26
|
+
}));
|
|
27
|
+
const activity = new Map();
|
|
28
|
+
for (const [websiteId, lastSeenAt] of latest) {
|
|
29
|
+
if (lastSeenAt != null) {
|
|
30
|
+
activity.set(websiteId, new Date(lastSeenAt).getTime());
|
|
31
|
+
}
|
|
20
32
|
}
|
|
21
|
-
|
|
22
|
-
.getAll(websiteIds, "websiteId")
|
|
23
|
-
.group("websiteId", (stream, websiteId) => ({
|
|
24
|
-
websiteId,
|
|
25
|
-
lastSeenAt: stream.max("lastSeenAt"),
|
|
26
|
-
}))
|
|
27
|
-
.filter((row) => row.key("lastSeenAt").ne(null))
|
|
28
|
-
.run();
|
|
29
|
-
return new Map(rows.map((row) => [row.websiteId, new Date(row.lastSeenAt).getTime()]));
|
|
33
|
+
return activity;
|
|
30
34
|
}
|
|
31
35
|
async recordActivity(sessionId, delta) {
|
|
32
36
|
await this.table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketing_sessions.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_sessions.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,iFAG4C;AAC5C,2CAAgD;AAShD,MAAa,sBAAuB,SAAQ,IAAA,8CAAc,EACxD,2CAAgB,EAChB,qDAA0B,CAC3B;IAMC,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,SAAiB;QAEjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK;aAC7B,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;aACnD,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"marketing_sessions.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_sessions.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,iFAG4C;AAC5C,2CAAgD;AAShD,MAAa,sBAAuB,SAAQ,IAAA,8CAAc,EACxD,2CAAgB,EAChB,qDAA0B,CAC3B;IAMC,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,SAAiB;QAEjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK;aAC7B,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;aACnD,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAOD,KAAK,CAAC,yBAAyB,CAC7B,UAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK;iBAC1B,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;iBAC9B,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;iBAC7B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,KAAK,CAAC,YAAY,CAAC;iBACnB,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAU,CAAC;QACnD,CAAC,CAAC,CACH,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;YAC7C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAQD,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,KAA2B;QAE3B,MAAM,IAAI,CAAC,KAAK;aACb,GAAG,CAAC,SAAS,CAAC;aACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChB,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;YAC9D,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;YACrD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;SAC/D,CAAC,CAAC;aACF,GAAG,EAAE,CAAC;IACX,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAY;QAChC,OAAO,IAAA,6BAAiB,EAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IACpE,CAAC;CACF;AA9ED,wDA8EC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MarketingSettings } from "../tables/marketing_settings.table";
|
|
2
|
+
export declare const MARKETING_SETTINGS_ID = "settings";
|
|
2
3
|
declare const MarketingSettingsModel_base: {
|
|
3
4
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
4
5
|
readonly table: import("@antelopejs/interface-database").Table<MarketingSettings>;
|
|
@@ -19,5 +20,6 @@ declare const MarketingSettingsModel_base: {
|
|
|
19
20
|
};
|
|
20
21
|
export declare class MarketingSettingsModel extends MarketingSettingsModel_base {
|
|
21
22
|
getSingleton(): Promise<MarketingSettings | undefined>;
|
|
23
|
+
insertSingleton(doc: MarketingSettings): Promise<MarketingSettings>;
|
|
22
24
|
}
|
|
23
25
|
export {};
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MarketingSettingsModel = void 0;
|
|
3
|
+
exports.MarketingSettingsModel = exports.MARKETING_SETTINGS_ID = void 0;
|
|
4
4
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
5
5
|
const marketing_settings_table_1 = require("../tables/marketing_settings.table");
|
|
6
|
+
exports.MARKETING_SETTINGS_ID = "settings";
|
|
6
7
|
class MarketingSettingsModel extends (0, interface_database_decorators_1.BasicDataModel)(marketing_settings_table_1.MarketingSettings, marketing_settings_table_1.marketingSettingsTableName) {
|
|
7
8
|
async getSingleton() {
|
|
8
|
-
const row = await this.table.
|
|
9
|
+
const row = (await this.table.get(exports.MARKETING_SETTINGS_ID).run()) ??
|
|
10
|
+
(await this.table.nth(0).run());
|
|
9
11
|
return MarketingSettingsModel.fromDatabase(row);
|
|
10
12
|
}
|
|
13
|
+
async insertSingleton(doc) {
|
|
14
|
+
doc._id = exports.MARKETING_SETTINGS_ID;
|
|
15
|
+
try {
|
|
16
|
+
await this.insert(doc);
|
|
17
|
+
return doc;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
const winner = await this.getSingleton();
|
|
21
|
+
if (!winner) {
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
return winner;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
11
27
|
}
|
|
12
28
|
exports.MarketingSettingsModel = MarketingSettingsModel;
|
|
13
29
|
//# sourceMappingURL=marketing_settings.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketing_settings.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_settings.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,iFAG4C;
|
|
1
|
+
{"version":3,"file":"marketing_settings.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_settings.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,iFAG4C;AAO/B,QAAA,qBAAqB,GAAG,UAAU,CAAC;AAEhD,MAAa,sBAAuB,SAAQ,IAAA,8CAAc,EACxD,4CAAiB,EACjB,qDAA0B,CAC3B;IAGC,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GACP,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,6BAAqB,CAAC,CAAC,GAAG,EAAE,CAAC;YACnD,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAClC,OAAO,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IASD,KAAK,CAAC,eAAe,CAAC,GAAsB;QAC1C,GAAG,CAAC,GAAG,GAAG,6BAAqB,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;CACF;AAjCD,wDAiCC"}
|
|
@@ -14,11 +14,13 @@ const interface_database_decorators_1 = require("@antelopejs/interface-database-
|
|
|
14
14
|
const constants_1 = require("@antelopejs/interface-dms/constants");
|
|
15
15
|
exports.marketingSessionsTableName = "marketing_sessions";
|
|
16
16
|
const VISITOR_SESSION_INDEX = "websiteId_visitorId_startedAt";
|
|
17
|
+
const LAST_ACTIVITY_INDEX = "websiteId_lastSeenAt";
|
|
17
18
|
let MarketingSession = class MarketingSession extends interface_database_decorators_1.Table {
|
|
18
19
|
};
|
|
19
20
|
exports.MarketingSession = MarketingSession;
|
|
20
21
|
__decorate([
|
|
21
22
|
(0, interface_database_decorators_1.Index)({ group: VISITOR_SESSION_INDEX }),
|
|
23
|
+
(0, interface_database_decorators_1.Index)({ group: LAST_ACTIVITY_INDEX }),
|
|
22
24
|
(0, interface_database_decorators_1.Field)("string"),
|
|
23
25
|
__metadata("design:type", String)
|
|
24
26
|
], MarketingSession.prototype, "websiteId", void 0);
|
|
@@ -33,6 +35,7 @@ __decorate([
|
|
|
33
35
|
__metadata("design:type", Date)
|
|
34
36
|
], MarketingSession.prototype, "startedAt", void 0);
|
|
35
37
|
__decorate([
|
|
38
|
+
(0, interface_database_decorators_1.Index)({ group: LAST_ACTIVITY_INDEX }),
|
|
36
39
|
(0, interface_database_decorators_1.Index)(),
|
|
37
40
|
(0, interface_database_decorators_1.Field)("date"),
|
|
38
41
|
__metadata("design:type", Date)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketing_sessions.table.js","sourceRoot":"","sources":["../../../src/db/tables/marketing_sessions.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAKmD;AACnD,mEAAyE;AAE5D,QAAA,0BAA0B,GAAG,oBAAoB,CAAC;AAS/D,MAAM,qBAAqB,GAAG,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"marketing_sessions.table.js","sourceRoot":"","sources":["../../../src/db/tables/marketing_sessions.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAKmD;AACnD,mEAAyE;AAE5D,QAAA,0BAA0B,GAAG,oBAAoB,CAAC;AAS/D,MAAM,qBAAqB,GAAG,+BAA+B,CAAC;AAO9D,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAS5C,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,qCAAK;CAkF1C,CAAA;AAlFY,4CAAgB;AAInB;IAHP,IAAA,qCAAK,EAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACvC,IAAA,qCAAK,EAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrC,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACU;AAIlB;IAFP,IAAA,qCAAK,EAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACvC,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACU;AAIlB;IAFP,IAAA,qCAAK,EAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACvC,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;mDAAC;AAOhB;IAHP,IAAA,qCAAK,EAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrC,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACM,IAAI;oDAAC;AAGjB;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;sDACa;AAGtB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACS;AAGjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wDACe;AAGvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACY;AAGpB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wDACgB;AAGxB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACW;AAGnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACW;AAGnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACa;AAGrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACS;AAGjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oDACY;AASpB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACc;AAGtB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACS;AAGjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4CACI;AAGZ;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oDACY;AAGpB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACU;AAKlB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACS;2BAjFd,gBAAgB;IAD5B,IAAA,6CAAa,EAAC,kCAA0B,EAAE,8BAAkB,CAAC;GACjD,gBAAgB,CAkF5B"}
|
|
@@ -74,27 +74,25 @@ function buildNextSettings(values, existing) {
|
|
|
74
74
|
return doc;
|
|
75
75
|
}
|
|
76
76
|
async function persistSettings(model, next, existing) {
|
|
77
|
-
const row = existing ??
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
77
|
+
const row = existing ??
|
|
78
|
+
(await model.getSingleton()) ??
|
|
79
|
+
(await createSingleton(model, next, cachedSecret || generateSecret()));
|
|
80
|
+
Object.assign(row, next);
|
|
81
|
+
await model.update(row);
|
|
82
|
+
}
|
|
83
|
+
async function createSingleton(model, doc, visitorHashSecret) {
|
|
84
|
+
const row = await model.insertSingleton({
|
|
85
|
+
...doc,
|
|
86
|
+
visitorHashSecret,
|
|
86
87
|
updatedAt: new Date(),
|
|
87
88
|
});
|
|
89
|
+
cachedSecret = row.visitorHashSecret;
|
|
90
|
+
return row;
|
|
88
91
|
}
|
|
89
92
|
async function loadSettings(model) {
|
|
90
93
|
let doc = await model.getSingleton();
|
|
91
94
|
if (!doc) {
|
|
92
|
-
doc =
|
|
93
|
-
...defaultDocument(),
|
|
94
|
-
visitorHashSecret: generateSecret(),
|
|
95
|
-
updatedAt: new Date(),
|
|
96
|
-
};
|
|
97
|
-
await model.insert(doc);
|
|
95
|
+
doc = await createSingleton(model, defaultDocument(), generateSecret());
|
|
98
96
|
}
|
|
99
97
|
else if (!doc.visitorHashSecret) {
|
|
100
98
|
doc.visitorHashSecret = generateSecret();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/services/settings.ts"],"names":[],"mappings":";;AA4BA,oDAGC;AA4CD,gDAaC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/services/settings.ts"],"names":[],"mappings":"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"}
|