@nest-yalc-2/omnikernel-module 2.2.2 → 2.2.4

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 (74) hide show
  1. package/package.json +17 -15
  2. package/src/__tests__/omni-collection.entity.spec.ts +49 -49
  3. package/src/__tests__/omni-collection.service.spec.ts +83 -83
  4. package/src/__tests__/omni-document.entity.spec.ts +55 -55
  5. package/src/__tests__/omni-document.service.spec.ts +83 -83
  6. package/src/__tests__/omni-extension-projection-constraints.spec.ts +518 -518
  7. package/src/__tests__/omni-extension-projection.registration.spec.ts +947 -946
  8. package/src/__tests__/omni-extension-projection.service.spec.ts +806 -806
  9. package/src/__tests__/omni-external-ref.entity.spec.ts +36 -36
  10. package/src/__tests__/omni-external-ref.service.spec.ts +252 -252
  11. package/src/__tests__/omni-named.entity.spec.ts +33 -33
  12. package/src/__tests__/omni-record.entity.spec.ts +32 -32
  13. package/src/__tests__/omni-record.service.spec.ts +107 -107
  14. package/src/__tests__/omni-relation-semantics.spec.ts +102 -102
  15. package/src/__tests__/omni-relation.entity.spec.ts +38 -38
  16. package/src/__tests__/omni-scope-substrate.spec.ts +81 -81
  17. package/src/__tests__/omni-scoped.backend.spec.ts +115 -115
  18. package/src/__tests__/omni-scoped.service.spec.ts +354 -354
  19. package/src/__tests__/omnikernel.diagnostics.spec.ts +94 -94
  20. package/src/__tests__/omnikernel.module.spec.ts +38 -40
  21. package/src/__tests__/omnikernel.persistence.spec.ts +154 -154
  22. package/src/__tests__/omnikernel.public-api.spec.ts +238 -238
  23. package/src/__tests__/omnikernel.query.service.spec.ts +155 -155
  24. package/src/base/omni-base.entity.ts +41 -41
  25. package/src/base/omni-external-ref.entity.ts +53 -53
  26. package/src/base/omni-named.entity.ts +16 -16
  27. package/src/base/omni-record.entity.ts +51 -51
  28. package/src/base/omni-relation.entity.ts +72 -72
  29. package/src/index.ts +49 -49
  30. package/src/omni-collection-kind.enum.ts +10 -10
  31. package/src/omni-collection.backend.ts +16 -16
  32. package/src/omni-collection.dto.ts +170 -170
  33. package/src/omni-collection.entity.ts +21 -21
  34. package/src/omni-collection.service.ts +75 -75
  35. package/src/omni-document-kind.enum.ts +12 -12
  36. package/src/omni-document.backend.ts +16 -16
  37. package/src/omni-document.dto.ts +198 -198
  38. package/src/omni-document.entity.ts +30 -30
  39. package/src/omni-document.service.ts +75 -75
  40. package/src/omni-dto.helpers.ts +21 -21
  41. package/src/omni-extension-projection.definition.ts +294 -294
  42. package/src/omni-extension-projection.resource.ts +274 -274
  43. package/src/omni-extension-projection.service.ts +452 -452
  44. package/src/omni-external-ref-binding.validator.ts +53 -53
  45. package/src/omni-external-ref-internal-type.enum.ts +11 -11
  46. package/src/omni-external-ref.backend.ts +25 -25
  47. package/src/omni-external-ref.dto.ts +128 -128
  48. package/src/omni-external-ref.service.ts +255 -255
  49. package/src/omni-migration.ts +365 -365
  50. package/src/omni-named.backend.ts +11 -11
  51. package/src/omni-named.dto.ts +86 -86
  52. package/src/omni-projection.catalog.ts +345 -345
  53. package/src/omni-projection.lifecycle.ts +53 -53
  54. package/src/omni-record-status.enum.ts +11 -11
  55. package/src/omni-record.backend.ts +19 -19
  56. package/src/omni-record.dto.ts +157 -157
  57. package/src/omni-record.service.ts +113 -113
  58. package/src/omni-relation-kind.contract.ts +49 -49
  59. package/src/omni-relation-kind.enum.ts +12 -12
  60. package/src/omni-relation-projection.definition.ts +166 -166
  61. package/src/omni-relation-projection.resource.ts +360 -360
  62. package/src/omni-relation-projection.service.ts +610 -610
  63. package/src/omni-relation-semantics.ts +52 -52
  64. package/src/omni-relation-status.enum.ts +11 -11
  65. package/src/omni-relation.backend.ts +21 -21
  66. package/src/omni-relation.dto.ts +142 -142
  67. package/src/omni-relation.service.ts +159 -159
  68. package/src/omni-scope.ts +161 -161
  69. package/src/omni-scoped.backend.ts +110 -110
  70. package/src/omni-scoped.repository.ts +34 -34
  71. package/src/omni-scoped.service.ts +338 -338
  72. package/src/omnikernel.diagnostics.ts +83 -83
  73. package/src/omnikernel.module.ts +97 -97
  74. package/src/omnikernel.query.service.ts +108 -108
@@ -1,53 +1,53 @@
1
- import { BadRequestException, NotFoundException } from '@nestjs/common';
2
- import { IsNull, type Repository } from 'typeorm';
3
- import { OmniRecordEntity } from './base/omni-record.entity.js';
4
- import { OmniExternalRefInternalType } from './omni-external-ref-internal-type.enum.js';
5
- import type { OmniScope } from './omni-scope.js';
6
-
7
- export interface OmniExternalRefBinding {
8
- internalId: string;
9
- internalType: OmniExternalRefInternalType;
10
- }
11
-
12
- /**
13
- * Reusable validation for an external reference whose declared target is an
14
- * Omni record identity. Other internal types remain legacy application-owned
15
- * identities and are intentionally not passed to this validator.
16
- */
17
- export class OmniExternalRefBindingValidator {
18
- constructor(
19
- private readonly recordRepository: Repository<OmniRecordEntity>,
20
- private readonly scope: OmniScope,
21
- ) {}
22
-
23
- async assertTarget(
24
- binding: OmniExternalRefBinding,
25
- ): Promise<OmniRecordEntity> {
26
- if (binding.internalType !== OmniExternalRefInternalType.Record) {
27
- throw new BadRequestException(
28
- 'Omni external record binding must declare internalType record.',
29
- );
30
- }
31
- if (
32
- typeof binding.internalId !== 'string' ||
33
- binding.internalId.trim().length === 0
34
- ) {
35
- throw new BadRequestException(
36
- 'Omni external reference internalId must be a non-empty record identity.',
37
- );
38
- }
39
- const record = await this.recordRepository.findOne({
40
- where: {
41
- scopeId: this.scope.scopeId,
42
- guid: binding.internalId,
43
- deletedAt: IsNull(),
44
- },
45
- });
46
- if (!record) {
47
- throw new NotFoundException(
48
- 'Omni external reference target was not found in this scope.',
49
- );
50
- }
51
- return record;
52
- }
53
- }
1
+ import { BadRequestException, NotFoundException } from '@nestjs/common';
2
+ import { IsNull, type Repository } from 'typeorm';
3
+ import { OmniRecordEntity } from './base/omni-record.entity.js';
4
+ import { OmniExternalRefInternalType } from './omni-external-ref-internal-type.enum.js';
5
+ import type { OmniScope } from './omni-scope.js';
6
+
7
+ export interface OmniExternalRefBinding {
8
+ internalId: string;
9
+ internalType: OmniExternalRefInternalType;
10
+ }
11
+
12
+ /**
13
+ * Reusable validation for an external reference whose declared target is an
14
+ * Omni record identity. Other internal types remain legacy application-owned
15
+ * identities and are intentionally not passed to this validator.
16
+ */
17
+ export class OmniExternalRefBindingValidator {
18
+ constructor(
19
+ private readonly recordRepository: Repository<OmniRecordEntity>,
20
+ private readonly scope: OmniScope,
21
+ ) {}
22
+
23
+ async assertTarget(
24
+ binding: OmniExternalRefBinding,
25
+ ): Promise<OmniRecordEntity> {
26
+ if (binding.internalType !== OmniExternalRefInternalType.Record) {
27
+ throw new BadRequestException(
28
+ 'Omni external record binding must declare internalType record.',
29
+ );
30
+ }
31
+ if (
32
+ typeof binding.internalId !== 'string' ||
33
+ binding.internalId.trim().length === 0
34
+ ) {
35
+ throw new BadRequestException(
36
+ 'Omni external reference internalId must be a non-empty record identity.',
37
+ );
38
+ }
39
+ const record = await this.recordRepository.findOne({
40
+ where: {
41
+ scopeId: this.scope.scopeId,
42
+ guid: binding.internalId,
43
+ deletedAt: IsNull(),
44
+ },
45
+ });
46
+ if (!record) {
47
+ throw new NotFoundException(
48
+ 'Omni external reference target was not found in this scope.',
49
+ );
50
+ }
51
+ return record;
52
+ }
53
+ }
@@ -1,11 +1,11 @@
1
- import { registerEnumType } from '@nestjs/graphql';
2
-
3
- export enum OmniExternalRefInternalType {
4
- Record = 'record',
5
- Document = 'document',
6
- Collection = 'collection',
7
- }
8
-
9
- registerEnumType(OmniExternalRefInternalType, {
10
- name: 'OmniExternalRefInternalType',
11
- });
1
+ import { registerEnumType } from '@nestjs/graphql';
2
+
3
+ export enum OmniExternalRefInternalType {
4
+ Record = 'record',
5
+ Document = 'document',
6
+ Collection = 'collection',
7
+ }
8
+
9
+ registerEnumType(OmniExternalRefInternalType, {
10
+ name: 'OmniExternalRefInternalType',
11
+ });
@@ -1,25 +1,25 @@
1
- import { getRepositoryToken } from '@nestjs/typeorm';
2
- import { OmniRecordEntity } from './base/omni-record.entity.js';
3
- import { OmniExternalRefEntity } from './base/omni-external-ref.entity.js';
4
- import { OmniExternalRefBindingValidator } from './omni-external-ref-binding.validator.js';
5
- import { OmniExternalRefService } from './omni-external-ref.service.js';
6
- import {
7
- omniBackendServiceToken,
8
- omniScopedBackendProvidersFactory,
9
- } from './omni-scoped.backend.js';
10
-
11
- export const omniExternalRefBackendProvidersFactory = (dbConnection: string) =>
12
- omniScopedBackendProvidersFactory<OmniExternalRefEntity>({
13
- entityModel: OmniExternalRefEntity,
14
- dbConnection,
15
- serviceToken: omniBackendServiceToken(OmniExternalRefService),
16
- serviceProvider: OmniExternalRefService,
17
- additionalInject: [getRepositoryToken(OmniRecordEntity, dbConnection)],
18
- createService: (repository, scope, options, recordRepository) =>
19
- new OmniExternalRefService(
20
- repository,
21
- scope,
22
- options.deletion.externalRef,
23
- new OmniExternalRefBindingValidator(recordRepository as never, scope),
24
- ),
25
- });
1
+ import { getRepositoryToken } from '@nestjs/typeorm';
2
+ import { OmniRecordEntity } from './base/omni-record.entity.js';
3
+ import { OmniExternalRefEntity } from './base/omni-external-ref.entity.js';
4
+ import { OmniExternalRefBindingValidator } from './omni-external-ref-binding.validator.js';
5
+ import { OmniExternalRefService } from './omni-external-ref.service.js';
6
+ import {
7
+ omniBackendServiceToken,
8
+ omniScopedBackendProvidersFactory,
9
+ } from './omni-scoped.backend.js';
10
+
11
+ export const omniExternalRefBackendProvidersFactory = (dbConnection: string) =>
12
+ omniScopedBackendProvidersFactory<OmniExternalRefEntity>({
13
+ entityModel: OmniExternalRefEntity,
14
+ dbConnection,
15
+ serviceToken: omniBackendServiceToken(OmniExternalRefService),
16
+ serviceProvider: OmniExternalRefService,
17
+ additionalInject: [getRepositoryToken(OmniRecordEntity, dbConnection)],
18
+ createService: (repository, scope, options, recordRepository) =>
19
+ new OmniExternalRefService(
20
+ repository,
21
+ scope,
22
+ options.deletion.externalRef,
23
+ new OmniExternalRefBindingValidator(recordRepository as never, scope),
24
+ ),
25
+ });
@@ -1,128 +1,128 @@
1
- import {
2
- InputType,
3
- Int,
4
- ObjectType,
5
- OmitType,
6
- PartialType,
7
- } from '@nestjs/graphql';
8
- import {
9
- ModelField,
10
- ModelObject,
11
- } from '@nest-yalc-2/crud-gen/object.decorator.js';
12
- import { UUIDScalar } from '@nest-yalc-2/graphql/scalars/uuid.scalar.js';
13
- import returnValue from '@node-yalc/utils/returnValue.js';
14
- import {
15
- IsEnum,
16
- IsInt,
17
- IsObject,
18
- IsOptional,
19
- IsString,
20
- IsUUID,
21
- MaxLength,
22
- } from 'class-validator';
23
- import { GraphQLJSONObject } from 'graphql-type-json';
24
- import { OmniExternalRefEntity } from './base/omni-external-ref.entity.js';
25
- import { assignOmniPublicDto } from './omni-dto.helpers.js';
26
- import { OmniExternalRefInternalType } from './omni-external-ref-internal-type.enum.js';
27
-
28
- @ObjectType()
29
- @ModelObject()
30
- export class OmniExternalRefType extends OmniExternalRefEntity {
31
- constructor(data?: Partial<OmniExternalRefType>) {
32
- super();
33
- if (data) {
34
- assignOmniPublicDto(this, data);
35
- }
36
- }
37
-
38
- @ModelField({ gqlType: returnValue(UUIDScalar), isRequired: true })
39
- @IsUUID()
40
- guid!: string;
41
-
42
- @ModelField({ gqlType: returnValue(Int) })
43
- @IsInt()
44
- revision!: number;
45
-
46
- @ModelField({ gqlType: returnValue(OmniExternalRefInternalType) })
47
- @IsEnum(OmniExternalRefInternalType)
48
- internalType!: OmniExternalRefInternalType;
49
-
50
- @ModelField({ gqlType: returnValue(UUIDScalar), isRequired: true })
51
- @IsUUID()
52
- internalId!: string;
53
-
54
- @ModelField({ gqlType: returnValue(String) })
55
- @IsString()
56
- @MaxLength(128)
57
- provider!: string;
58
-
59
- @ModelField({
60
- gqlType: returnValue(String),
61
- gqlOptions: { nullable: true },
62
- })
63
- @IsOptional()
64
- @IsString()
65
- @MaxLength(128)
66
- account?: string | null;
67
-
68
- @ModelField({
69
- gqlType: returnValue(String),
70
- gqlOptions: { nullable: true },
71
- })
72
- @IsOptional()
73
- @IsString()
74
- @MaxLength(128)
75
- container?: string | null;
76
-
77
- @ModelField({ gqlType: returnValue(String) })
78
- @IsString()
79
- @MaxLength(255)
80
- externalId!: string;
81
-
82
- @ModelField({
83
- gqlType: returnValue(GraphQLJSONObject),
84
- gqlOptions: { nullable: true },
85
- })
86
- @IsOptional()
87
- @IsObject()
88
- payload?: Record<string, unknown> | null;
89
-
90
- @ModelField({
91
- gqlType: returnValue(String),
92
- gqlOptions: { nullable: true },
93
- })
94
- @IsOptional()
95
- @IsString()
96
- @MaxLength(128)
97
- payloadSchemaId?: string | null;
98
-
99
- @ModelField({
100
- gqlType: returnValue(Int),
101
- gqlOptions: { nullable: true },
102
- })
103
- @IsOptional()
104
- @IsInt()
105
- payloadSchemaVersion?: number | null;
106
- }
107
-
108
- @InputType()
109
- @ModelObject()
110
- export class OmniExternalRefCreateInput extends OmitType(
111
- OmniExternalRefType,
112
- ['createdAt', 'updatedAt', 'revision'] as const,
113
- InputType,
114
- ) {}
115
-
116
- @InputType()
117
- @ModelObject({ copyFrom: OmniExternalRefType })
118
- export class OmniExternalRefCondition extends PartialType(
119
- OmniExternalRefCreateInput,
120
- InputType,
121
- ) {}
122
-
123
- @InputType()
124
- @ModelObject({ copyFrom: OmniExternalRefType })
125
- export class OmniExternalRefUpdateInput extends PartialType(
126
- OmniExternalRefCreateInput,
127
- InputType,
128
- ) {}
1
+ import {
2
+ InputType,
3
+ Int,
4
+ ObjectType,
5
+ OmitType,
6
+ PartialType,
7
+ } from '@nestjs/graphql';
8
+ import {
9
+ ModelField,
10
+ ModelObject,
11
+ } from '@nest-yalc-2/crud-gen/object.decorator.js';
12
+ import { UUIDScalar } from '@nest-yalc-2/graphql/scalars/uuid.scalar.js';
13
+ import returnValue from '@node-yalc/utils/returnValue.js';
14
+ import {
15
+ IsEnum,
16
+ IsInt,
17
+ IsObject,
18
+ IsOptional,
19
+ IsString,
20
+ IsUUID,
21
+ MaxLength,
22
+ } from 'class-validator';
23
+ import { GraphQLJSONObject } from 'graphql-type-json';
24
+ import { OmniExternalRefEntity } from './base/omni-external-ref.entity.js';
25
+ import { assignOmniPublicDto } from './omni-dto.helpers.js';
26
+ import { OmniExternalRefInternalType } from './omni-external-ref-internal-type.enum.js';
27
+
28
+ @ObjectType()
29
+ @ModelObject()
30
+ export class OmniExternalRefType extends OmniExternalRefEntity {
31
+ constructor(data?: Partial<OmniExternalRefType>) {
32
+ super();
33
+ if (data) {
34
+ assignOmniPublicDto(this, data);
35
+ }
36
+ }
37
+
38
+ @ModelField({ gqlType: returnValue(UUIDScalar), isRequired: true })
39
+ @IsUUID()
40
+ guid!: string;
41
+
42
+ @ModelField({ gqlType: returnValue(Int) })
43
+ @IsInt()
44
+ revision!: number;
45
+
46
+ @ModelField({ gqlType: returnValue(OmniExternalRefInternalType) })
47
+ @IsEnum(OmniExternalRefInternalType)
48
+ internalType!: OmniExternalRefInternalType;
49
+
50
+ @ModelField({ gqlType: returnValue(UUIDScalar), isRequired: true })
51
+ @IsUUID()
52
+ internalId!: string;
53
+
54
+ @ModelField({ gqlType: returnValue(String) })
55
+ @IsString()
56
+ @MaxLength(128)
57
+ provider!: string;
58
+
59
+ @ModelField({
60
+ gqlType: returnValue(String),
61
+ gqlOptions: { nullable: true },
62
+ })
63
+ @IsOptional()
64
+ @IsString()
65
+ @MaxLength(128)
66
+ account?: string | null;
67
+
68
+ @ModelField({
69
+ gqlType: returnValue(String),
70
+ gqlOptions: { nullable: true },
71
+ })
72
+ @IsOptional()
73
+ @IsString()
74
+ @MaxLength(128)
75
+ container?: string | null;
76
+
77
+ @ModelField({ gqlType: returnValue(String) })
78
+ @IsString()
79
+ @MaxLength(255)
80
+ externalId!: string;
81
+
82
+ @ModelField({
83
+ gqlType: returnValue(GraphQLJSONObject),
84
+ gqlOptions: { nullable: true },
85
+ })
86
+ @IsOptional()
87
+ @IsObject()
88
+ payload?: Record<string, unknown> | null;
89
+
90
+ @ModelField({
91
+ gqlType: returnValue(String),
92
+ gqlOptions: { nullable: true },
93
+ })
94
+ @IsOptional()
95
+ @IsString()
96
+ @MaxLength(128)
97
+ payloadSchemaId?: string | null;
98
+
99
+ @ModelField({
100
+ gqlType: returnValue(Int),
101
+ gqlOptions: { nullable: true },
102
+ })
103
+ @IsOptional()
104
+ @IsInt()
105
+ payloadSchemaVersion?: number | null;
106
+ }
107
+
108
+ @InputType()
109
+ @ModelObject()
110
+ export class OmniExternalRefCreateInput extends OmitType(
111
+ OmniExternalRefType,
112
+ ['createdAt', 'updatedAt', 'revision'] as const,
113
+ InputType,
114
+ ) {}
115
+
116
+ @InputType()
117
+ @ModelObject({ copyFrom: OmniExternalRefType })
118
+ export class OmniExternalRefCondition extends PartialType(
119
+ OmniExternalRefCreateInput,
120
+ InputType,
121
+ ) {}
122
+
123
+ @InputType()
124
+ @ModelObject({ copyFrom: OmniExternalRefType })
125
+ export class OmniExternalRefUpdateInput extends PartialType(
126
+ OmniExternalRefCreateInput,
127
+ InputType,
128
+ ) {}