@antelopejs/dms 0.4.8 → 0.5.0
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/CHANGELOG.md +32 -0
- package/dist/hooks/invite-extensions.js +0 -2
- package/dist/hooks/invite-extensions.js.map +1 -1
- package/dist/implementations/dms/page.js +6 -7
- package/dist/implementations/dms/page.js.map +1 -1
- package/dist/implementations/dms/realtime.d.ts +2 -2
- package/dist/implementations/dms/realtime.js +9 -3
- package/dist/implementations/dms/realtime.js.map +1 -1
- package/dist/implementations/dms-base/table-view.d.ts +5 -0
- package/dist/implementations/dms-base/table-view.js +7 -1
- package/dist/implementations/dms-base/table-view.js.map +1 -1
- package/dist/realtime/index.js +0 -2
- package/dist/realtime/index.js.map +1 -1
- package/dist/realtime/registry.d.ts +1 -0
- package/dist/realtime/registry.js +9 -0
- package/dist/realtime/registry.js.map +1 -1
- package/dist/realtime/table-view.d.ts +3 -0
- package/dist/realtime/table-view.js +25 -0
- package/dist/realtime/table-view.js.map +1 -0
- package/dist/test/antelope.test.js +6 -0
- package/dist/test/antelope.test.js.map +1 -1
- package/dist/test/helpers/reload-host.d.ts +9 -0
- package/dist/test/helpers/reload-host.js +21 -0
- package/dist/test/helpers/reload-host.js.map +1 -0
- package/dist/test/integration/invite-resolution.test.js +0 -2
- package/dist/test/integration/invite-resolution.test.js.map +1 -1
- package/dist/test/reload-host/index.d.ts +2 -0
- package/dist/test/reload-host/index.js +32 -0
- package/dist/test/reload-host/index.js.map +1 -0
- package/dist/test/reload-host/package.json +8 -0
- package/dist/test/unit/frontend-renderer-range.test.d.ts +1 -0
- package/dist/test/unit/frontend-renderer-range.test.js +45 -0
- package/dist/test/unit/frontend-renderer-range.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/invite-extension.test.js +22 -24
- package/dist/test/unit/interfaces/dms/invite-extension.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms/module-reload-registrations.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms/module-reload-registrations.test.js +51 -0
- package/dist/test/unit/interfaces/dms/module-reload-registrations.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/page-topics.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms/page-topics.test.js +194 -0
- package/dist/test/unit/interfaces/dms/page-topics.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/layouts.test.js +16 -0
- package/dist/test/unit/interfaces/dms-base/layouts.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-evaluation-order.fixture.d.ts +5 -0
- package/dist/test/unit/interfaces/dms-base/table-view-evaluation-order.fixture.js +82 -0
- package/dist/test/unit/interfaces/dms-base/table-view-evaluation-order.fixture.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-evaluation-order.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-evaluation-order.test.js +24 -0
- package/dist/test/unit/interfaces/dms-base/table-view-evaluation-order.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-get-guard.test.js +10 -4
- package/dist/test/unit/interfaces/dms-base/table-view-get-guard.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-realtime.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-realtime.test.js +139 -0
- package/dist/test/unit/interfaces/dms-base/table-view-realtime.test.js.map +1 -0
- package/dist/test/unit/utils/owned-registry.test.d.ts +1 -0
- package/dist/test/unit/utils/owned-registry.test.js +61 -0
- package/dist/test/unit/utils/owned-registry.test.js.map +1 -0
- package/dist/validation/auth.schema.d.ts +2 -2
- package/frontend-vue/layers/dms-layout/app/composables/layout/usePageFillHeight.ts +37 -0
- package/frontend-vue/layers/dms-layout/app/custom-layouts/DefaultLayout.vue +9 -0
- package/frontend-vue/layers/dms-layout/app/pages/[...slug].vue +16 -1
- package/frontend-vue/package.json +4 -1
- package/frontend-vue/pnpm-lock.yaml +8 -8
- package/frontend-vue/tests/page-fill-height.test.ts +352 -0
- package/package.json +4 -4
- package/skills/dms-module/REFERENCE.md +2 -1
- package/skills/dms-module/SKILL.md +5 -0
- package/dist/realtime/tableview-bridge.d.ts +0 -1
- package/dist/realtime/tableview-bridge.js +0 -38
- package/dist/realtime/tableview-bridge.js.map +0 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
46
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
47
|
+
const modules_1 = require("@antelopejs/interface-core/modules");
|
|
48
|
+
const interface_data_api_1 = require("@antelopejs/interface-data-api");
|
|
49
|
+
const metadata_1 = require("@antelopejs/interface-data-api/metadata");
|
|
50
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
51
|
+
const chai_1 = require("chai");
|
|
52
|
+
const pageImpl = __importStar(require("../../../../implementations/dms/page"));
|
|
53
|
+
const permissionsImpl = __importStar(require("../../../../implementations/dms/permissions"));
|
|
54
|
+
const realtimeImpl = __importStar(require("../../../../implementations/dms/realtime"));
|
|
55
|
+
const chart_1 = require("@antelopejs/interface-dms/base/chart");
|
|
56
|
+
const default_types_1 = require("@antelopejs/interface-dms/base/data-types/default-types");
|
|
57
|
+
const table_view_1 = require("@antelopejs/interface-dms/base/table-view");
|
|
58
|
+
const constants_1 = require("@antelopejs/interface-dms/constants");
|
|
59
|
+
const pageInterface = __importStar(require("@antelopejs/interface-dms/page"));
|
|
60
|
+
const page_1 = require("@antelopejs/interface-dms/page");
|
|
61
|
+
const permissionsInterface = __importStar(require("@antelopejs/interface-dms/permissions"));
|
|
62
|
+
const realtimeInterface = __importStar(require("@antelopejs/interface-dms/realtime"));
|
|
63
|
+
const registry_1 = require("../../../../realtime/registry");
|
|
64
|
+
const TABLE = "page-topics-rows";
|
|
65
|
+
const LOCATION = "/api/page-topics-rows";
|
|
66
|
+
const TOPICS_PAGE = "page-topics";
|
|
67
|
+
const SHARED_PAGE = "page-topics-shared";
|
|
68
|
+
const CHART_TOPICS = ["page-topics:first", "page-topics:second"];
|
|
69
|
+
const OWN_TOPIC = "page-topics:own";
|
|
70
|
+
const OTHER_TOPIC = "page-topics:other";
|
|
71
|
+
let Row = class Row extends interface_database_decorators_1.Table {
|
|
72
|
+
};
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
75
|
+
__metadata("design:type", String)
|
|
76
|
+
], Row.prototype, "name", void 0);
|
|
77
|
+
Row = __decorate([
|
|
78
|
+
(0, interface_database_decorators_1.RegisterTable)(TABLE, constants_1.CORE_SCHEMA_NAME)
|
|
79
|
+
], Row);
|
|
80
|
+
class RowModel extends (0, interface_database_decorators_1.BasicDataModel)(Row, TABLE) {
|
|
81
|
+
}
|
|
82
|
+
let RowsAPI = class RowsAPI extends (0, interface_data_api_1.DataController)(Row, { get: table_view_1.TableViewRoutes.Get }, (0, interface_api_1.Controller)(LOCATION)) {
|
|
83
|
+
};
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, metadata_1.ModelReference)(),
|
|
86
|
+
(0, interface_database_decorators_1.Model)(RowModel),
|
|
87
|
+
__metadata("design:type", RowModel)
|
|
88
|
+
], RowsAPI.prototype, "model", void 0);
|
|
89
|
+
__decorate([
|
|
90
|
+
(0, table_view_1.Column)({ name: "Name", type: new default_types_1.DefaultDataTypes.StringType() }),
|
|
91
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
92
|
+
__metadata("design:type", String)
|
|
93
|
+
], RowsAPI.prototype, "name", void 0);
|
|
94
|
+
RowsAPI = __decorate([
|
|
95
|
+
(0, interface_data_api_1.RegisterDataController)()
|
|
96
|
+
], RowsAPI);
|
|
97
|
+
class TopicsPage extends (0, page_1.PageController)(TOPICS_PAGE, {
|
|
98
|
+
displayName: "Page topics",
|
|
99
|
+
category: page_1.pagesCategory,
|
|
100
|
+
}) {
|
|
101
|
+
static rows = (0, table_view_1.TableView)(RowsAPI);
|
|
102
|
+
static trend = (0, chart_1.ChartLine)({ realtimeTopic: CHART_TOPICS });
|
|
103
|
+
}
|
|
104
|
+
class SharedPage extends (0, page_1.PageController)(SHARED_PAGE, {
|
|
105
|
+
displayName: "Shared page topics",
|
|
106
|
+
category: page_1.pagesCategory,
|
|
107
|
+
}) {
|
|
108
|
+
}
|
|
109
|
+
const TOPICS_PAGE_TOPICS = [
|
|
110
|
+
(0, table_view_1.tableViewRowTopic)(LOCATION),
|
|
111
|
+
(0, table_view_1.tableViewPresenceTopic)(LOCATION),
|
|
112
|
+
...CHART_TOPICS,
|
|
113
|
+
];
|
|
114
|
+
function moduleContext(module) {
|
|
115
|
+
return { module, owner: `${module}#1` };
|
|
116
|
+
}
|
|
117
|
+
function pageFullId(page) {
|
|
118
|
+
return (0, interface_core_1.GetMetadata)(page, page_1.PageMetadata).pageInfo?.fullId ?? "";
|
|
119
|
+
}
|
|
120
|
+
function topicsOf(page) {
|
|
121
|
+
return [...(0, registry_1.getPageTopics)(pageFullId(page))];
|
|
122
|
+
}
|
|
123
|
+
function destroyModule(context) {
|
|
124
|
+
(0, modules_1.RunWithModuleContext)(context, () => {
|
|
125
|
+
modules_1.Events.ModuleDestroyed.emit(context.module);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function attachNewDmsGeneration() {
|
|
129
|
+
(0, registry_1.clearPageTopics)(pageFullId(TopicsPage));
|
|
130
|
+
(0, registry_1.clearPageTopics)(pageFullId(SharedPage));
|
|
131
|
+
(0, interface_core_1.ImplementInterface)(realtimeInterface, realtimeImpl);
|
|
132
|
+
}
|
|
133
|
+
async function registerAs(context) {
|
|
134
|
+
const meta = (0, interface_core_1.GetMetadata)(TopicsPage, page_1.PageMetadata);
|
|
135
|
+
meta.SetComponent("rows", TopicsPage.rows);
|
|
136
|
+
meta.SetComponent("trend", TopicsPage.trend);
|
|
137
|
+
await (0, modules_1.RunWithModuleContext)(context, () => meta.Register());
|
|
138
|
+
}
|
|
139
|
+
function placeChart(context, topic) {
|
|
140
|
+
const chart = (0, chart_1.ChartLine)({ realtimeTopic: topic });
|
|
141
|
+
const meta = (0, interface_core_1.GetMetadata)(SharedPage, page_1.PageMetadata);
|
|
142
|
+
(0, modules_1.RunWithModuleContext)(context, () => chart.onPageCreated?.(meta));
|
|
143
|
+
}
|
|
144
|
+
describe("[unit] interfaces/dms/realtime — page topics", () => {
|
|
145
|
+
before(() => {
|
|
146
|
+
(0, interface_core_1.ImplementInterface)(permissionsInterface, permissionsImpl);
|
|
147
|
+
(0, interface_core_1.ImplementInterface)(realtimeInterface, realtimeImpl);
|
|
148
|
+
(0, interface_core_1.ImplementInterface)(pageInterface, pageImpl);
|
|
149
|
+
});
|
|
150
|
+
it("brings every topic of a page back to a new DMS generation", async () => {
|
|
151
|
+
const owner = moduleContext("page-topics-replay");
|
|
152
|
+
await registerAs(owner);
|
|
153
|
+
try {
|
|
154
|
+
(0, chai_1.expect)(topicsOf(TopicsPage)).to.have.members(TOPICS_PAGE_TOPICS);
|
|
155
|
+
attachNewDmsGeneration();
|
|
156
|
+
(0, chai_1.expect)(topicsOf(TopicsPage)).to.have.members(TOPICS_PAGE_TOPICS);
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
destroyModule(owner);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
it("gives a page's topics to the module whose page it is", async () => {
|
|
163
|
+
const owner = moduleContext("page-topics-owner");
|
|
164
|
+
await registerAs(owner);
|
|
165
|
+
destroyModule(owner);
|
|
166
|
+
(0, chai_1.expect)(topicsOf(TopicsPage)).to.deep.equal([]);
|
|
167
|
+
attachNewDmsGeneration();
|
|
168
|
+
(0, chai_1.expect)(topicsOf(TopicsPage)).to.deep.equal([]);
|
|
169
|
+
});
|
|
170
|
+
it("releases only the topics of the module that goes away", () => {
|
|
171
|
+
const own = moduleContext("page-topics-own");
|
|
172
|
+
const other = moduleContext("page-topics-other");
|
|
173
|
+
placeChart(own, OWN_TOPIC);
|
|
174
|
+
placeChart(other, OTHER_TOPIC);
|
|
175
|
+
(0, chai_1.expect)(topicsOf(SharedPage)).to.have.members([OWN_TOPIC, OTHER_TOPIC]);
|
|
176
|
+
destroyModule(other);
|
|
177
|
+
(0, chai_1.expect)(topicsOf(SharedPage)).to.deep.equal([OWN_TOPIC]);
|
|
178
|
+
attachNewDmsGeneration();
|
|
179
|
+
(0, chai_1.expect)(topicsOf(SharedPage)).to.deep.equal([OWN_TOPIC]);
|
|
180
|
+
destroyModule(own);
|
|
181
|
+
(0, chai_1.expect)(topicsOf(SharedPage)).to.deep.equal([]);
|
|
182
|
+
});
|
|
183
|
+
it("unregisters one topic of a page by its registration id", () => {
|
|
184
|
+
const pageId = pageFullId(SharedPage);
|
|
185
|
+
const topics = realtimeImpl.internal.RegisterPageTopic;
|
|
186
|
+
topics.register("page-topics-first-id", pageId, OWN_TOPIC);
|
|
187
|
+
topics.register("page-topics-second-id", pageId, OTHER_TOPIC);
|
|
188
|
+
topics.unregister("page-topics-first-id");
|
|
189
|
+
(0, chai_1.expect)(topicsOf(SharedPage)).to.deep.equal([OTHER_TOPIC]);
|
|
190
|
+
topics.unregister("page-topics-second-id");
|
|
191
|
+
(0, chai_1.expect)(topicsOf(SharedPage)).to.deep.equal([]);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
//# sourceMappingURL=page-topics.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-topics.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms/page-topics.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA6E;AAC7E,+DAA6E;AAC7E,gEAI4C;AAC5C,uEAGwC;AACxC,sEAIiD;AACjD,6FAMmD;AACnD,+BAA8B;AAC9B,+EAAiE;AACjE,6FAA+E;AAC/E,uFAAyE;AACzE,gEAAiE;AACjE,2FAA2F;AAC3F,0EAMmD;AACnD,mEAAuE;AACvE,8EAAgE;AAChE,yDAIwC;AACxC,4FAA8E;AAC9E,sFAAwE;AACxE,4DAA+E;AAO/E,MAAM,KAAK,GAAG,kBAAkB,CAAC;AACjC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AACzC,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,YAAY,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAGxC,IAAM,GAAG,GAAT,MAAM,GAAI,SAAQ,qCAAK;CAEtB,CAAA;AAD0B;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iCAAsB;AADlC,GAAG;IADR,IAAA,6CAAa,EAAC,KAAK,EAAE,4BAAgB,CAAC;GACjC,GAAG,CAER;AAED,MAAM,QAAS,SAAQ,IAAA,8CAAc,EAAC,GAAG,EAAE,KAAK,CAAC;CAAG;AAGpD,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,IAAA,mCAAc,EAClC,GAAG,EACH,EAAE,GAAG,EAAE,4BAAe,CAAC,GAAG,EAAE,EAC5B,IAAA,0BAAU,EAAC,QAAQ,CAAC,CACrB;CAOA,CAAA;AAJS;IAFP,IAAA,yBAAc,GAAE;IAChB,IAAA,qCAAK,EAAC,QAAQ,CAAC;8BACD,QAAQ;sCAAC;AAGhB;IAFP,IAAA,mBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,gCAAgB,CAAC,UAAU,EAAE,EAAE,CAAC;IACjE,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;;qCACP;AAVjB,OAAO;IADZ,IAAA,2CAAsB,GAAE;GACnB,OAAO,CAWZ;AAED,MAAM,UAAW,SAAQ,IAAA,qBAAc,EAAC,WAAW,EAAE;IACnD,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,oBAAa;CACxB,CAAC;IACA,MAAM,CAAC,IAAI,GAAG,IAAA,sBAAS,EAAC,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,GAAG,IAAA,iBAAS,EAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;;AAG5D,MAAM,UAAW,SAAQ,IAAA,qBAAc,EAAC,WAAW,EAAE;IACnD,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,oBAAa;CACxB,CAAC;CAAG;AAEL,MAAM,kBAAkB,GAAG;IACzB,IAAA,8BAAiB,EAAC,QAAQ,CAAC;IAC3B,IAAA,mCAAsB,EAAC,QAAQ,CAAC;IAChC,GAAG,YAAY;CAChB,CAAC;AAEF,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,IAAqB;IACvC,OAAO,IAAA,4BAAW,EAAC,IAAI,EAAE,mBAAY,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAqB;IACrC,OAAO,CAAC,GAAG,IAAA,wBAAa,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAID,SAAS,aAAa,CAAC,OAA+B;IACpD,IAAA,8BAAoB,EAAC,OAAO,EAAE,GAAG,EAAE;QACjC,gBAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAID,SAAS,sBAAsB;IAC7B,IAAA,0BAAe,EAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACxC,IAAA,0BAAe,EAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACxC,IAAA,mCAAkB,EAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAA+B;IACvD,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,UAAU,EAAE,mBAAY,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAA,8BAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,CAAC;AAID,SAAS,UAAU,CAAC,OAA+B,EAAE,KAAa;IAChE,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,UAAU,EAAE,mBAAY,CAAC,CAAC;IACnD,IAAA,8BAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC5D,MAAM,CAAC,GAAG,EAAE;QACV,IAAA,mCAAkB,EAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;QAC1D,IAAA,mCAAkB,EAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACpD,IAAA,mCAAkB,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,KAAK,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAClD,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAEjE,sBAAsB,EAAE,CAAC;YAEzB,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACnE,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,KAAK,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACjD,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QAExB,aAAa,CAAC,KAAK,CAAC,CAAC;QAErB,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,sBAAsB,EAAE,CAAC;QACzB,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACjD,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC3B,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/B,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QAEvE,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAExD,sBAAsB,EAAE,CAAC;QACzB,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAExD,aAAa,CAAC,GAAG,CAAC,CAAC;QACnB,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACvD,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAE1D,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;QAC3C,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -24,6 +24,22 @@ describe("[unit] interfaces/dms-base/layouts", () => {
|
|
|
24
24
|
hideHeader: true,
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
|
+
it("lets a page fill the panel height, full-width by default", () => {
|
|
28
|
+
(0, chai_1.expect)((0, layouts_1.DefaultLayout)({ fillHeight: true }).options).to.deep.equal({
|
|
29
|
+
fullWidth: true,
|
|
30
|
+
fillHeight: true,
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it("leaves the height option out unless a page asks for it", () => {
|
|
34
|
+
(0, chai_1.expect)((0, layouts_1.DefaultLayout)().options).to.not.have.property("fillHeight");
|
|
35
|
+
(0, chai_1.expect)((0, layouts_1.FormPageLayout)().options).to.not.have.property("fillHeight");
|
|
36
|
+
});
|
|
37
|
+
it("lets a form page fill the panel height too", () => {
|
|
38
|
+
(0, chai_1.expect)((0, layouts_1.FormPageLayout)({ fillHeight: true }).options).to.deep.equal({
|
|
39
|
+
fullWidth: false,
|
|
40
|
+
fillHeight: true,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
27
43
|
it("returns a fresh options object per call", () => {
|
|
28
44
|
const first = (0, layouts_1.DefaultLayout)();
|
|
29
45
|
const second = (0, layouts_1.DefaultLayout)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layouts.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/layouts.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,oEAGgD;AAEhD,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,IAAA,aAAM,EAAC,IAAA,uBAAa,GAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,IAAA,aAAM,EAAC,IAAA,uBAAa,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,IAAA,aAAM,EAAC,IAAA,uBAAa,EAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,IAAA,aAAM,EAAC,IAAA,wBAAc,GAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,IAAA,aAAM,EAAC,IAAA,wBAAc,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YACjE,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,IAAA,uBAAa,GAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAA,uBAAa,GAAE,CAAC;QAC/B,IAAA,aAAM,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"layouts.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/layouts.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_module_1 = __importDefault(require("node:module"));
|
|
7
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
8
|
+
const TABLE_VIEW = "@antelopejs/interface-dms/base/table-view";
|
|
9
|
+
const REALTIME = "@antelopejs/interface-dms/realtime";
|
|
10
|
+
const LOCATION = "/api/evaluation-order";
|
|
11
|
+
const PAGE_ID = "pages.evaluation-order";
|
|
12
|
+
const SESSION = "evaluation-order-session";
|
|
13
|
+
const ROW = "evaluation-order-row";
|
|
14
|
+
const DMS_REALTIME = "../../../../realtime";
|
|
15
|
+
const DMS_REALTIME_IMPLEMENTATION = "../../../../implementations/dms/realtime";
|
|
16
|
+
const DMS_TABLE_VIEW_IMPLEMENTATION = "../../../../implementations/dms-base/table-view";
|
|
17
|
+
const DMS_REALTIME_MODULES = [
|
|
18
|
+
DMS_REALTIME,
|
|
19
|
+
"../../../../realtime/table-view",
|
|
20
|
+
DMS_REALTIME_IMPLEMENTATION,
|
|
21
|
+
];
|
|
22
|
+
function enterThroughTableView() {
|
|
23
|
+
const loader = node_module_1.default;
|
|
24
|
+
const load = loader._load;
|
|
25
|
+
const tableViewEntry = require.resolve(TABLE_VIEW);
|
|
26
|
+
let hasLoadedDms = false;
|
|
27
|
+
loader._load = function (request, parent, isMain) {
|
|
28
|
+
if (!hasLoadedDms && parent?.filename === tableViewEntry) {
|
|
29
|
+
hasLoadedDms = true;
|
|
30
|
+
for (const path of DMS_REALTIME_MODULES)
|
|
31
|
+
require(path);
|
|
32
|
+
}
|
|
33
|
+
return load.call(this, request, parent, isMain);
|
|
34
|
+
};
|
|
35
|
+
try {
|
|
36
|
+
return require(TABLE_VIEW);
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
loader._load = load;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function run() {
|
|
43
|
+
const tableView = enterThroughTableView();
|
|
44
|
+
const realtimeInterface = require(REALTIME);
|
|
45
|
+
const realtime = require(DMS_REALTIME);
|
|
46
|
+
const rowTopic = tableView.tableViewRowTopic(LOCATION);
|
|
47
|
+
realtimeInterface.RegisterPageTopic(PAGE_ID, rowTopic);
|
|
48
|
+
(0, interface_core_1.ImplementInterface)(realtimeInterface, require(DMS_REALTIME_IMPLEMENTATION));
|
|
49
|
+
(0, interface_core_1.ImplementInterface)(tableView, require(DMS_TABLE_VIEW_IMPLEMENTATION));
|
|
50
|
+
const published = [];
|
|
51
|
+
realtime.subscribeRealtime(rowTopic, (event) => published.push(event.type));
|
|
52
|
+
const actor = { id: "evaluation-order-user" };
|
|
53
|
+
await tableView.internal.PublishMutation({
|
|
54
|
+
controllerLocation: LOCATION,
|
|
55
|
+
rowIdKey: "_id",
|
|
56
|
+
eventType: "updated",
|
|
57
|
+
ids: [ROW],
|
|
58
|
+
actor,
|
|
59
|
+
});
|
|
60
|
+
await tableView.internal.AcquirePresence({
|
|
61
|
+
controllerLocation: LOCATION,
|
|
62
|
+
rowIdKey: "_id",
|
|
63
|
+
sessionId: SESSION,
|
|
64
|
+
rowId: ROW,
|
|
65
|
+
actor,
|
|
66
|
+
});
|
|
67
|
+
const present = await realtime
|
|
68
|
+
.getPresenceTracker()
|
|
69
|
+
.snapshotForTopic(tableView.tableViewPresenceTopic(LOCATION));
|
|
70
|
+
return {
|
|
71
|
+
published,
|
|
72
|
+
present: present.map((entry) => entry.rowId),
|
|
73
|
+
pageTopics: [...realtime.getPageTopics(PAGE_ID)],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
run().then((result) => {
|
|
77
|
+
process.stdout.write(JSON.stringify(result), () => process.exit(0));
|
|
78
|
+
}, (error) => {
|
|
79
|
+
const report = error instanceof Error ? error.stack : String(error);
|
|
80
|
+
process.stderr.write(`${report}\n`, () => process.exit(1));
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=table-view-evaluation-order.fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-view-evaluation-order.fixture.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-evaluation-order.fixture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const node_child_process_1 = require("node:child_process");
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const node_util_1 = require("node:util");
|
|
6
|
+
const chai_1 = require("chai");
|
|
7
|
+
const FIXTURE = (0, node_path_1.resolve)(__dirname, "table-view-evaluation-order.fixture.js");
|
|
8
|
+
const LOCATION = "/api/evaluation-order";
|
|
9
|
+
const ROW = "evaluation-order-row";
|
|
10
|
+
const PROCESS_TIMEOUT_MS = 30_000;
|
|
11
|
+
const runProcess = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
12
|
+
describe("[unit] interfaces/dms-base — table-view realtime and evaluation order", () => {
|
|
13
|
+
it("reaches the DMS when its realtime modules evaluate while table-view is still evaluating", async function () {
|
|
14
|
+
this.timeout(PROCESS_TIMEOUT_MS);
|
|
15
|
+
const { stdout } = await runProcess(process.execPath, [FIXTURE]);
|
|
16
|
+
const result = JSON.parse(stdout);
|
|
17
|
+
(0, chai_1.expect)(result).to.deep.equal({
|
|
18
|
+
published: ["updated"],
|
|
19
|
+
present: [ROW],
|
|
20
|
+
pageTopics: [`tableview:row:${LOCATION}`],
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=table-view-evaluation-order.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-view-evaluation-order.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-evaluation-order.test.ts"],"names":[],"mappings":";;AAAA,2DAA8C;AAC9C,yCAAoC;AACpC,yCAAsC;AACtC,+BAA8B;AAG9B,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,SAAS,EAAE,wCAAwC,CAAC,CAAC;AAC7E,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AACzC,MAAM,GAAG,GAAG,sBAAsB,CAAC;AAEnC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,UAAU,GAAG,IAAA,qBAAS,EAAC,6BAAQ,CAAC,CAAC;AAEvC,QAAQ,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACrF,EAAE,CAAC,yFAAyF,EAAE,KAAK;QACjG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA0B,CAAC;QAE3D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,SAAS,EAAE,CAAC,SAAS,CAAC;YACtB,OAAO,EAAE,CAAC,GAAG,CAAC;YACd,UAAU,EAAE,CAAC,iBAAiB,QAAQ,EAAE,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -50,10 +50,11 @@ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
|
|
|
50
50
|
const interface_database_1 = require("@antelopejs/interface-database");
|
|
51
51
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
52
52
|
const chai_1 = require("chai");
|
|
53
|
+
const table_view_1 = require("../../../../implementations/dms-base/table-view");
|
|
53
54
|
const tenantAccessImpl = __importStar(require("../../../../implementations/dms/tenant-access"));
|
|
54
55
|
const tenantAccess = __importStar(require("@antelopejs/interface-dms/tenant-access"));
|
|
56
|
+
const table_view_2 = require("@antelopejs/interface-dms/base/table-view");
|
|
55
57
|
const meta_1 = require("@antelopejs/interface-dms/base/table-view/meta");
|
|
56
|
-
const realtime_1 = require("@antelopejs/interface-dms/base/table-view/realtime");
|
|
57
58
|
const routes_1 = require("@antelopejs/interface-dms/base/table-view/routes");
|
|
58
59
|
const SCHEMA = "get-guard-test";
|
|
59
60
|
const TABLE = "documents";
|
|
@@ -148,8 +149,13 @@ describe("[unit] TableView Get guard", () => {
|
|
|
148
149
|
name: "Invoice",
|
|
149
150
|
});
|
|
150
151
|
[quoteId] = await model.insert({ documentType: "quote", name: "Quote" });
|
|
151
|
-
(0,
|
|
152
|
-
|
|
152
|
+
(0, interface_core_1.ImplementInterface)({ internal: table_view_2.internal }, {
|
|
153
|
+
internal: {
|
|
154
|
+
PublishMutation: async () => undefined,
|
|
155
|
+
AcquirePresence: async () => {
|
|
156
|
+
events.push("presence");
|
|
157
|
+
},
|
|
158
|
+
},
|
|
153
159
|
});
|
|
154
160
|
});
|
|
155
161
|
beforeEach(() => {
|
|
@@ -166,7 +172,7 @@ describe("[unit] TableView Get guard", () => {
|
|
|
166
172
|
});
|
|
167
173
|
after(() => {
|
|
168
174
|
tenantAccess.internal.RegisterTenantAccessGate.unregister(gate);
|
|
169
|
-
(0,
|
|
175
|
+
(0, interface_core_1.ImplementInterface)({ internal: table_view_2.internal }, { internal: table_view_1.internal });
|
|
170
176
|
});
|
|
171
177
|
it("authorizes, loads once, guards hidden data, transforms, then acquires presence", async () => {
|
|
172
178
|
(0, chai_1.expect)(await get(invoiceId)).to.deep.equal({ name: "INVOICE" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-view-get-guard.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-get-guard.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAImC;AACnC,+DAA6E;AAC7E,uEAGwC;AACxC,0EAAkE;AAClE,sEAIiD;AACjD,uEAAwD;AACxD,6FAOmD;AACnD,+BAA8B;AAC9B,gGAAkF;AAClF,sFAAwE;AAExE,yEAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"table-view-get-guard.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-get-guard.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
37
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
38
|
+
const internal_1 = require("@antelopejs/interface-core/internal");
|
|
39
|
+
const chai_1 = require("chai");
|
|
40
|
+
const table_view_1 = require("../../../../implementations/dms-base/table-view");
|
|
41
|
+
const tableViewInterface = __importStar(require("@antelopejs/interface-dms/base/table-view"));
|
|
42
|
+
const table_view_2 = require("@antelopejs/interface-dms/base/table-view");
|
|
43
|
+
const realtime_1 = require("@antelopejs/interface-dms/base/table-view/realtime");
|
|
44
|
+
const LOCATION = "/api/table-view-realtime";
|
|
45
|
+
const SESSION = "table-view-realtime-session";
|
|
46
|
+
const PRESENCE_ACQUIRE = "1";
|
|
47
|
+
const USER = { _id: "table-view-realtime-user", name: "Realtime" };
|
|
48
|
+
const REMOVED_SETTERS = [
|
|
49
|
+
"setRealtimeMutationHook",
|
|
50
|
+
"setRealtimePresenceHook",
|
|
51
|
+
"setRealtimePageTopicHook",
|
|
52
|
+
];
|
|
53
|
+
class RowsAPI extends (0, interface_api_1.Controller)(LOCATION) {
|
|
54
|
+
}
|
|
55
|
+
const controller = new RowsAPI();
|
|
56
|
+
const deliveries = [];
|
|
57
|
+
const editRoute = (0, realtime_1.withRealtimeMutation)({ eventType: "updated", extractIds: realtime_1.extractSingleParamId }, { method: "post", args: [], func: async () => ({ ok: true }) });
|
|
58
|
+
const getRoute = (0, realtime_1.withPresenceAcquire)({
|
|
59
|
+
method: "get",
|
|
60
|
+
args: [],
|
|
61
|
+
func: async () => ({ ok: true }),
|
|
62
|
+
});
|
|
63
|
+
function edit(id) {
|
|
64
|
+
return editRoute.func.call(controller, undefined, { id }, SESSION, USER);
|
|
65
|
+
}
|
|
66
|
+
function open(id) {
|
|
67
|
+
return getRoute.func.call(controller, undefined, { id }, SESSION, PRESENCE_ACQUIRE, USER);
|
|
68
|
+
}
|
|
69
|
+
function generation(name) {
|
|
70
|
+
return {
|
|
71
|
+
internal: {
|
|
72
|
+
PublishMutation: async ({ eventType, ids }) => {
|
|
73
|
+
deliveries.push(`${name} ${eventType} ${ids.join(",")}`);
|
|
74
|
+
},
|
|
75
|
+
AcquirePresence: async ({ rowId }) => {
|
|
76
|
+
deliveries.push(`${name} presence ${rowId}`);
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function attach(implementation) {
|
|
82
|
+
(0, interface_core_1.ImplementInterface)({ internal: table_view_2.internal }, implementation);
|
|
83
|
+
}
|
|
84
|
+
function detachGeneration() {
|
|
85
|
+
for (const fn of [table_view_2.internal.PublishMutation, table_view_2.internal.AcquirePresence]) {
|
|
86
|
+
fn.proxy.detach();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function settle() {
|
|
90
|
+
return new Promise((resolve) => setImmediate(resolve));
|
|
91
|
+
}
|
|
92
|
+
describe("[unit] interfaces/dms-base — table-view realtime across DMS generations", () => {
|
|
93
|
+
beforeEach(() => {
|
|
94
|
+
deliveries.length = 0;
|
|
95
|
+
});
|
|
96
|
+
after(() => {
|
|
97
|
+
attach({ internal: table_view_1.internal });
|
|
98
|
+
});
|
|
99
|
+
it("delivers to the generation that implements the interface now", async () => {
|
|
100
|
+
attach(generation("first"));
|
|
101
|
+
await edit("row-1");
|
|
102
|
+
await open("row-1");
|
|
103
|
+
attach(generation("second"));
|
|
104
|
+
await edit("row-2");
|
|
105
|
+
await open("row-2");
|
|
106
|
+
(0, chai_1.expect)(deliveries).to.deep.equal([
|
|
107
|
+
"first updated row-1",
|
|
108
|
+
"first presence row-1",
|
|
109
|
+
"second updated row-2",
|
|
110
|
+
"second presence row-2",
|
|
111
|
+
]);
|
|
112
|
+
});
|
|
113
|
+
it("holds what a route sends between two generations for the next one", async () => {
|
|
114
|
+
attach(generation("first"));
|
|
115
|
+
detachGeneration();
|
|
116
|
+
const stubMode = internal_1.internal.testStubMode;
|
|
117
|
+
internal_1.internal.testStubMode = false;
|
|
118
|
+
try {
|
|
119
|
+
const routes = Promise.all([edit("row-3"), open("row-3")]);
|
|
120
|
+
await settle();
|
|
121
|
+
(0, chai_1.expect)(deliveries).to.deep.equal([]);
|
|
122
|
+
attach(generation("second"));
|
|
123
|
+
await routes;
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
internal_1.internal.testStubMode = stubMode;
|
|
127
|
+
}
|
|
128
|
+
(0, chai_1.expect)(deliveries).to.deep.equal([
|
|
129
|
+
"second updated row-3",
|
|
130
|
+
"second presence row-3",
|
|
131
|
+
]);
|
|
132
|
+
});
|
|
133
|
+
it("offers no setter to leave a DMS callback in the interface", () => {
|
|
134
|
+
for (const setter of REMOVED_SETTERS) {
|
|
135
|
+
(0, chai_1.expect)(tableViewInterface).to.not.have.property(setter);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=table-view-realtime.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-view-realtime.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-realtime.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|