@incident-io/pulumi 0.1.0-alpha.1

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 (279) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +69 -0
  3. package/alertAttribute.d.ts +230 -0
  4. package/alertAttribute.d.ts.map +1 -0
  5. package/alertAttribute.js +219 -0
  6. package/alertAttribute.js.map +1 -0
  7. package/alertRoute.d.ts +511 -0
  8. package/alertRoute.d.ts.map +1 -0
  9. package/alertRoute.js +432 -0
  10. package/alertRoute.js.map +1 -0
  11. package/alertSource.d.ts +347 -0
  12. package/alertSource.d.ts.map +1 -0
  13. package/alertSource.js +241 -0
  14. package/alertSource.js.map +1 -0
  15. package/alertSourceAttribute.d.ts +180 -0
  16. package/alertSourceAttribute.d.ts.map +1 -0
  17. package/alertSourceAttribute.js +107 -0
  18. package/alertSourceAttribute.js.map +1 -0
  19. package/alertSourceAttributeBeta.d.ts +188 -0
  20. package/alertSourceAttributeBeta.d.ts.map +1 -0
  21. package/alertSourceAttributeBeta.js +115 -0
  22. package/alertSourceAttributeBeta.js.map +1 -0
  23. package/alertSourceBeta.d.ts +244 -0
  24. package/alertSourceBeta.d.ts.map +1 -0
  25. package/alertSourceBeta.js +138 -0
  26. package/alertSourceBeta.js.map +1 -0
  27. package/apiKey.d.ts +276 -0
  28. package/apiKey.d.ts.map +1 -0
  29. package/apiKey.js +211 -0
  30. package/apiKey.js.map +1 -0
  31. package/catalogEntries.d.ts +241 -0
  32. package/catalogEntries.d.ts.map +1 -0
  33. package/catalogEntries.js +242 -0
  34. package/catalogEntries.js.map +1 -0
  35. package/catalogEntry.d.ts +183 -0
  36. package/catalogEntry.d.ts.map +1 -0
  37. package/catalogEntry.js +159 -0
  38. package/catalogEntry.js.map +1 -0
  39. package/catalogType.d.ts +169 -0
  40. package/catalogType.d.ts.map +1 -0
  41. package/catalogType.js +132 -0
  42. package/catalogType.js.map +1 -0
  43. package/catalogTypeAttribute.d.ts +190 -0
  44. package/catalogTypeAttribute.d.ts.map +1 -0
  45. package/catalogTypeAttribute.js +153 -0
  46. package/catalogTypeAttribute.js.map +1 -0
  47. package/config/index.d.ts +2 -0
  48. package/config/index.d.ts.map +1 -0
  49. package/config/index.js +21 -0
  50. package/config/index.js.map +1 -0
  51. package/config/vars.d.ts +13 -0
  52. package/config/vars.d.ts.map +1 -0
  53. package/config/vars.js +49 -0
  54. package/config/vars.js.map +1 -0
  55. package/customField.d.ts +260 -0
  56. package/customField.d.ts.map +1 -0
  57. package/customField.js +226 -0
  58. package/customField.js.map +1 -0
  59. package/customFieldOption.d.ts +107 -0
  60. package/customFieldOption.d.ts.map +1 -0
  61. package/customFieldOption.js +116 -0
  62. package/customFieldOption.js.map +1 -0
  63. package/escalationPath.d.ts +257 -0
  64. package/escalationPath.d.ts.map +1 -0
  65. package/escalationPath.js +228 -0
  66. package/escalationPath.js.map +1 -0
  67. package/escalationPathBeta.d.ts +134 -0
  68. package/escalationPathBeta.d.ts.map +1 -0
  69. package/escalationPathBeta.js +105 -0
  70. package/escalationPathBeta.js.map +1 -0
  71. package/getAlertAttribute.d.ts +81 -0
  72. package/getAlertAttribute.d.ts.map +1 -0
  73. package/getAlertAttribute.js +75 -0
  74. package/getAlertAttribute.js.map +1 -0
  75. package/getAlertSource.d.ts +169 -0
  76. package/getAlertSource.d.ts.map +1 -0
  77. package/getAlertSource.js +103 -0
  78. package/getAlertSource.js.map +1 -0
  79. package/getAlertSourceAttribute.d.ts +131 -0
  80. package/getAlertSourceAttribute.d.ts.map +1 -0
  81. package/getAlertSourceAttribute.js +85 -0
  82. package/getAlertSourceAttribute.js.map +1 -0
  83. package/getAlertSourceAttributeBeta.d.ts +131 -0
  84. package/getAlertSourceAttributeBeta.d.ts.map +1 -0
  85. package/getAlertSourceAttributeBeta.js +85 -0
  86. package/getAlertSourceAttributeBeta.js.map +1 -0
  87. package/getApiKey.d.ts +167 -0
  88. package/getApiKey.d.ts.map +1 -0
  89. package/getApiKey.js +145 -0
  90. package/getApiKey.js.map +1 -0
  91. package/getCatalogEntry.d.ts +77 -0
  92. package/getCatalogEntry.d.ts.map +1 -0
  93. package/getCatalogEntry.js +59 -0
  94. package/getCatalogEntry.js.map +1 -0
  95. package/getCatalogType.d.ts +163 -0
  96. package/getCatalogType.d.ts.map +1 -0
  97. package/getCatalogType.js +135 -0
  98. package/getCatalogType.js.map +1 -0
  99. package/getCatalogTypeAttribute.d.ts +73 -0
  100. package/getCatalogTypeAttribute.d.ts.map +1 -0
  101. package/getCatalogTypeAttribute.js +53 -0
  102. package/getCatalogTypeAttribute.js.map +1 -0
  103. package/getCustomField.d.ts +67 -0
  104. package/getCustomField.d.ts.map +1 -0
  105. package/getCustomField.js +51 -0
  106. package/getCustomField.js.map +1 -0
  107. package/getCustomFieldOption.d.ts +65 -0
  108. package/getCustomFieldOption.d.ts.map +1 -0
  109. package/getCustomFieldOption.js +55 -0
  110. package/getCustomFieldOption.js.map +1 -0
  111. package/getEscalationPath.d.ts +100 -0
  112. package/getEscalationPath.d.ts.map +1 -0
  113. package/getEscalationPath.js +83 -0
  114. package/getEscalationPath.js.map +1 -0
  115. package/getEscalationPathBeta.d.ts +100 -0
  116. package/getEscalationPathBeta.d.ts.map +1 -0
  117. package/getEscalationPathBeta.js +83 -0
  118. package/getEscalationPathBeta.js.map +1 -0
  119. package/getIncidentRole.d.ts +111 -0
  120. package/getIncidentRole.d.ts.map +1 -0
  121. package/getIncidentRole.js +105 -0
  122. package/getIncidentRole.js.map +1 -0
  123. package/getIncidentTemplate.d.ts +98 -0
  124. package/getIncidentTemplate.d.ts.map +1 -0
  125. package/getIncidentTemplate.js +95 -0
  126. package/getIncidentTemplate.js.map +1 -0
  127. package/getIncidentTimestamp.d.ts +107 -0
  128. package/getIncidentTimestamp.d.ts.map +1 -0
  129. package/getIncidentTimestamp.js +109 -0
  130. package/getIncidentTimestamp.js.map +1 -0
  131. package/getIncidentType.d.ts +121 -0
  132. package/getIncidentType.d.ts.map +1 -0
  133. package/getIncidentType.js +107 -0
  134. package/getIncidentType.js.map +1 -0
  135. package/getIpAllowlist.d.ts +62 -0
  136. package/getIpAllowlist.d.ts.map +1 -0
  137. package/getIpAllowlist.js +77 -0
  138. package/getIpAllowlist.js.map +1 -0
  139. package/getPolicy.d.ts +97 -0
  140. package/getPolicy.d.ts.map +1 -0
  141. package/getPolicy.js +91 -0
  142. package/getPolicy.js.map +1 -0
  143. package/getRichText.d.ts +111 -0
  144. package/getRichText.d.ts.map +1 -0
  145. package/getRichText.js +107 -0
  146. package/getRichText.js.map +1 -0
  147. package/getSchedule.d.ts +89 -0
  148. package/getSchedule.d.ts.map +1 -0
  149. package/getSchedule.js +87 -0
  150. package/getSchedule.js.map +1 -0
  151. package/getScheduleBeta.d.ts +85 -0
  152. package/getScheduleBeta.d.ts.map +1 -0
  153. package/getScheduleBeta.js +83 -0
  154. package/getScheduleBeta.js.map +1 -0
  155. package/getScheduleReplica.d.ts +116 -0
  156. package/getScheduleReplica.d.ts.map +1 -0
  157. package/getScheduleReplica.js +79 -0
  158. package/getScheduleReplica.js.map +1 -0
  159. package/getScheduleRotation.d.ts +166 -0
  160. package/getScheduleRotation.d.ts.map +1 -0
  161. package/getScheduleRotation.js +127 -0
  162. package/getScheduleRotation.js.map +1 -0
  163. package/getScheduleRotationBeta.d.ts +122 -0
  164. package/getScheduleRotationBeta.d.ts.map +1 -0
  165. package/getScheduleRotationBeta.js +83 -0
  166. package/getScheduleRotationBeta.js.map +1 -0
  167. package/getScheduleSyncRule.d.ts +91 -0
  168. package/getScheduleSyncRule.d.ts.map +1 -0
  169. package/getScheduleSyncRule.js +79 -0
  170. package/getScheduleSyncRule.js.map +1 -0
  171. package/getScheduleSyncTarget.d.ts +100 -0
  172. package/getScheduleSyncTarget.d.ts.map +1 -0
  173. package/getScheduleSyncTarget.js +93 -0
  174. package/getScheduleSyncTarget.js.map +1 -0
  175. package/getSecret.d.ts +115 -0
  176. package/getSecret.d.ts.map +1 -0
  177. package/getSecret.js +97 -0
  178. package/getSecret.js.map +1 -0
  179. package/getSeverity.d.ts +117 -0
  180. package/getSeverity.d.ts.map +1 -0
  181. package/getSeverity.js +115 -0
  182. package/getSeverity.js.map +1 -0
  183. package/getStatus.d.ts +125 -0
  184. package/getStatus.d.ts.map +1 -0
  185. package/getStatus.js +119 -0
  186. package/getStatus.js.map +1 -0
  187. package/getUser.d.ts +52 -0
  188. package/getUser.d.ts.map +1 -0
  189. package/getUser.js +61 -0
  190. package/getUser.js.map +1 -0
  191. package/getWorkflow.d.ts +103 -0
  192. package/getWorkflow.d.ts.map +1 -0
  193. package/getWorkflow.js +77 -0
  194. package/getWorkflow.js.map +1 -0
  195. package/incidentRole.d.ts +109 -0
  196. package/incidentRole.d.ts.map +1 -0
  197. package/incidentRole.js +111 -0
  198. package/incidentRole.js.map +1 -0
  199. package/incidentTemplate.d.ts +200 -0
  200. package/incidentTemplate.d.ts.map +1 -0
  201. package/incidentTemplate.js +207 -0
  202. package/incidentTemplate.js.map +1 -0
  203. package/index.d.ts +188 -0
  204. package/index.d.ts.map +1 -0
  205. package/index.js +303 -0
  206. package/index.js.map +1 -0
  207. package/maintenanceWindow.d.ts +255 -0
  208. package/maintenanceWindow.d.ts.map +1 -0
  209. package/maintenanceWindow.js +148 -0
  210. package/maintenanceWindow.js.map +1 -0
  211. package/package.json +33 -0
  212. package/policy.d.ts +476 -0
  213. package/policy.d.ts.map +1 -0
  214. package/policy.js +387 -0
  215. package/policy.js.map +1 -0
  216. package/provider.d.ts +62 -0
  217. package/provider.d.ts.map +1 -0
  218. package/provider.js +80 -0
  219. package/provider.js.map +1 -0
  220. package/schedule.d.ts +120 -0
  221. package/schedule.d.ts.map +1 -0
  222. package/schedule.js +114 -0
  223. package/schedule.js.map +1 -0
  224. package/scheduleBeta.d.ts +104 -0
  225. package/scheduleBeta.d.ts.map +1 -0
  226. package/scheduleBeta.js +98 -0
  227. package/scheduleBeta.js.map +1 -0
  228. package/scheduleReplica.d.ts +178 -0
  229. package/scheduleReplica.d.ts.map +1 -0
  230. package/scheduleReplica.js +134 -0
  231. package/scheduleReplica.js.map +1 -0
  232. package/scheduleRotation.d.ts +287 -0
  233. package/scheduleRotation.d.ts.map +1 -0
  234. package/scheduleRotation.js +224 -0
  235. package/scheduleRotation.js.map +1 -0
  236. package/scheduleRotationBeta.d.ts +184 -0
  237. package/scheduleRotationBeta.d.ts.map +1 -0
  238. package/scheduleRotationBeta.js +121 -0
  239. package/scheduleRotationBeta.js.map +1 -0
  240. package/scheduleSyncRule.d.ts +154 -0
  241. package/scheduleSyncRule.d.ts.map +1 -0
  242. package/scheduleSyncRule.js +146 -0
  243. package/scheduleSyncRule.js.map +1 -0
  244. package/scheduleSyncTarget.d.ts +108 -0
  245. package/scheduleSyncTarget.d.ts.map +1 -0
  246. package/scheduleSyncTarget.js +106 -0
  247. package/scheduleSyncTarget.js.map +1 -0
  248. package/secret.d.ts +276 -0
  249. package/secret.d.ts.map +1 -0
  250. package/secret.js +234 -0
  251. package/secret.js.map +1 -0
  252. package/severity.d.ts +96 -0
  253. package/severity.d.ts.map +1 -0
  254. package/severity.js +102 -0
  255. package/severity.js.map +1 -0
  256. package/status.d.ts +121 -0
  257. package/status.d.ts.map +1 -0
  258. package/status.js +120 -0
  259. package/status.js.map +1 -0
  260. package/types/index.d.ts +4 -0
  261. package/types/index.d.ts.map +1 -0
  262. package/types/index.js +34 -0
  263. package/types/index.js.map +1 -0
  264. package/types/input.d.ts +23630 -0
  265. package/types/input.d.ts.map +1 -0
  266. package/types/input.js +5 -0
  267. package/types/input.js.map +1 -0
  268. package/types/output.d.ts +19726 -0
  269. package/types/output.d.ts.map +1 -0
  270. package/types/output.js +5 -0
  271. package/types/output.js.map +1 -0
  272. package/utilities.d.ts +5 -0
  273. package/utilities.d.ts.map +1 -0
  274. package/utilities.js +114 -0
  275. package/utilities.js.map +1 -0
  276. package/workflow.d.ts +736 -0
  277. package/workflow.d.ts.map +1 -0
  278. package/workflow.js +608 -0
  279. package/workflow.js.map +1 -0
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.MaintenanceWindow = void 0;
29
+ const pulumi = __importStar(require("@pulumi/pulumi"));
30
+ const utilities = __importStar(require("./utilities"));
31
+ /**
32
+ * Manage maintenance windows for temporarily overriding alert routing during planned maintenance.
33
+ *
34
+ * Maintenance windows allow you to suppress or redirect alerts during scheduled maintenance periods, preventing unnecessary escalations and noise.
35
+ *
36
+ * ## Example Usage
37
+ *
38
+ * ```typescript
39
+ * import * as pulumi from "@pulumi/pulumi";
40
+ * import * as incident from "@incident-io/pulumi";
41
+ *
42
+ * const opsLead = incident.getUser({
43
+ * email: "ops-lead@example.com",
44
+ * });
45
+ * const example = new incident.MaintenanceWindow("example", {
46
+ * name: "Scheduled Database Migration",
47
+ * startAt: "2026-04-01T02:00:00Z",
48
+ * endAt: "2026-04-01T06:00:00Z",
49
+ * leadId: opsLead.then(opsLead => opsLead.id),
50
+ * showInSidebar: true,
51
+ * resolveOnEnd: true,
52
+ * rerouteOnEnd: false,
53
+ * alertConditionGroups: [{
54
+ * conditions: [{
55
+ * subject: "alert.title",
56
+ * operation: "contains",
57
+ * paramBindings: [{
58
+ * value: {
59
+ * literal: "database",
60
+ * },
61
+ * }],
62
+ * }],
63
+ * }],
64
+ * });
65
+ * ```
66
+ */
67
+ class MaintenanceWindow extends pulumi.CustomResource {
68
+ /**
69
+ * Get an existing MaintenanceWindow resource's state with the given name, ID, and optional extra
70
+ * properties used to qualify the lookup.
71
+ *
72
+ * @param name The _unique_ name of the resulting resource.
73
+ * @param id The _unique_ provider ID of the resource to lookup.
74
+ * @param state Any extra arguments used during the lookup.
75
+ * @param opts Optional settings to control the behavior of the CustomResource.
76
+ */
77
+ static get(name, id, state, opts) {
78
+ return new MaintenanceWindow(name, state, { ...opts, id: id });
79
+ }
80
+ /** @internal */
81
+ static __pulumiType = 'incident:index/maintenanceWindow:MaintenanceWindow';
82
+ /**
83
+ * Returns true if the given object is an instance of MaintenanceWindow. This is designed to work even
84
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
85
+ */
86
+ static isInstance(obj) {
87
+ if (obj === undefined || obj === null) {
88
+ return false;
89
+ }
90
+ return obj['__pulumiType'] === MaintenanceWindow.__pulumiType;
91
+ }
92
+ constructor(name, argsOrState, opts) {
93
+ let resourceInputs = {};
94
+ opts = opts || {};
95
+ if (opts.id) {
96
+ const state = argsOrState;
97
+ resourceInputs["alertConditionGroups"] = state?.alertConditionGroups;
98
+ resourceInputs["endAt"] = state?.endAt;
99
+ resourceInputs["escalationTargets"] = state?.escalationTargets;
100
+ resourceInputs["forceDestroy"] = state?.forceDestroy;
101
+ resourceInputs["incidentId"] = state?.incidentId;
102
+ resourceInputs["leadId"] = state?.leadId;
103
+ resourceInputs["name"] = state?.name;
104
+ resourceInputs["notificationMessage"] = state?.notificationMessage;
105
+ resourceInputs["notifyChannels"] = state?.notifyChannels;
106
+ resourceInputs["notifyEndMinutesBefore"] = state?.notifyEndMinutesBefore;
107
+ resourceInputs["notifyStartMinutesBefore"] = state?.notifyStartMinutesBefore;
108
+ resourceInputs["rerouteOnEnd"] = state?.rerouteOnEnd;
109
+ resourceInputs["resolveOnEnd"] = state?.resolveOnEnd;
110
+ resourceInputs["showInSidebar"] = state?.showInSidebar;
111
+ resourceInputs["startAt"] = state?.startAt;
112
+ }
113
+ else {
114
+ const args = argsOrState;
115
+ if (args?.alertConditionGroups === undefined && !opts.urn) {
116
+ throw new Error("Missing required property 'alertConditionGroups'");
117
+ }
118
+ if (args?.endAt === undefined && !opts.urn) {
119
+ throw new Error("Missing required property 'endAt'");
120
+ }
121
+ if (args?.leadId === undefined && !opts.urn) {
122
+ throw new Error("Missing required property 'leadId'");
123
+ }
124
+ if (args?.startAt === undefined && !opts.urn) {
125
+ throw new Error("Missing required property 'startAt'");
126
+ }
127
+ resourceInputs["alertConditionGroups"] = args?.alertConditionGroups;
128
+ resourceInputs["endAt"] = args?.endAt;
129
+ resourceInputs["escalationTargets"] = args?.escalationTargets;
130
+ resourceInputs["forceDestroy"] = args?.forceDestroy;
131
+ resourceInputs["incidentId"] = args?.incidentId;
132
+ resourceInputs["leadId"] = args?.leadId;
133
+ resourceInputs["name"] = args?.name;
134
+ resourceInputs["notificationMessage"] = args?.notificationMessage;
135
+ resourceInputs["notifyChannels"] = args?.notifyChannels;
136
+ resourceInputs["notifyEndMinutesBefore"] = args?.notifyEndMinutesBefore;
137
+ resourceInputs["notifyStartMinutesBefore"] = args?.notifyStartMinutesBefore;
138
+ resourceInputs["rerouteOnEnd"] = args?.rerouteOnEnd;
139
+ resourceInputs["resolveOnEnd"] = args?.resolveOnEnd;
140
+ resourceInputs["showInSidebar"] = args?.showInSidebar;
141
+ resourceInputs["startAt"] = args?.startAt;
142
+ }
143
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
144
+ super(MaintenanceWindow.__pulumiType, name, resourceInputs, opts);
145
+ }
146
+ }
147
+ exports.MaintenanceWindow = MaintenanceWindow;
148
+ //# sourceMappingURL=maintenanceWindow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenanceWindow.js","sourceRoot":"","sources":["../maintenanceWindow.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@incident-io/pulumi",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "A Pulumi package for managing incident.io resources.",
5
+ "keywords": [
6
+ "pulumi",
7
+ "incident",
8
+ "incident-io",
9
+ "category/cloud"
10
+ ],
11
+ "homepage": "https://incident.io",
12
+ "repository": "https://github.com/incident-io/pulumi-incident",
13
+ "license": "MIT",
14
+ "scripts": {
15
+ "build": "tsc"
16
+ },
17
+ "dependencies": {
18
+ "@pulumi/pulumi": "^3.142.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^20",
22
+ "typescript": "^4.7.0"
23
+ },
24
+ "pulumi": {
25
+ "resource": true,
26
+ "name": "incident",
27
+ "version": "0.1.0-alpha.1",
28
+ "server": "github://api.github.com/incident-io/pulumi-incident"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ }
33
+ }
package/policy.d.ts ADDED
@@ -0,0 +1,476 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "./types/input";
3
+ import * as outputs from "./types/output";
4
+ /**
5
+ * Manage the policies that encode how your organisation should handle incidents.
6
+ *
7
+ * A policy scopes itself to a set of resources with `conditionGroups`, states the
8
+ * requirements those resources must meet, and describes who to chase when they fall short.
9
+ *
10
+ * `policyType` selects exactly one matching config block: a `followUp` policy
11
+ * carries `followUp` config, a `schedule` policy carries `schedule`
12
+ * config, and so on. A `vacationConflict` policy has no configuration of its own and
13
+ * so carries no block.
14
+ *
15
+ * ## Example - Require a post-mortem within five working days
16
+ *
17
+ * ```typescript
18
+ * import * as pulumi from "@pulumi/pulumi";
19
+ * import * as incident from "@incident-io/pulumi";
20
+ *
21
+ * // The person to chase when a post-mortem falls due. Assignees can also be a
22
+ * // reference, such as the incident lead; see `assignment_rules.bindings`.
23
+ * const postmortemOwner = incident.getUser({
24
+ * email: "quality@example.com",
25
+ * });
26
+ * // Look the timestamp up by name rather than pinning an ID, which differs between
27
+ * // organisations.
28
+ * const closed = incident.getIncidentTimestamp({
29
+ * name: "Closed at",
30
+ * });
31
+ * // A post-mortem policy: which incidents it covers, what they must satisfy, and
32
+ * // when that falls due.
33
+ * //
34
+ * // There is no policy_type attribute to set. The post_mortem block below is what
35
+ * // makes this a post-mortem policy, and policy_type is computed from it.
36
+ * const postmortems = new incident.Policy("postmortems", {
37
+ * name: "Post-mortems within 5 working days",
38
+ * description: "Major and above incidents need a post-mortem once they close.",
39
+ * conditionGroups: [{
40
+ * conditions: [{
41
+ * subject: "incident.severity",
42
+ * operation: "gte",
43
+ * paramBindings: [{
44
+ * valueLiteral: "01FCNDV6P870EA6S7TK1DSYD5H",
45
+ * }],
46
+ * }],
47
+ * }],
48
+ * assignmentRules: {
49
+ * bindings: [{
50
+ * valueLiteral: postmortemOwner.then(postmortemOwner => postmortemOwner.id),
51
+ * }],
52
+ * reminderDueDateOffsetHours: [
53
+ * -24,
54
+ * 0,
55
+ * 24,
56
+ * ],
57
+ * },
58
+ * postMortem: {
59
+ * requirements: [{
60
+ * conditions: [{
61
+ * subject: "post_mortem.status",
62
+ * operation: "one_of",
63
+ * paramBindings: [{
64
+ * values: ["complete"],
65
+ * }],
66
+ * }],
67
+ * }],
68
+ * dueDateConfig: {
69
+ * incidentTimestampId: closed.then(closed => closed.id),
70
+ * days: {
71
+ * valueLiteral: "5",
72
+ * },
73
+ * calculationType: "weekdays",
74
+ * },
75
+ * },
76
+ * });
77
+ * ```
78
+ *
79
+ * ## Example - Action follow-ups within 30 days
80
+ *
81
+ * ```typescript
82
+ * import * as pulumi from "@pulumi/pulumi";
83
+ * import * as incident from "@incident-io/pulumi";
84
+ *
85
+ * // Who to chase when a follow-up is overdue.
86
+ * const followupsOwner = incident.getUser({
87
+ * email: "engineering-manager@example.com",
88
+ * });
89
+ * const followupsClosed = incident.getIncidentTimestamp({
90
+ * name: "Closed at",
91
+ * });
92
+ * // A follow-up policy: the follow-ups left behind by an incident have to be dealt
93
+ * // with, rather than sitting open indefinitely.
94
+ * const followUps = new incident.Policy("follow_ups", {
95
+ * name: "Follow-ups actioned within 30 days",
96
+ * description: "Follow-ups from an incident shouldn't be left open once it closes.",
97
+ * conditionGroups: [],
98
+ * assignmentRules: {
99
+ * bindings: [{
100
+ * valueLiteral: followupsOwner.then(followupsOwner => followupsOwner.id),
101
+ * }],
102
+ * reminderDueDateOffsetHours: [
103
+ * -24,
104
+ * 24,
105
+ * ],
106
+ * reminderCadenceBefore: {
107
+ * interval: "weekly",
108
+ * },
109
+ * reminderCadenceAfter: {
110
+ * interval: "daily",
111
+ * },
112
+ * },
113
+ * followUp: {
114
+ * requirements: [{
115
+ * conditions: [{
116
+ * subject: "follow_up.status",
117
+ * operation: "not_one_of",
118
+ * paramBindings: [{
119
+ * values: ["open"],
120
+ * }],
121
+ * }],
122
+ * }],
123
+ * dueDateConfig: {
124
+ * incidentTimestampId: followupsClosed.then(followupsClosed => followupsClosed.id),
125
+ * days: {
126
+ * valueLiteral: "30",
127
+ * },
128
+ * calculationType: "seven_days",
129
+ * },
130
+ * },
131
+ * });
132
+ * ```
133
+ *
134
+ * ## Example - Book a debrief for major incidents
135
+ *
136
+ * ```typescript
137
+ * import * as pulumi from "@pulumi/pulumi";
138
+ * import * as incident from "@incident-io/pulumi";
139
+ *
140
+ * const debriefsOwner = incident.getUser({
141
+ * email: "incident-manager@example.com",
142
+ * });
143
+ * const debriefsClosed = incident.getIncidentTimestamp({
144
+ * name: "Closed at",
145
+ * });
146
+ * // A debrief policy: major incidents need a debrief booked in, not just promised.
147
+ * //
148
+ * // This one scopes itself with condition_groups rather than applying to every
149
+ * // incident, so only the incidents that warrant a debrief are held to it.
150
+ * const debriefs = new incident.Policy("debriefs", {
151
+ * name: "Debriefs booked for major incidents",
152
+ * description: "Anything at major severity or above needs a debrief in the calendar.",
153
+ * conditionGroups: [{
154
+ * conditions: [{
155
+ * subject: "incident.severity",
156
+ * operation: "gte",
157
+ * paramBindings: [{
158
+ * valueLiteral: "01FCNDV6P870EA6S7TK1DSYD5H",
159
+ * }],
160
+ * }],
161
+ * }],
162
+ * assignmentRules: {
163
+ * bindings: [{
164
+ * valueLiteral: debriefsOwner.then(debriefsOwner => debriefsOwner.id),
165
+ * }],
166
+ * reminderDueDateOffsetHours: [-24],
167
+ * },
168
+ * debrief: {
169
+ * requirements: [{
170
+ * conditions: [{
171
+ * subject: "debrief.is_scheduled",
172
+ * operation: "is_set",
173
+ * paramBindings: [],
174
+ * }],
175
+ * }],
176
+ * dueDateConfig: {
177
+ * incidentTimestampId: debriefsClosed.then(debriefsClosed => debriefsClosed.id),
178
+ * days: {
179
+ * valueLiteral: "5",
180
+ * },
181
+ * calculationType: "weekdays",
182
+ * },
183
+ * },
184
+ * });
185
+ * ```
186
+ *
187
+ * ## Example - Find gaps in on-call coverage
188
+ *
189
+ * ```typescript
190
+ * import * as pulumi from "@pulumi/pulumi";
191
+ * import * as incident from "@incident-io/pulumi";
192
+ *
193
+ * const scheduleOwner = incident.getUser({
194
+ * email: "on-call-manager@example.com",
195
+ * });
196
+ * // A schedule policy, which finds gaps in on-call coverage.
197
+ * //
198
+ * // Unlike follow-up, debrief and post-mortem policies this one takes no
199
+ * // due_date_config: a coverage gap is a finding the moment it's spotted, so
200
+ * // there is no due date to count from. It's the one type that instead supports
201
+ * // reminders measured from when the gap was detected.
202
+ * const scheduleCoverage = new incident.Policy("schedule_coverage", {
203
+ * name: "On-call schedules have no gaps",
204
+ * description: "Every rotation should have someone on call at all times.",
205
+ * conditionGroups: [],
206
+ * assignmentRules: {
207
+ * bindings: [{
208
+ * valueLiteral: scheduleOwner.then(scheduleOwner => scheduleOwner.id),
209
+ * }],
210
+ * reminderDueDateOffsetHours: [],
211
+ * reminderDetectedDateOffsetHours: [
212
+ * 0,
213
+ * 48,
214
+ * ],
215
+ * },
216
+ * schedule: {
217
+ * requirementType: "contiguous",
218
+ * evaluationLevel: "rotation",
219
+ * },
220
+ * });
221
+ * ```
222
+ *
223
+ * ## Example - Check that on-call responders can be reached
224
+ *
225
+ * ```typescript
226
+ * import * as pulumi from "@pulumi/pulumi";
227
+ * import * as incident from "@incident-io/pulumi";
228
+ *
229
+ * // An on-call readiness policy, which checks that responders have a notification
230
+ * // method that reaches them quickly enough.
231
+ * //
232
+ * // It takes no assignment_rules: this type always assigns the user the finding is
233
+ * // about, and the API picks that assignee itself.
234
+ * const respondersCanBeReached = new incident.Policy("responders_can_be_reached", {
235
+ * name: "Responders carry a phone",
236
+ * description: "Anyone on call needs a notification method that reaches them quickly.",
237
+ * conditionGroups: [],
238
+ * onCallReadiness: {
239
+ * highUrgencies: [{
240
+ * methodTypes: [
241
+ * "phone",
242
+ * "sms",
243
+ * ],
244
+ * maxDelaySeconds: 300,
245
+ * }],
246
+ * lowUrgencies: [{
247
+ * methodTypes: ["email"],
248
+ * maxDelaySeconds: 900,
249
+ * }],
250
+ * },
251
+ * });
252
+ * ```
253
+ *
254
+ * ## Example - Flag responders rota'd on while they are away
255
+ *
256
+ * ```typescript
257
+ * import * as pulumi from "@pulumi/pulumi";
258
+ * import * as incident from "@incident-io/pulumi";
259
+ *
260
+ * // A vacation conflict policy, which flags responders rota'd on while they are
261
+ * // away. The type has nothing to configure, so its block is empty: it is only
262
+ * // there to say which type this is.
263
+ * //
264
+ * // Like on-call readiness, it takes no assignment_rules: the API assigns the user
265
+ * // the finding is about.
266
+ * const vacationConflicts = new incident.Policy("vacation_conflicts", {
267
+ * name: "No on-call during vacation",
268
+ * description: "Flag anyone scheduled on call while they are on leave.",
269
+ * conditionGroups: [],
270
+ * vacationConflict: {},
271
+ * });
272
+ * ```
273
+ *
274
+ * ## Import
275
+ *
276
+ * Import is supported using an `import` block or the `pulumi import` command:
277
+ *
278
+ * The `pulumi import` command can be used, for example:
279
+ *
280
+ * !/bin/bash
281
+ *
282
+ * Import a policy using its ID
283
+ * Replace the ID with a real ID from your incident.io organization
284
+ *
285
+ * ```sh
286
+ * $ pulumi import incident:index/policy:Policy example 01ABC123DEF456GHI789JKL
287
+ * ```
288
+ */
289
+ export declare class Policy extends pulumi.CustomResource {
290
+ /**
291
+ * Get an existing Policy resource's state with the given name, ID, and optional extra
292
+ * properties used to qualify the lookup.
293
+ *
294
+ * @param name The _unique_ name of the resulting resource.
295
+ * @param id The _unique_ provider ID of the resource to lookup.
296
+ * @param state Any extra arguments used during the lookup.
297
+ * @param opts Optional settings to control the behavior of the CustomResource.
298
+ */
299
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: PolicyState, opts?: pulumi.CustomResourceOptions): Policy;
300
+ /**
301
+ * Returns true if the given object is an instance of Policy. This is designed to work even
302
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
303
+ */
304
+ static isInstance(obj: any): obj is Policy;
305
+ /**
306
+ * Who to assign a finding to, and when to remind them. Omit it for a policy type that assigns the user the finding is about.
307
+ */
308
+ readonly assignmentRules: pulumi.Output<outputs.PolicyAssignmentRules | undefined>;
309
+ /**
310
+ * Groups of prerequisite conditions. All conditions in at least one group must be satisfied
311
+ */
312
+ readonly conditionGroups: pulumi.Output<outputs.PolicyConditionGroup[]>;
313
+ /**
314
+ * Makes this a debrief policy, stating what a debrief must satisfy and when it falls due.
315
+ */
316
+ readonly debrief: pulumi.Output<outputs.PolicyDebrief | undefined>;
317
+ /**
318
+ * Human readable description of the policy
319
+ */
320
+ readonly description: pulumi.Output<string>;
321
+ /**
322
+ * The expressions to be prepared for use by steps and conditions
323
+ */
324
+ readonly expressions: pulumi.Output<outputs.PolicyExpression[] | undefined>;
325
+ /**
326
+ * Makes this a follow*up policy, stating what a follow*up must satisfy and when it falls due.
327
+ */
328
+ readonly followUp: pulumi.Output<outputs.PolicyFollowUp | undefined>;
329
+ /**
330
+ * Human readable name of the policy
331
+ */
332
+ readonly name: pulumi.Output<string>;
333
+ /**
334
+ * Makes this an on-call readiness policy, which checks that users have suitable notification methods. The assignee is always the user the finding is about, so `assignmentRules` cannot be set alongside it.
335
+ */
336
+ readonly onCallReadiness: pulumi.Output<outputs.PolicyOnCallReadiness | undefined>;
337
+ /**
338
+ * Type of the policy, specifying what this applies to. Possible values are: `debrief`, `followUp`, `onCallReadiness`, `postMortem`, `schedule`, `vacationConflict`. Determined by which config block is set.
339
+ */
340
+ readonly policyType: pulumi.Output<string>;
341
+ /**
342
+ * Makes this a post*mortem policy, stating what a post*mortem must satisfy and when it falls due.
343
+ */
344
+ readonly postMortem: pulumi.Output<outputs.PolicyPostMortem | undefined>;
345
+ /**
346
+ * Makes this a schedule policy, which detects gaps in on-call coverage.
347
+ */
348
+ readonly schedule: pulumi.Output<outputs.PolicySchedule | undefined>;
349
+ /**
350
+ * Disabled policies stop evaluating but keep their config. Possible values are: `enabled`, `disabled`.
351
+ */
352
+ readonly status: pulumi.Output<string>;
353
+ /**
354
+ * Makes this a vacation-conflict policy, which flags responders rota'd on while they are away. It takes no configuration, so set it to an empty object. The assignee is always the user the finding is about, so `assignmentRules` cannot be set alongside it.
355
+ */
356
+ readonly vacationConflict: pulumi.Output<outputs.PolicyVacationConflict | undefined>;
357
+ /**
358
+ * Create a Policy resource with the given unique name, arguments, and options.
359
+ *
360
+ * @param name The _unique_ name of the resource.
361
+ * @param args The arguments to use to populate this resource's properties.
362
+ * @param opts A bag of options that control this resource's behavior.
363
+ */
364
+ constructor(name: string, args: PolicyArgs, opts?: pulumi.CustomResourceOptions);
365
+ }
366
+ /**
367
+ * Input properties used for looking up and filtering Policy resources.
368
+ */
369
+ export interface PolicyState {
370
+ /**
371
+ * Who to assign a finding to, and when to remind them. Omit it for a policy type that assigns the user the finding is about.
372
+ */
373
+ assignmentRules?: pulumi.Input<inputs.PolicyAssignmentRules | undefined>;
374
+ /**
375
+ * Groups of prerequisite conditions. All conditions in at least one group must be satisfied
376
+ */
377
+ conditionGroups?: pulumi.Input<pulumi.Input<inputs.PolicyConditionGroup>[] | undefined>;
378
+ /**
379
+ * Makes this a debrief policy, stating what a debrief must satisfy and when it falls due.
380
+ */
381
+ debrief?: pulumi.Input<inputs.PolicyDebrief | undefined>;
382
+ /**
383
+ * Human readable description of the policy
384
+ */
385
+ description?: pulumi.Input<string | undefined>;
386
+ /**
387
+ * The expressions to be prepared for use by steps and conditions
388
+ */
389
+ expressions?: pulumi.Input<pulumi.Input<inputs.PolicyExpression>[] | undefined>;
390
+ /**
391
+ * Makes this a follow*up policy, stating what a follow*up must satisfy and when it falls due.
392
+ */
393
+ followUp?: pulumi.Input<inputs.PolicyFollowUp | undefined>;
394
+ /**
395
+ * Human readable name of the policy
396
+ */
397
+ name?: pulumi.Input<string | undefined>;
398
+ /**
399
+ * Makes this an on-call readiness policy, which checks that users have suitable notification methods. The assignee is always the user the finding is about, so `assignmentRules` cannot be set alongside it.
400
+ */
401
+ onCallReadiness?: pulumi.Input<inputs.PolicyOnCallReadiness | undefined>;
402
+ /**
403
+ * Type of the policy, specifying what this applies to. Possible values are: `debrief`, `followUp`, `onCallReadiness`, `postMortem`, `schedule`, `vacationConflict`. Determined by which config block is set.
404
+ */
405
+ policyType?: pulumi.Input<string | undefined>;
406
+ /**
407
+ * Makes this a post*mortem policy, stating what a post*mortem must satisfy and when it falls due.
408
+ */
409
+ postMortem?: pulumi.Input<inputs.PolicyPostMortem | undefined>;
410
+ /**
411
+ * Makes this a schedule policy, which detects gaps in on-call coverage.
412
+ */
413
+ schedule?: pulumi.Input<inputs.PolicySchedule | undefined>;
414
+ /**
415
+ * Disabled policies stop evaluating but keep their config. Possible values are: `enabled`, `disabled`.
416
+ */
417
+ status?: pulumi.Input<string | undefined>;
418
+ /**
419
+ * Makes this a vacation-conflict policy, which flags responders rota'd on while they are away. It takes no configuration, so set it to an empty object. The assignee is always the user the finding is about, so `assignmentRules` cannot be set alongside it.
420
+ */
421
+ vacationConflict?: pulumi.Input<inputs.PolicyVacationConflict | undefined>;
422
+ }
423
+ /**
424
+ * The set of arguments for constructing a Policy resource.
425
+ */
426
+ export interface PolicyArgs {
427
+ /**
428
+ * Who to assign a finding to, and when to remind them. Omit it for a policy type that assigns the user the finding is about.
429
+ */
430
+ assignmentRules?: pulumi.Input<inputs.PolicyAssignmentRules | undefined>;
431
+ /**
432
+ * Groups of prerequisite conditions. All conditions in at least one group must be satisfied
433
+ */
434
+ conditionGroups: pulumi.Input<pulumi.Input<inputs.PolicyConditionGroup>[]>;
435
+ /**
436
+ * Makes this a debrief policy, stating what a debrief must satisfy and when it falls due.
437
+ */
438
+ debrief?: pulumi.Input<inputs.PolicyDebrief | undefined>;
439
+ /**
440
+ * Human readable description of the policy
441
+ */
442
+ description: pulumi.Input<string>;
443
+ /**
444
+ * The expressions to be prepared for use by steps and conditions
445
+ */
446
+ expressions?: pulumi.Input<pulumi.Input<inputs.PolicyExpression>[] | undefined>;
447
+ /**
448
+ * Makes this a follow*up policy, stating what a follow*up must satisfy and when it falls due.
449
+ */
450
+ followUp?: pulumi.Input<inputs.PolicyFollowUp | undefined>;
451
+ /**
452
+ * Human readable name of the policy
453
+ */
454
+ name?: pulumi.Input<string | undefined>;
455
+ /**
456
+ * Makes this an on-call readiness policy, which checks that users have suitable notification methods. The assignee is always the user the finding is about, so `assignmentRules` cannot be set alongside it.
457
+ */
458
+ onCallReadiness?: pulumi.Input<inputs.PolicyOnCallReadiness | undefined>;
459
+ /**
460
+ * Makes this a post*mortem policy, stating what a post*mortem must satisfy and when it falls due.
461
+ */
462
+ postMortem?: pulumi.Input<inputs.PolicyPostMortem | undefined>;
463
+ /**
464
+ * Makes this a schedule policy, which detects gaps in on-call coverage.
465
+ */
466
+ schedule?: pulumi.Input<inputs.PolicySchedule | undefined>;
467
+ /**
468
+ * Disabled policies stop evaluating but keep their config. Possible values are: `enabled`, `disabled`.
469
+ */
470
+ status?: pulumi.Input<string | undefined>;
471
+ /**
472
+ * Makes this a vacation-conflict policy, which flags responders rota'd on while they are away. It takes no configuration, so set it to an empty object. The assignee is always the user the finding is about, so `assignmentRules` cannot be set alongside it.
473
+ */
474
+ vacationConflict?: pulumi.Input<inputs.PolicyVacationConflict | undefined>;
475
+ }
476
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../policy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAG1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4RG;AACH,qBAAa,MAAO,SAAQ,MAAM,CAAC,cAAc;IAC7C;;;;;;;;OAQG;WACW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,qBAAqB,GAAG,MAAM;IAO9H;;;OAGG;WACW,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM;IAOjD;;OAEG;IACH,SAAwB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAClG;;OAEG;IACH,SAAwB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACvF;;OAEG;IACH,SAAwB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAClF;;OAEG;IACH,SAAwB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3D;;OAEG;IACH,SAAwB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC;IAC3F;;OAEG;IACH,SAAwB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACpF;;OAEG;IACH,SAAwB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD;;OAEG;IACH,SAAwB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAClG;;OAEG;IACH,SAAgC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE;;OAEG;IACH,SAAwB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IACxF;;OAEG;IACH,SAAwB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACpF;;OAEG;IACH,SAAwB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD;;OAEG;IACH,SAAwB,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;IAEpG;;;;;;OAMG;gBACS,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,qBAAqB;CA4ClF;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IACzE;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACxF;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACzD;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAChF;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC3D;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IACzE;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAC/D;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC3D;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;CAC9E;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IACzE;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC3E;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACzD;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAChF;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC3D;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IACzE;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAC/D;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC3D;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;CAC9E"}