@powerhousedao/service-offering 1.0.0-dev.3 → 1.0.0-dev.5

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 (233) hide show
  1. package/dist/document-models/facet/v1/actions.d.ts +3 -1
  2. package/dist/document-models/facet/v1/actions.d.ts.map +1 -1
  3. package/dist/document-models/facet/v1/gen/controller.d.ts +4 -0
  4. package/dist/document-models/facet/v1/gen/controller.d.ts.map +1 -0
  5. package/dist/document-models/facet/v1/gen/controller.js +3 -0
  6. package/dist/document-models/facet/v1/gen/document-model.d.ts.map +1 -1
  7. package/dist/document-models/facet/v1/gen/document-model.js +31 -7
  8. package/dist/document-models/facet/v1/gen/document-schema.d.ts +6 -6
  9. package/dist/document-models/facet/v1/gen/index.d.ts +1 -0
  10. package/dist/document-models/facet/v1/gen/index.d.ts.map +1 -1
  11. package/dist/document-models/facet/v1/gen/index.js +1 -0
  12. package/dist/document-models/facet/v1/gen/option-management/error.d.ts +27 -1
  13. package/dist/document-models/facet/v1/gen/option-management/error.d.ts.map +1 -1
  14. package/dist/document-models/facet/v1/gen/option-management/error.js +23 -1
  15. package/dist/document-models/facet/v1/gen/ph-factories.js +2 -2
  16. package/dist/document-models/facet/v1/gen/schema/types.d.ts +2 -2
  17. package/dist/document-models/facet/v1/gen/schema/types.d.ts.map +1 -1
  18. package/dist/document-models/facet/v1/gen/schema/zod.js +2 -2
  19. package/dist/document-models/facet/v1/gen/utils.js +2 -2
  20. package/dist/document-models/facet/v1/module.d.ts +1 -1
  21. package/dist/document-models/facet/v1/module.d.ts.map +1 -1
  22. package/dist/document-models/facet/v1/module.js +4 -1
  23. package/dist/document-models/resource-instance/v1/actions.d.ts +4 -1
  24. package/dist/document-models/resource-instance/v1/actions.d.ts.map +1 -1
  25. package/dist/document-models/resource-instance/v1/gen/configuration-management/error.d.ts +34 -1
  26. package/dist/document-models/resource-instance/v1/gen/configuration-management/error.d.ts.map +1 -1
  27. package/dist/document-models/resource-instance/v1/gen/configuration-management/error.js +32 -1
  28. package/dist/document-models/resource-instance/v1/gen/controller.d.ts +4 -0
  29. package/dist/document-models/resource-instance/v1/gen/controller.d.ts.map +1 -0
  30. package/dist/document-models/resource-instance/v1/gen/controller.js +3 -0
  31. package/dist/document-models/resource-instance/v1/gen/document-model.d.ts.map +1 -1
  32. package/dist/document-models/resource-instance/v1/gen/document-model.js +222 -70
  33. package/dist/document-models/resource-instance/v1/gen/document-schema.d.ts +0 -6
  34. package/dist/document-models/resource-instance/v1/gen/document-schema.d.ts.map +1 -1
  35. package/dist/document-models/resource-instance/v1/gen/index.d.ts +1 -0
  36. package/dist/document-models/resource-instance/v1/gen/index.d.ts.map +1 -1
  37. package/dist/document-models/resource-instance/v1/gen/index.js +1 -0
  38. package/dist/document-models/resource-instance/v1/gen/instance-management/actions.d.ts +6 -2
  39. package/dist/document-models/resource-instance/v1/gen/instance-management/actions.d.ts.map +1 -1
  40. package/dist/document-models/resource-instance/v1/gen/instance-management/creators.d.ts +3 -2
  41. package/dist/document-models/resource-instance/v1/gen/instance-management/creators.d.ts.map +1 -1
  42. package/dist/document-models/resource-instance/v1/gen/instance-management/creators.js +2 -1
  43. package/dist/document-models/resource-instance/v1/gen/instance-management/error.d.ts +98 -1
  44. package/dist/document-models/resource-instance/v1/gen/instance-management/error.d.ts.map +1 -1
  45. package/dist/document-models/resource-instance/v1/gen/instance-management/error.js +112 -1
  46. package/dist/document-models/resource-instance/v1/gen/instance-management/operations.d.ts +2 -1
  47. package/dist/document-models/resource-instance/v1/gen/instance-management/operations.d.ts.map +1 -1
  48. package/dist/document-models/resource-instance/v1/gen/ph-factories.d.ts.map +1 -1
  49. package/dist/document-models/resource-instance/v1/gen/ph-factories.js +0 -2
  50. package/dist/document-models/resource-instance/v1/gen/reducer.d.ts.map +1 -1
  51. package/dist/document-models/resource-instance/v1/gen/reducer.js +6 -1
  52. package/dist/document-models/resource-instance/v1/gen/schema/types.d.ts +3 -3
  53. package/dist/document-models/resource-instance/v1/gen/schema/types.d.ts.map +1 -1
  54. package/dist/document-models/resource-instance/v1/gen/schema/zod.d.ts +2 -1
  55. package/dist/document-models/resource-instance/v1/gen/schema/zod.d.ts.map +1 -1
  56. package/dist/document-models/resource-instance/v1/gen/schema/zod.js +5 -3
  57. package/dist/document-models/resource-instance/v1/gen/utils.d.ts.map +1 -1
  58. package/dist/document-models/resource-instance/v1/gen/utils.js +0 -2
  59. package/dist/document-models/resource-instance/v1/module.d.ts +1 -1
  60. package/dist/document-models/resource-instance/v1/module.d.ts.map +1 -1
  61. package/dist/document-models/resource-instance/v1/module.js +4 -1
  62. package/dist/document-models/resource-instance/v1/src/reducers/configuration-management.d.ts.map +1 -1
  63. package/dist/document-models/resource-instance/v1/src/reducers/configuration-management.js +57 -53
  64. package/dist/document-models/resource-instance/v1/src/reducers/instance-management.d.ts.map +1 -1
  65. package/dist/document-models/resource-instance/v1/src/reducers/instance-management.js +57 -21
  66. package/dist/document-models/resource-instance/v1/tests/instance-management.test.js +11 -1
  67. package/dist/document-models/resource-template/v1/actions.d.ts +3 -1
  68. package/dist/document-models/resource-template/v1/actions.d.ts.map +1 -1
  69. package/dist/document-models/resource-template/v1/gen/audience-management/error.d.ts +20 -1
  70. package/dist/document-models/resource-template/v1/gen/audience-management/error.d.ts.map +1 -1
  71. package/dist/document-models/resource-template/v1/gen/audience-management/error.js +16 -1
  72. package/dist/document-models/resource-template/v1/gen/controller.d.ts +4 -0
  73. package/dist/document-models/resource-template/v1/gen/controller.d.ts.map +1 -0
  74. package/dist/document-models/resource-template/v1/gen/controller.js +3 -0
  75. package/dist/document-models/resource-template/v1/gen/document-model.d.ts.map +1 -1
  76. package/dist/document-models/resource-template/v1/gen/document-model.js +207 -89
  77. package/dist/document-models/resource-template/v1/gen/document-schema.d.ts +12 -12
  78. package/dist/document-models/resource-template/v1/gen/facet-targeting/error.d.ts +27 -1
  79. package/dist/document-models/resource-template/v1/gen/facet-targeting/error.d.ts.map +1 -1
  80. package/dist/document-models/resource-template/v1/gen/facet-targeting/error.js +23 -1
  81. package/dist/document-models/resource-template/v1/gen/index.d.ts +1 -0
  82. package/dist/document-models/resource-template/v1/gen/index.d.ts.map +1 -1
  83. package/dist/document-models/resource-template/v1/gen/index.js +1 -0
  84. package/dist/document-models/resource-template/v1/gen/option-group-management/error.d.ts +27 -1
  85. package/dist/document-models/resource-template/v1/gen/option-group-management/error.d.ts.map +1 -1
  86. package/dist/document-models/resource-template/v1/gen/option-group-management/error.js +23 -1
  87. package/dist/document-models/resource-template/v1/gen/ph-factories.js +3 -3
  88. package/dist/document-models/resource-template/v1/gen/schema/types.d.ts +4 -4
  89. package/dist/document-models/resource-template/v1/gen/schema/types.d.ts.map +1 -1
  90. package/dist/document-models/resource-template/v1/gen/schema/zod.js +4 -4
  91. package/dist/document-models/resource-template/v1/gen/service-management/error.d.ts +51 -1
  92. package/dist/document-models/resource-template/v1/gen/service-management/error.d.ts.map +1 -1
  93. package/dist/document-models/resource-template/v1/gen/service-management/error.js +49 -1
  94. package/dist/document-models/resource-template/v1/gen/utils.js +3 -3
  95. package/dist/document-models/resource-template/v1/module.d.ts +1 -1
  96. package/dist/document-models/resource-template/v1/module.d.ts.map +1 -1
  97. package/dist/document-models/resource-template/v1/module.js +4 -1
  98. package/dist/document-models/resource-template/v1/src/reducers/option-group-management.d.ts.map +1 -1
  99. package/dist/document-models/resource-template/v1/src/reducers/option-group-management.js +2 -21
  100. package/dist/document-models/service-offering/v1/actions.d.ts +3 -1
  101. package/dist/document-models/service-offering/v1/actions.d.ts.map +1 -1
  102. package/dist/document-models/service-offering/v1/gen/controller.d.ts +4 -0
  103. package/dist/document-models/service-offering/v1/gen/controller.d.ts.map +1 -0
  104. package/dist/document-models/service-offering/v1/gen/controller.js +3 -0
  105. package/dist/document-models/service-offering/v1/gen/document-model.d.ts.map +1 -1
  106. package/dist/document-models/service-offering/v1/gen/document-model.js +421 -199
  107. package/dist/document-models/service-offering/v1/gen/document-schema.d.ts +9 -9
  108. package/dist/document-models/service-offering/v1/gen/index.d.ts +1 -0
  109. package/dist/document-models/service-offering/v1/gen/index.d.ts.map +1 -1
  110. package/dist/document-models/service-offering/v1/gen/index.js +1 -0
  111. package/dist/document-models/service-offering/v1/gen/offering/error.d.ts +41 -1
  112. package/dist/document-models/service-offering/v1/gen/offering/error.d.ts.map +1 -1
  113. package/dist/document-models/service-offering/v1/gen/offering/error.js +37 -1
  114. package/dist/document-models/service-offering/v1/gen/option-groups/error.d.ts +55 -1
  115. package/dist/document-models/service-offering/v1/gen/option-groups/error.d.ts.map +1 -1
  116. package/dist/document-models/service-offering/v1/gen/option-groups/error.js +53 -1
  117. package/dist/document-models/service-offering/v1/gen/ph-factories.js +3 -3
  118. package/dist/document-models/service-offering/v1/gen/schema/types.d.ts +134 -61
  119. package/dist/document-models/service-offering/v1/gen/schema/types.d.ts.map +1 -1
  120. package/dist/document-models/service-offering/v1/gen/schema/zod.d.ts +35 -10
  121. package/dist/document-models/service-offering/v1/gen/schema/zod.d.ts.map +1 -1
  122. package/dist/document-models/service-offering/v1/gen/schema/zod.js +182 -64
  123. package/dist/document-models/service-offering/v1/gen/services/error.d.ts +20 -1
  124. package/dist/document-models/service-offering/v1/gen/services/error.d.ts.map +1 -1
  125. package/dist/document-models/service-offering/v1/gen/services/error.js +16 -1
  126. package/dist/document-models/service-offering/v1/gen/tiers/error.d.ts +100 -1
  127. package/dist/document-models/service-offering/v1/gen/tiers/error.d.ts.map +1 -1
  128. package/dist/document-models/service-offering/v1/gen/tiers/error.js +106 -1
  129. package/dist/document-models/service-offering/v1/gen/utils.js +4 -4
  130. package/dist/document-models/service-offering/v1/module.d.ts +1 -1
  131. package/dist/document-models/service-offering/v1/module.d.ts.map +1 -1
  132. package/dist/document-models/service-offering/v1/module.js +4 -1
  133. package/dist/document-models/service-offering/v1/src/reducers/offering.d.ts.map +1 -1
  134. package/dist/document-models/service-offering/v1/src/reducers/offering.js +20 -12
  135. package/dist/document-models/service-offering/v1/src/reducers/option-groups.d.ts.map +1 -1
  136. package/dist/document-models/service-offering/v1/src/reducers/option-groups.js +157 -39
  137. package/dist/document-models/service-offering/v1/src/reducers/services.d.ts.map +1 -1
  138. package/dist/document-models/service-offering/v1/src/reducers/services.js +17 -14
  139. package/dist/document-models/service-offering/v1/src/reducers/tiers.d.ts.map +1 -1
  140. package/dist/document-models/service-offering/v1/src/reducers/tiers.js +111 -78
  141. package/dist/document-models/service-offering/v1/src/utils.d.ts +60 -1
  142. package/dist/document-models/service-offering/v1/src/utils.d.ts.map +1 -1
  143. package/dist/document-models/service-offering/v1/src/utils.js +173 -1
  144. package/dist/document-models/service-offering/v1/tests/option-groups.test.js +1 -1
  145. package/dist/document-models/service-offering/v1/utils.d.ts +3 -0
  146. package/dist/document-models/service-offering/v1/utils.d.ts.map +1 -1
  147. package/dist/document-models/subscription-instance/v1/actions.d.ts +3 -1
  148. package/dist/document-models/subscription-instance/v1/actions.d.ts.map +1 -1
  149. package/dist/document-models/subscription-instance/v1/gen/controller.d.ts +4 -0
  150. package/dist/document-models/subscription-instance/v1/gen/controller.d.ts.map +1 -0
  151. package/dist/document-models/subscription-instance/v1/gen/controller.js +3 -0
  152. package/dist/document-models/subscription-instance/v1/gen/document-model.d.ts.map +1 -1
  153. package/dist/document-models/subscription-instance/v1/gen/document-model.js +488 -246
  154. package/dist/document-models/subscription-instance/v1/gen/document-schema.d.ts +3 -3
  155. package/dist/document-models/subscription-instance/v1/gen/index.d.ts +1 -0
  156. package/dist/document-models/subscription-instance/v1/gen/index.d.ts.map +1 -1
  157. package/dist/document-models/subscription-instance/v1/gen/index.js +1 -0
  158. package/dist/document-models/subscription-instance/v1/gen/metrics/error.d.ts +73 -1
  159. package/dist/document-models/subscription-instance/v1/gen/metrics/error.d.ts.map +1 -1
  160. package/dist/document-models/subscription-instance/v1/gen/metrics/error.js +86 -1
  161. package/dist/document-models/subscription-instance/v1/gen/ph-factories.js +1 -1
  162. package/dist/document-models/subscription-instance/v1/gen/schema/types.d.ts +199 -82
  163. package/dist/document-models/subscription-instance/v1/gen/schema/types.d.ts.map +1 -1
  164. package/dist/document-models/subscription-instance/v1/gen/schema/zod.d.ts +22 -12
  165. package/dist/document-models/subscription-instance/v1/gen/schema/zod.d.ts.map +1 -1
  166. package/dist/document-models/subscription-instance/v1/gen/schema/zod.js +230 -84
  167. package/dist/document-models/subscription-instance/v1/gen/service/error.d.ts +62 -1
  168. package/dist/document-models/subscription-instance/v1/gen/service/error.d.ts.map +1 -1
  169. package/dist/document-models/subscription-instance/v1/gen/service/error.js +60 -1
  170. package/dist/document-models/subscription-instance/v1/gen/service-group/error.d.ts +39 -1
  171. package/dist/document-models/subscription-instance/v1/gen/service-group/error.d.ts.map +1 -1
  172. package/dist/document-models/subscription-instance/v1/gen/service-group/error.js +39 -1
  173. package/dist/document-models/subscription-instance/v1/gen/subscription/error.d.ts +55 -1
  174. package/dist/document-models/subscription-instance/v1/gen/subscription/error.d.ts.map +1 -1
  175. package/dist/document-models/subscription-instance/v1/gen/subscription/error.js +51 -1
  176. package/dist/document-models/subscription-instance/v1/gen/utils.js +2 -2
  177. package/dist/document-models/subscription-instance/v1/module.d.ts +1 -1
  178. package/dist/document-models/subscription-instance/v1/module.d.ts.map +1 -1
  179. package/dist/document-models/subscription-instance/v1/module.js +4 -1
  180. package/dist/document-models/subscription-instance/v1/src/reducers/customer.d.ts.map +1 -1
  181. package/dist/document-models/subscription-instance/v1/src/reducers/customer.js +1 -0
  182. package/dist/document-models/subscription-instance/v1/src/reducers/metrics.d.ts.map +1 -1
  183. package/dist/document-models/subscription-instance/v1/src/reducers/metrics.js +70 -45
  184. package/dist/document-models/subscription-instance/v1/src/reducers/service-group.d.ts.map +1 -1
  185. package/dist/document-models/subscription-instance/v1/src/reducers/service-group.js +108 -30
  186. package/dist/document-models/subscription-instance/v1/src/reducers/service.d.ts.map +1 -1
  187. package/dist/document-models/subscription-instance/v1/src/reducers/service.js +108 -39
  188. package/dist/document-models/subscription-instance/v1/src/reducers/subscription.d.ts.map +1 -1
  189. package/dist/document-models/subscription-instance/v1/src/reducers/subscription.js +193 -35
  190. package/dist/editors/resource-instance-editor/editor.d.ts.map +1 -1
  191. package/dist/editors/resource-instance-editor/editor.js +13 -3
  192. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts.map +1 -1
  193. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.js +4 -2
  194. package/dist/editors/service-offering-editor/components/ServiceCatalog.d.ts.map +1 -1
  195. package/dist/editors/service-offering-editor/components/ServiceCatalog.js +189 -32
  196. package/dist/editors/service-offering-editor/components/TheMatrix.d.ts +1 -1
  197. package/dist/editors/service-offering-editor/components/TheMatrix.d.ts.map +1 -1
  198. package/dist/editors/service-offering-editor/components/TheMatrix.js +295 -140
  199. package/dist/editors/service-offering-editor/components/TierDefinition.d.ts.map +1 -1
  200. package/dist/editors/service-offering-editor/components/TierDefinition.js +2 -0
  201. package/dist/editors/service-offering-editor/components/TierPricingOptionsPanel.js +3 -3
  202. package/dist/editors/service-offering-editor/components/pricing-utils.d.ts.map +1 -1
  203. package/dist/editors/service-offering-editor/components/pricing-utils.js +26 -7
  204. package/dist/editors/subscription-instance-editor/components/BillingPanel.d.ts.map +1 -1
  205. package/dist/editors/subscription-instance-editor/components/BillingPanel.js +4 -4
  206. package/dist/editors/subscription-instance-editor/components/CustomerInfo.d.ts.map +1 -1
  207. package/dist/editors/subscription-instance-editor/components/CustomerInfo.js +3 -2
  208. package/dist/editors/subscription-instance-editor/components/ImportServiceConfigButton.d.ts +3 -0
  209. package/dist/editors/subscription-instance-editor/components/ImportServiceConfigButton.d.ts.map +1 -1
  210. package/dist/editors/subscription-instance-editor/components/ImportServiceConfigButton.js +12 -0
  211. package/dist/editors/subscription-instance-editor/components/MetricActions.d.ts.map +1 -1
  212. package/dist/editors/subscription-instance-editor/components/MetricActions.js +4 -2
  213. package/dist/editors/subscription-instance-editor/components/MockDataButton.d.ts.map +1 -1
  214. package/dist/editors/subscription-instance-editor/components/MockDataButton.js +214 -2
  215. package/dist/editors/subscription-instance-editor/components/OperatorNotes.js +1 -1
  216. package/dist/editors/subscription-instance-editor/components/ServicesPanel.d.ts.map +1 -1
  217. package/dist/editors/subscription-instance-editor/components/ServicesPanel.js +9 -20
  218. package/dist/editors/subscription-instance-editor/components/SubscriptionActions.d.ts.map +1 -1
  219. package/dist/editors/subscription-instance-editor/components/SubscriptionActions.js +8 -9
  220. package/dist/editors/subscription-instance-editor/components/SubscriptionHeader.d.ts.map +1 -1
  221. package/dist/editors/subscription-instance-editor/components/SubscriptionHeader.js +1 -1
  222. package/dist/editors/subscription-instance-editor/components/billing-utils.d.ts +14 -6
  223. package/dist/editors/subscription-instance-editor/components/billing-utils.d.ts.map +1 -1
  224. package/dist/editors/subscription-instance-editor/components/billing-utils.js +19 -23
  225. package/dist/editors/subscription-instance-editor/components/mapOfferingToSubscription.d.ts +16 -2
  226. package/dist/editors/subscription-instance-editor/components/mapOfferingToSubscription.d.ts.map +1 -1
  227. package/dist/editors/subscription-instance-editor/components/mapOfferingToSubscription.js +155 -6
  228. package/dist/powerhouse.manifest.json +29 -3
  229. package/dist/style.css +14 -0
  230. package/dist/subgraphs/resources-services/resolvers.d.ts +2 -2
  231. package/dist/subgraphs/resources-services/resolvers.d.ts.map +1 -1
  232. package/dist/subgraphs/resources-services/resolvers.js +262 -196
  233. package/package.json +22 -18
@@ -1,73 +1,77 @@
1
+ import { ConfigurationLockedError, ConfigurationLockedRemoveInstanceFacetError, ConfigurationLockedUpdateInstanceFacetError, ConfigurationLockedApplyConfigurationChangesError, } from "../../gen/configuration-management/error.js";
1
2
  export const resourceInstanceConfigurationManagementOperations = {
2
3
  setInstanceFacetOperation(state, action) {
3
- const existingIndex = state.configuration.findIndex((f) => f.categoryKey === action.input.categoryKey);
4
- const facet = {
5
- id: action.input.id,
6
- categoryKey: action.input.categoryKey,
7
- categoryLabel: action.input.categoryLabel,
8
- selectedOption: action.input.selectedOption,
9
- };
4
+ if (state.status === "ACTIVE") {
5
+ throw new ConfigurationLockedError("Cannot modify configuration while instance is ACTIVE");
6
+ }
7
+ const existingIndex = state.configuration.findIndex((c) => c.categoryKey === action.input.categoryKey);
10
8
  if (existingIndex !== -1) {
11
- state.configuration[existingIndex] = facet;
9
+ state.configuration[existingIndex] = {
10
+ id: action.input.id,
11
+ categoryKey: action.input.categoryKey,
12
+ categoryLabel: action.input.categoryLabel,
13
+ selectedOption: action.input.selectedOption,
14
+ };
12
15
  }
13
16
  else {
14
- state.configuration.push(facet);
17
+ state.configuration.push({
18
+ id: action.input.id,
19
+ categoryKey: action.input.categoryKey,
20
+ categoryLabel: action.input.categoryLabel,
21
+ selectedOption: action.input.selectedOption,
22
+ });
15
23
  }
16
24
  },
17
25
  removeInstanceFacetOperation(state, action) {
18
- const facetIndex = state.configuration.findIndex((f) => f.categoryKey === action.input.categoryKey);
26
+ if (state.status === "ACTIVE") {
27
+ throw new ConfigurationLockedRemoveInstanceFacetError("Cannot modify configuration while instance is ACTIVE");
28
+ }
29
+ const facetIndex = state.configuration.findIndex((c) => c.categoryKey === action.input.categoryKey);
19
30
  if (facetIndex !== -1) {
20
31
  state.configuration.splice(facetIndex, 1);
21
32
  }
22
33
  },
23
34
  updateInstanceFacetOperation(state, action) {
24
- const facet = state.configuration.find((f) => f.categoryKey === action.input.categoryKey);
25
- if (facet) {
26
- if (action.input.selectedOption)
27
- facet.selectedOption = action.input.selectedOption;
28
- if (action.input.categoryLabel)
29
- facet.categoryLabel = action.input.categoryLabel;
35
+ if (state.status === "ACTIVE") {
36
+ throw new ConfigurationLockedUpdateInstanceFacetError("Cannot modify configuration while instance is ACTIVE");
30
37
  }
31
- },
32
- applyConfigurationChangesOperation(state, action) {
33
- // Add new facets
34
- if (action.input.addFacets) {
35
- for (const facetInput of action.input.addFacets) {
36
- const existingIndex = state.configuration.findIndex((f) => f.categoryKey === facetInput.categoryKey);
37
- const facet = {
38
- id: facetInput.id,
39
- categoryKey: facetInput.categoryKey,
40
- categoryLabel: facetInput.categoryLabel,
41
- selectedOption: facetInput.selectedOption,
42
- };
43
- if (existingIndex !== -1) {
44
- state.configuration[existingIndex] = facet;
45
- }
46
- else {
47
- state.configuration.push(facet);
48
- }
38
+ const facetIndex = state.configuration.findIndex((c) => c.categoryKey === action.input.categoryKey);
39
+ if (facetIndex !== -1) {
40
+ if (action.input.selectedOption) {
41
+ state.configuration[facetIndex].selectedOption =
42
+ action.input.selectedOption;
49
43
  }
50
- }
51
- // Update existing facets
52
- if (action.input.updateFacets) {
53
- for (const update of action.input.updateFacets) {
54
- const facet = state.configuration.find((f) => f.categoryKey === update.categoryKey);
55
- if (facet) {
56
- if (update.selectedOption)
57
- facet.selectedOption = update.selectedOption;
58
- if (update.categoryLabel)
59
- facet.categoryLabel = update.categoryLabel;
60
- }
44
+ if (action.input.categoryLabel) {
45
+ state.configuration[facetIndex].categoryLabel =
46
+ action.input.categoryLabel;
61
47
  }
62
48
  }
63
- // Remove facets by key
64
- if (action.input.removeFacetKeys) {
65
- for (const key of action.input.removeFacetKeys) {
66
- const index = state.configuration.findIndex((f) => f.categoryKey === key);
67
- if (index !== -1) {
68
- state.configuration.splice(index, 1);
69
- }
70
- }
49
+ },
50
+ applyConfigurationChangesOperation(state, action) {
51
+ if (state.status === "ACTIVE") {
52
+ throw new ConfigurationLockedApplyConfigurationChangesError("Cannot modify configuration while instance is ACTIVE. Suspend the instance first.");
71
53
  }
54
+ action.input.removeFacetKeys?.forEach((categoryKey) => {
55
+ const index = state.configuration.findIndex((f) => f.categoryKey === categoryKey);
56
+ if (index !== -1)
57
+ state.configuration.splice(index, 1);
58
+ });
59
+ action.input.updateFacets?.forEach((update) => {
60
+ const facet = state.configuration.find((f) => f.categoryKey === update.categoryKey);
61
+ if (facet) {
62
+ if (update.selectedOption)
63
+ facet.selectedOption = update.selectedOption;
64
+ if (update.categoryLabel)
65
+ facet.categoryLabel = update.categoryLabel;
66
+ }
67
+ });
68
+ action.input.addFacets?.forEach((newFacet) => {
69
+ state.configuration.push({
70
+ id: newFacet.id,
71
+ categoryKey: newFacet.categoryKey,
72
+ categoryLabel: newFacet.categoryLabel,
73
+ selectedOption: newFacet.selectedOption,
74
+ });
75
+ });
72
76
  },
73
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"instance-management.d.ts","sourceRoot":"","sources":["../../../../../../document-models/resource-instance/v1/src/reducers/instance-management.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,sEAAsE,CAAC;AAEzI,eAAO,MAAM,4CAA4C,EAAE,4CA4GxD,CAAC"}
1
+ {"version":3,"file":"instance-management.d.ts","sourceRoot":"","sources":["../../../../../../document-models/resource-instance/v1/src/reducers/instance-management.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,sEAAsE,CAAC;AAEzI,eAAO,MAAM,4CAA4C,EAAE,4CAuKxD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { InvalidStatusTransitionError, InvalidStatusTransitionReportProvisioningStartedError, InvalidStatusTransitionReportProvisioningCompletedError, InvalidStatusTransitionReportProvisioningFailedError, InvalidStatusTransitionActivateInstanceError, ProvisioningNotCompletedError, InvalidStatusTransitionSuspendForNonPaymentError, InvalidStatusTransitionSuspendForMaintenanceError, InvalidStatusTransitionResumeAfterPaymentError, InvalidSuspensionTypeError, InvalidStatusTransitionResumeAfterMaintenanceError, InvalidSuspensionTypeResumeAfterMaintenanceError, InvalidStatusTransitionSuspendInstanceError, AlreadyTerminatedError, } from "../../gen/instance-management/error.js";
1
2
  export const resourceInstanceInstanceManagementOperations = {
2
3
  initializeInstanceOperation(state, action) {
3
4
  state.operatorProfile = {
@@ -27,77 +28,112 @@ export const resourceInstanceInstanceManagementOperations = {
27
28
  operatorName: action.input.operatorName || null,
28
29
  };
29
30
  },
31
+ updateInstanceStatusOperation(state, action) {
32
+ state.status = action.input.status;
33
+ },
30
34
  confirmInstanceOperation(state, action) {
35
+ if (state.status !== "DRAFT") {
36
+ throw new InvalidStatusTransitionError("Can only confirm instances in DRAFT status");
37
+ }
38
+ state.status = "PROVISIONING";
31
39
  state.confirmedAt = action.input.confirmedAt;
32
40
  },
33
41
  reportProvisioningStartedOperation(state, action) {
34
- state.status = "PROVISIONING";
42
+ if (state.status !== "PROVISIONING") {
43
+ throw new InvalidStatusTransitionReportProvisioningStartedError("Can only report provisioning started for instances in PROVISIONING status");
44
+ }
35
45
  state.provisioningStartedAt = action.input.startedAt;
36
46
  },
37
47
  reportProvisioningCompletedOperation(state, action) {
48
+ if (state.status !== "PROVISIONING") {
49
+ throw new InvalidStatusTransitionReportProvisioningCompletedError("Can only report provisioning completed for instances in PROVISIONING status");
50
+ }
38
51
  state.provisioningCompletedAt = action.input.completedAt;
39
52
  },
40
53
  reportProvisioningFailedOperation(state, action) {
54
+ if (state.status !== "PROVISIONING") {
55
+ throw new InvalidStatusTransitionReportProvisioningFailedError("Can only report provisioning failed for instances in PROVISIONING status");
56
+ }
41
57
  state.provisioningFailureReason = action.input.failureReason;
58
+ state.status = "DRAFT";
42
59
  },
43
60
  activateInstanceOperation(state, action) {
61
+ if (state.status !== "PROVISIONING") {
62
+ throw new InvalidStatusTransitionActivateInstanceError("Can only activate instances in PROVISIONING status");
63
+ }
64
+ if (!state.provisioningCompletedAt) {
65
+ throw new ProvisioningNotCompletedError("Must report provisioning completed before activating");
66
+ }
44
67
  state.status = "ACTIVE";
45
68
  state.activatedAt = action.input.activatedAt;
46
69
  },
47
70
  suspendForNonPaymentOperation(state, action) {
71
+ if (state.status !== "ACTIVE") {
72
+ throw new InvalidStatusTransitionSuspendForNonPaymentError("Can only suspend ACTIVE instances");
73
+ }
48
74
  state.status = "SUSPENDED";
49
75
  state.suspendedAt = action.input.suspendedAt;
50
76
  state.suspensionType = "NON_PAYMENT";
77
+ state.suspensionReason = "Non-payment";
51
78
  const details = [];
52
- if (action.input.outstandingAmount !== undefined &&
53
- action.input.outstandingAmount !== null) {
79
+ if (action.input.outstandingAmount) {
54
80
  details.push(`Outstanding: ${action.input.outstandingAmount}`);
55
81
  }
56
- if (action.input.daysPastDue !== undefined &&
57
- action.input.daysPastDue !== null) {
82
+ if (action.input.daysPastDue) {
58
83
  details.push(`Days past due: ${action.input.daysPastDue}`);
59
84
  }
60
- state.suspensionDetails = details.length > 0 ? details.join(", ") : null;
61
- state.suspensionReason = "Non-payment";
85
+ state.suspensionDetails = details.join(", ") || null;
62
86
  },
63
87
  suspendForMaintenanceOperation(state, action) {
88
+ if (state.status !== "ACTIVE") {
89
+ throw new InvalidStatusTransitionSuspendForMaintenanceError("Can only suspend ACTIVE instances");
90
+ }
64
91
  state.status = "SUSPENDED";
65
92
  state.suspendedAt = action.input.suspendedAt;
66
93
  state.suspensionType = "MAINTENANCE";
94
+ state.suspensionReason = "Scheduled maintenance";
67
95
  const details = [];
68
- if (action.input.estimatedDuration) {
69
- details.push(`Duration: ${action.input.estimatedDuration}`);
70
- }
71
96
  if (action.input.maintenanceType) {
72
97
  details.push(`Type: ${action.input.maintenanceType}`);
73
98
  }
74
- state.suspensionDetails = details.length > 0 ? details.join(", ") : null;
75
- state.suspensionReason = "Maintenance";
99
+ if (action.input.estimatedDuration) {
100
+ details.push(`Duration: ${action.input.estimatedDuration}`);
101
+ }
102
+ state.suspensionDetails = details.join(", ") || null;
76
103
  },
77
104
  resumeAfterPaymentOperation(state, action) {
105
+ if (state.status !== "SUSPENDED") {
106
+ throw new InvalidStatusTransitionResumeAfterPaymentError("Can only resume SUSPENDED instances");
107
+ }
108
+ if (state.suspensionType !== "NON_PAYMENT") {
109
+ throw new InvalidSuspensionTypeError("This operation is for NON_PAYMENT suspensions only");
110
+ }
78
111
  state.status = "ACTIVE";
79
112
  state.resumedAt = action.input.resumedAt;
80
- state.suspendedAt = null;
81
- state.suspensionType = null;
82
- state.suspensionReason = null;
83
- state.suspensionDetails = null;
84
113
  },
85
114
  resumeAfterMaintenanceOperation(state, action) {
115
+ if (state.status !== "SUSPENDED") {
116
+ throw new InvalidStatusTransitionResumeAfterMaintenanceError("Can only resume SUSPENDED instances");
117
+ }
118
+ if (state.suspensionType !== "MAINTENANCE") {
119
+ throw new InvalidSuspensionTypeResumeAfterMaintenanceError("This operation is for MAINTENANCE suspensions only");
120
+ }
86
121
  state.status = "ACTIVE";
87
122
  state.resumedAt = action.input.resumedAt;
88
- state.suspendedAt = null;
89
- state.suspensionType = null;
90
- state.suspensionReason = null;
91
- state.suspensionDetails = null;
92
123
  },
93
124
  suspendInstanceOperation(state, action) {
125
+ if (state.status !== "ACTIVE") {
126
+ throw new InvalidStatusTransitionSuspendInstanceError("Can only suspend ACTIVE instances");
127
+ }
94
128
  state.status = "SUSPENDED";
95
129
  state.suspendedAt = action.input.suspendedAt;
96
130
  state.suspensionType = "OTHER";
97
131
  state.suspensionReason = action.input.reason || null;
98
- state.suspensionDetails = null;
99
132
  },
100
133
  terminateInstanceOperation(state, action) {
134
+ if (state.status === "TERMINATED") {
135
+ throw new AlreadyTerminatedError("Instance is already terminated and cannot be terminated again");
136
+ }
101
137
  state.status = "TERMINATED";
102
138
  state.terminatedAt = action.input.terminatedAt;
103
139
  state.terminationReason = action.input.reason;
@@ -1,6 +1,6 @@
1
1
  import { generateMock } from "@powerhousedao/common/utils";
2
2
  import { describe, expect, it } from "vitest";
3
- import { reducer, utils, isResourceInstanceDocument, initializeInstance, updateInstanceInfo, setOperatorProfile, confirmInstance, reportProvisioningStarted, reportProvisioningCompleted, reportProvisioningFailed, activateInstance, suspendForNonPayment, suspendForMaintenance, resumeAfterPayment, resumeAfterMaintenance, suspendInstance, terminateInstance, InitializeInstanceInputSchema, UpdateInstanceInfoInputSchema, SetOperatorProfileInputSchema, ConfirmInstanceInputSchema, ReportProvisioningStartedInputSchema, ReportProvisioningCompletedInputSchema, ReportProvisioningFailedInputSchema, ActivateInstanceInputSchema, SuspendForNonPaymentInputSchema, SuspendForMaintenanceInputSchema, ResumeAfterPaymentInputSchema, ResumeAfterMaintenanceInputSchema, SuspendInstanceInputSchema, TerminateInstanceInputSchema, } from "@powerhousedao/service-offering/document-models/resource-instance/v1";
3
+ import { reducer, utils, isResourceInstanceDocument, initializeInstance, updateInstanceInfo, setOperatorProfile, updateInstanceStatus, confirmInstance, reportProvisioningStarted, reportProvisioningCompleted, reportProvisioningFailed, activateInstance, suspendForNonPayment, suspendForMaintenance, resumeAfterPayment, resumeAfterMaintenance, suspendInstance, terminateInstance, InitializeInstanceInputSchema, UpdateInstanceInfoInputSchema, SetOperatorProfileInputSchema, UpdateInstanceStatusInputSchema, ConfirmInstanceInputSchema, ReportProvisioningStartedInputSchema, ReportProvisioningCompletedInputSchema, ReportProvisioningFailedInputSchema, ActivateInstanceInputSchema, SuspendForNonPaymentInputSchema, SuspendForMaintenanceInputSchema, ResumeAfterPaymentInputSchema, ResumeAfterMaintenanceInputSchema, SuspendInstanceInputSchema, TerminateInstanceInputSchema, } from "@powerhousedao/service-offering/document-models/resource-instance/v1";
4
4
  describe("InstanceManagementOperations", () => {
5
5
  it("should handle initializeInstance operation", () => {
6
6
  const document = utils.createDocument();
@@ -32,6 +32,16 @@ describe("InstanceManagementOperations", () => {
32
32
  expect(updatedDocument.operations.global[0].action.input).toStrictEqual(input);
33
33
  expect(updatedDocument.operations.global[0].index).toEqual(0);
34
34
  });
35
+ it("should handle updateInstanceStatus operation", () => {
36
+ const document = utils.createDocument();
37
+ const input = generateMock(UpdateInstanceStatusInputSchema());
38
+ const updatedDocument = reducer(document, updateInstanceStatus(input));
39
+ expect(isResourceInstanceDocument(updatedDocument)).toBe(true);
40
+ expect(updatedDocument.operations.global).toHaveLength(1);
41
+ expect(updatedDocument.operations.global[0].action.type).toBe("UPDATE_INSTANCE_STATUS");
42
+ expect(updatedDocument.operations.global[0].action.input).toStrictEqual(input);
43
+ expect(updatedDocument.operations.global[0].index).toEqual(0);
44
+ });
35
45
  it("should handle confirmInstance operation", () => {
36
46
  const document = utils.createDocument();
37
47
  const input = generateMock(ConfirmInstanceInputSchema());
@@ -28,7 +28,9 @@ export declare const actions: {
28
28
  updateTemplateStatus: (input: import("./index.js").UpdateTemplateStatusInput) => import("./index.js").UpdateTemplateStatusAction;
29
29
  setOperator: (input: import("./index.js").SetOperatorInput) => import("./index.js").SetOperatorAction;
30
30
  setTemplateId: (input: import("./index.js").SetTemplateIdInput) => import("./index.js").SetTemplateIdAction;
31
- setName: (name: string) => import("document-model").SetNameAction;
31
+ setName: (name: string | {
32
+ name: string;
33
+ }) => import("document-model").SetNameAction;
32
34
  undo: (count?: number, scope?: string) => import("document-model").UndoAction;
33
35
  redo: (count?: number, scope?: string) => import("document-model").RedoAction;
34
36
  prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../document-models/resource-template/v1/actions.ts"],"names":[],"mappings":"AAWA,sDAAsD;AAEtD,eAAO,MAAM,OAAO;wBAOV,kDACN;2BAE4J,qDAAgC;2BAA8M,qDAAgC;6BAAgN,uDAAkC;qBAAnnB,+CAA0B;wBAAyL,kDAA6B;wBAAkM,kDAA6B;aAAuL,uCAAkB;gBAAwJ,0CAAqB;gBAAiK,0CAAqB;kBAAmK,4CAAuB;iBAH3tC,2CAAsB;oBAG4F,8CAAyB;oBAAiL,8CAAyB;sBAAmL,gDAA2B;yBAA6L,mDAA8B;uBAVpvB,iDAEf;2BAMA,qDAA6B;qBAHL,+CACb;wBAI8E,kDAA6B;qBAA+L,+CAA0B;wBAAyL,kDAA6B;wBAVlhB,kDAEd;2BAMA,qDACN;yBAJ6B,mDACT;2BAI6F,qDAAgC;kBAAqM,4CAAuB;oBAA2K,8CAAyB;;gBAAm9L,CAAC,eAAe,CAAC;gBAAkE,CAAC,eAAe,CAAC;iBAAmE,CAAC,aAAa,CAAC,eAAe,CAAC;;;;gBAAqS,CAAC;CADh/N,CAAC"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../document-models/resource-template/v1/actions.ts"],"names":[],"mappings":"AAWA,sDAAsD;AAEtD,eAAO,MAAM,OAAO;wBAOV,kDACN;2BAE4J,qDAAgC;2BAA8M,qDAAgC;6BAAgN,uDAAkC;qBAAnnB,+CAA0B;wBAAyL,kDAA6B;wBAAkM,kDAA6B;aAAuL,uCAAkB;gBAAwJ,0CAAqB;gBAAiK,0CAAqB;kBAAmK,4CAAuB;iBAH3tC,2CAAsB;oBAG4F,8CAAyB;oBAAiL,8CAAyB;sBAAmL,gDAA2B;yBAA6L,mDAA8B;uBAVpvB,iDAEf;2BAMA,qDAA6B;qBAHL,+CACb;wBAI8E,kDAA6B;qBAA+L,+CAA0B;wBAAyL,kDAA6B;wBAVlhB,kDAEd;2BAMA,qDACN;yBAJ6B,mDACT;2BAI6F,qDAAgC;kBAAqM,4CAAuB;oBAA2K,8CAAyB;;;;gBAA2gM,CAAC,eAAe,CAAC;gBAAkE,CAAC,eAAe,CAAC;iBAAmE,CAAC,aAAa,CAAC,eAAe,CAAC;;;;gBAAqS,CAAC;CADxiO,CAAC"}
@@ -1,2 +1,21 @@
1
- export declare const errors: {};
1
+ export type ErrorCode = "DuplicateAudienceIdError" | "AudienceNotFoundError";
2
+ export interface ReducerError {
3
+ errorCode: ErrorCode;
4
+ }
5
+ export declare class DuplicateAudienceIdError extends Error implements ReducerError {
6
+ errorCode: ErrorCode;
7
+ constructor(message?: string);
8
+ }
9
+ export declare class AudienceNotFoundError extends Error implements ReducerError {
10
+ errorCode: ErrorCode;
11
+ constructor(message?: string);
12
+ }
13
+ export declare const errors: {
14
+ AddTargetAudience: {
15
+ DuplicateAudienceIdError: typeof DuplicateAudienceIdError;
16
+ };
17
+ RemoveTargetAudience: {
18
+ AudienceNotFoundError: typeof AudienceNotFoundError;
19
+ };
20
+ };
2
21
  //# sourceMappingURL=error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../../../document-models/resource-template/v1/gen/audience-management/error.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,IAAK,CAAC"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../../../document-models/resource-template/v1/gen/audience-management/error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,0BAA0B,GAAG,uBAAuB,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,qBAAa,wBAAyB,SAAQ,KAAM,YAAW,YAAY;IACzE,SAAS,EAAiC,SAAS,CAAC;gBACxC,OAAO,SAA6B;CAGjD;AAED,qBAAa,qBAAsB,SAAQ,KAAM,YAAW,YAAY;IACtE,SAAS,EAA8B,SAAS,CAAC;gBACrC,OAAO,SAA0B;CAG9C;AAED,eAAO,MAAM,MAAM;;;;;;;CAGlB,CAAC"}
@@ -1 +1,16 @@
1
- export const errors = {};
1
+ export class DuplicateAudienceIdError extends Error {
2
+ errorCode = "DuplicateAudienceIdError";
3
+ constructor(message = "DuplicateAudienceIdError") {
4
+ super(message);
5
+ }
6
+ }
7
+ export class AudienceNotFoundError extends Error {
8
+ errorCode = "AudienceNotFoundError";
9
+ constructor(message = "AudienceNotFoundError") {
10
+ super(message);
11
+ }
12
+ }
13
+ export const errors = {
14
+ AddTargetAudience: { DuplicateAudienceIdError },
15
+ RemoveTargetAudience: { AudienceNotFoundError },
16
+ };
@@ -0,0 +1,4 @@
1
+ import { PHDocumentController } from "document-model/core";
2
+ import type { ResourceTemplateAction, ResourceTemplatePHState } from "./types.js";
3
+ export declare const ResourceTemplateController: new (initialDocument?: import("document-model").PHDocument<ResourceTemplatePHState> | undefined) => PHDocumentController<ResourceTemplatePHState> & import("document-model/core").ActionMap<ResourceTemplateAction, PHDocumentController<ResourceTemplatePHState>>;
4
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../document-models/resource-template/v1/gen/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,0BAA0B,oQAGpB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PHDocumentController } from "document-model/core";
2
+ import { ResourceTemplate } from "../module.js";
3
+ export const ResourceTemplateController = PHDocumentController.forDocumentModel(ResourceTemplate);
@@ -1 +1 @@
1
- {"version":3,"file":"document-model.d.ts","sourceRoot":"","sources":["../../../../../document-models/resource-template/v1/gen/document-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,eAAO,MAAM,aAAa,EAAE,wBA4b3B,CAAC"}
1
+ {"version":3,"file":"document-model.d.ts","sourceRoot":"","sources":["../../../../../document-models/resource-template/v1/gen/document-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,eAAO,MAAM,aAAa,EAAE,wBA0jB3B,CAAC"}