@hahnpro/hpc-api 2026.9.9 → 2026.9.11

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +1 -1
  3. package/src/lib/api.d.ts +2 -1
  4. package/src/lib/api.js +1 -0
  5. package/src/lib/interfaces/ai.interface.d.ts +25 -7
  6. package/src/lib/interfaces/ai.interface.js +6 -0
  7. package/src/lib/interfaces/authz/capability-bundle.interface.d.ts +8 -2
  8. package/src/lib/interfaces/authz/capability-bundle.interface.js +11 -1
  9. package/src/lib/interfaces/authz/capability.interface.d.ts +13 -11
  10. package/src/lib/interfaces/authz/capability.interface.js +19 -13
  11. package/src/lib/interfaces/authz/feature.interface.d.ts +6 -2
  12. package/src/lib/interfaces/authz/feature.interface.js +9 -2
  13. package/src/lib/interfaces/authz/plan.interface.d.ts +6 -2
  14. package/src/lib/interfaces/authz/plan.interface.js +5 -1
  15. package/src/lib/interfaces/index.d.ts +2 -1
  16. package/src/lib/interfaces/index.js +1 -0
  17. package/src/lib/interfaces/knowledge.interface.d.ts +142 -0
  18. package/src/lib/interfaces/knowledge.interface.js +12 -0
  19. package/src/lib/interfaces/nats.interface.d.ts +10 -0
  20. package/src/lib/interfaces/nats.interface.js +10 -0
  21. package/src/lib/interfaces/resource.interface.d.ts +2 -0
  22. package/src/lib/interfaces/resource.interface.js +3 -0
  23. package/src/lib/mock/api.mock.d.ts +4 -1
  24. package/src/lib/mock/api.mock.js +2 -0
  25. package/src/lib/mock/authz/authorization.mock.service.d.ts +10 -0
  26. package/src/lib/mock/authz/authorization.mock.service.js +22 -0
  27. package/src/lib/mock/authz/authz.mock.service.d.ts +2 -6
  28. package/src/lib/mock/authz/authz.mock.service.js +2 -6
  29. package/src/lib/mock/authz/org-group-capability-bundle.mock.service.d.ts +4 -4
  30. package/src/lib/mock/authz/org-group-capability-bundle.mock.service.js +4 -4
  31. package/src/lib/mock/authz/org-group-capability.mock.service.d.ts +4 -4
  32. package/src/lib/mock/authz/org-group-capability.mock.service.js +4 -4
  33. package/src/lib/mock/authz/org-group-member.mock.service.d.ts +3 -3
  34. package/src/lib/mock/authz/org-group-member.mock.service.js +3 -3
  35. package/src/lib/mock/authz/org-group.mock.service.d.ts +5 -5
  36. package/src/lib/mock/authz/org-group.mock.service.js +5 -5
  37. package/src/lib/mock/authz/org-subscription.mock.service.d.ts +2 -5
  38. package/src/lib/mock/authz/org-subscription.mock.service.js +2 -11
  39. package/src/lib/mock/index.d.ts +1 -0
  40. package/src/lib/mock/index.js +1 -0
  41. package/src/lib/mock/knowledge.mock.service.d.ts +28 -0
  42. package/src/lib/mock/knowledge.mock.service.js +171 -0
  43. package/src/lib/mock/timeseries.mock.service.d.ts +1 -1
  44. package/src/lib/mock/timeseries.mock.service.js +4 -3
  45. package/src/lib/services/authz/authorization.service.d.ts +11 -0
  46. package/src/lib/services/authz/authorization.service.js +22 -0
  47. package/src/lib/services/authz/authz.service.d.ts +2 -6
  48. package/src/lib/services/authz/authz.service.js +2 -6
  49. package/src/lib/services/authz/org-group-capability-bundle.service.d.ts +5 -4
  50. package/src/lib/services/authz/org-group-capability-bundle.service.js +11 -8
  51. package/src/lib/services/authz/org-group-capability.service.d.ts +5 -4
  52. package/src/lib/services/authz/org-group-capability.service.js +11 -8
  53. package/src/lib/services/authz/org-group-member.service.d.ts +4 -3
  54. package/src/lib/services/authz/org-group-member.service.js +9 -6
  55. package/src/lib/services/authz/org-group.service.d.ts +6 -5
  56. package/src/lib/services/authz/org-group.service.js +10 -10
  57. package/src/lib/services/authz/org-subscription.service.d.ts +4 -6
  58. package/src/lib/services/authz/org-subscription.service.js +4 -13
  59. package/src/lib/services/index.d.ts +1 -0
  60. package/src/lib/services/index.js +1 -0
  61. package/src/lib/services/knowledge.service.d.ts +22 -0
  62. package/src/lib/services/knowledge.service.js +50 -0
  63. package/src/lib/services/timeseries.service.d.ts +1 -1
  64. package/src/lib/services/timeseries.service.js +2 -2
  65. package/src/lib/mock/authz/capability-bundle.mock.service.d.ts +0 -6
  66. package/src/lib/mock/authz/capability-bundle.mock.service.js +0 -13
  67. package/src/lib/mock/authz/capability.mock.service.d.ts +0 -6
  68. package/src/lib/mock/authz/capability.mock.service.js +0 -13
  69. package/src/lib/mock/authz/user-capabilities-and-permissions.mock.service.d.ts +0 -9
  70. package/src/lib/mock/authz/user-capabilities-and-permissions.mock.service.js +0 -16
  71. package/src/lib/services/authz/capability-bundle.service.d.ts +0 -7
  72. package/src/lib/services/authz/capability-bundle.service.js +0 -13
  73. package/src/lib/services/authz/capability.service.d.ts +0 -7
  74. package/src/lib/services/authz/capability.service.js +0 -13
  75. package/src/lib/services/authz/user-capabilities-and-permissions.service.d.ts +0 -9
  76. package/src/lib/services/authz/user-capabilities-and-permissions.service.js +0 -16
@@ -2,6 +2,7 @@ export declare const NatsStreams: {
2
2
  readonly Resource: "resource";
3
3
  readonly Flows: "flows";
4
4
  readonly Audit: "audit";
5
+ readonly Organizations: "organizations";
5
6
  };
6
7
  export declare const NatsConsumers: {
7
8
  readonly resource: {
@@ -41,6 +42,10 @@ export declare const NatsConsumers: {
41
42
  readonly ReferenceTargetRestored: "reference-target-restored";
42
43
  readonly ReferenceCreateCommand: "reference-create-command";
43
44
  };
45
+ readonly OrgGroupService: {
46
+ readonly DeleteGroupOfDeletedOrgs: "delete-group-of-deleted-orgs";
47
+ readonly DeleteSubsOfDeletedOrgs: "delete-subs-of-deleted-orgs";
48
+ };
44
49
  };
45
50
  readonly flows: {
46
51
  readonly FlowTrigger: "flow-trigger";
@@ -53,6 +58,11 @@ export declare const NatsConsumers: {
53
58
  readonly audit: {
54
59
  readonly AuditLogger: "audit-logger";
55
60
  };
61
+ readonly organizations: {
62
+ readonly OrgGroupMembers: {
63
+ readonly DeleteMemberships: "delete-org-group-memberships";
64
+ };
65
+ };
56
66
  };
57
67
  export declare const natsHpcPrefix = "com.hahnpro";
58
68
  export declare const natsFlowsPrefix = "fs";
@@ -5,6 +5,7 @@ exports.NatsStreams = {
5
5
  Resource: 'resource',
6
6
  Flows: 'flows',
7
7
  Audit: 'audit',
8
+ Organizations: 'organizations',
8
9
  };
9
10
  exports.NatsConsumers = {
10
11
  [exports.NatsStreams.Resource]: {
@@ -44,6 +45,10 @@ exports.NatsConsumers = {
44
45
  ReferenceTargetRestored: 'reference-target-restored',
45
46
  ReferenceCreateCommand: 'reference-create-command',
46
47
  },
48
+ OrgGroupService: {
49
+ DeleteGroupOfDeletedOrgs: 'delete-group-of-deleted-orgs',
50
+ DeleteSubsOfDeletedOrgs: 'delete-subs-of-deleted-orgs',
51
+ },
47
52
  },
48
53
  [exports.NatsStreams.Flows]: {
49
54
  FlowTrigger: 'flow-trigger',
@@ -56,6 +61,11 @@ exports.NatsConsumers = {
56
61
  [exports.NatsStreams.Audit]: {
57
62
  AuditLogger: 'audit-logger',
58
63
  },
64
+ [exports.NatsStreams.Organizations]: {
65
+ OrgGroupMembers: {
66
+ DeleteMemberships: 'delete-org-group-memberships',
67
+ },
68
+ },
59
69
  };
60
70
  exports.natsHpcPrefix = 'com.hahnpro';
61
71
  exports.natsFlowsPrefix = 'fs';
@@ -11,6 +11,7 @@ export declare enum ResourceType {
11
11
  FLOWDEPLOYMENT = "flowdeployment",
12
12
  FLOWFUNCTION = "flowfunction",
13
13
  FLOWMODULE = "flowmodule",
14
+ KNOWLEDGE = "knowledge",
14
15
  LABEL = "label",
15
16
  LOGBOOKENTRY = "logbookentry",
16
17
  NOTIFICATIONENDPOINT = "notificationendpoint",
@@ -33,6 +34,7 @@ export declare enum ResourceApiPath {
33
34
  FLOWDEPLOYMENT = "flow/deployments",
34
35
  FLOWFUNCTION = "flow/functions",
35
36
  FLOWMODULE = "flow/modules",
37
+ KNOWLEDGE = "knowledge",
36
38
  LABEL = "labels",
37
39
  NOTIFICATIONENDPOINT = "notification/endpoints",
38
40
  NOTIFICATIONRULE = "notification/rules",
@@ -14,6 +14,7 @@ var ResourceType;
14
14
  ResourceType["FLOWDEPLOYMENT"] = "flowdeployment";
15
15
  ResourceType["FLOWFUNCTION"] = "flowfunction";
16
16
  ResourceType["FLOWMODULE"] = "flowmodule";
17
+ ResourceType["KNOWLEDGE"] = "knowledge";
17
18
  ResourceType["LABEL"] = "label";
18
19
  ResourceType["LOGBOOKENTRY"] = "logbookentry";
19
20
  ResourceType["NOTIFICATIONENDPOINT"] = "notificationendpoint";
@@ -37,6 +38,7 @@ var ResourceApiPath;
37
38
  ResourceApiPath["FLOWDEPLOYMENT"] = "flow/deployments";
38
39
  ResourceApiPath["FLOWFUNCTION"] = "flow/functions";
39
40
  ResourceApiPath["FLOWMODULE"] = "flow/modules";
41
+ ResourceApiPath["KNOWLEDGE"] = "knowledge";
40
42
  ResourceApiPath["LABEL"] = "labels";
41
43
  ResourceApiPath["NOTIFICATIONENDPOINT"] = "notification/endpoints";
42
44
  ResourceApiPath["NOTIFICATIONRULE"] = "notification/rules";
@@ -54,6 +56,7 @@ exports.resourceApiPathToTypeMap = {
54
56
  [ResourceApiPath.FLOWDEPLOYMENT]: ResourceType.FLOWDEPLOYMENT,
55
57
  [ResourceApiPath.FLOWFUNCTION]: ResourceType.FLOWFUNCTION,
56
58
  [ResourceApiPath.FLOWMODULE]: ResourceType.FLOWMODULE,
59
+ [ResourceApiPath.KNOWLEDGE]: ResourceType.KNOWLEDGE,
57
60
  [ResourceApiPath.LABEL]: ResourceType.LABEL,
58
61
  [ResourceApiPath.NOTIFICATIONENDPOINT]: ResourceType.NOTIFICATIONENDPOINT,
59
62
  [ResourceApiPath.NOTIFICATIONRULE]: ResourceType.NOTIFICATIONRULE,
@@ -1,5 +1,5 @@
1
1
  import { API } from '../api';
2
- import { Artifact, Asset, AssetRevision, AssetType, Content, Endpoint, Event, FlowDeployment, FlowDiagram, FlowDto, FlowFunctionDto, FlowFunctionRevision, FlowModule, FlowRevision, Label, LogbookEntry, Notification, ObjectReference, Organization, Secret, Task, TimeSeries, TimeSeriesValue, TimeSeriesValueFeed, Translation, UserSettings, VaultSecret } from '../interfaces';
2
+ import { Artifact, Asset, AssetRevision, AssetType, Content, Endpoint, Event, FlowDeployment, FlowDiagram, FlowDto, FlowFunctionDto, FlowFunctionRevision, FlowModule, FlowRevision, Label, LogbookEntry, Notification, ObjectReference, Organization, Secret, Task, TimeSeries, TimeSeriesValue, TimeSeriesValueFeed, Translation, UserSettings, VaultSecret, type KnowledgePage } from '../interfaces';
3
3
  import { AiMockService } from './ai.mock.service';
4
4
  import { AlertMockService } from './alert.mock.service';
5
5
  import { AssetMockService } from './asset.mock.service';
@@ -16,6 +16,7 @@ import { FlowFunctionsMockService } from './flow-functions.mock.service';
16
16
  import { FlowModulesMockService } from './flow-modules.mock.service';
17
17
  import { FlowMockService } from './flow.mock.service';
18
18
  import { HttpClientMockService } from './http-client.mock.service';
19
+ import { KnowledgeMockService } from './knowledge.mock.service';
19
20
  import { LabelMockService } from './label.mock.service';
20
21
  import { LogbookMockService } from './logbook.mock.service';
21
22
  import { NotificationRulesMockService } from './notification-rules.mock.service';
@@ -31,6 +32,7 @@ import { TimeseriesMockService } from './timeseries.mock.service';
31
32
  import { UserMockService } from './user.mock.service';
32
33
  import { VaultMockService } from './vault.mock.service';
33
34
  export interface MockAPIInitData {
35
+ knowledge?: KnowledgePage[];
34
36
  assets?: AssetInit[];
35
37
  assetRevisions?: AssetRevisionInit[];
36
38
  contents?: ContentInit[];
@@ -58,6 +60,7 @@ export interface MockAPIInitData {
58
60
  translations?: TranslationInit[];
59
61
  }
60
62
  export declare class MockAPI implements API {
63
+ knowledge: KnowledgeMockService;
61
64
  ai: AiMockService;
62
65
  alerts: AlertMockService;
63
66
  assets: AssetMockService;
@@ -18,6 +18,7 @@ const flow_functions_mock_service_1 = require("./flow-functions.mock.service");
18
18
  const flow_modules_mock_service_1 = require("./flow-modules.mock.service");
19
19
  const flow_mock_service_1 = require("./flow.mock.service");
20
20
  const http_client_mock_service_1 = require("./http-client.mock.service");
21
+ const knowledge_mock_service_1 = require("./knowledge.mock.service");
21
22
  const label_mock_service_1 = require("./label.mock.service");
22
23
  const logbook_mock_service_1 = require("./logbook.mock.service");
23
24
  const notification_rules_mock_service_1 = require("./notification-rules.mock.service");
@@ -35,6 +36,7 @@ const vault_mock_service_1 = require("./vault.mock.service");
35
36
  class MockAPI {
36
37
  constructor(initData) {
37
38
  this.proxy = null;
39
+ this.knowledge = new knowledge_mock_service_1.KnowledgeMockService(initData.knowledge);
38
40
  const { assets = [], assetRevisions = [], contents = [], endpoints = [], secrets = [], timeSeries = [], tasks = [], events = [], users, flows = [], flowRevisions = [], deployments = [], functions = [], functionRevisions = [], modules = [], diagrams = [], labels = [], logbookEntries = [], vault = [], notifications = [], organizations = [], objectReferences = [], timeSeriesValueFeeds = [], resourceSetNames = [], translations = [], } = initData;
39
41
  // convert init data to normal data that the services usually use
40
42
  const assetTypes = assets
@@ -0,0 +1,10 @@
1
+ import { Capability, CapabilityBundle, CapabilityId, Permission, SqlPagination, TokenOption } from '../../interfaces';
2
+ import { APIBaseMock } from '../../mock/api-base.mock';
3
+ import { AuthorizationService } from '../../services/authz/authorization.service';
4
+ export declare class AuthorizationMockService extends APIBaseMock<never> implements AuthorizationService {
5
+ constructor();
6
+ getOrgCapabilitiesForActiveSubscription(sqlPagination?: SqlPagination, options?: TokenOption): Promise<Capability[]>;
7
+ getOrgCapabilityBundlesForActiveSubscription(sqlPagination?: SqlPagination, options?: TokenOption): Promise<CapabilityBundle[]>;
8
+ getCapabilitiesForUsersActiveOrg(options?: TokenOption): Promise<CapabilityId[]>;
9
+ getPermissionsForUsersActiveOrg(options?: TokenOption): Promise<Permission[]>;
10
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthorizationMockService = void 0;
4
+ const api_base_mock_1 = require("../../mock/api-base.mock");
5
+ class AuthorizationMockService extends api_base_mock_1.APIBaseMock {
6
+ constructor() {
7
+ super(null);
8
+ }
9
+ getOrgCapabilitiesForActiveSubscription(sqlPagination, options) {
10
+ throw new Error('Method not implemented.');
11
+ }
12
+ getOrgCapabilityBundlesForActiveSubscription(sqlPagination, options) {
13
+ throw new Error('Method not implemented.');
14
+ }
15
+ getCapabilitiesForUsersActiveOrg(options) {
16
+ throw new Error('Method not implemented.');
17
+ }
18
+ getPermissionsForUsersActiveOrg(options) {
19
+ throw new Error('Method not implemented.');
20
+ }
21
+ }
22
+ exports.AuthorizationMockService = AuthorizationMockService;
@@ -1,21 +1,17 @@
1
1
  import { AuthzService } from '../../services';
2
- import { CapabilityBundleService } from '../../services/authz/capability-bundle.service';
3
- import { CapabilityService } from '../../services/authz/capability.service';
2
+ import { AuthorizationService } from '../../services/authz/authorization.service';
4
3
  import { OrgGroupCapabilityBundleService } from '../../services/authz/org-group-capability-bundle.service';
5
4
  import { OrgGroupCapabilityService } from '../../services/authz/org-group-capability.service';
6
5
  import { OrgGroupMemberService } from '../../services/authz/org-group-member.service';
7
6
  import { OrgGroupService } from '../../services/authz/org-group.service';
8
7
  import { OrgSubscriptionService } from '../../services/authz/org-subscription.service';
9
- import { UserCapabilitiesAndPermissionsService } from '../../services/authz/user-capabilities-and-permissions.service';
10
8
  import { APIBaseMock } from '../api-base.mock';
11
9
  export declare class AuthzMockService extends APIBaseMock<never> implements AuthzService {
12
- readonly capabilities: CapabilityService;
13
- readonly capabilityBundles: CapabilityBundleService;
10
+ readonly authorization: AuthorizationService;
14
11
  readonly orgGroups: OrgGroupService;
15
12
  readonly orgGroupCapabilities: OrgGroupCapabilityService;
16
13
  readonly orgGroupCapabilityBundles: OrgGroupCapabilityBundleService;
17
14
  readonly orgGroupMembers: OrgGroupMemberService;
18
15
  readonly orgSubscriptions: OrgSubscriptionService;
19
- readonly userCapabilitiesAndPermissions: UserCapabilitiesAndPermissionsService;
20
16
  constructor();
21
17
  }
@@ -2,25 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuthzMockService = void 0;
4
4
  const api_base_mock_1 = require("../api-base.mock");
5
- const capability_bundle_mock_service_1 = require("./capability-bundle.mock.service");
6
- const capability_mock_service_1 = require("./capability.mock.service");
5
+ const authorization_mock_service_1 = require("./authorization.mock.service");
7
6
  const org_group_capability_bundle_mock_service_1 = require("./org-group-capability-bundle.mock.service");
8
7
  const org_group_capability_mock_service_1 = require("./org-group-capability.mock.service");
9
8
  const org_group_member_mock_service_1 = require("./org-group-member.mock.service");
10
9
  const org_group_mock_service_1 = require("./org-group.mock.service");
11
10
  const org_subscription_mock_service_1 = require("./org-subscription.mock.service");
12
- const user_capabilities_and_permissions_mock_service_1 = require("./user-capabilities-and-permissions.mock.service");
13
11
  class AuthzMockService extends api_base_mock_1.APIBaseMock {
14
12
  constructor() {
15
13
  super(null);
16
- this.capabilities = new capability_mock_service_1.CapabilityMockService();
17
- this.capabilityBundles = new capability_bundle_mock_service_1.CapabilityBundleMockService();
14
+ this.authorization = new authorization_mock_service_1.AuthorizationMockService();
18
15
  this.orgGroups = new org_group_mock_service_1.OrgGroupMockService();
19
16
  this.orgGroupCapabilities = new org_group_capability_mock_service_1.OrgGroupCapabilityMockService();
20
17
  this.orgGroupCapabilityBundles = new org_group_capability_bundle_mock_service_1.OrgGroupCapabilityBundleMockService();
21
18
  this.orgGroupMembers = new org_group_member_mock_service_1.OrgGroupMemberMockService();
22
19
  this.orgSubscriptions = new org_subscription_mock_service_1.OrgSubscriptionMockService();
23
- this.userCapabilitiesAndPermissions = new user_capabilities_and_permissions_mock_service_1.UserCapabilitiesAndPermissionsMockService();
24
20
  }
25
21
  }
26
22
  exports.AuthzMockService = AuthzMockService;
@@ -2,8 +2,8 @@ import { APIBaseMock } from '../../mock/api-base.mock';
2
2
  import { OrgGroupCapabilityBundleService } from '../../services/authz/org-group-capability-bundle.service';
3
3
  export declare class OrgGroupCapabilityBundleMockService extends APIBaseMock<never> implements OrgGroupCapabilityBundleService {
4
4
  constructor();
5
- getOrgGroupCapabilityBundles(): ReturnType<OrgGroupCapabilityBundleService['getOrgGroupCapabilityBundles']>;
6
- getOrgGroupCapabilityBundle(): ReturnType<OrgGroupCapabilityBundleService['getOrgGroupCapabilityBundle']>;
7
- createOrgGroupCapabilityBundle(): ReturnType<OrgGroupCapabilityBundleService['createOrgGroupCapabilityBundle']>;
8
- deleteOrgGroupCapabilityBundle(): ReturnType<OrgGroupCapabilityBundleService['deleteOrgGroupCapabilityBundle']>;
5
+ getOrgGroupCapabilityBundles(..._args: Parameters<OrgGroupCapabilityBundleService['getOrgGroupCapabilityBundles']>): ReturnType<OrgGroupCapabilityBundleService['getOrgGroupCapabilityBundles']>;
6
+ getOrgGroupCapabilityBundle(..._args: Parameters<OrgGroupCapabilityBundleService['getOrgGroupCapabilityBundle']>): ReturnType<OrgGroupCapabilityBundleService['getOrgGroupCapabilityBundle']>;
7
+ createOrgGroupCapabilityBundle(..._args: Parameters<OrgGroupCapabilityBundleService['createOrgGroupCapabilityBundle']>): ReturnType<OrgGroupCapabilityBundleService['createOrgGroupCapabilityBundle']>;
8
+ deleteOrgGroupCapabilityBundle(..._args: Parameters<OrgGroupCapabilityBundleService['deleteOrgGroupCapabilityBundle']>): ReturnType<OrgGroupCapabilityBundleService['deleteOrgGroupCapabilityBundle']>;
9
9
  }
@@ -6,16 +6,16 @@ class OrgGroupCapabilityBundleMockService extends api_base_mock_1.APIBaseMock {
6
6
  constructor() {
7
7
  super(null);
8
8
  }
9
- getOrgGroupCapabilityBundles() {
9
+ getOrgGroupCapabilityBundles(..._args) {
10
10
  throw new Error('Method not implemented.');
11
11
  }
12
- getOrgGroupCapabilityBundle() {
12
+ getOrgGroupCapabilityBundle(..._args) {
13
13
  throw new Error('Method not implemented.');
14
14
  }
15
- createOrgGroupCapabilityBundle() {
15
+ createOrgGroupCapabilityBundle(..._args) {
16
16
  throw new Error('Method not implemented.');
17
17
  }
18
- deleteOrgGroupCapabilityBundle() {
18
+ deleteOrgGroupCapabilityBundle(..._args) {
19
19
  throw new Error('Method not implemented.');
20
20
  }
21
21
  }
@@ -2,8 +2,8 @@ import { APIBaseMock } from '../../mock/api-base.mock';
2
2
  import { OrgGroupCapabilityService } from '../../services/authz/org-group-capability.service';
3
3
  export declare class OrgGroupCapabilityMockService extends APIBaseMock<never> implements OrgGroupCapabilityService {
4
4
  constructor();
5
- getOrgGroupCapabilities(): ReturnType<OrgGroupCapabilityService['getOrgGroupCapabilities']>;
6
- getOrgGroupCapability(): ReturnType<OrgGroupCapabilityService['getOrgGroupCapability']>;
7
- createOrgGroupCapability(): ReturnType<OrgGroupCapabilityService['createOrgGroupCapability']>;
8
- deleteOrgGroupCapability(): ReturnType<OrgGroupCapabilityService['deleteOrgGroupCapability']>;
5
+ getOrgGroupCapabilities(..._args: Parameters<OrgGroupCapabilityService['getOrgGroupCapabilities']>): ReturnType<OrgGroupCapabilityService['getOrgGroupCapabilities']>;
6
+ getOrgGroupCapability(..._args: Parameters<OrgGroupCapabilityService['getOrgGroupCapability']>): ReturnType<OrgGroupCapabilityService['getOrgGroupCapability']>;
7
+ createOrgGroupCapability(..._args: Parameters<OrgGroupCapabilityService['createOrgGroupCapability']>): ReturnType<OrgGroupCapabilityService['createOrgGroupCapability']>;
8
+ deleteOrgGroupCapability(..._args: Parameters<OrgGroupCapabilityService['deleteOrgGroupCapability']>): ReturnType<OrgGroupCapabilityService['deleteOrgGroupCapability']>;
9
9
  }
@@ -6,16 +6,16 @@ class OrgGroupCapabilityMockService extends api_base_mock_1.APIBaseMock {
6
6
  constructor() {
7
7
  super(null);
8
8
  }
9
- getOrgGroupCapabilities() {
9
+ getOrgGroupCapabilities(..._args) {
10
10
  throw new Error('Method not implemented.');
11
11
  }
12
- getOrgGroupCapability() {
12
+ getOrgGroupCapability(..._args) {
13
13
  throw new Error('Method not implemented.');
14
14
  }
15
- createOrgGroupCapability() {
15
+ createOrgGroupCapability(..._args) {
16
16
  throw new Error('Method not implemented.');
17
17
  }
18
- deleteOrgGroupCapability() {
18
+ deleteOrgGroupCapability(..._args) {
19
19
  throw new Error('Method not implemented.');
20
20
  }
21
21
  }
@@ -2,7 +2,7 @@ import { APIBaseMock } from '../../mock/api-base.mock';
2
2
  import { OrgGroupMemberService } from '../../services/authz/org-group-member.service';
3
3
  export declare class OrgGroupMemberMockService extends APIBaseMock<never> implements OrgGroupMemberService {
4
4
  constructor();
5
- getOrgGroupMembers(): ReturnType<OrgGroupMemberService['getOrgGroupMembers']>;
6
- addUserToOrgGroup(): ReturnType<OrgGroupMemberService['addUserToOrgGroup']>;
7
- removeUserFromOrgGroup(): ReturnType<OrgGroupMemberService['removeUserFromOrgGroup']>;
5
+ getOrgGroupMembers(..._args: Parameters<OrgGroupMemberService['getOrgGroupMembers']>): ReturnType<OrgGroupMemberService['getOrgGroupMembers']>;
6
+ addUserToOrgGroup(..._args: Parameters<OrgGroupMemberService['addUserToOrgGroup']>): ReturnType<OrgGroupMemberService['addUserToOrgGroup']>;
7
+ removeUserFromOrgGroup(..._args: Parameters<OrgGroupMemberService['removeUserFromOrgGroup']>): ReturnType<OrgGroupMemberService['removeUserFromOrgGroup']>;
8
8
  }
@@ -6,13 +6,13 @@ class OrgGroupMemberMockService extends api_base_mock_1.APIBaseMock {
6
6
  constructor() {
7
7
  super(null);
8
8
  }
9
- getOrgGroupMembers() {
9
+ getOrgGroupMembers(..._args) {
10
10
  throw new Error('Method not implemented.');
11
11
  }
12
- addUserToOrgGroup() {
12
+ addUserToOrgGroup(..._args) {
13
13
  throw new Error('Method not implemented.');
14
14
  }
15
- removeUserFromOrgGroup() {
15
+ removeUserFromOrgGroup(..._args) {
16
16
  throw new Error('Method not implemented.');
17
17
  }
18
18
  }
@@ -2,9 +2,9 @@ import { APIBaseMock } from '../../mock/api-base.mock';
2
2
  import { OrgGroupService } from '../../services/authz/org-group.service';
3
3
  export declare class OrgGroupMockService extends APIBaseMock<never> implements OrgGroupService {
4
4
  constructor();
5
- getOrgGroupsByOrgId(): ReturnType<OrgGroupService['getOrgGroupsByOrgId']>;
6
- getOrgGroupById(): ReturnType<OrgGroupService['getOrgGroupById']>;
7
- createOrgGroup(): ReturnType<OrgGroupService['createOrgGroup']>;
8
- updateOrgGroup(): ReturnType<OrgGroupService['updateOrgGroup']>;
9
- deleteOrgGroup(): ReturnType<OrgGroupService['deleteOrgGroup']>;
5
+ getOrgGroupsOfUsersActiveOrg(..._args: Parameters<OrgGroupService['getOrgGroupsOfUsersActiveOrg']>): ReturnType<OrgGroupService['getOrgGroupsOfUsersActiveOrg']>;
6
+ getOrgGroupById(..._args: Parameters<OrgGroupService['getOrgGroupById']>): ReturnType<OrgGroupService['getOrgGroupById']>;
7
+ createOrgGroup(..._args: Parameters<OrgGroupService['createOrgGroup']>): ReturnType<OrgGroupService['createOrgGroup']>;
8
+ updateOrgGroup(..._args: Parameters<OrgGroupService['updateOrgGroup']>): ReturnType<OrgGroupService['updateOrgGroup']>;
9
+ deleteOrgGroup(..._args: Parameters<OrgGroupService['deleteOrgGroup']>): ReturnType<OrgGroupService['deleteOrgGroup']>;
10
10
  }
@@ -6,19 +6,19 @@ class OrgGroupMockService extends api_base_mock_1.APIBaseMock {
6
6
  constructor() {
7
7
  super(null);
8
8
  }
9
- getOrgGroupsByOrgId() {
9
+ getOrgGroupsOfUsersActiveOrg(..._args) {
10
10
  throw new Error('Method not implemented.');
11
11
  }
12
- getOrgGroupById() {
12
+ getOrgGroupById(..._args) {
13
13
  throw new Error('Method not implemented.');
14
14
  }
15
- createOrgGroup() {
15
+ createOrgGroup(..._args) {
16
16
  throw new Error('Method not implemented.');
17
17
  }
18
- updateOrgGroup() {
18
+ updateOrgGroup(..._args) {
19
19
  throw new Error('Method not implemented.');
20
20
  }
21
- deleteOrgGroup() {
21
+ deleteOrgGroup(..._args) {
22
22
  throw new Error('Method not implemented.');
23
23
  }
24
24
  }
@@ -2,9 +2,6 @@ import { APIBaseMock } from '../../mock/api-base.mock';
2
2
  import { OrgSubscriptionService } from '../../services/authz/org-subscription.service';
3
3
  export declare class OrgSubscriptionMockService extends APIBaseMock<never> implements OrgSubscriptionService {
4
4
  constructor();
5
- getOrgSubscriptionsByOrgId(): ReturnType<OrgSubscriptionService['getOrgSubscriptionsByOrgId']>;
6
- getOrgSubscriptionById(): ReturnType<OrgSubscriptionService['getOrgSubscriptionById']>;
7
- createOrgSubscription(): ReturnType<OrgSubscriptionService['createOrgSubscription']>;
8
- updateOrgSubscription(): ReturnType<OrgSubscriptionService['updateOrgSubscription']>;
9
- deleteOrgSubscription(): ReturnType<OrgSubscriptionService['deleteOrgSubscription']>;
5
+ getOrgSubscriptionsByOrgId(..._args: Parameters<OrgSubscriptionService['getOrgSubscriptionsByOrgId']>): ReturnType<OrgSubscriptionService['getOrgSubscriptionsByOrgId']>;
6
+ getOrgSubscriptionById(..._args: Parameters<OrgSubscriptionService['getOrgSubscriptionById']>): ReturnType<OrgSubscriptionService['getOrgSubscriptionById']>;
10
7
  }
@@ -6,19 +6,10 @@ class OrgSubscriptionMockService extends api_base_mock_1.APIBaseMock {
6
6
  constructor() {
7
7
  super(null);
8
8
  }
9
- getOrgSubscriptionsByOrgId() {
9
+ getOrgSubscriptionsByOrgId(..._args) {
10
10
  throw new Error('Method not implemented.');
11
11
  }
12
- getOrgSubscriptionById() {
13
- throw new Error('Method not implemented.');
14
- }
15
- createOrgSubscription() {
16
- throw new Error('Method not implemented.');
17
- }
18
- updateOrgSubscription() {
19
- throw new Error('Method not implemented.');
20
- }
21
- deleteOrgSubscription() {
12
+ getOrgSubscriptionById(..._args) {
22
13
  throw new Error('Method not implemented.');
23
14
  }
24
15
  }
@@ -34,3 +34,4 @@ export { UserMockService } from './user.mock.service';
34
34
  export { VaultMockService } from './vault.mock.service';
35
35
  export { TimeseriesValueFeedManagementMockService } from './timeseries-value-feed-management.mock.service';
36
36
  export * from './authz';
37
+ export * from './knowledge.mock.service';
@@ -72,3 +72,4 @@ Object.defineProperty(exports, "VaultMockService", { enumerable: true, get: func
72
72
  var timeseries_value_feed_management_mock_service_1 = require("./timeseries-value-feed-management.mock.service");
73
73
  Object.defineProperty(exports, "TimeseriesValueFeedManagementMockService", { enumerable: true, get: function () { return timeseries_value_feed_management_mock_service_1.TimeseriesValueFeedManagementMockService; } });
74
74
  tslib_1.__exportStar(require("./authz"), exports);
75
+ tslib_1.__exportStar(require("./knowledge.mock.service"), exports);
@@ -0,0 +1,28 @@
1
+ import { type ConfirmKnowledge, type CreateKnowledge, type KnowledgeBacklinkQuery, type KnowledgeBatch, type KnowledgeHome, type KnowledgeList, type KnowledgePage, type KnowledgeQuery, type KnowledgeRevision, type KnowledgeVersion, type UpdateKnowledge } from '../interfaces';
2
+ import { KnowledgeService } from '../services/knowledge.service';
3
+ export declare class KnowledgeMockService extends KnowledgeService {
4
+ data: KnowledgePage[];
5
+ private readonly revisions;
6
+ constructor(data?: KnowledgePage[]);
7
+ private remember;
8
+ /** As in the backend, only changes to these fields create a revision. */
9
+ private content;
10
+ private page;
11
+ private list;
12
+ addOne(dto: CreateKnowledge): Promise<KnowledgePage>;
13
+ getOne(id: string): Promise<KnowledgePage>;
14
+ getMany(query?: KnowledgeQuery): Promise<KnowledgeList>;
15
+ getHome(query?: KnowledgeQuery): Promise<KnowledgeHome>;
16
+ getBacklinks(query: KnowledgeBacklinkQuery): Promise<KnowledgeList>;
17
+ getRelated(id: string, query?: Pick<KnowledgeQuery, 'cursor' | 'limit'>): Promise<KnowledgeList>;
18
+ getRevision(id: string, revision: number): Promise<KnowledgeRevision>;
19
+ readBatch(ids: string[]): Promise<KnowledgeBatch>;
20
+ private check;
21
+ updateOne(id: string, dto: UpdateKnowledge): Promise<KnowledgePage>;
22
+ confirm(id: string, dto: ConfirmKnowledge): Promise<KnowledgePage>;
23
+ withdraw(id: string, dto: KnowledgeVersion): Promise<KnowledgePage>;
24
+ restore(id: string, dto: KnowledgeVersion): Promise<KnowledgePage>;
25
+ purgeOrganization(organizationId: string): Promise<{
26
+ deleted: number;
27
+ }>;
28
+ }
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KnowledgeMockService = void 0;
4
+ const interfaces_1 = require("../interfaces");
5
+ const knowledge_service_1 = require("../services/knowledge.service");
6
+ class KnowledgeMockService extends knowledge_service_1.KnowledgeService {
7
+ constructor(data = []) {
8
+ super(null);
9
+ this.data = data;
10
+ this.revisions = new Map();
11
+ this.data = structuredClone(data);
12
+ this.data.forEach((page) => this.remember(page));
13
+ }
14
+ remember(page) {
15
+ this.revisions.set(`${page.id}:${page.revision}`, structuredClone(page));
16
+ }
17
+ /** As in the backend, only changes to these fields create a revision. */
18
+ content(page) {
19
+ const { title, body, type, description, tags, resource, sources, applicability, links, origin } = page;
20
+ return JSON.stringify({ title, body, type, description, tags, resource, sources, applicability, links, context: origin.context });
21
+ }
22
+ page(id) {
23
+ const page = this.data.find((item) => item.id === id);
24
+ if (!page) {
25
+ throw new Error('Knowledge page not found');
26
+ }
27
+ return page;
28
+ }
29
+ list(pages, query = {}) {
30
+ const offset = Number(query.cursor || 0);
31
+ const active = pages.filter((page) => page.state === 'active');
32
+ const docs = active.slice(offset, offset + (query.limit || 20)).map(({ body, ...page }) => ({
33
+ ...structuredClone(page),
34
+ excerpt: body.slice(0, 300),
35
+ scope: 'not-evaluated',
36
+ relations: [],
37
+ stale: !!page.staleAfter && Date.parse(page.staleAfter) <= Date.now(),
38
+ }));
39
+ const more = offset + docs.length < active.length;
40
+ return { docs, status: more ? 'more' : 'complete', ...(more ? { nextCursor: String(offset + docs.length) } : {}) };
41
+ }
42
+ async addOne(dto) {
43
+ const now = new Date().toISOString();
44
+ const page = {
45
+ id: Array.from(globalThis.crypto.getRandomValues(new Uint8Array(12)), (byte) => byte.toString(16).padStart(2, '0')).join(''),
46
+ title: dto.title,
47
+ body: dto.body,
48
+ type: dto.type || 'Maintenance Note',
49
+ description: dto.description,
50
+ tags: dto.tags || [],
51
+ owner: { id: 'mock-org', type: interfaces_1.OwnerType.ORG },
52
+ createdBy: { id: 'mock-user' },
53
+ updatedBy: { id: 'mock-user' },
54
+ createdAt: now,
55
+ updatedAt: now,
56
+ origin: { actor: { id: 'mock-user' }, at: now, context: dto.originContext ?? undefined },
57
+ resource: dto.resource ?? undefined,
58
+ sources: dto.sources || [],
59
+ links: (dto.explicitLinks || []).map((target) => ({ target, explicit: true, parsed: false })),
60
+ applicability: dto.applicability || { mode: 'unknown' },
61
+ readPermissions: dto.readPermissions || [],
62
+ readWritePermissions: dto.readWritePermissions || ['mock-org'],
63
+ state: 'active',
64
+ revision: 1,
65
+ recordVersion: 1,
66
+ confirmations: [],
67
+ staleAfter: dto.staleAfter || undefined,
68
+ };
69
+ this.data.push(page);
70
+ this.remember(page);
71
+ return structuredClone(page);
72
+ }
73
+ async getOne(id) {
74
+ return structuredClone(this.page(id));
75
+ }
76
+ async getMany(query = {}) {
77
+ const term = query.query?.toLowerCase();
78
+ return this.list(this.data.filter((page) => !term || `${page.title} ${page.body}`.toLowerCase().includes(term)), query);
79
+ }
80
+ async getHome(query = {}) {
81
+ return { direct: await this.getMany(query), broader: { docs: [], status: 'complete' }, related: { docs: [], status: 'complete' } };
82
+ }
83
+ async getBacklinks(query) {
84
+ return this.list(this.data.filter((page) => [...page.links, ...page.sources].some((item) => item.target?.resourceType === query.targetType && item.target.id === query.targetId)), query);
85
+ }
86
+ async getRelated(id, query = {}) {
87
+ const page = this.page(id);
88
+ const outgoing = page.links.filter((link) => link.target.resourceType === interfaces_1.ResourceType.KNOWLEDGE).map((link) => link.target.id);
89
+ return this.list(this.data.filter((item) => item.id !== id &&
90
+ (outgoing.includes(item.id) ||
91
+ item.links.some((link) => link.target.resourceType === interfaces_1.ResourceType.KNOWLEDGE && link.target.id === id))), query);
92
+ }
93
+ async getRevision(id, revision) {
94
+ const current = this.page(id);
95
+ const page = this.revisions.get(`${id}:${revision}`);
96
+ if (!page) {
97
+ throw new Error('Revision not found');
98
+ }
99
+ return {
100
+ page: structuredClone(page),
101
+ current: { revision: current.revision, recordVersion: current.recordVersion, state: current.state },
102
+ };
103
+ }
104
+ async readBatch(ids) {
105
+ return {
106
+ docs: structuredClone(this.data.filter((page) => ids.includes(page.id) && page.state === 'active')),
107
+ unavailableIds: ids.filter((id) => !this.data.some((page) => page.id === id && page.state === 'active')),
108
+ };
109
+ }
110
+ check(id, version) {
111
+ const page = this.page(id);
112
+ if (page.recordVersion !== version) {
113
+ throw new Error('Version conflict');
114
+ }
115
+ return page;
116
+ }
117
+ async updateOne(id, dto) {
118
+ const page = this.check(id, dto.recordVersion);
119
+ const before = this.content(page);
120
+ const { explicitLinks, originContext, staleAfter, resource, recordVersion: _version, ...fields } = dto;
121
+ Object.assign(page, fields);
122
+ if (resource !== undefined) {
123
+ page.resource = resource ?? undefined;
124
+ }
125
+ if (explicitLinks) {
126
+ page.links = explicitLinks.map((target) => ({ target, explicit: true, parsed: false }));
127
+ }
128
+ if (originContext !== undefined) {
129
+ page.origin.context = originContext ?? undefined;
130
+ }
131
+ if (staleAfter !== undefined) {
132
+ page.staleAfter = staleAfter || undefined;
133
+ }
134
+ if (this.content(page) !== before) {
135
+ page.revision++;
136
+ this.remember(page);
137
+ }
138
+ page.recordVersion++;
139
+ return structuredClone(page);
140
+ }
141
+ async confirm(id, dto) {
142
+ const page = this.check(id, dto.recordVersion);
143
+ if (page.revision !== dto.revision) {
144
+ throw new Error('Revision conflict');
145
+ }
146
+ page.confirmations.push({ actor: { id: 'mock-user' }, at: new Date().toISOString(), revision: page.revision });
147
+ page.recordVersion++;
148
+ return structuredClone(page);
149
+ }
150
+ async withdraw(id, dto) {
151
+ const page = this.check(id, dto.recordVersion);
152
+ page.state = 'withdrawn';
153
+ page.deletedAt = new Date().toISOString();
154
+ page.recordVersion++;
155
+ return structuredClone(page);
156
+ }
157
+ async restore(id, dto) {
158
+ const page = this.check(id, dto.recordVersion);
159
+ page.state = 'active';
160
+ delete page.deletedAt;
161
+ page.recordVersion++;
162
+ return structuredClone(page);
163
+ }
164
+ async purgeOrganization(organizationId) {
165
+ const kept = this.data.filter((page) => page.owner.id !== organizationId);
166
+ const deleted = this.data.length - kept.length;
167
+ this.data = kept;
168
+ return { deleted };
169
+ }
170
+ }
171
+ exports.KnowledgeMockService = KnowledgeMockService;