@antelopejs/dms-marketing 0.3.0 → 0.3.2

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/README.md CHANGED
@@ -127,9 +127,11 @@ workspace. Its own vitest suite runs through `pnpm test`.
127
127
 
128
128
  The interface this module implements is the workspace's other package,
129
129
  `packages/interface-dms-marketing`, published under the same `@antelopejs`
130
- scope. This package consumes it through the fleet range
131
- `>=<interface version> <1.0.0`, which pnpm links to the sibling inside the
132
- workspace, so `pnpm build` builds the interface first.
130
+ scope. This package implements it, so it caps it below the next minor,
131
+ `>=<interface version> <0.<minor+1>.0`, rather than taking the fleet's
132
+ `<1.0.0` ceiling: a breaking interface minor never reaches a module that does
133
+ not implement it. pnpm links that range to the sibling inside the workspace,
134
+ so `pnpm build` builds the interface first.
133
135
  Each is released on its own from GitHub Actions — `release-interface.yml`
134
136
  then `release.yml`; the module's workflow refuses to run until the interface
135
137
  version it links is resolvable on npm.
@@ -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
- if (websiteIds.length === 0) {
19
- return new Map();
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
- const rows = await this.table
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;IAGD,KAAK,CAAC,yBAAyB,CAC7B,UAAoB;QAEpB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK;aAC1B,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC;aAC/B,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YAC1C,SAAS;YACT,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;SACrC,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAC/C,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,GAAG,CACZ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CACvE,CAAC;IACJ,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;AAtED,wDAsEC"}
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.nth(0).run();
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;AAE5C,MAAa,sBAAuB,SAAQ,IAAA,8CAAc,EACxD,4CAAiB,EACjB,qDAA0B,CAC3B;IACC,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;CACF;AARD,wDAQC"}
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;AASvD,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,qCAAK;CA+E1C,CAAA;AA/EY,4CAAgB;AAGnB;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,QAAQ,CAAC;;mDACU;AAIlB;IAFP,IAAA,qCAAK,EAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACvC,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;mDAAC;AAKhB;IAFP,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;2BA9Ed,gBAAgB;IAD5B,IAAA,6CAAa,EAAC,kCAA0B,EAAE,8BAAkB,CAAC;GACjD,gBAAgB,CA+E5B"}
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 ?? (await model.getSingleton());
78
- if (row) {
79
- Object.assign(row, next);
80
- await model.update(row);
81
- return;
82
- }
83
- await model.insert({
84
- ...next,
85
- visitorHashSecret: cachedSecret || generateSecret(),
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;AAqDD,oCAiBC;AAED,8CASC;AAzKD,6CAA0C;AAC1C,qCAIkB;AAGlB,iDAAyD;AACzD,+CAK0B;AAY1B,IAAI,YAAY,GAAG,EAAE,CAAC;AAEtB,SAAgB,oBAAoB;IAClC,MAAM,UAAU,GAAG,IAAA,kBAAS,GAAE,CAAC,iBAAiB,CAAC;IACjD,OAAO,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;AACvD,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAA,yBAAW,EAAC,gCAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAMD,SAAS,aAAa,CAAC,GAAqB;IAC1C,MAAM,SAAS,GAAgC,EAAE,CAAC;IAClD,KAAK,MAAM,OAAO,IAAI,2BAAgB,EAAE,CAAC;QACvC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,0BAAe,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,GAAiC;IACtD,IAAA,6BAAoB,EAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,EAAsB,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,2BAAgB,EAAE,CAAC;QACvC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,0BAAe,EAAE,CAAC;QACtC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAMD,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,KAAK,MAAM,OAAO,IAAI,2BAAgB,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,0BAAe,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAC3B,OAAO,CAAC,GAAG,EACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAMD,SAAS,iBAAiB,CACxB,MAA0B,EAC1B,QAAuC;IAEvC,MAAM,GAAG,GAAG,EAAsB,CAAC;IACnC,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,2BAAgB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;YACpB,OAAO,SAAS,KAAK,SAAS;gBAC5B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,0BAAe,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;YACpB,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;gBACvD,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI;gBAC1B,CAAC,CAAC,IAAI,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAA6B,EAC7B,IAAsB,EACtB,QAAuC;IAIvC,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACrD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,CAAC,MAAM,CAAC;QACjB,GAAG,IAAI;QACP,iBAAiB,EAAE,YAAY,IAAI,cAAc,EAAE;QACnD,SAAS,EAAE,IAAI,IAAI,EAAE;KACD,CAAC,CAAC;AAC1B,CAAC;AAMM,KAAK,UAAU,YAAY,CAChC,KAA6B;IAE7B,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG;YACJ,GAAG,eAAe,EAAE;YACpB,iBAAiB,EAAE,cAAc,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE;SACD,CAAC;QACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,GAAG,CAAC,iBAAiB,GAAG,cAAc,EAAE,CAAC;QACzC,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,YAAY,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACrC,aAAa,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,KAA6B,EAC7B,MAA0B;IAE1B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/services/settings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antelopejs/dms-marketing",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,10 +32,10 @@
32
32
  "@antelopejs/interface-api-util": ">=0.1.2 <1.0.0",
33
33
  "@antelopejs/interface-core": ">=0.1.1 <1.0.0",
34
34
  "@antelopejs/interface-data-api": ">=0.1.9 <1.0.0",
35
- "@antelopejs/interface-database": ">=0.1.7 <1.0.0",
35
+ "@antelopejs/interface-database": ">=0.1.8 <1.0.0",
36
36
  "@antelopejs/interface-database-decorators": ">=0.1.6 <1.0.0",
37
37
  "@antelopejs/interface-dms": ">=0.2.0 <1.0.0",
38
- "@antelopejs/interface-dms-marketing": ">=0.3.0 <1.0.0",
38
+ "@antelopejs/interface-dms-marketing": ">=0.3.1 <0.4.0",
39
39
  "defu": "^6.1.4",
40
40
  "maxmind": "^5.0.7",
41
41
  "node-cron": "^4.2.1",
@@ -46,7 +46,7 @@
46
46
  "@antelopejs/core": ">=1.9.1 <2",
47
47
  "@antelopejs/interface-mongodb": ">=0.0.5 <1.0.0",
48
48
  "@antelopejs/mongodb": "1.3.1",
49
- "@antelopejs/tooling-configs": ">=0.0.6 <1.0.0",
49
+ "@antelopejs/tooling-configs": ">=0.0.7 <1.0.0",
50
50
  "@types/node": "^22.19.15",
51
51
  "knip": "^6.34.0",
52
52
  "mongodb": "^6.21.0",
@@ -78,7 +78,7 @@
78
78
  "test:layer": "cd frontend-vue && pnpm test",
79
79
  "dev": "ajs project run -w -p playground",
80
80
  "frontend:dev": "cd playground && pnpm frontend:dev",
81
- "lint": "oxlint && oxfmt --check . && cd frontend-vue && pnpm lint",
81
+ "lint": "oxlint && oxfmt --check . && cd frontend-vue && pnpm lint && antelopejs-check-interface-ranges",
82
82
  "lint:fix": "oxlint --fix --max-warnings=1000000 && oxfmt . && cd frontend-vue && pnpm lint:fix",
83
83
  "format": "oxfmt . && cd frontend-vue && pnpm format",
84
84
  "release": "pnpm --filter @antelopejs/interface-dms-marketing build && pnpm --dir frontend-vue install --frozen-lockfile && pnpm run lint && release-it",