@carlonicora/nestjs-neo4jsonapi 1.62.7 → 1.64.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/dist/agents/agents.modules.d.ts.map +1 -1
- package/dist/agents/agents.modules.js +3 -0
- package/dist/agents/agents.modules.js.map +1 -1
- package/dist/agents/chatbot/chatbot.module.d.ts +3 -0
- package/dist/agents/chatbot/chatbot.module.d.ts.map +1 -0
- package/dist/agents/chatbot/chatbot.module.js +65 -0
- package/dist/agents/chatbot/chatbot.module.js.map +1 -0
- package/dist/agents/chatbot/interfaces/chatbot.response.interface.d.ts +25 -0
- package/dist/agents/chatbot/interfaces/chatbot.response.interface.d.ts.map +1 -0
- package/dist/agents/chatbot/interfaces/chatbot.response.interface.js +3 -0
- package/dist/agents/chatbot/interfaces/chatbot.response.interface.js.map +1 -0
- package/dist/agents/chatbot/interfaces/graph.catalog.interface.d.ts +50 -0
- package/dist/agents/chatbot/interfaces/graph.catalog.interface.d.ts.map +1 -0
- package/dist/agents/chatbot/interfaces/graph.catalog.interface.js +3 -0
- package/dist/agents/chatbot/interfaces/graph.catalog.interface.js.map +1 -0
- package/dist/agents/chatbot/prompts/chatbot.system.prompt.d.ts +3 -0
- package/dist/agents/chatbot/prompts/chatbot.system.prompt.d.ts.map +1 -0
- package/dist/agents/chatbot/prompts/chatbot.system.prompt.js +60 -0
- package/dist/agents/chatbot/prompts/chatbot.system.prompt.js.map +1 -0
- package/dist/agents/chatbot/repositories/user-modules.repository.d.ts +28 -0
- package/dist/agents/chatbot/repositories/user-modules.repository.d.ts.map +1 -0
- package/dist/agents/chatbot/repositories/user-modules.repository.js +76 -0
- package/dist/agents/chatbot/repositories/user-modules.repository.js.map +1 -0
- package/dist/agents/chatbot/services/chatbot.index.manager.d.ts +17 -0
- package/dist/agents/chatbot/services/chatbot.index.manager.d.ts.map +1 -0
- package/dist/agents/chatbot/services/chatbot.index.manager.js +84 -0
- package/dist/agents/chatbot/services/chatbot.index.manager.js.map +1 -0
- package/dist/agents/chatbot/services/chatbot.search.service.d.ts +46 -0
- package/dist/agents/chatbot/services/chatbot.search.service.d.ts.map +1 -0
- package/dist/agents/chatbot/services/chatbot.search.service.js +148 -0
- package/dist/agents/chatbot/services/chatbot.search.service.js.map +1 -0
- package/dist/agents/chatbot/services/chatbot.service.d.ts +36 -0
- package/dist/agents/chatbot/services/chatbot.service.d.ts.map +1 -0
- package/dist/agents/chatbot/services/chatbot.service.js +220 -0
- package/dist/agents/chatbot/services/chatbot.service.js.map +1 -0
- package/dist/agents/chatbot/services/descriptor.source.d.ts +18 -0
- package/dist/agents/chatbot/services/descriptor.source.d.ts.map +1 -0
- package/dist/agents/chatbot/services/descriptor.source.js +41 -0
- package/dist/agents/chatbot/services/descriptor.source.js.map +1 -0
- package/dist/agents/chatbot/services/field-formatting.d.ts +18 -0
- package/dist/agents/chatbot/services/field-formatting.d.ts.map +1 -0
- package/dist/agents/chatbot/services/field-formatting.js +43 -0
- package/dist/agents/chatbot/services/field-formatting.js.map +1 -0
- package/dist/agents/chatbot/services/graph.catalog.service.d.ts +60 -0
- package/dist/agents/chatbot/services/graph.catalog.service.d.ts.map +1 -0
- package/dist/agents/chatbot/services/graph.catalog.service.js +217 -0
- package/dist/agents/chatbot/services/graph.catalog.service.js.map +1 -0
- package/dist/agents/chatbot/services/humanize-tool.d.ts +9 -0
- package/dist/agents/chatbot/services/humanize-tool.d.ts.map +1 -0
- package/dist/agents/chatbot/services/humanize-tool.js +35 -0
- package/dist/agents/chatbot/services/humanize-tool.js.map +1 -0
- package/dist/agents/chatbot/tools/describe-entity.tool.d.ts +14 -0
- package/dist/agents/chatbot/tools/describe-entity.tool.d.ts.map +1 -0
- package/dist/agents/chatbot/tools/describe-entity.tool.js +63 -0
- package/dist/agents/chatbot/tools/describe-entity.tool.js.map +1 -0
- package/dist/agents/chatbot/tools/read-entity.tool.d.ts +16 -0
- package/dist/agents/chatbot/tools/read-entity.tool.d.ts.map +1 -0
- package/dist/agents/chatbot/tools/read-entity.tool.js +102 -0
- package/dist/agents/chatbot/tools/read-entity.tool.js.map +1 -0
- package/dist/agents/chatbot/tools/resolve-entity.tool.d.ts +16 -0
- package/dist/agents/chatbot/tools/resolve-entity.tool.d.ts.map +1 -0
- package/dist/agents/chatbot/tools/resolve-entity.tool.js +48 -0
- package/dist/agents/chatbot/tools/resolve-entity.tool.js.map +1 -0
- package/dist/agents/chatbot/tools/search-entities.tool.d.ts +20 -0
- package/dist/agents/chatbot/tools/search-entities.tool.d.ts.map +1 -0
- package/dist/agents/chatbot/tools/search-entities.tool.js +122 -0
- package/dist/agents/chatbot/tools/search-entities.tool.js.map +1 -0
- package/dist/agents/chatbot/tools/tool.factory.d.ts +29 -0
- package/dist/agents/chatbot/tools/tool.factory.d.ts.map +1 -0
- package/dist/agents/chatbot/tools/tool.factory.js +72 -0
- package/dist/agents/chatbot/tools/tool.factory.js.map +1 -0
- package/dist/agents/chatbot/tools/traverse.tool.d.ts +58 -0
- package/dist/agents/chatbot/tools/traverse.tool.d.ts.map +1 -0
- package/dist/agents/chatbot/tools/traverse.tool.js +212 -0
- package/dist/agents/chatbot/tools/traverse.tool.js.map +1 -0
- package/dist/agents/index.d.ts +9 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +17 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/bootstrap/bootstrap.options.d.ts +7 -0
- package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
- package/dist/common/helpers/define-entity.d.ts.map +1 -1
- package/dist/common/helpers/define-entity.js +5 -1
- package/dist/common/helpers/define-entity.js.map +1 -1
- package/dist/common/interfaces/datamodel.interface.d.ts +10 -0
- package/dist/common/interfaces/datamodel.interface.d.ts.map +1 -1
- package/dist/common/interfaces/datamodel.interface.js.map +1 -1
- package/dist/common/interfaces/entity.descriptor.interface.d.ts +1 -1
- package/dist/common/interfaces/entity.descriptor.interface.d.ts.map +1 -1
- package/dist/common/interfaces/entity.descriptor.interface.js.map +1 -1
- package/dist/common/interfaces/entity.schema.interface.d.ts +48 -0
- package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
- package/dist/common/registries/entity.service.registry.d.ts +13 -0
- package/dist/common/registries/entity.service.registry.d.ts.map +1 -0
- package/dist/common/registries/entity.service.registry.js +52 -0
- package/dist/common/registries/entity.service.registry.js.map +1 -0
- package/dist/common/registries/index.d.ts +1 -0
- package/dist/common/registries/index.d.ts.map +1 -1
- package/dist/common/registries/index.js +1 -0
- package/dist/common/registries/index.js.map +1 -1
- package/dist/core/core.module.d.ts.map +1 -1
- package/dist/core/core.module.js +6 -2
- package/dist/core/core.module.js.map +1 -1
- package/dist/core/llm/services/llm.service.d.ts.map +1 -1
- package/dist/core/llm/services/llm.service.js +8 -0
- package/dist/core/llm/services/llm.service.js.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.d.ts +48 -1
- package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.js +147 -9
- package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.service.d.ts +47 -0
- package/dist/core/neo4j/abstracts/abstract.service.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.service.js +57 -0
- package/dist/core/neo4j/abstracts/abstract.service.js.map +1 -1
- package/dist/core/neo4j/factories/entity.factory.d.ts.map +1 -1
- package/dist/core/neo4j/factories/entity.factory.js +27 -6
- package/dist/core/neo4j/factories/entity.factory.js.map +1 -1
- package/dist/core/neo4j/helpers/build-filter-clauses.d.ts +11 -0
- package/dist/core/neo4j/helpers/build-filter-clauses.d.ts.map +1 -0
- package/dist/core/neo4j/helpers/build-filter-clauses.js +69 -0
- package/dist/core/neo4j/helpers/build-filter-clauses.js.map +1 -0
- package/dist/core/neo4j/helpers/build-order-by.d.ts +6 -0
- package/dist/core/neo4j/helpers/build-order-by.d.ts.map +1 -0
- package/dist/core/neo4j/helpers/build-order-by.js +20 -0
- package/dist/core/neo4j/helpers/build-order-by.js.map +1 -0
- package/dist/core/neo4j/index.d.ts +1 -0
- package/dist/core/neo4j/index.d.ts.map +1 -1
- package/dist/core/neo4j/index.js +2 -0
- package/dist/core/neo4j/index.js.map +1 -1
- package/dist/core/neo4j/types/filter.criterion.d.ts +20 -0
- package/dist/core/neo4j/types/filter.criterion.d.ts.map +1 -0
- package/dist/core/neo4j/types/filter.criterion.js +3 -0
- package/dist/core/neo4j/types/filter.criterion.js.map +1 -0
- package/dist/core/neo4j/types/index.d.ts +2 -0
- package/dist/core/neo4j/types/index.d.ts.map +1 -0
- package/dist/core/neo4j/types/index.js +3 -0
- package/dist/core/neo4j/types/index.js.map +1 -0
- package/dist/foundations/assistant/assistant.module.d.ts +5 -0
- package/dist/foundations/assistant/assistant.module.d.ts.map +1 -0
- package/dist/foundations/assistant/assistant.module.js +32 -0
- package/dist/foundations/assistant/assistant.module.js.map +1 -0
- package/dist/foundations/assistant/controllers/assistant.controller.d.ts +67 -0
- package/dist/foundations/assistant/controllers/assistant.controller.d.ts.map +1 -0
- package/dist/foundations/assistant/controllers/assistant.controller.js +226 -0
- package/dist/foundations/assistant/controllers/assistant.controller.js.map +1 -0
- package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts +11 -0
- package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts.map +1 -0
- package/dist/foundations/assistant/dtos/assistant-append.dto.js +44 -0
- package/dist/foundations/assistant/dtos/assistant-append.dto.js.map +1 -0
- package/dist/foundations/assistant/dtos/assistant-patch.dto.d.ts +12 -0
- package/dist/foundations/assistant/dtos/assistant-patch.dto.d.ts.map +1 -0
- package/dist/foundations/assistant/dtos/assistant-patch.dto.js +52 -0
- package/dist/foundations/assistant/dtos/assistant-patch.dto.js.map +1 -0
- package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts +12 -0
- package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts.map +1 -0
- package/dist/foundations/assistant/dtos/assistant-post.dto.js +51 -0
- package/dist/foundations/assistant/dtos/assistant-post.dto.js.map +1 -0
- package/dist/foundations/assistant/entities/assistant.d.ts +48 -0
- package/dist/foundations/assistant/entities/assistant.d.ts.map +1 -0
- package/dist/foundations/assistant/entities/assistant.js +44 -0
- package/dist/foundations/assistant/entities/assistant.js.map +1 -0
- package/dist/foundations/assistant/entities/assistant.meta.d.ts +3 -0
- package/dist/foundations/assistant/entities/assistant.meta.d.ts.map +1 -0
- package/dist/foundations/assistant/entities/assistant.meta.js +10 -0
- package/dist/foundations/assistant/entities/assistant.meta.js.map +1 -0
- package/dist/foundations/assistant/index.d.ts +7 -0
- package/dist/foundations/assistant/index.d.ts.map +1 -0
- package/dist/foundations/assistant/index.js +12 -0
- package/dist/foundations/assistant/index.js.map +1 -0
- package/dist/foundations/assistant/repositories/assistant.repository.d.ts +50 -0
- package/dist/foundations/assistant/repositories/assistant.repository.d.ts.map +1 -0
- package/dist/foundations/assistant/repositories/assistant.repository.js +65 -0
- package/dist/foundations/assistant/repositories/assistant.repository.js.map +1 -0
- package/dist/foundations/assistant/services/assistant.service.d.ts +113 -0
- package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -0
- package/dist/foundations/assistant/services/assistant.service.js +395 -0
- package/dist/foundations/assistant/services/assistant.service.js.map +1 -0
- package/dist/foundations/assistant-message/assistant-message.module.d.ts +6 -0
- package/dist/foundations/assistant-message/assistant-message.module.d.ts.map +1 -0
- package/dist/foundations/assistant-message/assistant-message.module.js +36 -0
- package/dist/foundations/assistant-message/assistant-message.module.js.map +1 -0
- package/dist/foundations/assistant-message/controllers/assistant-message.controller.d.ts +16 -0
- package/dist/foundations/assistant-message/controllers/assistant-message.controller.d.ts.map +1 -0
- package/dist/foundations/assistant-message/controllers/assistant-message.controller.js +84 -0
- package/dist/foundations/assistant-message/controllers/assistant-message.controller.js.map +1 -0
- package/dist/foundations/assistant-message/dtos/assistant-message.dto.d.ts +11 -0
- package/dist/foundations/assistant-message/dtos/assistant-message.dto.d.ts.map +1 -0
- package/dist/foundations/assistant-message/dtos/assistant-message.dto.js +45 -0
- package/dist/foundations/assistant-message/dtos/assistant-message.dto.js.map +1 -0
- package/dist/foundations/assistant-message/entities/assistant-message.d.ts +49 -0
- package/dist/foundations/assistant-message/entities/assistant-message.d.ts.map +1 -0
- package/dist/foundations/assistant-message/entities/assistant-message.js +52 -0
- package/dist/foundations/assistant-message/entities/assistant-message.js.map +1 -0
- package/dist/foundations/assistant-message/entities/assistant-message.meta.d.ts +3 -0
- package/dist/foundations/assistant-message/entities/assistant-message.meta.d.ts.map +1 -0
- package/dist/foundations/assistant-message/entities/assistant-message.meta.js +10 -0
- package/dist/foundations/assistant-message/entities/assistant-message.meta.js.map +1 -0
- package/dist/foundations/assistant-message/index.d.ts +8 -0
- package/dist/foundations/assistant-message/index.d.ts.map +1 -0
- package/dist/foundations/assistant-message/index.js +24 -0
- package/dist/foundations/assistant-message/index.js.map +1 -0
- package/dist/foundations/assistant-message/repositories/assistant-message.repository.d.ts +70 -0
- package/dist/foundations/assistant-message/repositories/assistant-message.repository.d.ts.map +1 -0
- package/dist/foundations/assistant-message/repositories/assistant-message.repository.js +119 -0
- package/dist/foundations/assistant-message/repositories/assistant-message.repository.js.map +1 -0
- package/dist/foundations/assistant-message/services/assistant-message.service.d.ts +31 -0
- package/dist/foundations/assistant-message/services/assistant-message.service.d.ts.map +1 -0
- package/dist/foundations/assistant-message/services/assistant-message.service.js +32 -0
- package/dist/foundations/assistant-message/services/assistant-message.service.js.map +1 -0
- package/dist/foundations/foundations.modules.d.ts.map +1 -1
- package/dist/foundations/foundations.modules.js +2 -0
- package/dist/foundations/foundations.modules.js.map +1 -1
- package/dist/foundations/index.d.ts +2 -0
- package/dist/foundations/index.d.ts.map +1 -1
- package/dist/foundations/index.js +2 -0
- package/dist/foundations/index.js.map +1 -1
- package/dist/foundations/rbac/controllers/rbac-dev.controller.d.ts +50 -0
- package/dist/foundations/rbac/controllers/rbac-dev.controller.d.ts.map +1 -0
- package/dist/foundations/rbac/controllers/rbac-dev.controller.js +172 -0
- package/dist/foundations/rbac/controllers/rbac-dev.controller.js.map +1 -0
- package/dist/foundations/rbac/dsl/define-rbac.d.ts +15 -0
- package/dist/foundations/rbac/dsl/define-rbac.d.ts.map +1 -0
- package/dist/foundations/rbac/dsl/define-rbac.js +19 -0
- package/dist/foundations/rbac/dsl/define-rbac.js.map +1 -0
- package/dist/foundations/rbac/dsl/index.d.ts +6 -0
- package/dist/foundations/rbac/dsl/index.d.ts.map +1 -0
- package/dist/foundations/rbac/dsl/index.js +30 -0
- package/dist/foundations/rbac/dsl/index.js.map +1 -0
- package/dist/foundations/rbac/dsl/perm.d.ts +15 -0
- package/dist/foundations/rbac/dsl/perm.d.ts.map +1 -0
- package/dist/foundations/rbac/dsl/perm.js +24 -0
- package/dist/foundations/rbac/dsl/perm.js.map +1 -0
- package/dist/foundations/rbac/dsl/resolver.d.ts +24 -0
- package/dist/foundations/rbac/dsl/resolver.d.ts.map +1 -0
- package/dist/foundations/rbac/dsl/resolver.js +55 -0
- package/dist/foundations/rbac/dsl/resolver.js.map +1 -0
- package/dist/foundations/rbac/dsl/to-permissions-json.d.ts +13 -0
- package/dist/foundations/rbac/dsl/to-permissions-json.d.ts.map +1 -0
- package/dist/foundations/rbac/dsl/to-permissions-json.js +43 -0
- package/dist/foundations/rbac/dsl/to-permissions-json.js.map +1 -0
- package/dist/foundations/rbac/dsl/types.d.ts +55 -0
- package/dist/foundations/rbac/dsl/types.d.ts.map +1 -0
- package/dist/foundations/rbac/dsl/types.js +6 -0
- package/dist/foundations/rbac/dsl/types.js.map +1 -0
- package/dist/foundations/rbac/dump.d.ts +116 -0
- package/dist/foundations/rbac/dump.d.ts.map +1 -0
- package/dist/foundations/rbac/dump.js +154 -0
- package/dist/foundations/rbac/dump.js.map +1 -0
- package/dist/foundations/rbac/index.d.ts +6 -0
- package/dist/foundations/rbac/index.d.ts.map +1 -1
- package/dist/foundations/rbac/index.js +23 -1
- package/dist/foundations/rbac/index.js.map +1 -1
- package/dist/foundations/rbac/rbac.module.d.ts +4 -1
- package/dist/foundations/rbac/rbac.module.d.ts.map +1 -1
- package/dist/foundations/rbac/rbac.module.js +25 -11
- package/dist/foundations/rbac/rbac.module.js.map +1 -1
- package/dist/foundations/rbac/rbac.tokens.d.ts +11 -0
- package/dist/foundations/rbac/rbac.tokens.d.ts.map +1 -0
- package/dist/foundations/rbac/rbac.tokens.js +14 -0
- package/dist/foundations/rbac/rbac.tokens.js.map +1 -0
- package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts +13 -0
- package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts.map +1 -0
- package/dist/foundations/rbac/serializer/matrix-to-ts.js +74 -0
- package/dist/foundations/rbac/serializer/matrix-to-ts.js.map +1 -0
- package/dist/foundations/rbac/services/rbac-reconciler.service.d.ts +30 -0
- package/dist/foundations/rbac/services/rbac-reconciler.service.d.ts.map +1 -0
- package/dist/foundations/rbac/services/rbac-reconciler.service.js +192 -0
- package/dist/foundations/rbac/services/rbac-reconciler.service.js.map +1 -0
- package/dist/foundations/stripe/__tests__/mocks/stripe.mock.d.ts +62 -62
- package/dist/tools/generate-rbac-paths/index.js +24 -19
- package/package.json +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var AssistantMessageRepository_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.AssistantMessageRepository = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const nestjs_cls_1 = require("nestjs-cls");
|
|
16
|
+
const abstract_repository_1 = require("../../../core/neo4j/abstracts/abstract.repository");
|
|
17
|
+
const neo4j_service_1 = require("../../../core/neo4j/services/neo4j.service");
|
|
18
|
+
const security_service_1 = require("../../../core/security/services/security.service");
|
|
19
|
+
const registry_1 = require("../../../common/registries/registry");
|
|
20
|
+
const assistant_message_1 = require("../entities/assistant-message");
|
|
21
|
+
/**
|
|
22
|
+
* AssistantMessageRepository
|
|
23
|
+
*
|
|
24
|
+
* Owner-RBAC is inherited from the parent Assistant (a user may only see the
|
|
25
|
+
* messages that belong to their own assistants). Company scope is applied
|
|
26
|
+
* automatically via `buildDefaultMatch()` (`isCompanyScoped: true`).
|
|
27
|
+
*/
|
|
28
|
+
let AssistantMessageRepository = AssistantMessageRepository_1 = class AssistantMessageRepository extends abstract_repository_1.AbstractRepository {
|
|
29
|
+
constructor(neo4j, securityService, clsService) {
|
|
30
|
+
super(neo4j, securityService, clsService);
|
|
31
|
+
this.descriptor = assistant_message_1.AssistantMessageDescriptor;
|
|
32
|
+
this.refLogger = new common_1.Logger(AssistantMessageRepository_1.name);
|
|
33
|
+
}
|
|
34
|
+
buildUserHasAccess() {
|
|
35
|
+
const { nodeName } = this.descriptor.model;
|
|
36
|
+
return `WITH ${nodeName}
|
|
37
|
+
WHERE EXISTS {
|
|
38
|
+
MATCH (${nodeName})<-[:HAS_MESSAGE]-(:Assistant)-[:CREATED_BY]->(:User {id: $currentUserId})
|
|
39
|
+
}
|
|
40
|
+
WITH ${nodeName}`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the next position to assign to a new AssistantMessage under the
|
|
44
|
+
* given Assistant. Returns 0 for an empty thread, otherwise max(position)+1.
|
|
45
|
+
*/
|
|
46
|
+
async getNextPosition(params) {
|
|
47
|
+
const result = await this.neo4j.read(`
|
|
48
|
+
MATCH (:Assistant {id: $assistantId})-[:HAS_MESSAGE]->(m:AssistantMessage)
|
|
49
|
+
RETURN coalesce(max(m.position), -1) + 1 AS next
|
|
50
|
+
`, { assistantId: params.assistantId });
|
|
51
|
+
const rec = result.records[0];
|
|
52
|
+
if (!rec)
|
|
53
|
+
return 0;
|
|
54
|
+
const value = rec.get("next");
|
|
55
|
+
return typeof value?.toNumber === "function" ? value.toNumber() : Number(value ?? 0);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Materialise one (:AssistantMessage)-[:REFERENCES { reason, createdAt }]->(target)
|
|
59
|
+
* edge per reference. JSON:API type → Neo4j label is resolved through the
|
|
60
|
+
* pre-seeded modelRegistry. Unknown types are logged and skipped.
|
|
61
|
+
*
|
|
62
|
+
* Idempotent via MERGE.
|
|
63
|
+
*/
|
|
64
|
+
async linkReferences(params) {
|
|
65
|
+
for (const ref of params.references) {
|
|
66
|
+
const model = registry_1.modelRegistry.getByType(ref.type);
|
|
67
|
+
if (!model) {
|
|
68
|
+
this.refLogger.warn(`linkReferences: unknown JSON:API type "${ref.type}" for ref id=${ref.id} — skipping edge (message id=${params.messageId})`);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const label = model.labelName;
|
|
72
|
+
await this.neo4j.writeOne({
|
|
73
|
+
query: `
|
|
74
|
+
MATCH (m:AssistantMessage {id: $messageId})
|
|
75
|
+
MATCH (e:${label} {id: $refId})
|
|
76
|
+
MERGE (m)-[r:REFERENCES]->(e)
|
|
77
|
+
SET r.reason = $reason, r.createdAt = coalesce(r.createdAt, datetime())
|
|
78
|
+
`,
|
|
79
|
+
queryParams: {
|
|
80
|
+
messageId: params.messageId,
|
|
81
|
+
refId: ref.id,
|
|
82
|
+
reason: ref.reason,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* For the given message IDs, return every (messageId, targetType, targetId) triple
|
|
89
|
+
* for the outgoing :REFERENCES edges. Label is mapped to JSON:API type via modelRegistry.
|
|
90
|
+
*/
|
|
91
|
+
async findReferencedTypeIdPairs(params) {
|
|
92
|
+
if (params.messageIds.length === 0)
|
|
93
|
+
return [];
|
|
94
|
+
const result = await this.neo4j.read(`
|
|
95
|
+
MATCH (m:AssistantMessage)-[:REFERENCES]->(e)
|
|
96
|
+
WHERE m.id IN $messageIds
|
|
97
|
+
RETURN m.id AS messageId, labels(e)[0] AS label, e.id AS id
|
|
98
|
+
`, { messageIds: params.messageIds });
|
|
99
|
+
const pairs = [];
|
|
100
|
+
for (const rec of result.records) {
|
|
101
|
+
const label = rec.get("label");
|
|
102
|
+
const model = registry_1.modelRegistry.getByLabelName(label);
|
|
103
|
+
if (!model)
|
|
104
|
+
continue; // unknown label — skip silently
|
|
105
|
+
pairs.push({
|
|
106
|
+
messageId: rec.get("messageId"),
|
|
107
|
+
type: model.type,
|
|
108
|
+
id: rec.get("id"),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return pairs;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
exports.AssistantMessageRepository = AssistantMessageRepository;
|
|
115
|
+
exports.AssistantMessageRepository = AssistantMessageRepository = AssistantMessageRepository_1 = __decorate([
|
|
116
|
+
(0, common_1.Injectable)(),
|
|
117
|
+
__metadata("design:paramtypes", [neo4j_service_1.Neo4jService, security_service_1.SecurityService, nestjs_cls_1.ClsService])
|
|
118
|
+
], AssistantMessageRepository);
|
|
119
|
+
//# sourceMappingURL=assistant-message.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-message.repository.js","sourceRoot":"","sources":["../../../../src/foundations/assistant-message/repositories/assistant-message.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ClsService } from "nestjs-cls";
|
|
2
|
+
import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
|
|
3
|
+
import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
|
|
4
|
+
import { AssistantMessage, AssistantMessageDescriptor } from "../entities/assistant-message";
|
|
5
|
+
import { AssistantMessageRepository } from "../repositories/assistant-message.repository";
|
|
6
|
+
export declare class AssistantMessageService extends AbstractService<AssistantMessage, typeof AssistantMessageDescriptor.relationships> {
|
|
7
|
+
protected readonly descriptor: import("../../..").EntityDescriptor<AssistantMessage, {
|
|
8
|
+
assistant: {
|
|
9
|
+
model: import("../../..").DataMeta;
|
|
10
|
+
direction: "in";
|
|
11
|
+
relationship: string;
|
|
12
|
+
cardinality: "one";
|
|
13
|
+
dtoKey: string;
|
|
14
|
+
required: true;
|
|
15
|
+
immutable: true;
|
|
16
|
+
};
|
|
17
|
+
references: {
|
|
18
|
+
model: import("../../..").DataMeta;
|
|
19
|
+
direction: "out";
|
|
20
|
+
relationship: string;
|
|
21
|
+
cardinality: "many";
|
|
22
|
+
dtoKey: string;
|
|
23
|
+
polymorphic: {
|
|
24
|
+
candidates: any[];
|
|
25
|
+
discriminator: (data: import("../../..").PolymorphicDiscriminatorData) => import("../../..").DataModelInterface<any>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
constructor(jsonApiService: JsonApiService, assistantMessageRepository: AssistantMessageRepository, clsService: ClsService);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=assistant-message.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-message.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/assistant-message/services/assistant-message.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAE1F,qBACa,uBAAwB,SAAQ,eAAe,CAC1D,gBAAgB,EAChB,OAAO,0BAA0B,CAAC,aAAa,CAChD;IACC,SAAS,CAAC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;OAA8B;gBAGzD,cAAc,EAAE,cAAc,EAC9B,0BAA0B,EAAE,0BAA0B,EACtD,UAAU,EAAE,UAAU;CAIzB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AssistantMessageService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const nestjs_cls_1 = require("nestjs-cls");
|
|
15
|
+
const jsonapi_service_1 = require("../../../core/jsonapi/services/jsonapi.service");
|
|
16
|
+
const abstract_service_1 = require("../../../core/neo4j/abstracts/abstract.service");
|
|
17
|
+
const assistant_message_1 = require("../entities/assistant-message");
|
|
18
|
+
const assistant_message_repository_1 = require("../repositories/assistant-message.repository");
|
|
19
|
+
let AssistantMessageService = class AssistantMessageService extends abstract_service_1.AbstractService {
|
|
20
|
+
constructor(jsonApiService, assistantMessageRepository, clsService) {
|
|
21
|
+
super(jsonApiService, assistantMessageRepository, clsService, assistant_message_1.AssistantMessageDescriptor.model);
|
|
22
|
+
this.descriptor = assistant_message_1.AssistantMessageDescriptor;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.AssistantMessageService = AssistantMessageService;
|
|
26
|
+
exports.AssistantMessageService = AssistantMessageService = __decorate([
|
|
27
|
+
(0, common_1.Injectable)(),
|
|
28
|
+
__metadata("design:paramtypes", [jsonapi_service_1.JsonApiService,
|
|
29
|
+
assistant_message_repository_1.AssistantMessageRepository,
|
|
30
|
+
nestjs_cls_1.ClsService])
|
|
31
|
+
], AssistantMessageService);
|
|
32
|
+
//# sourceMappingURL=assistant-message.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-message.service.js","sourceRoot":"","sources":["../../../../src/foundations/assistant-message/services/assistant-message.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAwC;AACxC,oFAAgF;AAChF,qFAAiF;AACjF,qEAA6F;AAC7F,+FAA0F;AAGnF,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,kCAG5C;IAGC,YACE,cAA8B,EAC9B,0BAAsD,EACtD,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,0BAA0B,EAAE,UAAU,EAAE,8CAA0B,CAAC,KAAK,CAAC,CAAC;QAP/E,eAAU,GAAG,8CAA0B,CAAC;IAQ3D,CAAC;CACF,CAAA;AAbY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAQO,gCAAc;QACF,yDAA0B;QAC1C,uBAAU;GATb,uBAAuB,CAanC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundations.modules.d.ts","sourceRoot":"","sources":["../../src/foundations/foundations.modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"foundations.modules.d.ts","sourceRoot":"","sources":["../../src/foundations/foundations.modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AASvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AA0BvF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAwCD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,iBAAiB;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,aAAa;CAWhE"}
|
|
@@ -9,6 +9,7 @@ var FoundationsModule_1;
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.FoundationsModule = void 0;
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
|
+
const assistant_module_1 = require("./assistant/assistant.module");
|
|
12
13
|
const atomicfact_module_1 = require("./atomicfact/atomicfact.module");
|
|
13
14
|
const audit_module_1 = require("./audit/audit.module");
|
|
14
15
|
const auth_module_1 = require("./auth/auth.module");
|
|
@@ -46,6 +47,7 @@ const waitlist_module_1 = require("./waitlist/waitlist.module");
|
|
|
46
47
|
* Queue registration is handled centrally by QueueModule (via baseConfig.chunkQueues).
|
|
47
48
|
*/
|
|
48
49
|
const STATIC_FOUNDATION_MODULES = [
|
|
50
|
+
assistant_module_1.AssistantModule,
|
|
49
51
|
atomicfact_module_1.AtomicFactModule,
|
|
50
52
|
audit_module_1.AuditModule,
|
|
51
53
|
auth_module_1.AuthModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundations.modules.js","sourceRoot":"","sources":["../../src/foundations/foundations.modules.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,sEAAkE;AAClE,uDAAmD;AACnD,oDAAgD;AAChD,uDAAmD;AACnD,6DAAyD;AACzD,6DAAyD;AACzD,6DAAyD;AAEzD,gEAA4D;AAE5D,4EAAuE;AACvE,6DAAyD;AACzD,0DAAqD;AACrD,sEAAkE;AAClE,0DAAsD;AACtD,4EAAwE;AACxE,uDAAmD;AACnD,oDAAgD;AAChD,mEAA+D;AAC/D,oDAAgD;AAChD,8CAA0C;AAC1C,kFAA6E;AAC7E,iDAAmD;AACnD,qDAAuD;AACvD,mEAAoE;AACpE,+DAAiE;AACjE,4EAAuE;AACvE,kFAA6E;AAC7E,0DAAsD;AACtD,4EAAuE;AACvE,sEAAkE;AAClE,sEAAiE;AACjE,oDAAgD;AAChD,gEAA4D;AAY5D;;;GAGG;AACH,MAAM,yBAAyB,GAAG;IAChC,oCAAgB;IAChB,0BAAW;IACX,wBAAU;IACV,0BAAW;IACX,8BAAa;IACb,8BAAa;IACb,uCAAiB;IACjB,8BAAa;IACb,2BAAW;IACX,oCAAgB;IAChB,4BAAY;IACZ,wCAAkB;IAClB,0BAAW;IACX,wBAAU;IACV,kCAAe;IACf,wBAAU;IACV,oBAAQ;IACR,oCAAgB;IAChB,mCAAe;IACf,wBAAU;IACV,gCAAc;IACd,4BAAY;IACZ,iDAAyB;IACzB,8CAAwB;IACxB,gCAAiB;IACjB,oCAAmB;IACnB,2CAAmB;IACnB,uCAAiB;IACjB,2CAAmB;IACnB,uCAAiB;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEI,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,MAAgC;QAC7C,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE;gBACP,GAAG,yBAAyB;gBAC5B,8BAAa,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAC/C,gCAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;aACzC;YACD,OAAO,EAAE,CAAC,GAAG,yBAAyB,EAAE,8BAAa,EAAE,gCAAc,CAAC;SACvE,CAAC;IACJ,CAAC;CACF,CAAA;AAlBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CAkB7B"}
|
|
1
|
+
{"version":3,"file":"foundations.modules.js","sourceRoot":"","sources":["../../src/foundations/foundations.modules.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,mEAA+D;AAC/D,sEAAkE;AAClE,uDAAmD;AACnD,oDAAgD;AAChD,uDAAmD;AACnD,6DAAyD;AACzD,6DAAyD;AACzD,6DAAyD;AAEzD,gEAA4D;AAE5D,4EAAuE;AACvE,6DAAyD;AACzD,0DAAqD;AACrD,sEAAkE;AAClE,0DAAsD;AACtD,4EAAwE;AACxE,uDAAmD;AACnD,oDAAgD;AAChD,mEAA+D;AAC/D,oDAAgD;AAChD,8CAA0C;AAC1C,kFAA6E;AAC7E,iDAAmD;AACnD,qDAAuD;AACvD,mEAAoE;AACpE,+DAAiE;AACjE,4EAAuE;AACvE,kFAA6E;AAC7E,0DAAsD;AACtD,4EAAuE;AACvE,sEAAkE;AAClE,sEAAiE;AACjE,oDAAgD;AAChD,gEAA4D;AAY5D;;;GAGG;AACH,MAAM,yBAAyB,GAAG;IAChC,kCAAe;IACf,oCAAgB;IAChB,0BAAW;IACX,wBAAU;IACV,0BAAW;IACX,8BAAa;IACb,8BAAa;IACb,uCAAiB;IACjB,8BAAa;IACb,2BAAW;IACX,oCAAgB;IAChB,4BAAY;IACZ,wCAAkB;IAClB,0BAAW;IACX,wBAAU;IACV,kCAAe;IACf,wBAAU;IACV,oBAAQ;IACR,oCAAgB;IAChB,mCAAe;IACf,wBAAU;IACV,gCAAc;IACd,4BAAY;IACZ,iDAAyB;IACzB,8CAAwB;IACxB,gCAAiB;IACjB,oCAAmB;IACnB,2CAAmB;IACnB,uCAAiB;IACjB,2CAAmB;IACnB,uCAAiB;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEI,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,MAAgC;QAC7C,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE;gBACP,GAAG,yBAAyB;gBAC5B,8BAAa,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAC/C,gCAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;aACzC;YACD,OAAO,EAAE,CAAC,GAAG,yBAAyB,EAAE,8BAAa,EAAE,gCAAc,CAAC;SACvE,CAAC;IACJ,CAAC;CACF,CAAA;AAlBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CAkB7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/foundations/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,uBAAuB,CAAC;AAGtC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/foundations/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,uBAAuB,CAAC;AAGtC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
|
|
@@ -20,6 +20,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
// Centralized FoundationsModule - import all foundation modules with single forRoot()
|
|
21
21
|
__exportStar(require("./foundations.modules"), exports);
|
|
22
22
|
// Individual foundation modules with entities, metas, repositories, and services
|
|
23
|
+
__exportStar(require("./assistant"), exports);
|
|
24
|
+
__exportStar(require("./assistant-message"), exports);
|
|
23
25
|
__exportStar(require("./atomicfact"), exports);
|
|
24
26
|
__exportStar(require("./audit"), exports);
|
|
25
27
|
__exportStar(require("./auth"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/foundations/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,sFAAsF;AACtF,wDAAsC;AAEtC,iFAAiF;AACjF,+CAA6B;AAC7B,0CAAwB;AACxB,yCAAuB;AACvB,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,iDAA+B;AAC/B,4CAA0B;AAC1B,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,iDAA+B;AAC/B,0CAAwB;AACxB,yCAAuB;AACvB,6CAA2B;AAC3B,8CAA4B;AAC5B,yCAAuB;AACvB,uCAAqB;AACrB,2CAAyB;AACzB,+CAA6B;AAC7B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/foundations/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,sFAAsF;AACtF,wDAAsC;AAEtC,iFAAiF;AACjF,8CAA4B;AAC5B,sDAAoC;AACpC,+CAA6B;AAC7B,0CAAwB;AACxB,yCAAuB;AACvB,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,iDAA+B;AAC/B,4CAA0B;AAC1B,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,iDAA+B;AAC/B,0CAAwB;AACxB,yCAAuB;AACvB,6CAA2B;AAC3B,8CAA4B;AAC5B,yCAAuB;AACvB,uCAAqB;AACrB,2CAAyB;AACzB,+CAA6B;AAC7B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { RbacMatrix } from "../dsl/types";
|
|
2
|
+
interface RbacMatrixPutBody {
|
|
3
|
+
data: {
|
|
4
|
+
type: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
attributes: {
|
|
7
|
+
matrix: RbacMatrix;
|
|
8
|
+
roleNames: Record<string, string>;
|
|
9
|
+
moduleNames: Record<string, string>;
|
|
10
|
+
outputPath: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Dev-only endpoints for editing the rbac matrix.
|
|
16
|
+
*
|
|
17
|
+
* Registered ONLY when `devMode` is enabled on RbacModule.register (see
|
|
18
|
+
* `apps/api/src/features/features.modules.ts`).
|
|
19
|
+
*
|
|
20
|
+
* Both endpoints speak JSON:API (single-resource envelopes) so the frontend
|
|
21
|
+
* can consume them via the standard `callApi()` pipeline instead of a
|
|
22
|
+
* bespoke raw-fetch escape hatch.
|
|
23
|
+
*/
|
|
24
|
+
export declare class RbacDevController {
|
|
25
|
+
private readonly matrix;
|
|
26
|
+
private readonly moduleUserPaths;
|
|
27
|
+
constructor(matrix: RbacMatrix | null, moduleUserPaths: Record<string, readonly string[]> | null);
|
|
28
|
+
getMatrix(): {
|
|
29
|
+
data: {
|
|
30
|
+
type: string;
|
|
31
|
+
id: string;
|
|
32
|
+
attributes: {
|
|
33
|
+
matrix: RbacMatrix<Record<string, readonly string[]>>;
|
|
34
|
+
modulePaths: Record<string, readonly string[]>;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
putMatrix(body: RbacMatrixPutBody): Promise<{
|
|
39
|
+
data: {
|
|
40
|
+
type: string;
|
|
41
|
+
id: string;
|
|
42
|
+
attributes: {
|
|
43
|
+
bytesWritten: number;
|
|
44
|
+
path: string;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
}>;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=rbac-dev.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac-dev.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/rbac/controllers/rbac-dev.controller.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,cAAc,CAAC;AA8C1D,UAAU,iBAAiB;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE;YACV,MAAM,EAAE,UAAU,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,qBACa,iBAAiB;IAEa,OAAO,CAAC,QAAQ,CAAC,MAAM;IAG9D,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAHwB,MAAM,EAAE,UAAU,GAAG,IAAI,EAGhE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI;IAI5E,SAAS;;;;;;;;;;IAcH,SAAS,CAAS,IAAI,EAAE,iBAAiB;;;;;;;;;;CA8BhD"}
|
|
@@ -0,0 +1,172 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
45
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.RbacDevController = void 0;
|
|
49
|
+
const common_1 = require("@nestjs/common");
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const rbac_tokens_1 = require("../rbac.tokens");
|
|
53
|
+
const rbac_constants_1 = require("../rbac.constants");
|
|
54
|
+
const matrix_to_ts_1 = require("../serializer/matrix-to-ts");
|
|
55
|
+
/**
|
|
56
|
+
* Walk up from `startDir` looking for `pnpm-workspace.yaml`. Returns that
|
|
57
|
+
* directory, or `startDir` as a fallback. Used to resolve relative
|
|
58
|
+
* `outputPath` arguments from the frontend consistently regardless of where
|
|
59
|
+
* the API process was started from (its `cwd` is `apps/api` in dev).
|
|
60
|
+
*/
|
|
61
|
+
function findMonorepoRoot(startDir) {
|
|
62
|
+
let current = startDir;
|
|
63
|
+
while (true) {
|
|
64
|
+
if (fs.existsSync(path.join(current, "pnpm-workspace.yaml"))) {
|
|
65
|
+
return current;
|
|
66
|
+
}
|
|
67
|
+
const parent = path.dirname(current);
|
|
68
|
+
if (parent === current)
|
|
69
|
+
return startDir;
|
|
70
|
+
current = parent;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* perm.* tokens are callable hybrids (function + attached `action`/`scope` own
|
|
75
|
+
* properties). JSON.stringify drops functions, producing `null` inside arrays.
|
|
76
|
+
* Normalise to plain `{ action, scope }` objects before envelope wrapping.
|
|
77
|
+
*/
|
|
78
|
+
function normaliseMatrix(matrix) {
|
|
79
|
+
const out = {};
|
|
80
|
+
for (const [moduleId, block] of Object.entries(matrix)) {
|
|
81
|
+
if (!block)
|
|
82
|
+
continue;
|
|
83
|
+
const newBlock = { default: [] };
|
|
84
|
+
for (const [key, tokens] of Object.entries(block)) {
|
|
85
|
+
newBlock[key] = tokens.map((t) => ({ action: t.action, scope: t.scope }));
|
|
86
|
+
}
|
|
87
|
+
out[moduleId] = newBlock;
|
|
88
|
+
}
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* JSON:API type emitted / expected by the dev RBAC matrix endpoints.
|
|
93
|
+
* Kebab-case to match the rest of the codebase (e.g. "permission-mappings").
|
|
94
|
+
*/
|
|
95
|
+
const RBAC_MATRIX_TYPE = "rbac-matrix";
|
|
96
|
+
const RBAC_MATRIX_ID = "singleton";
|
|
97
|
+
/**
|
|
98
|
+
* Dev-only endpoints for editing the rbac matrix.
|
|
99
|
+
*
|
|
100
|
+
* Registered ONLY when `devMode` is enabled on RbacModule.register (see
|
|
101
|
+
* `apps/api/src/features/features.modules.ts`).
|
|
102
|
+
*
|
|
103
|
+
* Both endpoints speak JSON:API (single-resource envelopes) so the frontend
|
|
104
|
+
* can consume them via the standard `callApi()` pipeline instead of a
|
|
105
|
+
* bespoke raw-fetch escape hatch.
|
|
106
|
+
*/
|
|
107
|
+
let RbacDevController = class RbacDevController {
|
|
108
|
+
constructor(matrix, moduleUserPaths) {
|
|
109
|
+
this.matrix = matrix;
|
|
110
|
+
this.moduleUserPaths = moduleUserPaths;
|
|
111
|
+
}
|
|
112
|
+
getMatrix() {
|
|
113
|
+
return {
|
|
114
|
+
data: {
|
|
115
|
+
type: RBAC_MATRIX_TYPE,
|
|
116
|
+
id: RBAC_MATRIX_ID,
|
|
117
|
+
attributes: {
|
|
118
|
+
matrix: this.matrix ? normaliseMatrix(this.matrix) : {},
|
|
119
|
+
modulePaths: this.moduleUserPaths ?? {},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
async putMatrix(body) {
|
|
125
|
+
const attributes = body?.data?.attributes;
|
|
126
|
+
if (!attributes) {
|
|
127
|
+
throw new Error("Invalid JSON:API body: missing data.attributes");
|
|
128
|
+
}
|
|
129
|
+
const { matrix, roleNames, moduleNames, outputPath } = attributes;
|
|
130
|
+
const source = await (0, matrix_to_ts_1.serializeMatrixToTs)(matrix, {
|
|
131
|
+
roleNames,
|
|
132
|
+
moduleNames,
|
|
133
|
+
});
|
|
134
|
+
const outPath = path.isAbsolute(outputPath)
|
|
135
|
+
? outputPath
|
|
136
|
+
: path.resolve(findMonorepoRoot(process.cwd()), outputPath);
|
|
137
|
+
fs.writeFileSync(outPath, source);
|
|
138
|
+
return {
|
|
139
|
+
data: {
|
|
140
|
+
type: RBAC_MATRIX_TYPE,
|
|
141
|
+
id: RBAC_MATRIX_ID,
|
|
142
|
+
attributes: {
|
|
143
|
+
bytesWritten: Buffer.byteLength(source),
|
|
144
|
+
path: outPath,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
exports.RbacDevController = RbacDevController;
|
|
151
|
+
__decorate([
|
|
152
|
+
(0, common_1.Get)("matrix"),
|
|
153
|
+
__metadata("design:type", Function),
|
|
154
|
+
__metadata("design:paramtypes", []),
|
|
155
|
+
__metadata("design:returntype", void 0)
|
|
156
|
+
], RbacDevController.prototype, "getMatrix", null);
|
|
157
|
+
__decorate([
|
|
158
|
+
(0, common_1.Put)("matrix"),
|
|
159
|
+
__param(0, (0, common_1.Body)()),
|
|
160
|
+
__metadata("design:type", Function),
|
|
161
|
+
__metadata("design:paramtypes", [Object]),
|
|
162
|
+
__metadata("design:returntype", Promise)
|
|
163
|
+
], RbacDevController.prototype, "putMatrix", null);
|
|
164
|
+
exports.RbacDevController = RbacDevController = __decorate([
|
|
165
|
+
(0, common_1.Controller)("_dev/rbac"),
|
|
166
|
+
__param(0, (0, common_1.Optional)()),
|
|
167
|
+
__param(0, (0, common_1.Inject)(rbac_tokens_1.RBAC_MATRIX_TOKEN)),
|
|
168
|
+
__param(1, (0, common_1.Optional)()),
|
|
169
|
+
__param(1, (0, common_1.Inject)(rbac_constants_1.MODULE_USER_PATHS_TOKEN)),
|
|
170
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
171
|
+
], RbacDevController);
|
|
172
|
+
//# sourceMappingURL=rbac-dev.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac-dev.controller.js","sourceRoot":"","sources":["../../../../src/foundations/rbac/controllers/rbac-dev.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RbacMatrix } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Identity function used to attach typing to an rbac matrix literal.
|
|
4
|
+
*
|
|
5
|
+
* The generic parameter binds the matrix to a concrete `MODULE_USER_PATHS`
|
|
6
|
+
* shape so that scoped-path arguments in `perm.update("...")` etc. are
|
|
7
|
+
* type-checked against the module they are declared under.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* export const rbac = defineRbac<typeof MODULE_USER_PATHS>({
|
|
11
|
+
* [ModuleId.Part]: { default: [perm.read], ... },
|
|
12
|
+
* });
|
|
13
|
+
*/
|
|
14
|
+
export declare function defineRbac<ModuleUserPaths extends Record<string, readonly string[]>>(matrix: RbacMatrix<ModuleUserPaths>): RbacMatrix<ModuleUserPaths>;
|
|
15
|
+
//# sourceMappingURL=define-rbac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-rbac.d.ts","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/define-rbac.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAClF,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,GAClC,UAAU,CAAC,eAAe,CAAC,CAE7B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineRbac = defineRbac;
|
|
4
|
+
/**
|
|
5
|
+
* Identity function used to attach typing to an rbac matrix literal.
|
|
6
|
+
*
|
|
7
|
+
* The generic parameter binds the matrix to a concrete `MODULE_USER_PATHS`
|
|
8
|
+
* shape so that scoped-path arguments in `perm.update("...")` etc. are
|
|
9
|
+
* type-checked against the module they are declared under.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* export const rbac = defineRbac<typeof MODULE_USER_PATHS>({
|
|
13
|
+
* [ModuleId.Part]: { default: [perm.read], ... },
|
|
14
|
+
* });
|
|
15
|
+
*/
|
|
16
|
+
function defineRbac(matrix) {
|
|
17
|
+
return matrix;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=define-rbac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-rbac.js","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/define-rbac.ts"],"names":[],"mappings":";;AAeA,gCAIC;AAhBD;;;;;;;;;;;GAWG;AACH,SAAgB,UAAU,CACxB,MAAmC;IAEnC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./types";
|
|
2
|
+
export { perm } from "./perm";
|
|
3
|
+
export { defineRbac } from "./define-rbac";
|
|
4
|
+
export { toPermissionsJson } from "./to-permissions-json";
|
|
5
|
+
export { resolveForRole, resolveDefault, iterateDeclaredEdges, iterateDeclaredModules } from "./resolver";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.iterateDeclaredModules = exports.iterateDeclaredEdges = exports.resolveDefault = exports.resolveForRole = exports.toPermissionsJson = exports.defineRbac = exports.perm = void 0;
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
var perm_1 = require("./perm");
|
|
20
|
+
Object.defineProperty(exports, "perm", { enumerable: true, get: function () { return perm_1.perm; } });
|
|
21
|
+
var define_rbac_1 = require("./define-rbac");
|
|
22
|
+
Object.defineProperty(exports, "defineRbac", { enumerable: true, get: function () { return define_rbac_1.defineRbac; } });
|
|
23
|
+
var to_permissions_json_1 = require("./to-permissions-json");
|
|
24
|
+
Object.defineProperty(exports, "toPermissionsJson", { enumerable: true, get: function () { return to_permissions_json_1.toPermissionsJson; } });
|
|
25
|
+
var resolver_1 = require("./resolver");
|
|
26
|
+
Object.defineProperty(exports, "resolveForRole", { enumerable: true, get: function () { return resolver_1.resolveForRole; } });
|
|
27
|
+
Object.defineProperty(exports, "resolveDefault", { enumerable: true, get: function () { return resolver_1.resolveDefault; } });
|
|
28
|
+
Object.defineProperty(exports, "iterateDeclaredEdges", { enumerable: true, get: function () { return resolver_1.iterateDeclaredEdges; } });
|
|
29
|
+
Object.defineProperty(exports, "iterateDeclaredModules", { enumerable: true, get: function () { return resolver_1.iterateDeclaredModules; } });
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,uCAA0G;AAAjG,0GAAA,cAAc,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AAAE,kHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Action, PermToken } from "./types";
|
|
2
|
+
type Scoped<A extends Action> = (path: string) => PermToken;
|
|
3
|
+
type PermFn<A extends Action> = {
|
|
4
|
+
action: A;
|
|
5
|
+
scope: true;
|
|
6
|
+
} & Scoped<A>;
|
|
7
|
+
export declare const perm: {
|
|
8
|
+
read: PermFn<"read">;
|
|
9
|
+
create: PermFn<"create">;
|
|
10
|
+
update: PermFn<"update">;
|
|
11
|
+
delete: PermFn<"delete">;
|
|
12
|
+
full: PermToken<never>[];
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=perm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perm.d.ts","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/perm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;AAE5D,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,IAAI;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAYvE,eAAO,MAAM,IAAI;;;;;UAUV,SAAS,CAAC,KAAK,CAAC,EAAE;CACxB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.perm = void 0;
|
|
4
|
+
function build(action) {
|
|
5
|
+
const fn = (path) => ({ action, scope: path });
|
|
6
|
+
return Object.assign(fn, { action, scope: true });
|
|
7
|
+
}
|
|
8
|
+
const readT = build("read");
|
|
9
|
+
const createT = build("create");
|
|
10
|
+
const updateT = build("update");
|
|
11
|
+
const deleteT = build("delete");
|
|
12
|
+
exports.perm = {
|
|
13
|
+
read: readT,
|
|
14
|
+
create: createT,
|
|
15
|
+
update: updateT,
|
|
16
|
+
delete: deleteT,
|
|
17
|
+
full: [
|
|
18
|
+
{ action: "read", scope: true },
|
|
19
|
+
{ action: "create", scope: true },
|
|
20
|
+
{ action: "update", scope: true },
|
|
21
|
+
{ action: "delete", scope: true },
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=perm.js.map
|