@hahnpro/hpc-api 3.0.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.d.ts CHANGED
@@ -14,6 +14,7 @@ import { FlowService } from './flow.service';
14
14
  import { FlowFunctionService } from './flow-function.service';
15
15
  import { FlowModuleService } from './flow-module.service';
16
16
  import { FlowDeploymentService } from './flow-deployment.service';
17
+ import { LabelService } from './label.service';
17
18
  export declare class API {
18
19
  httpClient: HttpClient;
19
20
  assets: AssetService;
@@ -25,6 +26,7 @@ export declare class API {
25
26
  flowDeployments: FlowDeploymentService;
26
27
  flowFunctions: FlowFunctionService;
27
28
  flowModules: FlowModuleService;
29
+ labels: LabelService;
28
30
  proxy: ProxyService;
29
31
  secrets: SecretService;
30
32
  tasks: TaskService;
package/dist/api.js CHANGED
@@ -17,6 +17,7 @@ const flow_service_1 = require("./flow.service");
17
17
  const flow_function_service_1 = require("./flow-function.service");
18
18
  const flow_module_service_1 = require("./flow-module.service");
19
19
  const flow_deployment_service_1 = require("./flow-deployment.service");
20
+ const label_service_1 = require("./label.service");
20
21
  class API {
21
22
  constructor() {
22
23
  const normalizePath = (value = '', defaultValue = '') => value.replace(/^\/+|\/+$/g, '') || defaultValue;
@@ -44,6 +45,7 @@ class API {
44
45
  this.flowDeployments = new flow_deployment_service_1.FlowDeploymentService(this.httpClient);
45
46
  this.flowFunctions = new flow_function_service_1.FlowFunctionService(this.httpClient);
46
47
  this.flowModules = new flow_module_service_1.FlowModuleService(this.httpClient);
48
+ this.labels = new label_service_1.LabelService(this.httpClient);
47
49
  this.proxy = new proxy_service_1.ProxyService(this.httpClient);
48
50
  this.secrets = new secret_service_1.SecretService(this.httpClient);
49
51
  this.tasks = new task_service_1.TaskService(this.httpClient);
@@ -38,6 +38,7 @@ export interface Asset {
38
38
  actions?: string[];
39
39
  author?: string;
40
40
  revision?: number;
41
+ deletedAt?: string;
41
42
  }
42
43
  export declare type AssetRevision = Asset & {
43
44
  originalId: string;
@@ -5,6 +5,14 @@ import { DataService } from './data.service';
5
5
  import { HttpClient } from './http.service';
6
6
  export declare class AssetService extends DataService<Asset> {
7
7
  constructor(httpClient: HttpClient);
8
+ paperBinRestoreAll(): Promise<Asset[]>;
9
+ paperBinRestoreOne(id: string): Promise<Asset>;
10
+ emptyTrash(offset: number): Promise<{
11
+ acknowledged: boolean;
12
+ deletedCount: number;
13
+ }>;
14
+ getPaperBin(params?: RequestParameter): Promise<Paginated<Asset[]>>;
15
+ deleteOne(id: string, force?: boolean): Promise<any>;
8
16
  addAttachment: (id: string, form: FormData) => Promise<Asset>;
9
17
  getChildren(assetId: string, params?: RequestParameter): Promise<Paginated<Asset[]>>;
10
18
  getRevisions(assetId: string): Promise<Paginated<AssetRevision[]>>;
@@ -14,6 +14,23 @@ class AssetService extends data_service_1.DataService {
14
14
  });
15
15
  };
16
16
  }
17
+ paperBinRestoreAll() {
18
+ return this.httpClient.put(`${this.basePath}/paperbin/restore`, {});
19
+ }
20
+ paperBinRestoreOne(id) {
21
+ return this.httpClient.put(`${this.basePath}/paperbin/restore/${id}`, {});
22
+ }
23
+ emptyTrash(offset) {
24
+ return this.httpClient.delete(`${this.basePath}/paperbin/clean`, { params: { offset } });
25
+ }
26
+ getPaperBin(params = {}) {
27
+ params.limit = params.limit || 0;
28
+ params.page = params.page || 1;
29
+ return this.httpClient.get(`${this.basePath}/paperbin`, { params });
30
+ }
31
+ deleteOne(id, force = false) {
32
+ return this.httpClient.delete(`${this.basePath}/${id}`, { params: { force } });
33
+ }
17
34
  getChildren(assetId, params = {}) {
18
35
  return this.getManyFiltered({ parent: assetId }, params);
19
36
  }
@@ -13,4 +13,6 @@ export interface Event {
13
13
  cause: string;
14
14
  level: string;
15
15
  group?: string;
16
+ createdAt?: string;
17
+ updatedAt?: string;
16
18
  }
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from './data.interface';
5
5
  export * from './data.service';
6
6
  export * from './endpoint.interface';
7
7
  export * from './http.service';
8
+ export * from './label.interface';
8
9
  export * from './secret.interface';
9
10
  export * from './timeseries.interface';
10
11
  export * from './task.interface';
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ tslib_1.__exportStar(require("./data.interface"), exports);
9
9
  tslib_1.__exportStar(require("./data.service"), exports);
10
10
  tslib_1.__exportStar(require("./endpoint.interface"), exports);
11
11
  tslib_1.__exportStar(require("./http.service"), exports);
12
+ tslib_1.__exportStar(require("./label.interface"), exports);
12
13
  tslib_1.__exportStar(require("./secret.interface"), exports);
13
14
  tslib_1.__exportStar(require("./timeseries.interface"), exports);
14
15
  tslib_1.__exportStar(require("./task.interface"), exports);
@@ -0,0 +1,8 @@
1
+ export interface Label {
2
+ id: string;
3
+ name: string;
4
+ description?: string;
5
+ color?: string;
6
+ readPermissions?: string[];
7
+ readWritePermissions: string[];
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { DataService } from './data.service';
2
+ import { HttpClient } from './http.service';
3
+ import { Label } from './label.interface';
4
+ export declare class LabelService extends DataService<Label> {
5
+ constructor(httpClient: HttpClient);
6
+ addMany(dtos: Label[]): Promise<Label[]>;
7
+ getOneByName(name: string): Promise<Label>;
8
+ count(): Promise<number>;
9
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LabelService = void 0;
4
+ const data_service_1 = require("./data.service");
5
+ class LabelService extends data_service_1.DataService {
6
+ constructor(httpClient) {
7
+ super(httpClient, '/labels');
8
+ }
9
+ addMany(dtos) {
10
+ return Promise.all(dtos.map((dto) => this.addOne(dto)));
11
+ }
12
+ getOneByName(name) {
13
+ return this.httpClient.get(`${this.basePath}/name/${name}`);
14
+ }
15
+ count() {
16
+ return this.httpClient.get(`${this.basePath}/count`);
17
+ }
18
+ }
19
+ exports.LabelService = LabelService;
@@ -24,6 +24,8 @@ import { FlowDeployment } from '../flow-deployment.interface';
24
24
  import { FlowFunctionDto, FlowFunctionRevision } from '../flow-function.interface';
25
25
  import { FlowModule } from '../flow-module.interface';
26
26
  import { Artifact } from '../storage.interface';
27
+ import { LabelMockService } from './label.mock.service';
28
+ import { Label } from '../label.interface';
27
29
  export declare class MockAPI implements API {
28
30
  httpClient: any;
29
31
  assets: AssetMockService;
@@ -35,6 +37,7 @@ export declare class MockAPI implements API {
35
37
  flowDeployments: FlowDeploymentService;
36
38
  flowFunctions: FlowFunctionService;
37
39
  flowModules: FlowModuleService;
40
+ labels: LabelMockService;
38
41
  proxy: any;
39
42
  secrets: SecretMockService;
40
43
  tasks: TaskMockService;
@@ -66,6 +69,7 @@ export declare class MockAPI implements API {
66
69
  functionRevisions?: FlowFunctionRevisionInit[];
67
70
  modules?: FlowModuleInit[];
68
71
  diagrams?: FlowDiagramInit[];
72
+ labels?: LabelInit[];
69
73
  });
70
74
  }
71
75
  export declare type Identity<T> = {
@@ -99,6 +103,7 @@ export declare type ArtifactInit = AtLeast<Artifact & {
99
103
  path: string;
100
104
  }, 'filename' | 'path'>;
101
105
  export declare type FlowDiagramInit = AtLeast<FlowDiagram, 'id' | 'flow'>;
106
+ export declare type LabelInit = AtLeast<Label, 'id' | 'name'>;
102
107
  export interface UserInit {
103
108
  roles: string[];
104
109
  }
@@ -16,12 +16,13 @@ const flow_deployment_mock_service_1 = require("./flow-deployment.mock.service")
16
16
  const flow_functions_mock_service_1 = require("./flow-functions.mock.service");
17
17
  const flow_modules_mock_service_1 = require("./flow-modules.mock.service");
18
18
  const crypto_1 = require("crypto");
19
+ const label_mock_service_1 = require("./label.mock.service");
19
20
  class MockAPI {
20
21
  constructor(initData) {
21
22
  this.httpClient = null;
22
23
  this.proxy = null;
23
24
  this.siDrive = null;
24
- const { assets = [], assetRevisions = [], contents = [], endpoints = [], secrets = [], timeSeries = [], tasks = [], events = [], users, flows = [], flowRevisions = [], deployments = [], functions = [], functionRevisions = [], modules = [], diagrams = [], } = initData;
25
+ const { assets = [], assetRevisions = [], contents = [], endpoints = [], secrets = [], timeSeries = [], tasks = [], events = [], users, flows = [], flowRevisions = [], deployments = [], functions = [], functionRevisions = [], modules = [], diagrams = [], labels = [], } = initData;
25
26
  const assetTypes = assets
26
27
  .map((v) => v.type)
27
28
  .map((v) => {
@@ -109,6 +110,7 @@ class MockAPI {
109
110
  var _a;
110
111
  return (Object.assign(Object.assign({}, v), { artifacts: (_a = modules[index].artifacts.map((art) => (Object.assign(Object.assign({}, art), { version: '0.0.0', id: (0, crypto_1.randomUUID)(), mimetype: '', size: 0, createdAt: '' + Date.now() })))) !== null && _a !== void 0 ? _a : [], author: 'nobody', functions: [], readPermissions: [], readWritePermissions: [] }));
111
112
  });
113
+ const labels1 = labels.map((label) => (Object.assign(Object.assign({}, label), { color: '', description: '', readPermissions: [], readWritePermissions: [] })));
112
114
  this.assets = new asset_mock_service_1.AssetMockService(this, assets1, assetRevisions1);
113
115
  this.contents = new content_mock_service_1.ContentMockService(contents1, contentData);
114
116
  this.endpoints = new endpoint_mock_service_1.EndpointMockService(endpoint1);
@@ -121,6 +123,7 @@ class MockAPI {
121
123
  this.flowDeployments = new flow_deployment_mock_service_1.FlowDeploymentMockService(deployments1, this);
122
124
  this.flowFunctions = new flow_functions_mock_service_1.FlowFunctionsMockService(functions1, functionRevisions1);
123
125
  this.flowModules = new flow_modules_mock_service_1.FlowModulesMockService(modules1);
126
+ this.labels = new label_mock_service_1.LabelMockService(labels1);
124
127
  this.assetManager = this.assets;
125
128
  this.contentManager = this.contents;
126
129
  this.endpointManager = this.endpoints;
@@ -8,8 +8,17 @@ export declare class AssetMockService extends DataMockService<Asset> implements
8
8
  private api;
9
9
  private revisions;
10
10
  constructor(api: MockAPI, assets: Asset[], revisions: AssetRevision[]);
11
+ paperBinRestoreAll(): Promise<Asset[]>;
12
+ paperBinRestoreOne(id: string): Promise<Asset>;
13
+ emptyTrash(offset: number): Promise<{
14
+ acknowledged: boolean;
15
+ deletedCount: number;
16
+ }>;
17
+ getPaperBin(params?: RequestParameter): Promise<Paginated<Asset[]>>;
18
+ private getAssets;
11
19
  addOne(dto: Asset): Promise<Asset>;
12
- deleteOne(assetId: string): Promise<any>;
20
+ deleteOne(assetId: string, force?: boolean): Promise<Asset>;
21
+ getMany(params?: RequestParameter): Promise<Paginated<Asset[]>>;
13
22
  updateOne(assetId: string, dto: Asset): Promise<Asset>;
14
23
  addAttachment(id: string, form: FormData): Promise<Asset>;
15
24
  getChildren(assetId: string, params?: RequestParameter): Promise<Paginated<Asset[]>>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AssetMockService = void 0;
4
4
  const data_mock_service_1 = require("./data.mock.service");
5
- const crypto_1 = require("crypto");
6
5
  class AssetMockService extends data_mock_service_1.DataMockService {
7
6
  constructor(api, assets, revisions) {
8
7
  super();
@@ -10,12 +9,48 @@ class AssetMockService extends data_mock_service_1.DataMockService {
10
9
  this.revisions = revisions;
11
10
  this.data = assets;
12
11
  }
12
+ paperBinRestoreAll() {
13
+ const deleted = this.data.filter((v) => v.deletedAt);
14
+ for (const asset of deleted) {
15
+ delete asset.deletedAt;
16
+ }
17
+ return Promise.resolve(deleted);
18
+ }
19
+ paperBinRestoreOne(id) {
20
+ const deleted = this.data.find((v) => v.id === id);
21
+ delete deleted.deletedAt;
22
+ return Promise.resolve(deleted);
23
+ }
24
+ emptyTrash(offset) {
25
+ const dateOffsSeconds = Math.round(new Date().getTime() / 1000) - offset;
26
+ const date = new Date(dateOffsSeconds * 1000);
27
+ const trash = this.data.filter((v) => new Date(v.deletedAt) < date);
28
+ trash.map((v) => this.deleteOne(v.id));
29
+ return Promise.resolve({ acknowledged: true, deletedCount: trash.length });
30
+ }
31
+ getPaperBin(params) {
32
+ const page = this.getAssets(params, true);
33
+ return Promise.resolve(page);
34
+ }
35
+ getAssets(params, deleted = false) {
36
+ const data = this.data.filter((asset) => !!asset.deletedAt === deleted);
37
+ const page = {
38
+ docs: data,
39
+ limit: params && params.limit ? params.limit : Number.MAX_SAFE_INTEGER,
40
+ total: data.length,
41
+ };
42
+ return page;
43
+ }
13
44
  addOne(dto) {
14
- const id = (0, crypto_1.randomUUID)();
15
45
  this.revisions.push(Object.assign(Object.assign({}, dto), { originalId: dto.id }));
16
46
  return super.addOne(dto);
17
47
  }
18
- deleteOne(assetId) {
48
+ deleteOne(assetId, force = false) {
49
+ const asset = this.data.find((v) => v.id === assetId);
50
+ if (!(asset === null || asset === void 0 ? void 0 : asset.deletedAt) && !force) {
51
+ asset.deletedAt = new Date().toISOString();
52
+ return Promise.resolve(asset);
53
+ }
19
54
  this.revisions
20
55
  .filter((revision) => revision.originalId === assetId)
21
56
  .forEach((revision) => {
@@ -24,6 +59,10 @@ class AssetMockService extends data_mock_service_1.DataMockService {
24
59
  });
25
60
  return super.deleteOne(assetId);
26
61
  }
62
+ getMany(params) {
63
+ const page = this.getAssets(params, false);
64
+ return Promise.resolve(page);
65
+ }
27
66
  async updateOne(assetId, dto) {
28
67
  await super.deleteOne(assetId);
29
68
  const asset = await this.addOne(dto);
@@ -17,8 +17,9 @@ class DataMockService extends data_service_1.DataService {
17
17
  }
18
18
  deleteOne(id) {
19
19
  const index = this.data.findIndex((v) => v.id === id);
20
+ const obj = this.data[index];
20
21
  this.data.splice(index, 1);
21
- return Promise.resolve(undefined);
22
+ return Promise.resolve(obj);
22
23
  }
23
24
  getMany(params) {
24
25
  const data = this.data;
@@ -0,0 +1,8 @@
1
+ import { DataMockService } from './data.mock.service';
2
+ import { Label } from '../label.interface';
3
+ import { LabelService } from '../label.service';
4
+ export declare class LabelMockService extends DataMockService<Label> implements LabelService {
5
+ constructor(labels: Label[]);
6
+ count(): Promise<number>;
7
+ getOneByName(name: string): Promise<Label>;
8
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LabelMockService = void 0;
4
+ const data_mock_service_1 = require("./data.mock.service");
5
+ class LabelMockService extends data_mock_service_1.DataMockService {
6
+ constructor(labels) {
7
+ super();
8
+ this.data = labels;
9
+ }
10
+ count() {
11
+ return Promise.resolve(this.data.length);
12
+ }
13
+ getOneByName(name) {
14
+ return Promise.resolve(this.data.find((label) => label.name === name));
15
+ }
16
+ }
17
+ exports.LabelMockService = LabelMockService;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hahnpro/hpc-api",
3
- "version": "3.0.0",
3
+ "version": "3.2.1",
4
4
  "description": "Module for easy access to the HahnPRO API",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -31,8 +31,8 @@
31
31
  "p-queue": "^6.6.2"
32
32
  },
33
33
  "devDependencies": {
34
- "@types/eventsource": "^1.1.8",
35
- "axios-mock-adapter": "^1.20.0"
34
+ "@types/eventsource": "^1.1.9",
35
+ "axios-mock-adapter": "^1.21.1"
36
36
  },
37
37
  "engines": {
38
38
  "node": ">=v14.13"