@nest-yalc-2/omnikernel-module 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +193 -0
  3. package/package.json +52 -0
  4. package/src/__tests__/omni-collection.entity.spec.ts +49 -0
  5. package/src/__tests__/omni-collection.service.spec.ts +83 -0
  6. package/src/__tests__/omni-document.entity.spec.ts +55 -0
  7. package/src/__tests__/omni-document.service.spec.ts +83 -0
  8. package/src/__tests__/omni-extension-projection-constraints.spec.ts +518 -0
  9. package/src/__tests__/omni-extension-projection.registration.spec.ts +946 -0
  10. package/src/__tests__/omni-extension-projection.service.spec.ts +806 -0
  11. package/src/__tests__/omni-external-ref.entity.spec.ts +36 -0
  12. package/src/__tests__/omni-external-ref.service.spec.ts +252 -0
  13. package/src/__tests__/omni-named.entity.spec.ts +33 -0
  14. package/src/__tests__/omni-record.entity.spec.ts +32 -0
  15. package/src/__tests__/omni-record.service.spec.ts +107 -0
  16. package/src/__tests__/omni-relation-semantics.spec.ts +102 -0
  17. package/src/__tests__/omni-relation.entity.spec.ts +38 -0
  18. package/src/__tests__/omni-scope-substrate.spec.ts +81 -0
  19. package/src/__tests__/omni-scoped.backend.spec.ts +115 -0
  20. package/src/__tests__/omni-scoped.service.spec.ts +354 -0
  21. package/src/__tests__/omnikernel.diagnostics.spec.ts +94 -0
  22. package/src/__tests__/omnikernel.module.spec.ts +40 -0
  23. package/src/__tests__/omnikernel.persistence.spec.ts +154 -0
  24. package/src/__tests__/omnikernel.public-api.spec.ts +238 -0
  25. package/src/__tests__/omnikernel.query.service.spec.ts +155 -0
  26. package/src/__tests__/tsconfig.json +6 -0
  27. package/src/base/omni-base.entity.d.ts +9 -0
  28. package/src/base/omni-base.entity.js +53 -0
  29. package/src/base/omni-base.entity.js.map +1 -0
  30. package/src/base/omni-base.entity.ts +41 -0
  31. package/src/base/omni-external-ref.entity.d.ts +13 -0
  32. package/src/base/omni-external-ref.entity.js +72 -0
  33. package/src/base/omni-external-ref.entity.js.map +1 -0
  34. package/src/base/omni-external-ref.entity.ts +53 -0
  35. package/src/base/omni-named.entity.d.ts +6 -0
  36. package/src/base/omni-named.entity.js +35 -0
  37. package/src/base/omni-named.entity.js.map +1 -0
  38. package/src/base/omni-named.entity.ts +16 -0
  39. package/src/base/omni-record.entity.d.ts +13 -0
  40. package/src/base/omni-record.entity.js +71 -0
  41. package/src/base/omni-record.entity.js.map +1 -0
  42. package/src/base/omni-record.entity.ts +51 -0
  43. package/src/base/omni-relation.entity.d.ts +15 -0
  44. package/src/base/omni-relation.entity.js +91 -0
  45. package/src/base/omni-relation.entity.js.map +1 -0
  46. package/src/base/omni-relation.entity.ts +72 -0
  47. package/src/index.d.ts +49 -0
  48. package/src/index.js +66 -0
  49. package/src/index.js.map +1 -0
  50. package/src/index.ts +49 -0
  51. package/src/omni-collection-kind.enum.d.ts +4 -0
  52. package/src/omni-collection-kind.enum.js +13 -0
  53. package/src/omni-collection-kind.enum.js.map +1 -0
  54. package/src/omni-collection-kind.enum.ts +10 -0
  55. package/src/omni-collection.backend.d.ts +2 -0
  56. package/src/omni-collection.backend.js +15 -0
  57. package/src/omni-collection.backend.js.map +1 -0
  58. package/src/omni-collection.backend.ts +16 -0
  59. package/src/omni-collection.dto.d.ts +32 -0
  60. package/src/omni-collection.dto.js +184 -0
  61. package/src/omni-collection.dto.js.map +1 -0
  62. package/src/omni-collection.dto.ts +170 -0
  63. package/src/omni-collection.entity.d.ts +7 -0
  64. package/src/omni-collection.entity.js +41 -0
  65. package/src/omni-collection.entity.js.map +1 -0
  66. package/src/omni-collection.entity.ts +21 -0
  67. package/src/omni-collection.service.d.ts +14 -0
  68. package/src/omni-collection.service.js +24 -0
  69. package/src/omni-collection.service.js.map +1 -0
  70. package/src/omni-collection.service.ts +75 -0
  71. package/src/omni-document-kind.enum.d.ts +6 -0
  72. package/src/omni-document-kind.enum.js +15 -0
  73. package/src/omni-document-kind.enum.js.map +1 -0
  74. package/src/omni-document-kind.enum.ts +12 -0
  75. package/src/omni-document.backend.d.ts +2 -0
  76. package/src/omni-document.backend.js +15 -0
  77. package/src/omni-document.backend.js.map +1 -0
  78. package/src/omni-document.backend.ts +16 -0
  79. package/src/omni-document.dto.d.ts +35 -0
  80. package/src/omni-document.dto.js +213 -0
  81. package/src/omni-document.dto.js.map +1 -0
  82. package/src/omni-document.dto.ts +198 -0
  83. package/src/omni-document.entity.d.ts +10 -0
  84. package/src/omni-document.entity.js +53 -0
  85. package/src/omni-document.entity.js.map +1 -0
  86. package/src/omni-document.entity.ts +30 -0
  87. package/src/omni-document.service.d.ts +14 -0
  88. package/src/omni-document.service.js +24 -0
  89. package/src/omni-document.service.js.map +1 -0
  90. package/src/omni-document.service.ts +75 -0
  91. package/src/omni-dto.helpers.d.ts +1 -0
  92. package/src/omni-dto.helpers.js +10 -0
  93. package/src/omni-dto.helpers.js.map +1 -0
  94. package/src/omni-dto.helpers.ts +21 -0
  95. package/src/omni-extension-projection.definition.d.ts +17 -0
  96. package/src/omni-extension-projection.definition.js +160 -0
  97. package/src/omni-extension-projection.definition.js.map +1 -0
  98. package/src/omni-extension-projection.definition.ts +294 -0
  99. package/src/omni-extension-projection.resource.d.ts +42 -0
  100. package/src/omni-extension-projection.resource.js +127 -0
  101. package/src/omni-extension-projection.resource.js.map +1 -0
  102. package/src/omni-extension-projection.resource.ts +274 -0
  103. package/src/omni-extension-projection.service.d.ts +33 -0
  104. package/src/omni-extension-projection.service.js +332 -0
  105. package/src/omni-extension-projection.service.js.map +1 -0
  106. package/src/omni-extension-projection.service.ts +452 -0
  107. package/src/omni-external-ref-binding.validator.d.ts +14 -0
  108. package/src/omni-external-ref-binding.validator.js +34 -0
  109. package/src/omni-external-ref-binding.validator.js.map +1 -0
  110. package/src/omni-external-ref-binding.validator.ts +53 -0
  111. package/src/omni-external-ref-internal-type.enum.d.ts +5 -0
  112. package/src/omni-external-ref-internal-type.enum.js +14 -0
  113. package/src/omni-external-ref-internal-type.enum.js.map +1 -0
  114. package/src/omni-external-ref-internal-type.enum.ts +11 -0
  115. package/src/omni-external-ref.backend.d.ts +2 -0
  116. package/src/omni-external-ref.backend.js +19 -0
  117. package/src/omni-external-ref.backend.js.map +1 -0
  118. package/src/omni-external-ref.backend.ts +25 -0
  119. package/src/omni-external-ref.dto.d.ts +26 -0
  120. package/src/omni-external-ref.dto.js +140 -0
  121. package/src/omni-external-ref.dto.js.map +1 -0
  122. package/src/omni-external-ref.dto.ts +128 -0
  123. package/src/omni-external-ref.service.d.ts +33 -0
  124. package/src/omni-external-ref.service.js +133 -0
  125. package/src/omni-external-ref.service.js.map +1 -0
  126. package/src/omni-external-ref.service.ts +255 -0
  127. package/src/omni-migration.d.ts +28 -0
  128. package/src/omni-migration.js +239 -0
  129. package/src/omni-migration.js.map +1 -0
  130. package/src/omni-migration.ts +365 -0
  131. package/src/omni-named.backend.d.ts +2 -0
  132. package/src/omni-named.backend.js +13 -0
  133. package/src/omni-named.backend.js.map +1 -0
  134. package/src/omni-named.backend.ts +11 -0
  135. package/src/omni-named.dto.d.ts +19 -0
  136. package/src/omni-named.dto.js +94 -0
  137. package/src/omni-named.dto.js.map +1 -0
  138. package/src/omni-named.dto.ts +86 -0
  139. package/src/omni-projection.catalog.d.ts +49 -0
  140. package/src/omni-projection.catalog.js +177 -0
  141. package/src/omni-projection.catalog.js.map +1 -0
  142. package/src/omni-projection.catalog.ts +345 -0
  143. package/src/omni-projection.lifecycle.d.ts +20 -0
  144. package/src/omni-projection.lifecycle.js +3 -0
  145. package/src/omni-projection.lifecycle.js.map +1 -0
  146. package/src/omni-projection.lifecycle.ts +53 -0
  147. package/src/omni-record-status.enum.d.ts +5 -0
  148. package/src/omni-record-status.enum.js +14 -0
  149. package/src/omni-record-status.enum.js.map +1 -0
  150. package/src/omni-record-status.enum.ts +11 -0
  151. package/src/omni-record.backend.d.ts +2 -0
  152. package/src/omni-record.backend.js +13 -0
  153. package/src/omni-record.backend.js.map +1 -0
  154. package/src/omni-record.backend.ts +19 -0
  155. package/src/omni-record.dto.d.ts +29 -0
  156. package/src/omni-record.dto.js +169 -0
  157. package/src/omni-record.dto.js.map +1 -0
  158. package/src/omni-record.dto.ts +157 -0
  159. package/src/omni-record.service.d.ts +18 -0
  160. package/src/omni-record.service.js +45 -0
  161. package/src/omni-record.service.js.map +1 -0
  162. package/src/omni-record.service.ts +113 -0
  163. package/src/omni-relation-kind.contract.d.ts +9 -0
  164. package/src/omni-relation-kind.contract.js +33 -0
  165. package/src/omni-relation-kind.contract.js.map +1 -0
  166. package/src/omni-relation-kind.contract.ts +49 -0
  167. package/src/omni-relation-kind.enum.d.ts +6 -0
  168. package/src/omni-relation-kind.enum.js +15 -0
  169. package/src/omni-relation-kind.enum.js.map +1 -0
  170. package/src/omni-relation-kind.enum.ts +12 -0
  171. package/src/omni-relation-projection.definition.d.ts +25 -0
  172. package/src/omni-relation-projection.definition.js +83 -0
  173. package/src/omni-relation-projection.definition.js.map +1 -0
  174. package/src/omni-relation-projection.definition.ts +166 -0
  175. package/src/omni-relation-projection.resource.d.ts +51 -0
  176. package/src/omni-relation-projection.resource.js +203 -0
  177. package/src/omni-relation-projection.resource.js.map +1 -0
  178. package/src/omni-relation-projection.resource.ts +360 -0
  179. package/src/omni-relation-projection.service.d.ts +47 -0
  180. package/src/omni-relation-projection.service.js +385 -0
  181. package/src/omni-relation-projection.service.js.map +1 -0
  182. package/src/omni-relation-projection.service.ts +610 -0
  183. package/src/omni-relation-semantics.d.ts +11 -0
  184. package/src/omni-relation-semantics.js +34 -0
  185. package/src/omni-relation-semantics.js.map +1 -0
  186. package/src/omni-relation-semantics.ts +52 -0
  187. package/src/omni-relation-status.enum.d.ts +5 -0
  188. package/src/omni-relation-status.enum.js +14 -0
  189. package/src/omni-relation-status.enum.js.map +1 -0
  190. package/src/omni-relation-status.enum.ts +11 -0
  191. package/src/omni-relation.backend.d.ts +2 -0
  192. package/src/omni-relation.backend.js +17 -0
  193. package/src/omni-relation.backend.js.map +1 -0
  194. package/src/omni-relation.backend.ts +21 -0
  195. package/src/omni-relation.dto.d.ts +28 -0
  196. package/src/omni-relation.dto.js +153 -0
  197. package/src/omni-relation.dto.js.map +1 -0
  198. package/src/omni-relation.dto.ts +142 -0
  199. package/src/omni-relation.service.d.ts +19 -0
  200. package/src/omni-relation.service.js +76 -0
  201. package/src/omni-relation.service.js.map +1 -0
  202. package/src/omni-relation.service.ts +159 -0
  203. package/src/omni-scope.d.ts +33 -0
  204. package/src/omni-scope.js +91 -0
  205. package/src/omni-scope.js.map +1 -0
  206. package/src/omni-scope.ts +161 -0
  207. package/src/omni-scoped.backend.d.ts +21 -0
  208. package/src/omni-scoped.backend.js +47 -0
  209. package/src/omni-scoped.backend.js.map +1 -0
  210. package/src/omni-scoped.backend.ts +110 -0
  211. package/src/omni-scoped.repository.d.ts +10 -0
  212. package/src/omni-scoped.repository.js +26 -0
  213. package/src/omni-scoped.repository.js.map +1 -0
  214. package/src/omni-scoped.repository.ts +34 -0
  215. package/src/omni-scoped.service.d.ts +36 -0
  216. package/src/omni-scoped.service.js +171 -0
  217. package/src/omni-scoped.service.js.map +1 -0
  218. package/src/omni-scoped.service.ts +338 -0
  219. package/src/omnikernel.diagnostics.d.ts +16 -0
  220. package/src/omnikernel.diagnostics.js +50 -0
  221. package/src/omnikernel.diagnostics.js.map +1 -0
  222. package/src/omnikernel.diagnostics.ts +83 -0
  223. package/src/omnikernel.module.d.ts +5 -0
  224. package/src/omnikernel.module.js +87 -0
  225. package/src/omnikernel.module.js.map +1 -0
  226. package/src/omnikernel.module.ts +97 -0
  227. package/src/omnikernel.query.service.d.ts +17 -0
  228. package/src/omnikernel.query.service.js +85 -0
  229. package/src/omnikernel.query.service.js.map +1 -0
  230. package/src/omnikernel.query.service.ts +108 -0
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.OmniDocumentEntity = void 0;
13
+ const graphql_1 = require("@nestjs/graphql");
14
+ const typeorm_1 = require("typeorm");
15
+ const omni_record_entity_js_1 = require("./base/omni-record.entity.js");
16
+ const omni_document_kind_enum_js_1 = require("./omni-document-kind.enum.js");
17
+ let OmniDocumentEntity = class OmniDocumentEntity extends omni_record_entity_js_1.OmniRecordEntity {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.kind = omni_document_kind_enum_js_1.OmniDocumentKind.Document;
21
+ }
22
+ };
23
+ exports.OmniDocumentEntity = OmniDocumentEntity;
24
+ __decorate([
25
+ (0, typeorm_1.Column)({
26
+ type: 'varchar',
27
+ default: omni_document_kind_enum_js_1.OmniDocumentKind.Document,
28
+ enum: Object.values(omni_document_kind_enum_js_1.OmniDocumentKind),
29
+ length: 32,
30
+ }),
31
+ __metadata("design:type", String)
32
+ ], OmniDocumentEntity.prototype, "documentKind", void 0);
33
+ __decorate([
34
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
35
+ __metadata("design:type", Object)
36
+ ], OmniDocumentEntity.prototype, "content", void 0);
37
+ __decorate([
38
+ (0, typeorm_1.Column)({ type: 'varchar', nullable: true, length: 128 }),
39
+ __metadata("design:type", Object)
40
+ ], OmniDocumentEntity.prototype, "contentMimeType", void 0);
41
+ __decorate([
42
+ (0, typeorm_1.Column)({ type: 'varchar', nullable: true, length: 2048 }),
43
+ __metadata("design:type", Object)
44
+ ], OmniDocumentEntity.prototype, "sourceUrl", void 0);
45
+ __decorate([
46
+ (0, typeorm_1.Column)({ type: Date, nullable: true }),
47
+ __metadata("design:type", Object)
48
+ ], OmniDocumentEntity.prototype, "publishedAt", void 0);
49
+ exports.OmniDocumentEntity = OmniDocumentEntity = __decorate([
50
+ (0, typeorm_1.ChildEntity)(omni_document_kind_enum_js_1.OmniDocumentKind.Document),
51
+ (0, graphql_1.ObjectType)({ isAbstract: true })
52
+ ], OmniDocumentEntity);
53
+ //# sourceMappingURL=omni-document.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omni-document.entity.js","sourceRoot":"","sources":["omni-document.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA6C;AAC7C,qCAA8C;AAC9C,wEAAgE;AAChE,6EAAgE;AAIzD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,wCAAgB;IAAjD;;QACL,SAAI,GAAqB,6CAAgB,CAAC,QAAQ,CAAC;IAqBrD,CAAC;CAAA,CAAA;AAtBY,gDAAkB;AAS7B;IANC,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,6CAAgB,CAAC,QAAQ;QAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,6CAAgB,CAAC;QACrC,MAAM,EAAE,EAAE;KACX,CAAC;;wDAC8B;AAGhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACjB;AAGxB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;2DACzB;AAGhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;qDAChC;AAG1B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACb;6BArBf,kBAAkB;IAF9B,IAAA,qBAAW,EAAC,6CAAgB,CAAC,QAAQ,CAAC;IACtC,IAAA,oBAAU,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;GACpB,kBAAkB,CAsB9B"}
@@ -0,0 +1,30 @@
1
+ import { ObjectType } from '@nestjs/graphql';
2
+ import { ChildEntity, Column } from 'typeorm';
3
+ import { OmniRecordEntity } from './base/omni-record.entity.js';
4
+ import { OmniDocumentKind } from './omni-document-kind.enum.js';
5
+
6
+ @ChildEntity(OmniDocumentKind.Document)
7
+ @ObjectType({ isAbstract: true })
8
+ export class OmniDocumentEntity extends OmniRecordEntity {
9
+ kind: OmniDocumentKind = OmniDocumentKind.Document;
10
+
11
+ @Column({
12
+ type: 'varchar',
13
+ default: OmniDocumentKind.Document,
14
+ enum: Object.values(OmniDocumentKind),
15
+ length: 32,
16
+ })
17
+ documentKind!: OmniDocumentKind;
18
+
19
+ @Column({ type: 'text', nullable: true })
20
+ content?: string | null;
21
+
22
+ @Column({ type: 'varchar', nullable: true, length: 128 })
23
+ contentMimeType?: string | null;
24
+
25
+ @Column({ type: 'varchar', nullable: true, length: 2048 })
26
+ sourceUrl?: string | null;
27
+
28
+ @Column({ type: Date, nullable: true })
29
+ publishedAt?: Date | null;
30
+ }
@@ -0,0 +1,14 @@
1
+ import type { CrudGenFindManyOptions } from '@nest-yalc-2/crud-gen/api-graphql/crud-gen-gql.interface.js';
2
+ import type { GenericTypeORMRepository } from '@nest-yalc-2/crud-gen/typeorm/generic.repository.js';
3
+ import type { DeepPartial, FindOptionsWhere } from 'typeorm';
4
+ import { OmniDocumentEntity } from './omni-document.entity.js';
5
+ import type { OmniDeletePolicy, OmniScope } from './omni-scope.js';
6
+ import { OmniScopedService } from './omni-scoped.service.js';
7
+ export declare class OmniDocumentService extends OmniScopedService<OmniDocumentEntity> {
8
+ constructor(repository: GenericTypeORMRepository<OmniDocumentEntity>, scopeOrRepositoryWrite?: OmniScope | GenericTypeORMRepository<OmniDocumentEntity>, deletion?: OmniDeletePolicy);
9
+ protected normalizeDocumentInput(input: DeepPartial<OmniDocumentEntity>): DeepPartial<OmniDocumentEntity>;
10
+ createEntity(input: DeepPartial<OmniDocumentEntity>, findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>, returnEntity?: true): Promise<OmniDocumentEntity>;
11
+ createEntity(input: DeepPartial<OmniDocumentEntity>, findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>, returnEntity?: boolean): Promise<OmniDocumentEntity | boolean>;
12
+ updateEntity(conditions: FindOptionsWhere<OmniDocumentEntity>, input: DeepPartial<OmniDocumentEntity>, findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>, returnEntity?: true): Promise<OmniDocumentEntity>;
13
+ updateEntity(conditions: FindOptionsWhere<OmniDocumentEntity>, input: DeepPartial<OmniDocumentEntity>, findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>, returnEntity?: boolean): Promise<OmniDocumentEntity | boolean>;
14
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OmniDocumentService = void 0;
4
+ const omni_document_kind_enum_js_1 = require("./omni-document-kind.enum.js");
5
+ const omni_scoped_service_js_1 = require("./omni-scoped.service.js");
6
+ class OmniDocumentService extends omni_scoped_service_js_1.OmniScopedService {
7
+ constructor(repository, scopeOrRepositoryWrite, deletion = 'tombstone') {
8
+ super(repository, scopeOrRepositoryWrite, deletion);
9
+ }
10
+ normalizeDocumentInput(input) {
11
+ return {
12
+ ...input,
13
+ kind: omni_document_kind_enum_js_1.OmniDocumentKind.Document,
14
+ };
15
+ }
16
+ async createEntity(input, findOptions, returnEntity = true) {
17
+ return super.createEntity(this.normalizeDocumentInput(input), findOptions, returnEntity);
18
+ }
19
+ async updateEntity(conditions, input, findOptions, returnEntity = true) {
20
+ return super.updateEntity(conditions, this.normalizeDocumentInput(input), findOptions, returnEntity);
21
+ }
22
+ }
23
+ exports.OmniDocumentService = OmniDocumentService;
24
+ //# sourceMappingURL=omni-document.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omni-document.service.js","sourceRoot":"","sources":["omni-document.service.ts"],"names":[],"mappings":";;;AAGA,6EAAgE;AAGhE,qEAA6D;AAE7D,MAAa,mBAAoB,SAAQ,0CAAqC;IAC5E,YACE,UAAwD,EACxD,sBAC0D,EAC1D,WAA6B,WAAW;QAExC,KAAK,CAAC,UAAU,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAES,sBAAsB,CAC9B,KAAsC;QAEtC,OAAO;YACL,GAAG,KAAK;YACR,IAAI,EAAE,6CAAgB,CAAC,QAAQ;SAChC,CAAC;IACJ,CAAC;IAYQ,KAAK,CAAC,YAAY,CACzB,KAAsC,EACtC,WAAwD,EACxD,YAAY,GAAG,IAAI;QAEnB,OAAO,KAAK,CAAC,YAAY,CACvB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAClC,WAAW,EACX,YAAY,CACb,CAAC;IACJ,CAAC;IAcQ,KAAK,CAAC,YAAY,CACzB,UAAgD,EAChD,KAAsC,EACtC,WAAwD,EACxD,YAAY,GAAG,IAAI;QAEnB,OAAO,KAAK,CAAC,YAAY,CACvB,UAAU,EACV,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAClC,WAAW,EACX,YAAY,CACb,CAAC;IACJ,CAAC;CACF;AAlED,kDAkEC"}
@@ -0,0 +1,75 @@
1
+ import type { CrudGenFindManyOptions } from '@nest-yalc-2/crud-gen/api-graphql/crud-gen-gql.interface.js';
2
+ import type { GenericTypeORMRepository } from '@nest-yalc-2/crud-gen/typeorm/generic.repository.js';
3
+ import type { DeepPartial, FindOptionsWhere } from 'typeorm';
4
+ import { OmniDocumentKind } from './omni-document-kind.enum.js';
5
+ import { OmniDocumentEntity } from './omni-document.entity.js';
6
+ import type { OmniDeletePolicy, OmniScope } from './omni-scope.js';
7
+ import { OmniScopedService } from './omni-scoped.service.js';
8
+
9
+ export class OmniDocumentService extends OmniScopedService<OmniDocumentEntity> {
10
+ constructor(
11
+ repository: GenericTypeORMRepository<OmniDocumentEntity>,
12
+ scopeOrRepositoryWrite?:
13
+ OmniScope | GenericTypeORMRepository<OmniDocumentEntity>,
14
+ deletion: OmniDeletePolicy = 'tombstone',
15
+ ) {
16
+ super(repository, scopeOrRepositoryWrite, deletion);
17
+ }
18
+
19
+ protected normalizeDocumentInput(
20
+ input: DeepPartial<OmniDocumentEntity>,
21
+ ): DeepPartial<OmniDocumentEntity> {
22
+ return {
23
+ ...input,
24
+ kind: OmniDocumentKind.Document,
25
+ };
26
+ }
27
+
28
+ override async createEntity(
29
+ input: DeepPartial<OmniDocumentEntity>,
30
+ findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>,
31
+ returnEntity?: true,
32
+ ): Promise<OmniDocumentEntity>;
33
+ override async createEntity(
34
+ input: DeepPartial<OmniDocumentEntity>,
35
+ findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>,
36
+ returnEntity?: boolean,
37
+ ): Promise<OmniDocumentEntity | boolean>;
38
+ override async createEntity(
39
+ input: DeepPartial<OmniDocumentEntity>,
40
+ findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>,
41
+ returnEntity = true,
42
+ ): Promise<OmniDocumentEntity | boolean> {
43
+ return super.createEntity(
44
+ this.normalizeDocumentInput(input),
45
+ findOptions,
46
+ returnEntity,
47
+ );
48
+ }
49
+
50
+ override async updateEntity(
51
+ conditions: FindOptionsWhere<OmniDocumentEntity>,
52
+ input: DeepPartial<OmniDocumentEntity>,
53
+ findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>,
54
+ returnEntity?: true,
55
+ ): Promise<OmniDocumentEntity>;
56
+ override async updateEntity(
57
+ conditions: FindOptionsWhere<OmniDocumentEntity>,
58
+ input: DeepPartial<OmniDocumentEntity>,
59
+ findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>,
60
+ returnEntity?: boolean,
61
+ ): Promise<OmniDocumentEntity | boolean>;
62
+ override async updateEntity(
63
+ conditions: FindOptionsWhere<OmniDocumentEntity>,
64
+ input: DeepPartial<OmniDocumentEntity>,
65
+ findOptions?: CrudGenFindManyOptions<OmniDocumentEntity>,
66
+ returnEntity = true,
67
+ ): Promise<OmniDocumentEntity | boolean> {
68
+ return super.updateEntity(
69
+ conditions,
70
+ this.normalizeDocumentInput(input),
71
+ findOptions,
72
+ returnEntity,
73
+ );
74
+ }
75
+ }
@@ -0,0 +1 @@
1
+ export declare function assignOmniPublicDto<T extends object>(target: T, data: object): void;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assignOmniPublicDto = assignOmniPublicDto;
4
+ function assignOmniPublicDto(target, data) {
5
+ const { scopeId: _scopeId, deletedAt: _deletedAt, ...publicData } = data;
6
+ Object.assign(target, publicData);
7
+ delete target.scopeId;
8
+ delete target.deletedAt;
9
+ }
10
+ //# sourceMappingURL=omni-dto.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omni-dto.helpers.js","sourceRoot":"","sources":["omni-dto.helpers.ts"],"names":[],"mappings":";;AAKA,kDAeC;AAfD,SAAgB,mBAAmB,CACjC,MAAS,EACT,IAAY;IAEZ,MAAM,EACJ,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,UAAU,EACrB,GAAG,UAAU,EACd,GAAG,IAGH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,OAAQ,MAAgC,CAAC,OAAO,CAAC;IACjD,OAAQ,MAAkC,CAAC,SAAS,CAAC;AACvD,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Generated REST mappers instantiate DTOs directly. Keep server-owned scope
3
+ * and lifecycle fields out of that copy so REST and GraphQL expose the same
4
+ * public contract.
5
+ */
6
+ export function assignOmniPublicDto<T extends object>(
7
+ target: T,
8
+ data: object,
9
+ ): void {
10
+ const {
11
+ scopeId: _scopeId,
12
+ deletedAt: _deletedAt,
13
+ ...publicData
14
+ } = data as {
15
+ scopeId?: unknown;
16
+ deletedAt?: unknown;
17
+ };
18
+ Object.assign(target, publicData);
19
+ delete (target as { scopeId?: unknown }).scopeId;
20
+ delete (target as { deletedAt?: unknown }).deletedAt;
21
+ }
@@ -0,0 +1,17 @@
1
+ import { type ProjectionDialect, type ProjectionResourceDefinition } from '@nest-yalc-2/crud-gen';
2
+ import { Table, type EntityTarget, type ObjectLiteral } from 'typeorm';
3
+ import { OmniRecordStatus } from './omni-record-status.enum.js';
4
+ export interface OmniExtensionProjectionDefinition extends ProjectionResourceDefinition {
5
+ owner: {
6
+ kind: string;
7
+ title: string;
8
+ status: OmniRecordStatus;
9
+ schema: {
10
+ id: string;
11
+ version: number;
12
+ };
13
+ };
14
+ }
15
+ export declare function defineOmniExtensionProjection<TDefinition extends OmniExtensionProjectionDefinition>(definition: TDefinition): Readonly<TDefinition>;
16
+ export declare function createOmniExtensionProjectionEntity<Extension extends ObjectLiteral>(definition: OmniExtensionProjectionDefinition, dialect: ProjectionDialect): EntityTarget<Extension>;
17
+ export declare function createOmniExtensionProjectionTable(definition: OmniExtensionProjectionDefinition, dialect: ProjectionDialect): Table;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineOmniExtensionProjection = defineOmniExtensionProjection;
4
+ exports.createOmniExtensionProjectionEntity = createOmniExtensionProjectionEntity;
5
+ exports.createOmniExtensionProjectionTable = createOmniExtensionProjectionTable;
6
+ const crud_gen_1 = require("@nest-yalc-2/crud-gen");
7
+ const typeorm_1 = require("typeorm");
8
+ const omni_record_entity_js_1 = require("./base/omni-record.entity.js");
9
+ const omni_record_status_enum_js_1 = require("./omni-record-status.enum.js");
10
+ function assertNonEmptyString(value, label, max) {
11
+ if (typeof value !== 'string' ||
12
+ value.trim().length === 0 ||
13
+ value.length > max) {
14
+ throw new TypeError(`${label} must be a non-empty string up to ${max} characters.`);
15
+ }
16
+ }
17
+ function defineOmniExtensionProjection(definition) {
18
+ assertNonEmptyString(definition.owner?.kind, 'Omni extension owner kind', 64);
19
+ assertNonEmptyString(definition.owner?.title, 'Omni extension owner title', 255);
20
+ assertNonEmptyString(definition.owner?.schema?.id, 'Omni extension owner schema id', 128);
21
+ if (!Number.isInteger(definition.owner?.schema?.version) ||
22
+ definition.owner.schema.version < 1 ||
23
+ definition.owner.schema.version > 2_147_483_647) {
24
+ throw new TypeError('Omni extension owner schema version must be a positive signed 32-bit integer.');
25
+ }
26
+ if (!Object.values(omni_record_status_enum_js_1.OmniRecordStatus).includes(definition.owner.status)) {
27
+ throw new TypeError('Omni extension owner status must be an Omni record status.');
28
+ }
29
+ return (0, crud_gen_1.defineProjectionResource)(definition);
30
+ }
31
+ function extensionSchema(definition, dialect) {
32
+ const projectionSchema = (0, crud_gen_1.createProjectionSchemaOptions)(definition, dialect);
33
+ const { [definition.revision.column]: _ownerRevision, ...columns } = projectionSchema.columns;
34
+ const scopeColumn = definition.scope.column;
35
+ const identityColumn = definition.identity.column;
36
+ columns[scopeColumn] = {
37
+ ...columns[scopeColumn],
38
+ primary: true,
39
+ nullable: false,
40
+ };
41
+ columns[identityColumn] = {
42
+ ...columns[identityColumn],
43
+ primary: true,
44
+ nullable: false,
45
+ length: 36,
46
+ };
47
+ const references = definition.references ?? [];
48
+ const uniqueConstraints = definition.uniqueConstraints ?? [];
49
+ return {
50
+ columns,
51
+ indices: [
52
+ ...projectionSchema.indices,
53
+ ...references.map((reference) => ({
54
+ name: (0, crud_gen_1.getProjectionReferenceIndexName)(reference),
55
+ columns: (0, crud_gen_1.getProjectionReferenceColumnNames)(definition, reference),
56
+ unique: false,
57
+ })),
58
+ ...uniqueConstraints.map((constraint) => ({
59
+ name: constraint.name,
60
+ columns: (0, crud_gen_1.getProjectionUniqueConstraintColumnNames)(definition, constraint),
61
+ unique: true,
62
+ where: (0, crud_gen_1.compileProjectionUniqueConstraintPredicate)(definition, constraint, dialect.name),
63
+ })),
64
+ ],
65
+ foreignKeys: references.map((reference) => ({
66
+ name: reference.name,
67
+ columnNames: (0, crud_gen_1.getProjectionReferenceColumnNames)(definition, reference),
68
+ referencedTableName: reference.target.tableName,
69
+ referencedColumnNames: (0, crud_gen_1.getProjectionReferenceTargetColumnNames)(reference),
70
+ onDelete: reference.onDelete,
71
+ })),
72
+ };
73
+ }
74
+ function migrationColumnType(type) {
75
+ if (type === String)
76
+ return 'varchar';
77
+ if (type === Number)
78
+ return 'integer';
79
+ if (type === Boolean)
80
+ return 'boolean';
81
+ if (type === 'simple-json')
82
+ return 'text';
83
+ if (typeof type === 'string')
84
+ return type;
85
+ throw new TypeError('Omni extension projection column type is unsupported.');
86
+ }
87
+ function createOmniExtensionProjectionEntity(definition, dialect) {
88
+ const { columns, indices, foreignKeys } = extensionSchema(definition, dialect);
89
+ const scopeColumn = definition.scope.column;
90
+ const identityColumn = definition.identity.column;
91
+ class OmniExtensionProjectionEntity {
92
+ }
93
+ (0, typeorm_1.Entity)(definition.tableName)(OmniExtensionProjectionEntity);
94
+ for (const [columnName, declared] of Object.entries(columns)) {
95
+ const options = { ...declared };
96
+ const primary = options.primary === true;
97
+ delete options.primary;
98
+ if (primary) {
99
+ (0, typeorm_1.PrimaryColumn)(options.type, options)(OmniExtensionProjectionEntity.prototype, columnName);
100
+ }
101
+ else if (typeof options.type === 'function') {
102
+ (0, typeorm_1.Column)(options)(OmniExtensionProjectionEntity.prototype, columnName);
103
+ }
104
+ else {
105
+ (0, typeorm_1.Column)(options.type, options)(OmniExtensionProjectionEntity.prototype, columnName);
106
+ }
107
+ }
108
+ for (const index of indices) {
109
+ if (!index.name || !Array.isArray(index.columns)) {
110
+ throw new TypeError('Omni extension projection indexes require a name and column list.');
111
+ }
112
+ (0, typeorm_1.Index)(index.name, index.columns, {
113
+ unique: index.unique,
114
+ ...(index.where ? { where: index.where } : {}),
115
+ })(OmniExtensionProjectionEntity);
116
+ }
117
+ for (const foreignKey of foreignKeys) {
118
+ (0, typeorm_1.ForeignKey)(foreignKey.referencedTableName, foreignKey.columnNames, foreignKey.referencedColumnNames, { name: foreignKey.name, onDelete: foreignKey.onDelete })(OmniExtensionProjectionEntity);
119
+ }
120
+ (0, typeorm_1.ForeignKey)(() => omni_record_entity_js_1.OmniRecordEntity, [scopeColumn, identityColumn], ['scopeId', 'guid'], { onDelete: 'CASCADE' })(OmniExtensionProjectionEntity);
121
+ return OmniExtensionProjectionEntity;
122
+ }
123
+ function createOmniExtensionProjectionTable(definition, dialect) {
124
+ const { columns, indices, foreignKeys } = extensionSchema(definition, dialect);
125
+ const scopeColumn = definition.scope.column;
126
+ const identityColumn = definition.identity.column;
127
+ return new typeorm_1.Table({
128
+ name: definition.tableName,
129
+ columns: Object.entries(columns).map(([name, options]) => ({
130
+ name,
131
+ type: migrationColumnType(options.type),
132
+ isPrimary: options.primary === true,
133
+ isNullable: options.nullable === true,
134
+ ...(options.length !== undefined
135
+ ? { length: String(options.length) }
136
+ : {}),
137
+ })),
138
+ indices: indices.map((index) => {
139
+ if (!index.name || !Array.isArray(index.columns)) {
140
+ throw new TypeError('Omni extension projection indexes require a name and column list.');
141
+ }
142
+ return {
143
+ name: index.name,
144
+ columnNames: index.columns,
145
+ isUnique: index.unique === true,
146
+ ...(index.where ? { where: index.where } : {}),
147
+ };
148
+ }),
149
+ foreignKeys: [
150
+ {
151
+ columnNames: [scopeColumn, identityColumn],
152
+ referencedTableName: 'omni-record',
153
+ referencedColumnNames: ['scopeId', 'guid'],
154
+ onDelete: 'CASCADE',
155
+ },
156
+ ...foreignKeys,
157
+ ],
158
+ });
159
+ }
160
+ //# sourceMappingURL=omni-extension-projection.definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omni-extension-projection.definition.js","sourceRoot":"","sources":["omni-extension-projection.definition.ts"],"names":[],"mappings":"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"}