@quadnix/octo 0.0.17 → 0.0.18

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 (187) hide show
  1. package/README.md +4 -2
  2. package/dist/app.type.d.ts +14 -16
  3. package/dist/app.type.js.map +1 -1
  4. package/dist/decorators/action.decorator.js +29 -15
  5. package/dist/decorators/action.decorator.js.map +1 -1
  6. package/dist/decorators/anchor.decorator.js +5 -1
  7. package/dist/decorators/anchor.decorator.js.map +1 -1
  8. package/dist/decorators/container.d.ts +1 -1
  9. package/dist/decorators/enable-hook.decorator.d.ts +3 -0
  10. package/dist/decorators/enable-hook.decorator.js +13 -0
  11. package/dist/decorators/enable-hook.decorator.js.map +1 -0
  12. package/dist/decorators/factory.decorator.d.ts +1 -1
  13. package/dist/decorators/model.decorator.js +5 -1
  14. package/dist/decorators/model.decorator.js.map +1 -1
  15. package/dist/decorators/module.decorator.d.ts +36 -1
  16. package/dist/decorators/module.decorator.js +15 -5
  17. package/dist/decorators/module.decorator.js.map +1 -1
  18. package/dist/decorators/overlay.decorator.js +5 -1
  19. package/dist/decorators/overlay.decorator.js.map +1 -1
  20. package/dist/decorators/resource.decorator.js +5 -1
  21. package/dist/decorators/resource.decorator.js.map +1 -1
  22. package/dist/decorators/test-container.d.ts +13 -2
  23. package/dist/decorators/test-container.js +18 -3
  24. package/dist/decorators/test-container.js.map +1 -1
  25. package/dist/functions/dependency/{dependency.model.d.ts → dependency.d.ts} +2 -3
  26. package/dist/functions/dependency/{dependency.model.js → dependency.js} +1 -17
  27. package/dist/functions/dependency/dependency.js.map +1 -0
  28. package/dist/functions/diff/diff-metadata.d.ts +20 -0
  29. package/dist/functions/diff/{diff-metadata.model.js → diff-metadata.js} +2 -6
  30. package/dist/functions/diff/diff-metadata.js.map +1 -0
  31. package/dist/functions/diff/{diff.model.d.ts → diff.d.ts} +2 -2
  32. package/dist/functions/diff/{diff.model.js → diff.js} +16 -2
  33. package/dist/functions/diff/diff.js.map +1 -0
  34. package/dist/functions/diff/diff.utility.d.ts +3 -2
  35. package/dist/functions/diff/diff.utility.js +30 -5
  36. package/dist/functions/diff/diff.utility.js.map +1 -1
  37. package/dist/functions/hook/commit.hook.d.ts +11 -0
  38. package/dist/functions/hook/commit.hook.js +39 -0
  39. package/dist/functions/hook/commit.hook.js.map +1 -0
  40. package/dist/functions/hook/hook.interface.d.ts +8 -0
  41. package/dist/functions/hook/hook.interface.js +2 -0
  42. package/dist/functions/hook/hook.interface.js.map +1 -0
  43. package/dist/functions/hook/model-action.hook.d.ts +12 -0
  44. package/dist/functions/hook/model-action.hook.js +70 -0
  45. package/dist/functions/hook/model-action.hook.js.map +1 -0
  46. package/dist/functions/hook/resource-action.hook.d.ts +12 -0
  47. package/dist/functions/hook/resource-action.hook.js +49 -0
  48. package/dist/functions/hook/resource-action.hook.js.map +1 -0
  49. package/dist/index.d.ts +29 -28
  50. package/dist/index.js +9 -8
  51. package/dist/index.js.map +1 -1
  52. package/dist/main.d.ts +31 -0
  53. package/dist/main.js +111 -0
  54. package/dist/main.js.map +1 -0
  55. package/dist/models/app/app.interface.d.ts +1 -1
  56. package/dist/models/app/app.model.d.ts +5 -5
  57. package/dist/models/app/app.model.js +4 -11
  58. package/dist/models/app/app.model.js.map +1 -1
  59. package/dist/models/deployment/deployment.interface.d.ts +1 -1
  60. package/dist/models/deployment/deployment.model.d.ts +5 -3
  61. package/dist/models/deployment/deployment.model.js +5 -2
  62. package/dist/models/deployment/deployment.model.js.map +1 -1
  63. package/dist/models/environment/environment.interface.d.ts +1 -1
  64. package/dist/models/environment/environment.model.d.ts +5 -5
  65. package/dist/models/environment/environment.model.js +3 -3
  66. package/dist/models/environment/environment.model.js.map +1 -1
  67. package/dist/models/execution/execution.interface.d.ts +2 -2
  68. package/dist/models/execution/execution.model.d.ts +8 -9
  69. package/dist/models/execution/execution.model.js +53 -21
  70. package/dist/models/execution/execution.model.js.map +1 -1
  71. package/dist/models/image/image.interface.d.ts +1 -1
  72. package/dist/models/image/image.model.d.ts +5 -3
  73. package/dist/models/image/image.model.js +5 -6
  74. package/dist/models/image/image.model.js.map +1 -1
  75. package/dist/models/model-action.interface.d.ts +9 -0
  76. package/dist/models/model-action.interface.js +2 -0
  77. package/dist/models/model-action.interface.js.map +1 -0
  78. package/dist/models/model.abstract.d.ts +40 -14
  79. package/dist/models/model.abstract.js +167 -57
  80. package/dist/models/model.abstract.js.map +1 -1
  81. package/dist/models/model.interface.d.ts +4 -3
  82. package/dist/models/pipeline/pipeline.interface.d.ts +1 -1
  83. package/dist/models/pipeline/pipeline.model.d.ts +5 -5
  84. package/dist/models/pipeline/pipeline.model.js +4 -4
  85. package/dist/models/pipeline/pipeline.model.js.map +1 -1
  86. package/dist/models/region/region.interface.d.ts +1 -1
  87. package/dist/models/region/region.model.d.ts +7 -3
  88. package/dist/models/region/region.model.js +14 -1
  89. package/dist/models/region/region.model.js.map +1 -1
  90. package/dist/models/server/server.interface.d.ts +1 -3
  91. package/dist/models/server/server.model.d.ts +6 -6
  92. package/dist/models/server/server.model.js +7 -10
  93. package/dist/models/server/server.model.js.map +1 -1
  94. package/dist/models/service/service.interface.d.ts +1 -1
  95. package/dist/models/service/service.model.d.ts +4 -2
  96. package/dist/models/service/service.model.js +4 -1
  97. package/dist/models/service/service.model.js.map +1 -1
  98. package/dist/models/subnet/subnet.interface.d.ts +8 -0
  99. package/dist/models/subnet/subnet.interface.js +2 -0
  100. package/dist/models/subnet/subnet.interface.js.map +1 -0
  101. package/dist/models/subnet/subnet.model.d.ts +25 -0
  102. package/dist/models/subnet/subnet.model.js +98 -0
  103. package/dist/models/subnet/subnet.model.js.map +1 -0
  104. package/dist/modules/module.container.d.ts +25 -0
  105. package/dist/modules/module.container.js +122 -0
  106. package/dist/modules/module.container.js.map +1 -0
  107. package/dist/modules/module.interface.d.ts +3 -0
  108. package/dist/modules/module.interface.js.map +1 -0
  109. package/dist/modules/test-module.container.d.ts +28 -0
  110. package/dist/modules/test-module.container.js +67 -0
  111. package/dist/modules/test-module.container.js.map +1 -0
  112. package/dist/overlays/anchor.abstract.d.ts +4 -4
  113. package/dist/overlays/anchor.abstract.js +8 -11
  114. package/dist/overlays/anchor.abstract.js.map +1 -1
  115. package/dist/overlays/anchor.interface.d.ts +5 -2
  116. package/dist/overlays/overlay-data.repository.d.ts +7 -7
  117. package/dist/overlays/overlay-data.repository.js +19 -7
  118. package/dist/overlays/overlay-data.repository.js.map +1 -1
  119. package/dist/overlays/overlay.abstract.d.ts +15 -8
  120. package/dist/overlays/overlay.abstract.js +78 -12
  121. package/dist/overlays/overlay.abstract.js.map +1 -1
  122. package/dist/overlays/overlay.interface.d.ts +1 -1
  123. package/dist/overlays/overlay.service.d.ts +10 -6
  124. package/dist/overlays/overlay.service.js +19 -13
  125. package/dist/overlays/overlay.service.js.map +1 -1
  126. package/dist/resources/resource-action.interface.d.ts +2 -1
  127. package/dist/resources/resource-data.repository.d.ts +8 -8
  128. package/dist/resources/resource-data.repository.js +52 -34
  129. package/dist/resources/resource-data.repository.js.map +1 -1
  130. package/dist/resources/resource.abstract.d.ts +15 -12
  131. package/dist/resources/resource.abstract.js +34 -34
  132. package/dist/resources/resource.abstract.js.map +1 -1
  133. package/dist/resources/shared-resource.abstract.d.ts +1 -1
  134. package/dist/resources/shared-resource.abstract.js.map +1 -1
  135. package/dist/services/capture/capture.service.d.ts +13 -0
  136. package/dist/services/capture/capture.service.js +30 -0
  137. package/dist/services/capture/capture.service.js.map +1 -0
  138. package/dist/services/input/input.service.d.ts +13 -0
  139. package/dist/services/input/input.service.js +45 -0
  140. package/dist/services/input/input.service.js.map +1 -0
  141. package/dist/services/serialization/model/model-serialization.service.d.ts +9 -5
  142. package/dist/services/serialization/model/model-serialization.service.js +65 -44
  143. package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
  144. package/dist/services/serialization/resource/resource-serialization.service.d.ts +8 -3
  145. package/dist/services/serialization/resource/resource-serialization.service.js +29 -11
  146. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  147. package/dist/services/state-management/local.state-provider.d.ts +1 -1
  148. package/dist/services/state-management/local.state-provider.js +9 -1
  149. package/dist/services/state-management/local.state-provider.js.map +1 -1
  150. package/dist/services/state-management/state-management.service.d.ts +16 -1
  151. package/dist/services/state-management/state-management.service.js +52 -1
  152. package/dist/services/state-management/state-management.service.js.map +1 -1
  153. package/dist/services/state-management/test.state-provider.d.ts +7 -0
  154. package/dist/services/state-management/test.state-provider.js +13 -0
  155. package/dist/services/state-management/test.state-provider.js.map +1 -0
  156. package/dist/services/transaction/transaction.service.d.ts +18 -11
  157. package/dist/services/transaction/transaction.service.js +57 -40
  158. package/dist/services/transaction/transaction.service.js.map +1 -1
  159. package/dist/utilities/array/array.utility.d.ts +3 -0
  160. package/dist/utilities/array/array.utility.js +24 -0
  161. package/dist/utilities/array/array.utility.js.map +1 -0
  162. package/dist/utilities/cidr/cidr.utility.d.ts +7 -0
  163. package/dist/utilities/cidr/cidr.utility.js +48 -0
  164. package/dist/utilities/cidr/cidr.utility.js.map +1 -0
  165. package/dist/utilities/object/object.utility.d.ts +3 -0
  166. package/dist/utilities/object/object.utility.js +9 -0
  167. package/dist/utilities/object/object.utility.js.map +1 -0
  168. package/package.json +2 -1
  169. package/dist/functions/dependency/dependency.model.js.map +0 -1
  170. package/dist/functions/diff/diff-metadata.model.d.ts +0 -20
  171. package/dist/functions/diff/diff-metadata.model.js.map +0 -1
  172. package/dist/functions/diff/diff.model.js.map +0 -1
  173. package/dist/functions/module/module.abstract.d.ts +0 -12
  174. package/dist/functions/module/module.abstract.js +0 -39
  175. package/dist/functions/module/module.abstract.js.map +0 -1
  176. package/dist/functions/module/module.interface.d.ts +0 -4
  177. package/dist/functions/module/module.interface.js.map +0 -1
  178. package/dist/models/action.interface.d.ts +0 -9
  179. package/dist/models/action.interface.js +0 -2
  180. package/dist/models/action.interface.js.map +0 -1
  181. package/dist/models/support/support.interface.d.ts +0 -5
  182. package/dist/models/support/support.interface.js +0 -2
  183. package/dist/models/support/support.interface.js.map +0 -1
  184. package/dist/models/support/support.model.d.ts +0 -14
  185. package/dist/models/support/support.model.js +0 -52
  186. package/dist/models/support/support.model.js.map +0 -1
  187. /package/dist/{functions/module → modules}/module.interface.js +0 -0
@@ -1,16 +1,23 @@
1
- import { ModelType, UnknownModel, UnknownOverlay } from '../app.type.js';
1
+ import { ModelType, type UnknownModel, type UnknownOverlay } from '../app.type.js';
2
+ import { Diff } from '../functions/diff/diff.js';
2
3
  import { AModel } from '../models/model.abstract.js';
3
- import { Diff } from '../functions/diff/diff.model.js';
4
- import { AAnchor } from './anchor.abstract.js';
5
- import { IOverlay } from './overlay.interface.js';
4
+ import { type AAnchor } from './anchor.abstract.js';
5
+ import type { IOverlay } from './overlay.interface.js';
6
6
  export declare abstract class AOverlay<T> extends AModel<IOverlay, T> {
7
- abstract readonly MODEL_NAME: string;
8
- readonly MODEL_TYPE: ModelType;
9
7
  readonly overlayId: IOverlay['overlayId'];
10
8
  readonly properties: IOverlay['properties'];
9
+ abstract readonly MODEL_NAME: string;
10
+ readonly MODEL_TYPE: ModelType;
11
11
  protected constructor(overlayId: IOverlay['overlayId'], properties: IOverlay['properties'], anchors: AAnchor[]);
12
- diff(): Promise<Diff[]>;
13
- getContext(): string;
12
+ addAnchor(anchor: AAnchor): void;
13
+ diff(previous: T): Promise<Diff[]>;
14
+ diffAnchors(previous: T): Promise<Diff[]>;
15
+ diffProperties(previous: T): Promise<Diff[]>;
16
+ getAnchor(anchorId: string, parent: UnknownModel): AAnchor | undefined;
17
+ getAnchorIndex(anchorId: string, parent: UnknownModel): number;
18
+ remove(ignoreDirectRelationships?: boolean): void;
19
+ removeAnchor(anchor: AAnchor): void;
20
+ setContext(): string;
14
21
  synth(): IOverlay;
15
22
  static unSynth(deserializationClass: any, overlay: IOverlay, deReferenceContext: (context: string) => Promise<UnknownModel>): Promise<UnknownOverlay>;
16
23
  }
@@ -1,31 +1,97 @@
1
1
  import { ModelType } from '../app.type.js';
2
+ import { Diff, DiffAction } from '../functions/diff/diff.js';
3
+ import { DiffUtility } from '../functions/diff/diff.utility.js';
2
4
  import { AModel } from '../models/model.abstract.js';
3
5
  export class AOverlay extends AModel {
4
- MODEL_TYPE = ModelType.OVERLAY;
5
6
  overlayId;
6
- properties = {};
7
+ properties;
8
+ MODEL_TYPE = ModelType.OVERLAY;
7
9
  constructor(overlayId, properties, anchors) {
8
10
  super();
9
11
  this.overlayId = overlayId;
10
- for (const key in properties) {
11
- this.properties[key] = properties[key];
12
- }
12
+ this.properties = properties;
13
13
  for (const anchor of anchors) {
14
- this.addRelationship('overlayId', anchor.getParent(), 'MODEL_NAME');
15
- this.anchors.push(anchor);
14
+ this.addAnchor(anchor);
15
+ }
16
+ }
17
+ addAnchor(anchor) {
18
+ try {
19
+ super.addAnchor(anchor);
20
+ }
21
+ catch (error) {
22
+ if (error.message !== 'Anchor already exists!') {
23
+ throw error;
24
+ }
25
+ }
26
+ const { thisToThatDependency, thatToThisDependency } = this.addRelationship(anchor.getParent());
27
+ thisToThatDependency.addBehavior('overlayId', DiffAction.ADD, 'MODEL_NAME', DiffAction.ADD);
28
+ thisToThatDependency.addBehavior('overlayId', DiffAction.ADD, 'MODEL_NAME', DiffAction.UPDATE);
29
+ thatToThisDependency.addBehavior('MODEL_NAME', DiffAction.DELETE, 'overlayId', DiffAction.DELETE);
30
+ }
31
+ async diff(previous) {
32
+ const diffs = [];
33
+ const propertyDiffs = await this.diffProperties(previous);
34
+ diffs.push(...propertyDiffs);
35
+ const anchorDiffs = await this.diffAnchors(previous);
36
+ diffs.push(...anchorDiffs);
37
+ return diffs;
38
+ }
39
+ async diffAnchors(previous) {
40
+ const diffs = [];
41
+ const previousAnchors = previous.getAnchors();
42
+ for (const previousAnchor of previousAnchors) {
43
+ const currentAnchor = this.getAnchor(previousAnchor.anchorId, previousAnchor.getParent());
44
+ if (!currentAnchor) {
45
+ diffs.push(new Diff(this, DiffAction.DELETE, 'anchor', previousAnchor));
46
+ }
47
+ else if (!DiffUtility.isObjectDeepEquals(previousAnchor.properties, currentAnchor.properties)) {
48
+ diffs.push(new Diff(this, DiffAction.UPDATE, 'anchor', currentAnchor));
49
+ }
16
50
  }
51
+ const currentAnchors = this.getAnchors();
52
+ for (const currentAnchor of currentAnchors) {
53
+ const previousAnchor = previous.getAnchor(currentAnchor.anchorId, currentAnchor.getParent());
54
+ if (!previousAnchor) {
55
+ diffs.push(new Diff(this, DiffAction.ADD, 'anchor', currentAnchor));
56
+ }
57
+ }
58
+ return diffs;
59
+ }
60
+ async diffProperties(previous) {
61
+ return DiffUtility.diffObject(previous, this, 'properties');
17
62
  }
18
- async diff() {
19
- return [];
63
+ getAnchor(anchorId, parent) {
64
+ return super.getAnchor(anchorId, parent);
65
+ }
66
+ getAnchorIndex(anchorId, parent) {
67
+ return super.getAnchorIndex(anchorId, parent);
68
+ }
69
+ remove(ignoreDirectRelationships = false) {
70
+ this.removeAllAnchors();
71
+ super.remove(ignoreDirectRelationships);
72
+ }
73
+ removeAnchor(anchor) {
74
+ const overlayParentDependencyIndex = this.getDependencies().findIndex((d) => d.to.getContext() === anchor.getParent().getContext());
75
+ if (overlayParentDependencyIndex > -1) {
76
+ this.removeDependency(overlayParentDependencyIndex);
77
+ }
78
+ const parentOverlayDependencyIndex = anchor
79
+ .getParent()
80
+ .getDependencies()
81
+ .findIndex((d) => d.to.getContext() === this.getContext());
82
+ if (parentOverlayDependencyIndex > -1) {
83
+ anchor.getParent().removeDependency(parentOverlayDependencyIndex);
84
+ }
85
+ super.removeAnchor(anchor);
20
86
  }
21
- getContext() {
87
+ setContext() {
22
88
  return `${this.MODEL_NAME}=${this.overlayId}`;
23
89
  }
24
90
  synth() {
25
91
  return {
26
- anchors: this.anchors.map((a) => a.synth()),
92
+ anchors: this.getAnchors().map((a) => a.synth()),
27
93
  overlayId: this.overlayId,
28
- properties: { ...this.properties },
94
+ properties: JSON.parse(JSON.stringify(this.properties)),
29
95
  };
30
96
  }
31
97
  static async unSynth(deserializationClass, overlay, deReferenceContext) {
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.abstract.js","sourceRoot":"","sources":["../../src/overlays/overlay.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgC,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAKrD,MAAM,OAAgB,QAAY,SAAQ,MAAmB;IAEzC,UAAU,GAAc,SAAS,CAAC,OAAO,CAAC;IAEnD,SAAS,CAAwB;IAEjC,UAAU,GAA2B,EAAE,CAAC;IAEjD,YAAsB,SAAgC,EAAE,UAAkC,EAAE,OAAkB;QAC5G,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;YACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU;QACR,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IAChD,CAAC;IAED,KAAK;QACH,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,oBAAyB,EACzB,OAAiB,EACjB,kBAA8D;QAE9D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;CACF"}
1
+ {"version":3,"file":"overlay.abstract.js","sourceRoot":"","sources":["../../src/overlays/overlay.abstract.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { IAnchor } from './anchor.interface.js';
1
+ import type { IAnchor } from './anchor.interface.js';
2
2
  export interface IOverlay {
3
3
  anchors: IAnchor[];
4
4
  overlayId: string;
@@ -1,12 +1,16 @@
1
- import { UnknownOverlay } from '../app.type.js';
1
+ import type { UnknownModel, UnknownOverlay } from '../app.type.js';
2
+ import { OverlayDataRepository } from './overlay-data.repository.js';
2
3
  export declare class OverlayService {
3
- addOverlay(overlay: UnknownOverlay): Promise<void>;
4
- getOverlayById(overlayId: string): Promise<UnknownOverlay | undefined>;
5
- getOverlayByProperties(filters?: {
4
+ private readonly overlayDataRepository;
5
+ constructor(overlayDataRepository: OverlayDataRepository);
6
+ addOverlay(overlay: UnknownOverlay): void;
7
+ getOverlaysByAnchor(anchorId: string, parent: UnknownModel, excludeOverlayIds?: string[]): UnknownOverlay[];
8
+ getOverlayById(overlayId: string): UnknownOverlay | undefined;
9
+ getOverlaysByProperties(filters?: {
6
10
  key: string;
7
11
  value: any;
8
- }[]): Promise<UnknownOverlay[]>;
9
- removeOverlay(overlay: UnknownOverlay): Promise<void>;
12
+ }[]): UnknownOverlay[];
13
+ removeOverlay(overlay: UnknownOverlay): void;
10
14
  }
11
15
  export declare class OverlayServiceFactory {
12
16
  private static instance;
@@ -8,28 +8,34 @@ import { Container } from '../decorators/container.js';
8
8
  import { Factory } from '../decorators/factory.decorator.js';
9
9
  import { OverlayDataRepository } from './overlay-data.repository.js';
10
10
  export class OverlayService {
11
- async addOverlay(overlay) {
12
- const overlayDataRepository = await Container.get(OverlayDataRepository);
13
- overlayDataRepository.add(overlay);
11
+ overlayDataRepository;
12
+ constructor(overlayDataRepository) {
13
+ this.overlayDataRepository = overlayDataRepository;
14
14
  }
15
- async getOverlayById(overlayId) {
16
- const overlayDataRepository = await Container.get(OverlayDataRepository);
17
- return overlayDataRepository.getById(overlayId);
15
+ addOverlay(overlay) {
16
+ this.overlayDataRepository.add(overlay);
18
17
  }
19
- async getOverlayByProperties(filters = []) {
20
- const overlayDataRepository = await Container.get(OverlayDataRepository);
21
- return overlayDataRepository.getByProperties(filters);
18
+ getOverlaysByAnchor(anchorId, parent, excludeOverlayIds = []) {
19
+ const overlays = this.getOverlaysByProperties();
20
+ return overlays.filter((o) => !excludeOverlayIds.includes(o.overlayId) && o.getAnchor(anchorId, parent));
22
21
  }
23
- async removeOverlay(overlay) {
24
- const overlayDataRepository = await Container.get(OverlayDataRepository);
25
- overlayDataRepository.remove(overlay);
22
+ getOverlayById(overlayId) {
23
+ return this.overlayDataRepository.getById(overlayId);
24
+ }
25
+ getOverlaysByProperties(filters = []) {
26
+ return this.overlayDataRepository.getByProperties(filters);
27
+ }
28
+ removeOverlay(overlay) {
29
+ overlay.remove();
30
+ this.overlayDataRepository.remove(overlay);
26
31
  }
27
32
  }
28
33
  let OverlayServiceFactory = class OverlayServiceFactory {
29
34
  static instance;
30
35
  static async create() {
36
+ const overlayDataRepository = await Container.get(OverlayDataRepository);
31
37
  if (!this.instance) {
32
- this.instance = new OverlayService();
38
+ this.instance = new OverlayService(overlayDataRepository);
33
39
  }
34
40
  return this.instance;
35
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.service.js","sourceRoot":"","sources":["../../src/overlays/overlay.service.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,UAAU,CAAC,OAAuB;QACtC,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzE,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzE,OAAO,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,UAAyC,EAAE;QACtE,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzE,OAAO,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzE,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACxB,MAAM,CAAC,QAAQ,CAAiB;IAExC,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AATY,qBAAqB;IADjC,OAAO,CAAiB,cAAc,CAAC;GAC3B,qBAAqB,CASjC"}
1
+ {"version":3,"file":"overlay.service.js","sourceRoot":"","sources":["../../src/overlays/overlay.service.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,qBAA4C;QAA5C,0BAAqB,GAArB,qBAAqB,CAAuB;IAAG,CAAC;IAE7E,UAAU,CAAC,OAAuB;QAChC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,mBAAmB,CAAC,QAAgB,EAAE,MAAoB,EAAE,oBAA8B,EAAE;QAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,cAAc,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,uBAAuB,CAAC,UAAyC,EAAE;QACjE,OAAO,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa,CAAC,OAAuB;QACnC,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACxB,MAAM,CAAC,QAAQ,CAAiB;IAExC,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AAVY,qBAAqB;IADjC,OAAO,CAAiB,cAAc,CAAC;GAC3B,qBAAqB,CAUjC"}
@@ -1,6 +1,7 @@
1
- import { Diff } from '../functions/diff/diff.model.js';
1
+ import type { Diff } from '../functions/diff/diff.js';
2
2
  export interface IResourceAction {
3
3
  readonly ACTION_NAME: string;
4
4
  filter(diff: Diff): boolean;
5
5
  handle(diff: Diff): Promise<void>;
6
+ mock(capture?: object, diff?: Diff): Promise<void>;
6
7
  }
@@ -1,11 +1,10 @@
1
- import { UnknownResource } from '../app.type.js';
2
- import { Diff } from '../functions/diff/diff.model.js';
3
- import { IResource } from './resource.interface.js';
1
+ import { type UnknownResource } from '../app.type.js';
2
+ import { Diff } from '../functions/diff/diff.js';
3
+ import type { IResource } from './resource.interface.js';
4
4
  export declare class ResourceDataRepository {
5
- private readonly newResources;
6
- private readonly oldResources;
7
- constructor(newResources?: UnknownResource[], oldResources?: UnknownResource[]);
8
- private _diffResources;
5
+ private oldResources;
6
+ private newResources;
7
+ constructor(oldResources?: UnknownResource[], newResources?: UnknownResource[]);
9
8
  add(resource: UnknownResource): void;
10
9
  diff(): Promise<Diff[]>;
11
10
  getById(resourceId: IResource['resourceId']): UnknownResource | undefined;
@@ -13,8 +12,9 @@ export declare class ResourceDataRepository {
13
12
  key: string;
14
13
  value: any;
15
14
  }[]): UnknownResource[];
15
+ remove(resource: UnknownResource): void;
16
16
  }
17
17
  export declare class ResourceDataRepositoryFactory {
18
18
  private static instance;
19
- static create(forceNew: boolean, newResources: UnknownResource[], oldResources: UnknownResource[]): Promise<ResourceDataRepository>;
19
+ static create(forceNew: boolean, oldResources: UnknownResource[], newResources: UnknownResource[]): Promise<ResourceDataRepository>;
20
20
  }
@@ -6,40 +6,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { ModelType } from '../app.type.js';
8
8
  import { Factory } from '../decorators/factory.decorator.js';
9
- import { Diff, DiffAction } from '../functions/diff/diff.model.js';
9
+ import { Diff, DiffAction } from '../functions/diff/diff.js';
10
10
  export class ResourceDataRepository {
11
- newResources;
12
11
  oldResources;
13
- constructor(newResources = [], oldResources = []) {
14
- this.newResources = newResources;
12
+ newResources;
13
+ constructor(oldResources = [], newResources = []) {
15
14
  this.oldResources = oldResources;
15
+ this.newResources = newResources;
16
16
  Object.freeze(this.oldResources);
17
17
  }
18
- async _diffResources(newResources, oldResources) {
19
- const diffs = [];
20
- for (const oldResourceId in oldResources) {
21
- if (!newResources[oldResourceId]) {
22
- diffs.push(new Diff(oldResources[oldResourceId], DiffAction.DELETE, 'resourceId', oldResourceId));
23
- }
24
- else {
25
- const rDiff = await newResources[oldResourceId].diff(oldResources[oldResourceId]);
26
- diffs.push(...rDiff);
27
- }
28
- }
29
- for (const newResourceId in newResources) {
30
- if (!oldResources[newResourceId]) {
31
- const newResource = newResources[newResourceId];
32
- if (newResource.MODEL_TYPE === 'shared-resource' || newResource.getSharedResource() !== undefined) {
33
- const rDiff = await newResource.diff();
34
- diffs.push(...rDiff);
35
- }
36
- else {
37
- diffs.push(new Diff(newResource, DiffAction.ADD, 'resourceId', newResource.resourceId));
38
- }
39
- }
40
- }
41
- return diffs;
42
- }
43
18
  add(resource) {
44
19
  if (resource.MODEL_TYPE !== ModelType.RESOURCE && resource.MODEL_TYPE !== ModelType.SHARED_RESOURCE) {
45
20
  throw new Error('Adding non-resource model!');
@@ -53,9 +28,36 @@ export class ResourceDataRepository {
53
28
  }
54
29
  }
55
30
  async diff() {
56
- const newResources = this.newResources.reduce((accumulator, current) => ({ ...accumulator, [current.resourceId]: current }), {});
57
31
  const oldResources = this.oldResources.reduce((accumulator, current) => ({ ...accumulator, [current.resourceId]: current }), {});
58
- return this._diffResources(newResources, oldResources);
32
+ const newResources = this.newResources.reduce((accumulator, current) => ({ ...accumulator, [current.resourceId]: current }), {});
33
+ const diffs = [];
34
+ for (const oldResourceId of Object.keys(oldResources)) {
35
+ if (!newResources[oldResourceId] || newResources[oldResourceId].isMarkedDeleted()) {
36
+ diffs.push(new Diff(oldResources[oldResourceId], DiffAction.DELETE, 'resourceId', oldResourceId));
37
+ }
38
+ else {
39
+ const rDiff = await newResources[oldResourceId].diff(oldResources[oldResourceId]);
40
+ diffs.push(...rDiff);
41
+ }
42
+ }
43
+ for (const newResourceId of Object.keys(newResources)) {
44
+ if (oldResources[newResourceId]) {
45
+ continue;
46
+ }
47
+ const newResource = newResources[newResourceId];
48
+ if (newResource.MODEL_TYPE === 'shared-resource') {
49
+ continue;
50
+ }
51
+ const sharedResource = newResource.getSharedResource();
52
+ if (sharedResource !== undefined) {
53
+ const rDiff = await newResource.diff(sharedResource);
54
+ diffs.push(...rDiff);
55
+ }
56
+ else {
57
+ diffs.push(new Diff(newResource, DiffAction.ADD, 'resourceId', newResource.resourceId));
58
+ }
59
+ }
60
+ return diffs;
59
61
  }
60
62
  getById(resourceId) {
61
63
  return this.newResources.find((r) => r.resourceId === resourceId);
@@ -63,12 +65,28 @@ export class ResourceDataRepository {
63
65
  getByProperties(filters = []) {
64
66
  return this.newResources.filter((r) => filters.every((c) => r.properties[c.key] === c.value));
65
67
  }
68
+ remove(resource) {
69
+ if (resource.MODEL_TYPE !== ModelType.RESOURCE && resource.MODEL_TYPE !== ModelType.SHARED_RESOURCE) {
70
+ throw new Error('Removing non-resource model!');
71
+ }
72
+ if (!resource.isMarkedDeleted()) {
73
+ resource.remove();
74
+ }
75
+ const rIndex = this.newResources.findIndex((r) => r.resourceId === resource.resourceId);
76
+ if (rIndex > -1) {
77
+ this.newResources.splice(rIndex, 1);
78
+ }
79
+ }
66
80
  }
67
81
  let ResourceDataRepositoryFactory = class ResourceDataRepositoryFactory {
68
82
  static instance;
69
- static async create(forceNew, newResources, oldResources) {
70
- if (forceNew || !this.instance) {
71
- this.instance = new ResourceDataRepository(newResources, oldResources);
83
+ static async create(forceNew, oldResources, newResources) {
84
+ if (!this.instance) {
85
+ this.instance = new ResourceDataRepository(oldResources, newResources);
86
+ }
87
+ if (forceNew) {
88
+ const newInstance = new ResourceDataRepository(oldResources, newResources);
89
+ Object.keys(this.instance).forEach((key) => (this.instance[key] = newInstance[key]));
72
90
  }
73
91
  return this.instance;
74
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resource-data.repository.js","sourceRoot":"","sources":["../../src/resources/resource-data.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-data.repository.js","sourceRoot":"","sources":["../../src/resources/resource-data.repository.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,25 @@
1
- import { ModelType, UnknownResource } from '../app.type.js';
2
- import { Diff } from '../functions/diff/diff.model.js';
1
+ import { ModelType, type UnknownResource } from '../app.type.js';
2
+ import { type Dependency } from '../functions/dependency/dependency.js';
3
+ import { Diff } from '../functions/diff/diff.js';
3
4
  import { AModel } from '../models/model.abstract.js';
4
- import { IResource } from './resource.interface.js';
5
- import { ASharedResource } from './shared-resource.abstract.js';
5
+ import type { IResource } from './resource.interface.js';
6
+ import type { ASharedResource } from './shared-resource.abstract.js';
6
7
  export declare abstract class AResource<T> extends AModel<IResource, T> {
8
+ readonly resourceId: IResource['resourceId'];
9
+ readonly properties: IResource['properties'];
7
10
  abstract readonly MODEL_NAME: string;
8
11
  readonly MODEL_TYPE: ModelType;
9
- private _deleteMarker;
10
- readonly properties: IResource['properties'];
11
- readonly resourceId: IResource['resourceId'];
12
12
  readonly response: IResource['response'];
13
13
  protected constructor(resourceId: IResource['resourceId'], properties: IResource['properties'], parents: UnknownResource[]);
14
- diff(previous?: T): Promise<Diff[]>;
15
- getContext(): string;
14
+ addAnchor(): void;
15
+ addRelationship(): {
16
+ thatToThisDependency: Dependency;
17
+ thisToThatDependency: Dependency;
18
+ };
19
+ diff(previous: T | ASharedResource<T>): Promise<Diff[]>;
20
+ diffProperties(previous: T | ASharedResource<T>): Promise<Diff[]>;
16
21
  getSharedResource(): ASharedResource<T> | undefined;
17
- isMarkedDeleted(): boolean;
18
- markDeleted(): void;
19
- remove(): void;
22
+ setContext(): string;
20
23
  synth(): IResource;
21
24
  static unSynth(deserializationClass: any, resource: IResource, parentResourceIds: string[], deReferenceResource: (resourceId: string) => Promise<UnknownResource>): Promise<UnknownResource>;
22
25
  }
@@ -1,71 +1,71 @@
1
1
  import { ModelType } from '../app.type.js';
2
- import { Diff, DiffAction } from '../functions/diff/diff.model.js';
2
+ import { Diff, DiffAction } from '../functions/diff/diff.js';
3
3
  import { DiffUtility } from '../functions/diff/diff.utility.js';
4
4
  import { AModel } from '../models/model.abstract.js';
5
5
  export class AResource extends AModel {
6
- MODEL_TYPE = ModelType.RESOURCE;
7
- _deleteMarker = false;
8
- properties = {};
9
6
  resourceId;
7
+ properties;
8
+ MODEL_TYPE = ModelType.RESOURCE;
10
9
  response = {};
11
10
  constructor(resourceId, properties, parents) {
12
11
  super();
13
12
  this.resourceId = resourceId;
14
- for (const key in properties) {
15
- this.properties[key] = properties[key];
16
- }
13
+ this.properties = properties;
17
14
  for (const parent of parents) {
18
15
  parent.addChild('resourceId', this, 'resourceId');
19
16
  }
20
17
  }
18
+ addAnchor() {
19
+ throw new Error('Anchors are not supported in resources!');
20
+ }
21
+ addRelationship() {
22
+ throw new Error('Relationships are not supported in resources!');
23
+ }
21
24
  async diff(previous) {
22
25
  const diffs = [];
23
- if (this.isMarkedDeleted()) {
24
- diffs.push(new Diff((previous || this), DiffAction.DELETE, 'resourceId', this.resourceId));
25
- return diffs;
26
+ const propertyDiffs = await this.diffProperties(previous);
27
+ diffs.push(...propertyDiffs);
28
+ const previousParents = Object.values(previous.getParents())
29
+ .flat()
30
+ .map((d) => d.to);
31
+ const currentParents = Object.values(this.getParents())
32
+ .flat()
33
+ .map((d) => d.to);
34
+ const deletedParents = previousParents.filter((p) => currentParents.findIndex((c) => c.getContext() === p.getContext()) === -1);
35
+ for (const parent of deletedParents) {
36
+ diffs.push(new Diff(this, DiffAction.DELETE, 'parent', parent));
26
37
  }
27
- if (previous) {
28
- if (!DiffUtility.isObjectDeepEquals(this.properties, previous.properties)) {
29
- diffs.push(new Diff(this, DiffAction.UPDATE, 'resourceId', this.resourceId));
30
- }
31
- }
32
- else {
33
- diffs.push(new Diff(this, DiffAction.ADD, 'resourceId', this.resourceId));
38
+ const newParents = currentParents.filter((c) => previousParents.findIndex((p) => p.getContext() === c.getContext()) === -1);
39
+ for (const parent of newParents) {
40
+ diffs.push(new Diff(this, DiffAction.ADD, 'parent', parent));
34
41
  }
35
42
  return diffs;
36
43
  }
37
- getContext() {
38
- return `${this.MODEL_NAME}=${this.resourceId}`;
44
+ async diffProperties(previous) {
45
+ return DiffUtility.diffObject(previous, this, 'properties');
39
46
  }
40
47
  getSharedResource() {
41
48
  const sameModelDependencies = this.getChildren(this.MODEL_NAME)[this.MODEL_NAME];
42
49
  const sharedResourceDependency = sameModelDependencies?.find((d) => d.to.MODEL_TYPE === ModelType.SHARED_RESOURCE);
43
50
  return sharedResourceDependency?.to;
44
51
  }
45
- isMarkedDeleted() {
46
- return this._deleteMarker;
47
- }
48
- markDeleted() {
49
- super.remove();
50
- this._deleteMarker = true;
51
- }
52
- remove() {
53
- throw new Error('Cannot use remove() on resources! Use a delete marker instead');
52
+ setContext() {
53
+ return `${this.MODEL_NAME}=${this.resourceId}`;
54
54
  }
55
55
  synth() {
56
56
  return {
57
- properties: { ...this.properties },
57
+ properties: JSON.parse(JSON.stringify(this.properties)),
58
58
  resourceId: this.resourceId,
59
- response: { ...this.response },
59
+ response: JSON.parse(JSON.stringify(this.response)),
60
60
  };
61
61
  }
62
62
  static async unSynth(deserializationClass, resource, parentResourceIds, deReferenceResource) {
63
63
  const parents = await Promise.all(parentResourceIds.map((p) => deReferenceResource(p)));
64
- const deReferencedResource = new deserializationClass(resource.resourceId, resource.properties, parents);
65
- for (const key in resource.response) {
66
- deReferencedResource.response[key] = resource.response[key];
64
+ const newResource = new deserializationClass(resource.resourceId, resource.properties, parents);
65
+ for (const key of Object.keys(resource.response)) {
66
+ newResource.response[key] = resource.response[key];
67
67
  }
68
- return deReferencedResource;
68
+ return newResource;
69
69
  }
70
70
  }
71
71
  //# sourceMappingURL=resource.abstract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ModelType } from '../app.type.js';
2
- import { Diff } from '../functions/diff/diff.model.js';
2
+ import type { Diff } from '../functions/diff/diff.js';
3
3
  import { AResource } from './resource.abstract.js';
4
4
  export declare abstract class ASharedResource<T> extends AResource<T> {
5
5
  readonly MODEL_TYPE: ModelType;
@@ -1 +1 @@
1
- {"version":3,"file":"shared-resource.abstract.js","sourceRoot":"","sources":["../../src/resources/shared-resource.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,OAAgB,eAAmB,SAAQ,SAAY;IACzC,UAAU,GAAc,SAAS,CAAC,eAAe,CAAC;IAEpE,KAAK,CAAC,IAAI;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB,CAAC,OAAgE;QACpF,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAkB,CAAC;YACtC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEQ,iBAAiB;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,sBAA0C;QAC9C,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvF,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,UAAU,EAAE,CAAC;YACpD,IAAI,sBAAsB,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,sBAAsB,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,yCAAyC,GAAG,oBAAoB;aACnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACjE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,yCAAyC,EAAE,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"shared-resource.abstract.js","sourceRoot":"","sources":["../../src/resources/shared-resource.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,OAAgB,eAAmB,SAAQ,SAAY;IACzC,UAAU,GAAc,SAAS,CAAC,eAAe,CAAC;IAE3D,KAAK,CAAC,IAAI;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB,CAAC,OAAgE;QACpF,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAkB,CAAC;YACtC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEQ,iBAAiB;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,sBAA0C;QAC9C,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvF,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,UAAU,EAAE,CAAC;YACpD,IAAI,sBAAsB,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,sBAAsB,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,yCAAyC,GAAG,oBAAoB;aACnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACjE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,yCAAyC,EAAE,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}