@tstdl/base 0.92.129 → 0.92.131

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 (72) hide show
  1. package/ai/ai.service.js +4 -4
  2. package/api/server/api-controller.js +1 -2
  3. package/document-management/api/document-management.api.d.ts +25 -55
  4. package/document-management/api/document-management.api.js +9 -18
  5. package/document-management/models/document-request-collection-assignment.model.d.ts +7 -0
  6. package/document-management/models/{document-request-collection.model.js → document-request-collection-assignment.model.js} +6 -6
  7. package/document-management/models/index.d.ts +1 -1
  8. package/document-management/models/index.js +1 -1
  9. package/document-management/server/api/document-management.api.d.ts +26 -0
  10. package/document-management/server/api/document-management.api.js +169 -0
  11. package/document-management/server/api/index.d.ts +1 -0
  12. package/document-management/server/api/index.js +1 -0
  13. package/document-management/server/drizzle/{0000_cool_victor_mancha.sql → 0000_magical_madame_hydra.sql} +128 -96
  14. package/document-management/server/drizzle/meta/0000_snapshot.json +768 -492
  15. package/document-management/server/drizzle/meta/_journal.json +2 -9
  16. package/document-management/server/index.d.ts +1 -0
  17. package/document-management/server/index.js +1 -0
  18. package/document-management/server/schemas.d.ts +3 -2
  19. package/document-management/server/schemas.js +3 -2
  20. package/document-management/server/services/document-category-type.service.d.ts +2 -0
  21. package/document-management/server/services/document-category-type.service.js +26 -15
  22. package/document-management/server/services/document-collection.service.js +13 -2
  23. package/document-management/server/services/document-file.service.js +15 -4
  24. package/document-management/server/services/document-management-ai.service.js +19 -8
  25. package/document-management/server/services/document-management-ancillary.service.d.ts +21 -40
  26. package/document-management/server/services/document-management-ancillary.service.js +25 -14
  27. package/document-management/server/services/document-management.service.d.ts +1 -1
  28. package/document-management/server/services/document-management.service.js +53 -34
  29. package/document-management/server/services/document-property.service.d.ts +2 -34
  30. package/document-management/server/services/document-property.service.js +20 -8
  31. package/document-management/server/services/document-request.service.js +11 -11
  32. package/document-management/server/services/document-validation.service.js +15 -4
  33. package/document-management/server/services/document-workflow.service.js +27 -16
  34. package/document-management/server/services/document.service.d.ts +10 -2
  35. package/document-management/server/services/document.service.js +61 -8
  36. package/document-management/server/services/index.d.ts +1 -0
  37. package/document-management/server/services/index.js +1 -0
  38. package/document-management/server/services/singleton.d.ts +4 -0
  39. package/document-management/server/services/singleton.js +12 -0
  40. package/document-management/service-models/document.service-model.d.ts +8 -9
  41. package/document-management/service-models/document.service-model.js +1 -1
  42. package/eslint.config.js +1 -0
  43. package/examples/document-management/categories-and-types.d.ts +324 -0
  44. package/examples/document-management/categories-and-types.js +363 -0
  45. package/examples/document-management/main.d.ts +7 -8
  46. package/examples/document-management/main.js +86 -27
  47. package/injector/decorators.d.ts +1 -0
  48. package/injector/decorators.js +41 -12
  49. package/injector/inject.d.ts +12 -2
  50. package/injector/injector.d.ts +3 -2
  51. package/injector/injector.js +87 -36
  52. package/injector/symbols.d.ts +1 -0
  53. package/injector/symbols.js +1 -0
  54. package/module/modules/web-server.module.js +4 -4
  55. package/orm/server/database.d.ts +0 -4
  56. package/orm/server/database.js +0 -4
  57. package/orm/server/drizzle/schema-converter.js +5 -4
  58. package/orm/server/module.d.ts +0 -4
  59. package/orm/server/module.js +0 -2
  60. package/orm/server/query-converter.js +11 -38
  61. package/orm/server/repository.d.ts +3 -2
  62. package/orm/server/repository.js +2 -2
  63. package/orm/server/transaction.d.ts +5 -4
  64. package/orm/server/transaction.js +8 -3
  65. package/orm/server/transactional.js +3 -3
  66. package/orm/sqls.d.ts +4 -1
  67. package/orm/sqls.js +4 -1
  68. package/package.json +4 -4
  69. package/reflection/registry.js +6 -6
  70. package/document-management/models/document-request-collection.model.d.ts +0 -7
  71. package/document-management/server/drizzle/0001_concerned_quentin_quire.sql +0 -2
  72. package/document-management/server/drizzle/meta/0001_snapshot.json +0 -1932
package/ai/ai.service.js CHANGED
@@ -58,10 +58,10 @@ let AiService = AiService_1 = class AiService {
58
58
  return new AiSession(this);
59
59
  }
60
60
  async processFile(fileInput) {
61
- return this.#fileService.processFile(fileInput);
61
+ return await this.#fileService.processFile(fileInput);
62
62
  }
63
63
  async processFiles(fileInputs) {
64
- return this.#fileService.processFiles(fileInputs);
64
+ return await this.#fileService.processFiles(fileInputs);
65
65
  }
66
66
  getFileById(id) {
67
67
  return { file: id };
@@ -256,14 +256,14 @@ let AiService = AiService_1 = class AiService {
256
256
  async getModelOutputTokenLimit(model) {
257
257
  const existingValue = this.#maxOutputTokensCache.get(model);
258
258
  if (isDefined(existingValue)) {
259
- return existingValue;
259
+ return await existingValue;
260
260
  }
261
261
  const promise = this._getModelOutputTokenLimit(model);
262
262
  this.#maxOutputTokensCache.set(model, promise);
263
263
  promise
264
264
  .then((limit) => this.#maxOutputTokensCache.set(model, limit))
265
265
  .catch(() => this.#maxOutputTokensCache.delete(model));
266
- return promise;
266
+ return await promise;
267
267
  }
268
268
  async _getModelOutputTokenLimit(model) {
269
269
  const modelInfo = await this.#genAI.models.get({ model });
@@ -1,4 +1,3 @@
1
- /* eslint-disable max-classes-per-file */
2
1
  import { Singleton } from '../../injector/decorators.js';
3
2
  import { objectEntries } from '../../utils/object/object.js';
4
3
  import { isFunction } from '../../utils/type-guards.js';
@@ -43,7 +42,7 @@ export function implementApi(definition, implementation) {
43
42
  enumerable: true,
44
43
  configurable: true,
45
44
  writable: true,
46
- value: handler
45
+ value: handler,
47
46
  });
48
47
  }
49
48
  return api;
@@ -1,4 +1,4 @@
1
- import { Document, DocumentCategory, DocumentCollection, DocumentRequest, DocumentRequestsTemplate, DocumentRequestTemplate, DocumentType } from '../models/index.js';
1
+ import { Document, DocumentCategory, DocumentRequest, DocumentRequestsTemplate, DocumentRequestTemplate, DocumentType } from '../models/index.js';
2
2
  import { DocumentCategoryView, DocumentManagementData, DocumentRequestsTemplateData } from '../service-models/index.js';
3
3
  export type DocumentManagementApiDefinition = typeof documentManagementApiDefinition;
4
4
  export declare const documentManagementApiDefinition: {
@@ -25,22 +25,20 @@ export declare const documentManagementApiDefinition: {
25
25
  result: import("../../schema/index.js").ArraySchema<DocumentCategoryView>;
26
26
  credentials: true;
27
27
  };
28
- loadFileContent: {
28
+ loadContent: {
29
29
  resource: string;
30
30
  method: "GET";
31
31
  parameters: import("../../schema/index.js").ObjectSchema<{
32
- title: string | null;
33
32
  id: string;
34
33
  download?: boolean | undefined;
35
34
  }>;
36
35
  result: Uint8ArrayConstructor;
37
36
  credentials: true;
38
37
  };
39
- getFileContentUrl: {
38
+ getContentUrl: {
40
39
  resource: string;
41
40
  method: "GET";
42
41
  parameters: import("../../schema/index.js").ObjectSchema<{
43
- title: string | null;
44
42
  id: string;
45
43
  download?: boolean | undefined;
46
44
  }>;
@@ -73,31 +71,18 @@ export declare const documentManagementApiDefinition: {
73
71
  result: typeof DocumentType;
74
72
  credentials: true;
75
73
  };
76
- createCollection: {
77
- resource: string;
78
- method: "POST";
79
- parameters: import("../../schema/index.js").ObjectSchema<{
80
- parentId: import("../../orm/schemas/uuid.js").Uuid | null;
81
- metadata?: Partial<{
82
- attributes: import("../../orm/types.js").HasDefault<import("../../orm/schemas/json.js").Json<import("../../orm/entity.js").EntityMetadataAttributes>>;
83
- }> | undefined;
84
- }>;
85
- result: typeof DocumentCollection;
86
- credentials: true;
87
- };
88
74
  createDocument: {
89
75
  resource: string;
90
76
  method: "POST";
91
77
  parameters: import("../../schema/index.js").ObjectSchema<{
92
- date: import("../../orm/schemas/numeric-date.js").NumericDate | null;
93
- summary: string | null;
94
- title: string | null;
95
- typeId: import("../../orm/schemas/uuid.js").Uuid | null;
96
- subtitle: string | null;
97
- tags: string[] | null;
98
- comment: string | null;
99
- approval: import("../models/document.model.js").DocumentApproval;
100
- createUserId: import("../../orm/schemas/uuid.js").Uuid | null;
78
+ date?: import("../../orm/types.js").NumericDate | null | undefined;
79
+ summary?: string | null | undefined;
80
+ title?: string | null | undefined;
81
+ typeId?: import("../../orm/types.js").Uuid | null | undefined;
82
+ subtitle?: string | null | undefined;
83
+ tags?: string[] | null | undefined;
84
+ comment?: string | null | undefined;
85
+ approval?: import("../models/document.model.js").DocumentApproval | undefined;
101
86
  originalFileName: string | null;
102
87
  assignment: {
103
88
  collections: string | string[];
@@ -257,7 +242,7 @@ export declare const documentManagementApiDefinition: {
257
242
  result: import("../../schema/index.js").LiteralSchema<"ok">;
258
243
  credentials: true;
259
244
  };
260
- addDocumentToCollection: {
245
+ assignDocumentToCollection: {
261
246
  resource: string;
262
247
  method: "PUT";
263
248
  parameters: import("../../schema/index.js").ObjectSchema<{
@@ -270,7 +255,7 @@ export declare const documentManagementApiDefinition: {
270
255
  result: import("../../schema/index.js").LiteralSchema<"ok">;
271
256
  credentials: true;
272
257
  };
273
- archiveDocument: {
258
+ archiveDocumentInCollection: {
274
259
  resource: string;
275
260
  method: "DELETE";
276
261
  parameters: import("../../schema/index.js").ObjectSchema<{
@@ -339,22 +324,20 @@ declare const _DocumentManagementApi: import("../../api/client/index.js").ApiCli
339
324
  result: import("../../schema/index.js").ArraySchema<DocumentCategoryView>;
340
325
  credentials: true;
341
326
  };
342
- loadFileContent: {
327
+ loadContent: {
343
328
  resource: string;
344
329
  method: "GET";
345
330
  parameters: import("../../schema/index.js").ObjectSchema<{
346
- title: string | null;
347
331
  id: string;
348
332
  download?: boolean | undefined;
349
333
  }>;
350
334
  result: Uint8ArrayConstructor;
351
335
  credentials: true;
352
336
  };
353
- getFileContentUrl: {
337
+ getContentUrl: {
354
338
  resource: string;
355
339
  method: "GET";
356
340
  parameters: import("../../schema/index.js").ObjectSchema<{
357
- title: string | null;
358
341
  id: string;
359
342
  download?: boolean | undefined;
360
343
  }>;
@@ -387,31 +370,18 @@ declare const _DocumentManagementApi: import("../../api/client/index.js").ApiCli
387
370
  result: typeof DocumentType;
388
371
  credentials: true;
389
372
  };
390
- createCollection: {
391
- resource: string;
392
- method: "POST";
393
- parameters: import("../../schema/index.js").ObjectSchema<{
394
- parentId: import("../../orm/schemas/uuid.js").Uuid | null;
395
- metadata?: Partial<{
396
- attributes: import("../../orm/types.js").HasDefault<import("../../orm/schemas/json.js").Json<import("../../orm/entity.js").EntityMetadataAttributes>>;
397
- }> | undefined;
398
- }>;
399
- result: typeof DocumentCollection;
400
- credentials: true;
401
- };
402
373
  createDocument: {
403
374
  resource: string;
404
375
  method: "POST";
405
376
  parameters: import("../../schema/index.js").ObjectSchema<{
406
- date: import("../../orm/schemas/numeric-date.js").NumericDate | null;
407
- summary: string | null;
408
- title: string | null;
409
- typeId: import("../../orm/schemas/uuid.js").Uuid | null;
410
- subtitle: string | null;
411
- tags: string[] | null;
412
- comment: string | null;
413
- approval: import("../models/document.model.js").DocumentApproval;
414
- createUserId: import("../../orm/schemas/uuid.js").Uuid | null;
377
+ date?: import("../../orm/types.js").NumericDate | null | undefined;
378
+ summary?: string | null | undefined;
379
+ title?: string | null | undefined;
380
+ typeId?: import("../../orm/types.js").Uuid | null | undefined;
381
+ subtitle?: string | null | undefined;
382
+ tags?: string[] | null | undefined;
383
+ comment?: string | null | undefined;
384
+ approval?: import("../models/document.model.js").DocumentApproval | undefined;
415
385
  originalFileName: string | null;
416
386
  assignment: {
417
387
  collections: string | string[];
@@ -571,7 +541,7 @@ declare const _DocumentManagementApi: import("../../api/client/index.js").ApiCli
571
541
  result: import("../../schema/index.js").LiteralSchema<"ok">;
572
542
  credentials: true;
573
543
  };
574
- addDocumentToCollection: {
544
+ assignDocumentToCollection: {
575
545
  resource: string;
576
546
  method: "PUT";
577
547
  parameters: import("../../schema/index.js").ObjectSchema<{
@@ -584,7 +554,7 @@ declare const _DocumentManagementApi: import("../../api/client/index.js").ApiCli
584
554
  result: import("../../schema/index.js").LiteralSchema<"ok">;
585
555
  credentials: true;
586
556
  };
587
- archiveDocument: {
557
+ archiveDocumentInCollection: {
588
558
  resource: string;
589
559
  method: "DELETE";
590
560
  parameters: import("../../schema/index.js").ObjectSchema<{
@@ -7,10 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { compileClient } from '../../api/client/index.js';
8
8
  import { defineApi } from '../../api/index.js';
9
9
  import { ReplaceClass } from '../../injector/decorators.js';
10
- import { array, boolean, literal, nullable, object, optional, string } from '../../schema/index.js';
10
+ import { array, boolean, literal, object, optional, string } from '../../schema/index.js';
11
11
  import { megabyte } from '../../utils/units.js';
12
- import { Document, DocumentCategory, DocumentCollection, DocumentRequest, DocumentRequestsTemplate, DocumentRequestTemplate, DocumentType } from '../models/index.js';
13
- import { addOrArchiveDocumentToOrFromCollectionParametersSchema, applyDocumentRequestsTemplateParametersSchema, createCollectionParametersSchema, createDocumentCategoryParametersSchema, createDocumentParametersSchema, createDocumentRequestParametersSchema, createDocumentRequestsTemplateParametersSchema, createDocumentRequestTemplateParametersSchema, createDocumentTypeParametersSchema, deleteDocumentRequestParametersSchema, deleteDocumentRequestsTemplateParametersSchema, deleteDocumentRequestTemplateParametersSchema, DocumentCategoryView, DocumentManagementData, DocumentRequestsTemplateData, loadDataParametersSchema, updateDocumentParametersSchema, updateDocumentRequestParametersSchema, updateDocumentRequestsTemplateParametersSchema, updateDocumentRequestTemplateParametersSchema } from '../service-models/index.js';
12
+ import { Document, DocumentCategory, DocumentRequest, DocumentRequestsTemplate, DocumentRequestTemplate, DocumentType } from '../models/index.js';
13
+ import { addOrArchiveDocumentToOrFromCollectionParametersSchema, applyDocumentRequestsTemplateParametersSchema, createDocumentCategoryParametersSchema, createDocumentParametersSchema, createDocumentRequestParametersSchema, createDocumentRequestsTemplateParametersSchema, createDocumentRequestTemplateParametersSchema, createDocumentTypeParametersSchema, deleteDocumentRequestParametersSchema, deleteDocumentRequestsTemplateParametersSchema, deleteDocumentRequestTemplateParametersSchema, DocumentCategoryView, DocumentManagementData, DocumentRequestsTemplateData, loadDataParametersSchema, updateDocumentParametersSchema, updateDocumentRequestParametersSchema, updateDocumentRequestsTemplateParametersSchema, updateDocumentRequestTemplateParametersSchema } from '../service-models/index.js';
14
14
  export const documentManagementApiDefinition = defineApi({
15
15
  resource: 'document-management',
16
16
  endpoints: {
@@ -33,23 +33,21 @@ export const documentManagementApiDefinition = defineApi({
33
33
  result: array(DocumentCategoryView),
34
34
  credentials: true,
35
35
  },
36
- loadFileContent: {
37
- resource: 'files/:id/content',
36
+ loadContent: {
37
+ resource: 'documents/:id/content',
38
38
  method: 'GET',
39
39
  parameters: object({
40
40
  id: string(),
41
- title: nullable(string()),
42
41
  download: optional(boolean({ coerce: true })),
43
42
  }),
44
43
  result: Uint8Array,
45
44
  credentials: true,
46
45
  },
47
- getFileContentUrl: {
48
- resource: 'files/:id/content/url',
46
+ getContentUrl: {
47
+ resource: 'documents/:id/content/url',
49
48
  method: 'GET',
50
49
  parameters: object({
51
50
  id: string(),
52
- title: nullable(string()),
53
51
  download: optional(boolean({ coerce: true })),
54
52
  }),
55
53
  result: string(),
@@ -69,13 +67,6 @@ export const documentManagementApiDefinition = defineApi({
69
67
  result: DocumentType,
70
68
  credentials: true,
71
69
  },
72
- createCollection: {
73
- resource: 'collections',
74
- method: 'POST',
75
- parameters: createCollectionParametersSchema,
76
- result: DocumentCollection,
77
- credentials: true,
78
- },
79
70
  createDocument: {
80
71
  resource: 'documents',
81
72
  method: 'POST',
@@ -155,14 +146,14 @@ export const documentManagementApiDefinition = defineApi({
155
146
  result: literal('ok'),
156
147
  credentials: true,
157
148
  },
158
- addDocumentToCollection: {
149
+ assignDocumentToCollection: {
159
150
  resource: 'collections/:collectionId/documents/:documentId',
160
151
  method: 'PUT',
161
152
  parameters: addOrArchiveDocumentToOrFromCollectionParametersSchema,
162
153
  result: literal('ok'),
163
154
  credentials: true,
164
155
  },
165
- archiveDocument: {
156
+ archiveDocumentInCollection: {
166
157
  resource: 'collections/:collectionId/documents/:documentId',
167
158
  method: 'DELETE',
168
159
  parameters: addOrArchiveDocumentToOrFromCollectionParametersSchema,
@@ -0,0 +1,7 @@
1
+ import { Entity } from '../../orm/entity.js';
2
+ import { Uuid } from '../../orm/types.js';
3
+ export declare class DocumentRequestCollectionAssignment extends Entity {
4
+ static readonly entityName: 'DocumentRequestCollectionAssignment';
5
+ requestId: Uuid;
6
+ collectionId: Uuid;
7
+ }
@@ -13,7 +13,7 @@ import { Unique, Uuid } from '../../orm/types.js';
13
13
  import { DocumentCollection } from './document-collection.model.js';
14
14
  import { DocumentManagementTable } from './document-management-table.js';
15
15
  import { DocumentRequest } from './document-request.model.js';
16
- let DocumentRequestCollection = class DocumentRequestCollection extends Entity {
16
+ let DocumentRequestCollectionAssignment = class DocumentRequestCollectionAssignment extends Entity {
17
17
  requestId;
18
18
  collectionId;
19
19
  };
@@ -21,14 +21,14 @@ __decorate([
21
21
  Uuid(),
22
22
  References(() => DocumentRequest),
23
23
  __metadata("design:type", String)
24
- ], DocumentRequestCollection.prototype, "requestId", void 0);
24
+ ], DocumentRequestCollectionAssignment.prototype, "requestId", void 0);
25
25
  __decorate([
26
26
  Uuid(),
27
27
  References(() => DocumentCollection),
28
28
  __metadata("design:type", String)
29
- ], DocumentRequestCollection.prototype, "collectionId", void 0);
30
- DocumentRequestCollection = __decorate([
29
+ ], DocumentRequestCollectionAssignment.prototype, "collectionId", void 0);
30
+ DocumentRequestCollectionAssignment = __decorate([
31
31
  DocumentManagementTable(),
32
32
  Unique(['requestId', 'collectionId'])
33
- ], DocumentRequestCollection);
34
- export { DocumentRequestCollection };
33
+ ], DocumentRequestCollectionAssignment);
34
+ export { DocumentRequestCollectionAssignment };
@@ -7,7 +7,7 @@ export * from './document-file.model.js';
7
7
  export * from './document-management-table.js';
8
8
  export * from './document-property-value.model.js';
9
9
  export * from './document-property.model.js';
10
- export * from './document-request-collection.model.js';
10
+ export * from './document-request-collection-assignment.model.js';
11
11
  export * from './document-request-submission.model.js';
12
12
  export * from './document-request-template.js';
13
13
  export * from './document-request.model.js';
@@ -7,7 +7,7 @@ export * from './document-file.model.js';
7
7
  export * from './document-management-table.js';
8
8
  export * from './document-property-value.model.js';
9
9
  export * from './document-property.model.js';
10
- export * from './document-request-collection.model.js';
10
+ export * from './document-request-collection-assignment.model.js';
11
11
  export * from './document-request-submission.model.js';
12
12
  export * from './document-request-template.js';
13
13
  export * from './document-request.model.js';
@@ -0,0 +1,26 @@
1
+ import type { ApiController, ApiRequestContext, ApiServerResult } from '../../../api/index.js';
2
+ import { type DocumentManagementApiDefinition } from '../../../document-management/api/index.js';
3
+ export declare class DocumentManagementApiController implements ApiController<DocumentManagementApiDefinition> {
4
+ #private;
5
+ loadData(context: ApiRequestContext<DocumentManagementApiDefinition, 'loadData'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'loadData'>>;
6
+ loadDocumentRequestsTemplateData(context: ApiRequestContext<DocumentManagementApiDefinition, 'loadDocumentRequestsTemplateData'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'loadDocumentRequestsTemplateData'>>;
7
+ loadAvailableCategories(context: ApiRequestContext<DocumentManagementApiDefinition, 'loadAvailableCategories'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'loadAvailableCategories'>>;
8
+ loadContent(context: ApiRequestContext<DocumentManagementApiDefinition, 'loadContent'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'loadContent'>>;
9
+ getContentUrl(context: ApiRequestContext<DocumentManagementApiDefinition, 'getContentUrl'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'getContentUrl'>>;
10
+ createCategory(context: ApiRequestContext<DocumentManagementApiDefinition, 'createCategory'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'createCategory'>>;
11
+ createType(context: ApiRequestContext<DocumentManagementApiDefinition, 'createType'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'createType'>>;
12
+ createDocument(context: ApiRequestContext<DocumentManagementApiDefinition, 'createDocument'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'createDocument'>>;
13
+ createDocumentRequestsTemplate(context: ApiRequestContext<DocumentManagementApiDefinition, 'createDocumentRequestsTemplate'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'createDocumentRequestsTemplate'>>;
14
+ updateDocumentRequestsTemplate(_context: ApiRequestContext<DocumentManagementApiDefinition, 'updateDocumentRequestsTemplate'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'updateDocumentRequestsTemplate'>>;
15
+ applyDocumentRequestsTemplate(_context: ApiRequestContext<DocumentManagementApiDefinition, 'applyDocumentRequestsTemplate'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'applyDocumentRequestsTemplate'>>;
16
+ deleteDocumentRequestsTemplate(_context: ApiRequestContext<DocumentManagementApiDefinition, 'deleteDocumentRequestsTemplate'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'deleteDocumentRequestsTemplate'>>;
17
+ createDocumentRequestTemplate(_context: ApiRequestContext<DocumentManagementApiDefinition, 'createDocumentRequestTemplate'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'createDocumentRequestTemplate'>>;
18
+ updateDocumentRequestTemplate(_context: ApiRequestContext<DocumentManagementApiDefinition, 'updateDocumentRequestTemplate'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'updateDocumentRequestTemplate'>>;
19
+ deleteDocumentRequestTemplate(_context: ApiRequestContext<DocumentManagementApiDefinition, 'deleteDocumentRequestTemplate'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'deleteDocumentRequestTemplate'>>;
20
+ createDocumentRequest(_context: ApiRequestContext<DocumentManagementApiDefinition, 'createDocumentRequest'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'createDocumentRequest'>>;
21
+ updateDocumentRequest(_context: ApiRequestContext<DocumentManagementApiDefinition, 'updateDocumentRequest'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'updateDocumentRequest'>>;
22
+ deleteDocumentRequest(_context: ApiRequestContext<DocumentManagementApiDefinition, 'deleteDocumentRequest'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'deleteDocumentRequest'>>;
23
+ assignDocumentToCollection(_context: ApiRequestContext<DocumentManagementApiDefinition, 'assignDocumentToCollection'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'assignDocumentToCollection'>>;
24
+ archiveDocumentInCollection(_context: ApiRequestContext<DocumentManagementApiDefinition, 'archiveDocumentInCollection'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'archiveDocumentInCollection'>>;
25
+ updateDocument(_context: ApiRequestContext<DocumentManagementApiDefinition, 'updateDocument'>): Promise<ApiServerResult<DocumentManagementApiDefinition, 'updateDocument'>>;
26
+ }
@@ -0,0 +1,169 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var _a;
8
+ var DocumentManagementApiController_1;
9
+ import { apiController } from '../../../api/server/index.js';
10
+ import { CancellationSignal } from '../../../cancellation/index.js';
11
+ import { documentManagementApiDefinition } from '../../../document-management/api/index.js';
12
+ import { DocumentRequestCollectionAssignment } from '../../../document-management/models/document-request-collection-assignment.model.js';
13
+ import { ForbiddenError, NotImplementedError } from '../../../errors/index.js';
14
+ import { HttpServerResponse } from '../../../http/index.js';
15
+ import { inject } from '../../../injector/index.js';
16
+ import { Logger } from '../../../logger/index.js';
17
+ import { injectRepository } from '../../../orm/server/repository.js';
18
+ import { toArray } from '../../../utils/array/index.js';
19
+ import { match, P } from 'ts-pattern';
20
+ import { DocumentCategoryTypeService, DocumentCollectionService, DocumentFileService, DocumentManagementAncillaryService, DocumentManagementService, DocumentPropertyService, DocumentRequestService, DocumentService, DocumentWorkflowService } from '../services/index.js';
21
+ let DocumentManagementApiController = DocumentManagementApiController_1 = class DocumentManagementApiController {
22
+ #ancillaryService = inject(DocumentManagementAncillaryService);
23
+ #documentCategoryTypeService = inject(DocumentCategoryTypeService);
24
+ #documentCollectionService = inject(DocumentCollectionService);
25
+ #documentFileService = inject(DocumentFileService);
26
+ #documentManagementAncillaryService = inject(DocumentManagementAncillaryService);
27
+ #documentManagementService = inject(DocumentManagementService);
28
+ #documentPropertyService = inject(DocumentPropertyService);
29
+ #documentRequestService = inject(DocumentRequestService);
30
+ #documentRequestCollectionAssignmentRepository = injectRepository(DocumentRequestCollectionAssignment);
31
+ #documentService = inject(DocumentService);
32
+ #documentWorkflowService = inject(DocumentWorkflowService);
33
+ #cancellationSignal = inject(CancellationSignal);
34
+ #logger = inject(Logger, DocumentManagementApiController_1.name);
35
+ async loadData(context) {
36
+ const token = await context.getToken();
37
+ for (const collectionId of context.parameters.collectionIds) {
38
+ const allowed = await this.#documentManagementAncillaryService.canReadCollection(collectionId, token);
39
+ if (!allowed) {
40
+ throw new ForbiddenError(`You are not allowed to read collection ${collectionId}`);
41
+ }
42
+ }
43
+ return await this.#documentManagementService.loadData(toArray(context.parameters.collectionIds));
44
+ }
45
+ async loadDocumentRequestsTemplateData(context) {
46
+ const token = await context.getToken();
47
+ const allowed = await this.#documentManagementAncillaryService.canReadDocumentRequestsTemplates(token);
48
+ if (!allowed) {
49
+ throw new ForbiddenError('You are not allowed to load document requests template data.');
50
+ }
51
+ return await this.#documentManagementService.loadDocumentRequestsTemplateData();
52
+ }
53
+ async loadAvailableCategories(context) {
54
+ const token = await context.getToken();
55
+ return await this.#documentCategoryTypeService.loadCategoryViews();
56
+ }
57
+ async loadContent(context) {
58
+ const token = await context.getToken();
59
+ const allowed = await this.#documentManagementAncillaryService.canReadDocument(context.parameters.id, token);
60
+ if (!allowed) {
61
+ throw new ForbiddenError(`You are not allowed to load content for file ${context.parameters.id}.`);
62
+ }
63
+ const url = await this.#documentService.getContentUrl(context.parameters.id, context.parameters.download);
64
+ return HttpServerResponse.fromObject({
65
+ statusCode: 303,
66
+ headers: {
67
+ Location: url,
68
+ },
69
+ });
70
+ }
71
+ async getContentUrl(context) {
72
+ const token = await context.getToken();
73
+ const allowed = await this.#documentManagementAncillaryService.canReadDocument(context.parameters.id, token);
74
+ if (!allowed) {
75
+ throw new ForbiddenError(`You are not allowed to get content URL for file ${context.parameters.id}.`);
76
+ }
77
+ return await this.#documentService.getContentUrl(context.parameters.id, context.parameters.download);
78
+ }
79
+ async createCategory(context) {
80
+ const token = await context.getToken();
81
+ const allowed = await this.#documentManagementAncillaryService.canManageCategoriesAndTypes(token);
82
+ if (!allowed) {
83
+ throw new ForbiddenError('You are not allowed to create document categories.');
84
+ }
85
+ return await this.#documentCategoryTypeService.createCategory(context.parameters.label, context.parameters.parentId);
86
+ }
87
+ async createType(context) {
88
+ const token = await context.getToken();
89
+ const allowed = await this.#documentManagementAncillaryService.canManageCategoriesAndTypes(token);
90
+ if (!allowed) {
91
+ throw new ForbiddenError('You are not allowed to create document types.');
92
+ }
93
+ return await this.#documentCategoryTypeService.createType(context.parameters.label, context.parameters.categoryId);
94
+ }
95
+ async createDocument(context) {
96
+ const token = await context.getToken();
97
+ const [collectionIds, requiresAssign] = await match(context.parameters.assignment)
98
+ .with({ collections: P.select() }, (collectionIds) => [toArray(collectionIds), true])
99
+ .with({ request: P.select() }, async (requestId) => {
100
+ const assignments = await this.#documentRequestCollectionAssignmentRepository.loadManyByQuery({ requestId });
101
+ const collectionIds = assignments.map((assignment) => assignment.collectionId);
102
+ return [collectionIds, true];
103
+ })
104
+ .with({ automatic: P.select() }, ({ scope }) => [toArray(scope), false])
105
+ .exhaustive();
106
+ for (const collectionId of collectionIds) {
107
+ const createDocumentsAllowed = await this.#documentManagementAncillaryService.canCreateDocuments(collectionId, token);
108
+ if (!createDocumentsAllowed) {
109
+ throw new ForbiddenError(`You are not allowed to create documents in collection ${collectionId}.`);
110
+ }
111
+ if (requiresAssign) {
112
+ const assignDocumentsAllowed = await this.#documentManagementAncillaryService.canAssignDocuments(collectionId, token);
113
+ if (!assignDocumentsAllowed) {
114
+ throw new ForbiddenError(`You are not allowed to assign documents in collection ${collectionId}.`);
115
+ }
116
+ }
117
+ }
118
+ const actionUserId = await this.#ancillaryService.getUserId(token);
119
+ return await this.#documentService.create(context.parameters, context.body, { createUserId: actionUserId });
120
+ }
121
+ async createDocumentRequestsTemplate(context) {
122
+ const token = await context.getToken();
123
+ const allowed = await this.#documentManagementAncillaryService.canManageDocumentRequestsTemplates(token);
124
+ if (!allowed) {
125
+ throw new ForbiddenError('You are not allowed to create document requests template.');
126
+ }
127
+ return await this.#documentRequestService.createRequestsTemplate(context.parameters);
128
+ }
129
+ async updateDocumentRequestsTemplate(_context) {
130
+ throw new NotImplementedError();
131
+ }
132
+ async applyDocumentRequestsTemplate(_context) {
133
+ throw new NotImplementedError();
134
+ }
135
+ async deleteDocumentRequestsTemplate(_context) {
136
+ throw new NotImplementedError();
137
+ }
138
+ async createDocumentRequestTemplate(_context) {
139
+ throw new NotImplementedError();
140
+ }
141
+ async updateDocumentRequestTemplate(_context) {
142
+ throw new NotImplementedError();
143
+ }
144
+ async deleteDocumentRequestTemplate(_context) {
145
+ throw new NotImplementedError();
146
+ }
147
+ async createDocumentRequest(_context) {
148
+ throw new NotImplementedError();
149
+ }
150
+ async updateDocumentRequest(_context) {
151
+ throw new NotImplementedError();
152
+ }
153
+ async deleteDocumentRequest(_context) {
154
+ throw new NotImplementedError();
155
+ }
156
+ async assignDocumentToCollection(_context) {
157
+ throw new NotImplementedError();
158
+ }
159
+ async archiveDocumentInCollection(_context) {
160
+ throw new NotImplementedError();
161
+ }
162
+ async updateDocument(_context) {
163
+ throw new NotImplementedError();
164
+ }
165
+ };
166
+ DocumentManagementApiController = DocumentManagementApiController_1 = __decorate([
167
+ apiController(documentManagementApiDefinition)
168
+ ], DocumentManagementApiController);
169
+ export { DocumentManagementApiController };
@@ -0,0 +1 @@
1
+ export * from './document-management.api.js';
@@ -0,0 +1 @@
1
+ export * from './document-management.api.js';