@microsoft/terraform-cdk-constructs 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/.jsii +60999 -15780
  2. package/API.md +54947 -10610
  3. package/README.md +72 -36
  4. package/docs/monitoring-guide.md +206 -0
  5. package/docs/testing.md +84 -1
  6. package/lib/azure-actiongroup/index.d.ts +11 -0
  7. package/lib/azure-actiongroup/index.js +28 -0
  8. package/lib/azure-actiongroup/lib/action-group-schemas.d.ts +24 -0
  9. package/lib/azure-actiongroup/lib/action-group-schemas.js +201 -0
  10. package/lib/azure-actiongroup/lib/action-group.d.ts +312 -0
  11. package/lib/azure-actiongroup/lib/action-group.js +201 -0
  12. package/lib/azure-actiongroup/lib/index.d.ts +5 -0
  13. package/lib/azure-actiongroup/lib/index.js +22 -0
  14. package/lib/azure-actiongroup/test/action-group.integ.d.ts +9 -0
  15. package/lib/azure-actiongroup/test/action-group.integ.js +79 -0
  16. package/lib/azure-actiongroup/test/action-group.spec.d.ts +8 -0
  17. package/lib/azure-actiongroup/test/action-group.spec.js +602 -0
  18. package/lib/azure-activitylogalert/index.d.ts +11 -0
  19. package/lib/azure-activitylogalert/index.js +28 -0
  20. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.d.ts +24 -0
  21. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.js +182 -0
  22. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +236 -0
  23. package/lib/azure-activitylogalert/lib/activity-log-alert.js +212 -0
  24. package/lib/azure-activitylogalert/lib/index.d.ts +5 -0
  25. package/lib/azure-activitylogalert/lib/index.js +22 -0
  26. package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +9 -0
  27. package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +98 -0
  28. package/lib/azure-activitylogalert/test/activity-log-alert.spec.d.ts +9 -0
  29. package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +1101 -0
  30. package/lib/azure-aks/index.d.ts +9 -0
  31. package/lib/azure-aks/index.js +28 -0
  32. package/lib/azure-aks/lib/aks-cluster-schemas.d.ts +505 -0
  33. package/lib/azure-aks/lib/aks-cluster-schemas.js +572 -0
  34. package/lib/azure-aks/lib/aks-cluster.d.ts +395 -0
  35. package/lib/azure-aks/lib/aks-cluster.js +489 -0
  36. package/lib/azure-aks/lib/index.d.ts +11 -0
  37. package/lib/azure-aks/lib/index.js +38 -0
  38. package/lib/azure-aks/test/aks-cluster.integ.d.ts +9 -0
  39. package/lib/azure-aks/test/aks-cluster.integ.js +260 -0
  40. package/lib/azure-aks/test/aks-cluster.spec.d.ts +8 -0
  41. package/lib/azure-aks/test/aks-cluster.spec.js +1396 -0
  42. package/lib/azure-diagnosticsettings/index.d.ts +7 -0
  43. package/lib/azure-diagnosticsettings/index.js +24 -0
  44. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.d.ts +50 -0
  45. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.js +207 -0
  46. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +193 -0
  47. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +200 -0
  48. package/lib/azure-diagnosticsettings/lib/index.d.ts +8 -0
  49. package/lib/azure-diagnosticsettings/lib/index.js +25 -0
  50. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.d.ts +8 -0
  51. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +432 -0
  52. package/lib/azure-metricalert/index.d.ts +11 -0
  53. package/lib/azure-metricalert/index.js +28 -0
  54. package/lib/azure-metricalert/lib/index.d.ts +5 -0
  55. package/lib/azure-metricalert/lib/index.js +22 -0
  56. package/lib/azure-metricalert/lib/metric-alert-schemas.d.ts +24 -0
  57. package/lib/azure-metricalert/lib/metric-alert-schemas.js +242 -0
  58. package/lib/azure-metricalert/lib/metric-alert.d.ts +344 -0
  59. package/lib/azure-metricalert/lib/metric-alert.js +252 -0
  60. package/lib/azure-metricalert/test/metric-alert.integ.d.ts +9 -0
  61. package/lib/azure-metricalert/test/metric-alert.integ.js +123 -0
  62. package/lib/azure-metricalert/test/metric-alert.spec.d.ts +9 -0
  63. package/lib/azure-metricalert/test/metric-alert.spec.js +1266 -0
  64. package/lib/azure-networkinterface/index.d.ts +4 -0
  65. package/lib/azure-networkinterface/index.js +21 -0
  66. package/lib/azure-networkinterface/lib/index.d.ts +6 -0
  67. package/lib/azure-networkinterface/lib/index.js +22 -0
  68. package/lib/azure-networkinterface/lib/network-interface-schemas.d.ts +32 -0
  69. package/lib/azure-networkinterface/lib/network-interface-schemas.js +222 -0
  70. package/lib/azure-networkinterface/lib/network-interface.d.ts +265 -0
  71. package/lib/azure-networkinterface/lib/network-interface.js +228 -0
  72. package/lib/azure-networkinterface/test/network-interface.integ.d.ts +9 -0
  73. package/lib/azure-networkinterface/test/network-interface.integ.js +102 -0
  74. package/lib/azure-networkinterface/test/network-interface.spec.d.ts +8 -0
  75. package/lib/azure-networkinterface/test/network-interface.spec.js +655 -0
  76. package/lib/azure-networksecuritygroup/index.d.ts +6 -0
  77. package/lib/azure-networksecuritygroup/index.js +23 -0
  78. package/lib/azure-networksecuritygroup/lib/index.d.ts +5 -0
  79. package/lib/azure-networksecuritygroup/lib/index.js +16 -0
  80. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.d.ts +32 -0
  81. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.js +198 -0
  82. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +268 -0
  83. package/lib/azure-networksecuritygroup/lib/network-security-group.js +248 -0
  84. package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +9 -0
  85. package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +151 -0
  86. package/lib/azure-networksecuritygroup/test/network-security-group.spec.d.ts +8 -0
  87. package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +652 -0
  88. package/lib/azure-publicipaddress/index.d.ts +6 -0
  89. package/lib/azure-publicipaddress/index.js +23 -0
  90. package/lib/azure-publicipaddress/lib/index.d.ts +9 -0
  91. package/lib/azure-publicipaddress/lib/index.js +19 -0
  92. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.d.ts +32 -0
  93. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.js +227 -0
  94. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +256 -0
  95. package/lib/azure-publicipaddress/lib/public-ip-address.js +267 -0
  96. package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +9 -0
  97. package/lib/azure-publicipaddress/test/public-ip-address.integ.js +75 -0
  98. package/lib/azure-publicipaddress/test/public-ip-address.spec.d.ts +15 -0
  99. package/lib/azure-publicipaddress/test/public-ip-address.spec.js +498 -0
  100. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  101. package/lib/azure-resourcegroup/test/resource-group.integ.js +23 -11
  102. package/lib/azure-storageaccount/lib/storage-account-schemas.d.ts +98 -0
  103. package/lib/azure-storageaccount/lib/storage-account-schemas.js +1 -1
  104. package/lib/azure-storageaccount/lib/storage-account.d.ts +38 -1
  105. package/lib/azure-storageaccount/lib/storage-account.js +138 -2
  106. package/lib/azure-storageaccount/test/storage-account.integ.js +91 -12
  107. package/lib/azure-subnet/index.d.ts +4 -0
  108. package/lib/azure-subnet/index.js +21 -0
  109. package/lib/azure-subnet/lib/index.d.ts +5 -0
  110. package/lib/azure-subnet/lib/index.js +22 -0
  111. package/lib/azure-subnet/lib/subnet-schemas.d.ts +32 -0
  112. package/lib/azure-subnet/lib/subnet-schemas.js +237 -0
  113. package/lib/azure-subnet/lib/subnet.d.ts +285 -0
  114. package/lib/azure-subnet/lib/subnet.js +254 -0
  115. package/lib/azure-subnet/test/subnet.integ.d.ts +11 -0
  116. package/lib/azure-subnet/test/subnet.integ.js +80 -0
  117. package/lib/azure-subnet/test/subnet.spec.d.ts +8 -0
  118. package/lib/azure-subnet/test/subnet.spec.js +396 -0
  119. package/lib/azure-virtualmachine/index.d.ts +7 -0
  120. package/lib/azure-virtualmachine/index.js +24 -0
  121. package/lib/azure-virtualmachine/lib/index.d.ts +11 -0
  122. package/lib/azure-virtualmachine/lib/index.js +38 -0
  123. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.d.ts +327 -0
  124. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.js +544 -0
  125. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +377 -0
  126. package/lib/azure-virtualmachine/lib/virtual-machine.js +462 -0
  127. package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +9 -0
  128. package/lib/azure-virtualmachine/test/virtual-machine.integ.js +220 -0
  129. package/lib/azure-virtualmachine/test/virtual-machine.spec.d.ts +9 -0
  130. package/lib/azure-virtualmachine/test/virtual-machine.spec.js +1032 -0
  131. package/lib/azure-virtualnetwork/index.d.ts +10 -0
  132. package/lib/azure-virtualnetwork/index.js +28 -0
  133. package/lib/azure-virtualnetwork/lib/index.d.ts +9 -0
  134. package/lib/azure-virtualnetwork/lib/index.js +22 -0
  135. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.d.ts +32 -0
  136. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.js +236 -0
  137. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +213 -0
  138. package/lib/azure-virtualnetwork/lib/virtual-network.js +245 -0
  139. package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +9 -0
  140. package/lib/azure-virtualnetwork/test/virtual-network.integ.js +91 -0
  141. package/lib/azure-virtualnetwork/test/virtual-network.spec.d.ts +8 -0
  142. package/lib/azure-virtualnetwork/test/virtual-network.spec.js +398 -0
  143. package/lib/azure-vmss/index.d.ts +6 -0
  144. package/lib/azure-vmss/index.js +23 -0
  145. package/lib/azure-vmss/lib/index.d.ts +9 -0
  146. package/lib/azure-vmss/lib/index.js +39 -0
  147. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +258 -0
  148. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +503 -0
  149. package/lib/azure-vmss/lib/vmss-schemas.d.ts +472 -0
  150. package/lib/azure-vmss/lib/vmss-schemas.js +444 -0
  151. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +15 -0
  152. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +261 -0
  153. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.d.ts +8 -0
  154. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +997 -0
  155. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +95 -27
  156. package/lib/core-azure/lib/azapi/azapi-resource.js +95 -58
  157. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +33 -21
  158. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +69 -27
  159. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +134 -120
  160. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +209 -59
  161. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +141 -128
  162. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +183 -36
  163. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +55 -43
  164. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +94 -26
  165. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +129 -116
  166. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +155 -32
  167. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +187 -174
  168. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +267 -48
  169. package/lib/core-azure/lib/azapi/providers-azapi/index.d.ts +10 -10
  170. package/lib/core-azure/lib/azapi/providers-azapi/index.js +1 -1
  171. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.d.ts +0 -0
  172. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +13 -0
  173. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +174 -162
  174. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +274 -14
  175. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +239 -225
  176. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +360 -76
  177. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +163 -150
  178. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +221 -46
  179. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +162 -149
  180. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +249 -50
  181. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +4 -2
  182. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  183. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  184. package/lib/index.d.ts +37 -0
  185. package/lib/index.js +40 -2
  186. package/lib/testing/index.d.ts +92 -2
  187. package/lib/testing/index.js +258 -18
  188. package/lib/testing/lib/cleanup.d.ts +229 -0
  189. package/lib/testing/lib/cleanup.js +331 -0
  190. package/lib/testing/lib/metadata.d.ts +151 -0
  191. package/lib/testing/lib/metadata.js +180 -0
  192. package/lib/testing/lib/naming.d.ts +96 -0
  193. package/lib/testing/lib/naming.js +336 -0
  194. package/node_modules/uuid/LICENSE.md +9 -0
  195. package/node_modules/uuid/README.md +510 -0
  196. package/node_modules/uuid/dist/cjs/index.d.ts +15 -0
  197. package/node_modules/uuid/dist/cjs/index.js +31 -0
  198. package/node_modules/uuid/dist/cjs/max.d.ts +2 -0
  199. package/node_modules/uuid/dist/cjs/max.js +3 -0
  200. package/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
  201. package/node_modules/uuid/dist/cjs/md5.js +13 -0
  202. package/node_modules/uuid/dist/cjs/native.d.ts +6 -0
  203. package/node_modules/uuid/dist/cjs/native.js +4 -0
  204. package/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
  205. package/node_modules/uuid/dist/cjs/nil.js +3 -0
  206. package/node_modules/uuid/dist/cjs/package.json +1 -0
  207. package/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
  208. package/node_modules/uuid/dist/cjs/parse.js +11 -0
  209. package/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
  210. package/node_modules/uuid/dist/cjs/regex.js +3 -0
  211. package/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
  212. package/node_modules/uuid/dist/cjs/rng.js +13 -0
  213. package/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
  214. package/node_modules/uuid/dist/cjs/sha1.js +13 -0
  215. package/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
  216. package/node_modules/uuid/dist/cjs/stringify.js +39 -0
  217. package/node_modules/uuid/dist/cjs/types.d.ts +21 -0
  218. package/node_modules/uuid/dist/cjs/types.js +2 -0
  219. package/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
  220. package/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
  221. package/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
  222. package/node_modules/uuid/dist/cjs/v1.js +87 -0
  223. package/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
  224. package/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
  225. package/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
  226. package/node_modules/uuid/dist/cjs/v3.js +14 -0
  227. package/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
  228. package/node_modules/uuid/dist/cjs/v35.js +41 -0
  229. package/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
  230. package/node_modules/uuid/dist/cjs/v4.js +29 -0
  231. package/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
  232. package/node_modules/uuid/dist/cjs/v5.js +14 -0
  233. package/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
  234. package/node_modules/uuid/dist/cjs/v6.js +19 -0
  235. package/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
  236. package/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
  237. package/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
  238. package/node_modules/uuid/dist/cjs/v7.js +69 -0
  239. package/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
  240. package/node_modules/uuid/dist/cjs/validate.js +7 -0
  241. package/node_modules/uuid/dist/cjs/version.d.ts +2 -0
  242. package/node_modules/uuid/dist/cjs/version.js +10 -0
  243. package/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
  244. package/node_modules/uuid/dist/cjs-browser/index.js +31 -0
  245. package/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
  246. package/node_modules/uuid/dist/cjs-browser/max.js +3 -0
  247. package/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
  248. package/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
  249. package/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
  250. package/node_modules/uuid/dist/cjs-browser/native.js +4 -0
  251. package/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
  252. package/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
  253. package/node_modules/uuid/dist/cjs-browser/package.json +1 -0
  254. package/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
  255. package/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
  256. package/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
  257. package/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
  258. package/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
  259. package/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
  260. package/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
  261. package/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
  262. package/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
  263. package/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
  264. package/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
  265. package/node_modules/uuid/dist/cjs-browser/types.js +2 -0
  266. package/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
  267. package/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
  268. package/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
  269. package/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
  270. package/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
  271. package/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
  272. package/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
  273. package/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
  274. package/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
  275. package/node_modules/uuid/dist/cjs-browser/v35.js +41 -0
  276. package/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
  277. package/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
  278. package/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
  279. package/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
  280. package/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
  281. package/node_modules/uuid/dist/cjs-browser/v6.js +19 -0
  282. package/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
  283. package/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
  284. package/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
  285. package/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
  286. package/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
  287. package/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
  288. package/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
  289. package/node_modules/uuid/dist/cjs-browser/version.js +10 -0
  290. package/node_modules/uuid/dist/esm/bin/uuid +2 -0
  291. package/node_modules/uuid/dist/esm/index.d.ts +15 -0
  292. package/node_modules/uuid/dist/esm/index.js +14 -0
  293. package/node_modules/uuid/dist/esm/max.d.ts +2 -0
  294. package/node_modules/uuid/dist/esm/max.js +1 -0
  295. package/node_modules/uuid/dist/esm/md5.d.ts +4 -0
  296. package/node_modules/uuid/dist/esm/md5.js +11 -0
  297. package/node_modules/uuid/dist/esm/native.d.ts +6 -0
  298. package/node_modules/uuid/dist/esm/native.js +2 -0
  299. package/node_modules/uuid/dist/esm/nil.d.ts +2 -0
  300. package/node_modules/uuid/dist/esm/nil.js +1 -0
  301. package/node_modules/uuid/dist/esm/parse.d.ts +2 -0
  302. package/node_modules/uuid/dist/esm/parse.js +9 -0
  303. package/node_modules/uuid/dist/esm/regex.d.ts +2 -0
  304. package/node_modules/uuid/dist/esm/regex.js +1 -0
  305. package/node_modules/uuid/dist/esm/rng.d.ts +1 -0
  306. package/node_modules/uuid/dist/esm/rng.js +10 -0
  307. package/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
  308. package/node_modules/uuid/dist/esm/sha1.js +11 -0
  309. package/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
  310. package/node_modules/uuid/dist/esm/stringify.js +35 -0
  311. package/node_modules/uuid/dist/esm/types.d.ts +21 -0
  312. package/node_modules/uuid/dist/esm/types.js +1 -0
  313. package/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
  314. package/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
  315. package/node_modules/uuid/dist/esm/v1.d.ts +11 -0
  316. package/node_modules/uuid/dist/esm/v1.js +83 -0
  317. package/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
  318. package/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
  319. package/node_modules/uuid/dist/esm/v3.d.ts +9 -0
  320. package/node_modules/uuid/dist/esm/v3.js +9 -0
  321. package/node_modules/uuid/dist/esm/v35.d.ts +7 -0
  322. package/node_modules/uuid/dist/esm/v35.js +36 -0
  323. package/node_modules/uuid/dist/esm/v4.d.ts +4 -0
  324. package/node_modules/uuid/dist/esm/v4.js +27 -0
  325. package/node_modules/uuid/dist/esm/v5.d.ts +9 -0
  326. package/node_modules/uuid/dist/esm/v5.js +9 -0
  327. package/node_modules/uuid/dist/esm/v6.d.ts +4 -0
  328. package/node_modules/uuid/dist/esm/v6.js +17 -0
  329. package/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
  330. package/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
  331. package/node_modules/uuid/dist/esm/v7.d.ts +9 -0
  332. package/node_modules/uuid/dist/esm/v7.js +65 -0
  333. package/node_modules/uuid/dist/esm/validate.d.ts +2 -0
  334. package/node_modules/uuid/dist/esm/validate.js +5 -0
  335. package/node_modules/uuid/dist/esm/version.d.ts +2 -0
  336. package/node_modules/uuid/dist/esm/version.js +8 -0
  337. package/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
  338. package/node_modules/uuid/dist/esm-browser/index.js +14 -0
  339. package/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
  340. package/node_modules/uuid/dist/esm-browser/max.js +1 -0
  341. package/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
  342. package/node_modules/uuid/dist/esm-browser/md5.js +135 -0
  343. package/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
  344. package/node_modules/uuid/dist/esm-browser/native.js +2 -0
  345. package/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
  346. package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
  347. package/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
  348. package/node_modules/uuid/dist/esm-browser/parse.js +9 -0
  349. package/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
  350. package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  351. package/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
  352. package/node_modules/uuid/dist/esm-browser/rng.js +11 -0
  353. package/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
  354. package/node_modules/uuid/dist/esm-browser/sha1.js +70 -0
  355. package/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
  356. package/node_modules/uuid/dist/esm-browser/stringify.js +35 -0
  357. package/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
  358. package/node_modules/uuid/dist/esm-browser/types.js +1 -0
  359. package/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
  360. package/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
  361. package/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
  362. package/node_modules/uuid/dist/esm-browser/v1.js +83 -0
  363. package/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
  364. package/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
  365. package/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
  366. package/node_modules/uuid/dist/esm-browser/v3.js +9 -0
  367. package/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
  368. package/node_modules/uuid/dist/esm-browser/v35.js +36 -0
  369. package/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
  370. package/node_modules/uuid/dist/esm-browser/v4.js +27 -0
  371. package/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
  372. package/node_modules/uuid/dist/esm-browser/v5.js +9 -0
  373. package/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
  374. package/node_modules/uuid/dist/esm-browser/v6.js +17 -0
  375. package/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
  376. package/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
  377. package/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
  378. package/node_modules/uuid/dist/esm-browser/v7.js +65 -0
  379. package/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
  380. package/node_modules/uuid/dist/esm-browser/validate.js +5 -0
  381. package/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
  382. package/node_modules/uuid/dist/esm-browser/version.js +8 -0
  383. package/node_modules/uuid/package.json +132 -0
  384. package/package.json +17 -12
  385. package/scripts/cleanup-test-resources.ts +369 -0
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NetworkInterface = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Unified Azure Network Interface implementation using VersionedAzapiResource framework
8
+ *
9
+ * This class replaces all version-specific Network Interface implementations with a single
10
+ * unified class that automatically handles version management, schema validation, and
11
+ * property transformation across all supported API versions.
12
+ *
13
+ * Supported API Versions:
14
+ * - 2024-07-01 (Active)
15
+ * - 2024-10-01 (Active)
16
+ * - 2025-01-01 (Active, Latest)
17
+ *
18
+ * Features:
19
+ * - Automatic latest version resolution when no version is specified
20
+ * - Explicit version pinning for stability requirements
21
+ * - Schema-driven validation and transformation
22
+ * - Full backward compatibility with existing Network Interface interface
23
+ * - JSII compliance for multi-language support
24
+ */
25
+ const cdktf = require("cdktf");
26
+ const network_interface_schemas_1 = require("./network-interface-schemas");
27
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
28
+ const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
29
+ /**
30
+ * Unified Azure Network Interface implementation
31
+ *
32
+ * This class provides a single, version-aware implementation that replaces all
33
+ * version-specific Network Interface classes. It automatically handles version
34
+ * resolution, schema validation, and property transformation while maintaining
35
+ * full backward compatibility.
36
+ *
37
+ * @example
38
+ * // Basic usage with automatic version resolution:
39
+ * const nic = new NetworkInterface(this, "nic", {
40
+ * name: "mynic",
41
+ * location: "eastus",
42
+ * resourceGroupId: resourceGroup.id,
43
+ * ipConfigurations: [{
44
+ * name: "ipconfig1",
45
+ * subnet: { id: subnet.id },
46
+ * privateIPAllocationMethod: "Dynamic",
47
+ * primary: true
48
+ * }]
49
+ * });
50
+ *
51
+ * @example
52
+ * // Usage with explicit version pinning:
53
+ * const nic = new NetworkInterface(this, "nic", {
54
+ * name: "mynic",
55
+ * location: "eastus",
56
+ * resourceGroupId: resourceGroup.id,
57
+ * ipConfigurations: [{
58
+ * name: "ipconfig1",
59
+ * subnet: { id: subnet.id },
60
+ * privateIPAllocationMethod: "Dynamic",
61
+ * primary: true
62
+ * }],
63
+ * apiVersion: "2024-07-01",
64
+ * });
65
+ *
66
+ * @stability stable
67
+ */
68
+ class NetworkInterface extends azapi_resource_1.AzapiResource {
69
+ /**
70
+ * Ensures that Network Interface schemas are registered with the ApiVersionManager
71
+ */
72
+ static ensureSchemasRegistered() {
73
+ if (NetworkInterface.schemasRegistered) {
74
+ return;
75
+ }
76
+ const apiVersionManager = api_version_manager_1.ApiVersionManager.instance();
77
+ try {
78
+ apiVersionManager.registerResourceType(network_interface_schemas_1.NETWORK_INTERFACE_TYPE, network_interface_schemas_1.ALL_NETWORK_INTERFACE_VERSIONS);
79
+ NetworkInterface.schemasRegistered = true;
80
+ console.log(`Registered ${network_interface_schemas_1.ALL_NETWORK_INTERFACE_VERSIONS.length} API versions for ${network_interface_schemas_1.NETWORK_INTERFACE_TYPE}`);
81
+ }
82
+ catch (error) {
83
+ console.warn(`Failed to register Network Interface schemas: ${error}. ` +
84
+ `This may indicate the schemas are already registered or there's a configuration issue.`);
85
+ NetworkInterface.schemasRegistered = true;
86
+ }
87
+ }
88
+ /**
89
+ * Creates a new Azure Network Interface using the VersionedAzapiResource framework
90
+ *
91
+ * @param scope - The scope in which to define this construct
92
+ * @param id - The unique identifier for this instance
93
+ * @param props - Configuration properties for the Network Interface
94
+ */
95
+ constructor(scope, id, props) {
96
+ // Ensure schemas are registered before calling super
97
+ NetworkInterface.ensureSchemasRegistered();
98
+ super(scope, id, props);
99
+ this.props = props;
100
+ // Extract properties from the AZAPI resource outputs
101
+ this.id = `\${${this.terraformResource.fqn}.id}`;
102
+ this.tags = props.tags || {};
103
+ // Create Terraform outputs
104
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
105
+ value: this.id,
106
+ description: "The ID of the Network Interface",
107
+ });
108
+ this.locationOutput = new cdktf.TerraformOutput(this, "location", {
109
+ value: `\${${this.terraformResource.fqn}.location}`,
110
+ description: "The location of the Network Interface",
111
+ });
112
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
113
+ value: `\${${this.terraformResource.fqn}.name}`,
114
+ description: "The name of the Network Interface",
115
+ });
116
+ this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
117
+ value: `\${${this.terraformResource.fqn}.tags}`,
118
+ description: "The tags assigned to the Network Interface",
119
+ });
120
+ // Override logical IDs
121
+ this.idOutput.overrideLogicalId("id");
122
+ this.locationOutput.overrideLogicalId("location");
123
+ this.nameOutput.overrideLogicalId("name");
124
+ this.tagsOutput.overrideLogicalId("tags");
125
+ // Apply ignore changes if specified
126
+ this._applyIgnoreChanges();
127
+ }
128
+ // =============================================================================
129
+ // REQUIRED ABSTRACT METHODS FROM VersionedAzapiResource
130
+ // =============================================================================
131
+ /**
132
+ * Gets the default API version to use when no explicit version is specified
133
+ */
134
+ defaultVersion() {
135
+ return "2024-10-01";
136
+ }
137
+ /**
138
+ * Gets the Azure resource type for Network Interfaces
139
+ */
140
+ resourceType() {
141
+ return network_interface_schemas_1.NETWORK_INTERFACE_TYPE;
142
+ }
143
+ /**
144
+ * Gets the API schema for the resolved version
145
+ */
146
+ apiSchema() {
147
+ return this.resolveSchema();
148
+ }
149
+ /**
150
+ * Creates the resource body for the Azure API call
151
+ */
152
+ createResourceBody(props) {
153
+ const typedProps = props;
154
+ // Transform ipConfigurations to match Azure API schema
155
+ // Each IP configuration needs its properties nested under a "properties" key
156
+ const ipConfigurations = typedProps.ipConfigurations.map((ipConfig) => ({
157
+ name: ipConfig.name,
158
+ properties: {
159
+ subnet: ipConfig.subnet,
160
+ privateIPAllocationMethod: ipConfig.privateIPAllocationMethod || "Dynamic",
161
+ privateIPAddress: ipConfig.privateIPAddress,
162
+ publicIPAddress: ipConfig.publicIPAddress,
163
+ primary: ipConfig.primary,
164
+ },
165
+ }));
166
+ return {
167
+ location: typedProps.location || "eastus",
168
+ tags: typedProps.tags || {},
169
+ properties: {
170
+ ipConfigurations,
171
+ networkSecurityGroup: typedProps.networkSecurityGroup,
172
+ enableAcceleratedNetworking: typedProps.enableAcceleratedNetworking || false,
173
+ enableIPForwarding: typedProps.enableIPForwarding || false,
174
+ dnsSettings: typedProps.dnsSettings,
175
+ },
176
+ };
177
+ }
178
+ // =============================================================================
179
+ // PUBLIC METHODS FOR NETWORK INTERFACE OPERATIONS
180
+ // =============================================================================
181
+ /**
182
+ * Get the private IP address of the primary IP configuration
183
+ * Note: This may not be available until after the resource is created
184
+ * The actual IP address location in Azure API response varies by API version
185
+ */
186
+ get privateIPAddress() {
187
+ // The private IP address is typically available at runtime but not in Terraform output
188
+ // Users should query the Azure API directly for the private IP if needed
189
+ return `\${${this.terraformResource.fqn}.id}`;
190
+ }
191
+ /**
192
+ * Add a tag to the Network Interface
193
+ */
194
+ addTag(key, value) {
195
+ if (!this.props.tags) {
196
+ this.props.tags = {};
197
+ }
198
+ this.props.tags[key] = value;
199
+ }
200
+ /**
201
+ * Remove a tag from the Network Interface
202
+ */
203
+ removeTag(key) {
204
+ if (this.props.tags && this.props.tags[key]) {
205
+ delete this.props.tags[key];
206
+ }
207
+ }
208
+ // =============================================================================
209
+ // PRIVATE HELPER METHODS
210
+ // =============================================================================
211
+ /**
212
+ * Applies ignore changes lifecycle rules if specified in props
213
+ */
214
+ _applyIgnoreChanges() {
215
+ if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
216
+ this.terraformResource.addOverride("lifecycle", [
217
+ {
218
+ ignore_changes: this.props.ignoreChanges,
219
+ },
220
+ ]);
221
+ }
222
+ }
223
+ }
224
+ exports.NetworkInterface = NetworkInterface;
225
+ _a = JSII_RTTI_SYMBOL_1;
226
+ NetworkInterface[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkInterface", version: "1.2.0" };
227
+ NetworkInterface.schemasRegistered = false;
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtbmV0d29ya2ludGVyZmFjZS9saWIvbmV0d29yay1pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsK0JBQStCO0FBRS9CLDJFQUdxQztBQUNyQyw4RUFHbUQ7QUFDbkQsa0dBQTZGO0FBc0s3Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFDSCxNQUFhLGdCQUFpQixTQUFRLDhCQUFhO0lBR2pEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLHVCQUF1QjtRQUNwQyxJQUFJLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZELElBQUksQ0FBQztZQUNILGlCQUFpQixDQUFDLG9CQUFvQixDQUNwQyxrREFBc0IsRUFDdEIsMERBQThCLENBQy9CLENBQUM7WUFFRixnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFFMUMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxjQUFjLDBEQUE4QixDQUFDLE1BQU0scUJBQXFCLGtEQUFzQixFQUFFLENBQ2pHLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQ1YsaURBQWlELEtBQUssSUFBSTtnQkFDeEQsd0ZBQXdGLENBQzNGLENBQUM7WUFDRixnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFjRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLHFEQUFxRDtRQUNyRCxnQkFBZ0IsQ0FB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RjtJQUNoRix5QkFBeUI7SUFDekIsZ0ZBQWdGO0lBRWhGOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUM5QztvQkFDRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2lCQUN6QzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQTNNSCw0Q0E0TUM7OztBQTNNZ0Isa0NBQWlCLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVbmlmaWVkIEF6dXJlIE5ldHdvcmsgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIHVzaW5nIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyByZXBsYWNlcyBhbGwgdmVyc2lvbi1zcGVjaWZpYyBOZXR3b3JrIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMgd2l0aCBhIHNpbmdsZVxuICogdW5pZmllZCBjbGFzcyB0aGF0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmRcbiAqIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDI0LTA3LTAxIChBY3RpdmUpXG4gKiAtIDIwMjQtMTAtMDEgKEFjdGl2ZSlcbiAqIC0gMjAyNS0wMS0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIEF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uIHdoZW4gbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAqIC0gRXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIGZvciBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzXG4gKiAtIFNjaGVtYS1kcml2ZW4gdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gRnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgTmV0d29yayBJbnRlcmZhY2UgaW50ZXJmYWNlXG4gKiAtIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICovXG5cbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIEFMTF9ORVRXT1JLX0lOVEVSRkFDRV9WRVJTSU9OUyxcbiAgTkVUV09SS19JTlRFUkZBQ0VfVFlQRSxcbn0gZnJvbSBcIi4vbmV0d29yay1pbnRlcmZhY2Utc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgQXphcGlSZXNvdXJjZSxcbiAgQXphcGlSZXNvdXJjZVByb3BzLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmltcG9ydCB7IEFwaVZlcnNpb25NYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9hcGktdmVyc2lvbi1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBBcGlTY2hlbWEgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogU3VibmV0IHJlZmVyZW5jZSBmb3IgTmV0d29yayBJbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSW50ZXJmYWNlU3VibmV0UmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIFN1Ym5ldCByZXNvdXJjZSBJRFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQdWJsaWMgSVAgYWRkcmVzcyByZWZlcmVuY2UgZm9yIE5ldHdvcmsgSW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0ludGVyZmFjZVB1YmxpY0lQUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIFB1YmxpYyBJUCBhZGRyZXNzIHJlc291cmNlIElEXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE5ldHdvcmsgU2VjdXJpdHkgR3JvdXAgcmVmZXJlbmNlIGZvciBOZXR3b3JrIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2VOU0dSZWZlcmVuY2Uge1xuICAvKipcbiAgICogTmV0d29yayBTZWN1cml0eSBHcm91cCByZXNvdXJjZSBJRFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJUCBDb25maWd1cmF0aW9uIGZvciBOZXR3b3JrIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2VJUENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgSVAgY29uZmlndXJhdGlvblxuICAgKiBAZXhhbXBsZSBcImlwY29uZmlnMVwiXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCByZWZlcmVuY2Ugd2l0aCBpZCBwcm9wZXJ0eVxuICAgKiBAZXhhbXBsZSB7IGlkOiBcIi9zdWJzY3JpcHRpb25zLy4uLi9zdWJuZXRzL215U3VibmV0XCIgfVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0OiBOZXR3b3JrSW50ZXJmYWNlU3VibmV0UmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBQcml2YXRlIElQIGFsbG9jYXRpb24gbWV0aG9kXG4gICAqIEBleGFtcGxlIFwiRHluYW1pY1wiIG9yIFwiU3RhdGljXCJcbiAgICogQGRlZmF1bHRWYWx1ZSBcIkR5bmFtaWNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUlQQWxsb2NhdGlvbk1ldGhvZD86IHN0cmluZztcblxuICAvKipcbiAgICogUHJpdmF0ZSBJUCBhZGRyZXNzIChyZXF1aXJlZCBpZiBwcml2YXRlSVBBbGxvY2F0aW9uTWV0aG9kIGlzIFN0YXRpYylcbiAgICogQGV4YW1wbGUgXCIxMC4wLjEuNFwiXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlSVBBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgSVAgYWRkcmVzcyByZWZlcmVuY2Ugd2l0aCBpZCBwcm9wZXJ0eVxuICAgKiBPcHRpb25hbCAtIGZvciBOSUNzIHRoYXQgbmVlZCBwdWJsaWMgSVBzXG4gICAqIEBleGFtcGxlIHsgaWQ6IFwiL3N1YnNjcmlwdGlvbnMvLi4uL3B1YmxpY0lQQWRkcmVzc2VzL215UHVibGljSVBcIiB9XG4gICAqL1xuICByZWFkb25seSBwdWJsaWNJUEFkZHJlc3M/OiBOZXR3b3JrSW50ZXJmYWNlUHVibGljSVBSZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyB0aGUgcHJpbWFyeSBJUCBjb25maWd1cmF0aW9uXG4gICAqIEF0IGxlYXN0IG9uZSBJUCBjb25maWd1cmF0aW9uIG11c3QgYmUgcHJpbWFyeVxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcmltYXJ5PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBETlMgc2V0dGluZ3MgY29uZmlndXJhdGlvbiBmb3IgTmV0d29yayBJbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSW50ZXJmYWNlRG5zU2V0dGluZ3Mge1xuICAvKipcbiAgICogQXJyYXkgb2YgRE5TIHNlcnZlciBJUCBhZGRyZXNzZXNcbiAgICogQGV4YW1wbGUgW1wiMTAuMC4wLjRcIiwgXCIxMC4wLjAuNVwiXVxuICAgKi9cbiAgcmVhZG9ubHkgZG5zU2VydmVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBETlMgbmFtZSBsYWJlbCBmb3IgdGhlIE5JQ1xuICAgKiBAZXhhbXBsZSBcIm15dm1cIlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJuYWxEbnNOYW1lTGFiZWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHVuaWZpZWQgQXp1cmUgTmV0d29yayBJbnRlcmZhY2VcbiAqXG4gKiBFeHRlbmRzIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VQcm9wcyB3aXRoIE5ldHdvcmsgSW50ZXJmYWNlIHNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSW50ZXJmYWNlUHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogSVAgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZVxuICAgKiBBdCBsZWFzdCBvbmUgSVAgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZFxuICAgKiBPbmUgSVAgY29uZmlndXJhdGlvbiBtdXN0IGJlIG1hcmtlZCBhcyBwcmltYXJ5XG4gICAqL1xuICByZWFkb25seSBpcENvbmZpZ3VyYXRpb25zOiBOZXR3b3JrSW50ZXJmYWNlSVBDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIE5ldHdvcmsgU2VjdXJpdHkgR3JvdXAgcmVmZXJlbmNlIHdpdGggaWQgcHJvcGVydHlcbiAgICogT3B0aW9uYWwgLSBhc3NvY2lhdGVzIGFuIE5TRyB3aXRoIHRoaXMgTklDXG4gICAqIEBleGFtcGxlIHsgaWQ6IFwiL3N1YnNjcmlwdGlvbnMvLi4uL25ldHdvcmtTZWN1cml0eUdyb3Vwcy9teU5TR1wiIH1cbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtTZWN1cml0eUdyb3VwPzogTmV0d29ya0ludGVyZmFjZU5TR1JlZmVyZW5jZTtcblxuICAvKipcbiAgICogRW5hYmxlIGFjY2VsZXJhdGVkIG5ldHdvcmtpbmcgZm9yIGhpZ2gtcGVyZm9ybWFuY2Ugc2NlbmFyaW9zXG4gICAqIFJlcXVpcmVzIHN1cHBvcnRlZCBWTSBzaXplXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVBY2NlbGVyYXRlZE5ldHdvcmtpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgSVAgZm9yd2FyZGluZyBmb3IgbmV0d29yayB2aXJ0dWFsIGFwcGxpYW5jZXNcbiAgICogQWxsb3dzIE5JQyB0byBmb3J3YXJkIHRyYWZmaWMgbm90IGRlc3RpbmVkIGZvciBpdHMgSVBcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUlQRm9yd2FyZGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEROUyBzZXR0aW5ncyBjb25maWd1cmF0aW9uXG4gICAqIE9wdGlvbmFsIC0gY29uZmlndXJlcyBETlMgc2VydmVycyBmb3IgdGhlIE5JQ1xuICAgKi9cbiAgcmVhZG9ubHkgZG5zU2V0dGluZ3M/OiBOZXR3b3JrSW50ZXJmYWNlRG5zU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFRoZSBsaWZlY3ljbGUgcnVsZXMgdG8gaWdub3JlIGNoYW5nZXNcbiAgICogQGV4YW1wbGUgW1widGFnc1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBncm91cCBJRCB3aGVyZSB0aGUgbmV0d29yayBpbnRlcmZhY2Ugd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTmV0d29yayBJbnRlcmZhY2UgcHJvcGVydGllcyBmb3IgdGhlIHJlcXVlc3QgYm9keVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2VCb2R5UHJvcGVydGllcyB7XG4gIHJlYWRvbmx5IGlwQ29uZmlndXJhdGlvbnM6IE5ldHdvcmtJbnRlcmZhY2VJUENvbmZpZ3VyYXRpb25bXTtcbiAgcmVhZG9ubHkgbmV0d29ya1NlY3VyaXR5R3JvdXA/OiBOZXR3b3JrSW50ZXJmYWNlTlNHUmVmZXJlbmNlO1xuICByZWFkb25seSBlbmFibGVBY2NlbGVyYXRlZE5ldHdvcmtpbmc/OiBib29sZWFuO1xuICByZWFkb25seSBlbmFibGVJUEZvcndhcmRpbmc/OiBib29sZWFuO1xuICByZWFkb25seSBkbnNTZXR0aW5ncz86IE5ldHdvcmtJbnRlcmZhY2VEbnNTZXR0aW5ncztcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgYm9keSBpbnRlcmZhY2UgZm9yIEF6dXJlIE5ldHdvcmsgSW50ZXJmYWNlIEFQSSBjYWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2VCb2R5IHtcbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IE5ldHdvcmtJbnRlcmZhY2VCb2R5UHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBVbmlmaWVkIEF6dXJlIE5ldHdvcmsgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcGxhY2VzIGFsbFxuICogdmVyc2lvbi1zcGVjaWZpYyBOZXR3b3JrIEludGVyZmFjZSBjbGFzc2VzLiBJdCBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvblxuICogcmVzb2x1dGlvbiwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiB3aGlsZSBtYWludGFpbmluZ1xuICogZnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGF1dG9tYXRpYyB2ZXJzaW9uIHJlc29sdXRpb246XG4gKiBjb25zdCBuaWMgPSBuZXcgTmV0d29ya0ludGVyZmFjZSh0aGlzLCBcIm5pY1wiLCB7XG4gKiAgIG5hbWU6IFwibXluaWNcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgaXBDb25maWd1cmF0aW9uczogW3tcbiAqICAgICBuYW1lOiBcImlwY29uZmlnMVwiLFxuICogICAgIHN1Ym5ldDogeyBpZDogc3VibmV0LmlkIH0sXG4gKiAgICAgcHJpdmF0ZUlQQWxsb2NhdGlvbk1ldGhvZDogXCJEeW5hbWljXCIsXG4gKiAgICAgcHJpbWFyeTogdHJ1ZVxuICogICB9XVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzYWdlIHdpdGggZXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nOlxuICogY29uc3QgbmljID0gbmV3IE5ldHdvcmtJbnRlcmZhY2UodGhpcywgXCJuaWNcIiwge1xuICogICBuYW1lOiBcIm15bmljXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGlwQ29uZmlndXJhdGlvbnM6IFt7XG4gKiAgICAgbmFtZTogXCJpcGNvbmZpZzFcIixcbiAqICAgICBzdWJuZXQ6IHsgaWQ6IHN1Ym5ldC5pZCB9LFxuICogICAgIHByaXZhdGVJUEFsbG9jYXRpb25NZXRob2Q6IFwiRHluYW1pY1wiLFxuICogICAgIHByaW1hcnk6IHRydWVcbiAqICAgfV0sXG4gKiAgIGFwaVZlcnNpb246IFwiMjAyNC0wNy0wMVwiLFxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtJbnRlcmZhY2UgZXh0ZW5kcyBBemFwaVJlc291cmNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgc2NoZW1hc1JlZ2lzdGVyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IE5ldHdvcmsgSW50ZXJmYWNlIHNjaGVtYXMgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQXBpVmVyc2lvbk1hbmFnZXJcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGVuc3VyZVNjaGVtYXNSZWdpc3RlcmVkKCk6IHZvaWQge1xuICAgIGlmIChOZXR3b3JrSW50ZXJmYWNlLnNjaGVtYXNSZWdpc3RlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXBpVmVyc2lvbk1hbmFnZXIgPSBBcGlWZXJzaW9uTWFuYWdlci5pbnN0YW5jZSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGFwaVZlcnNpb25NYW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2VUeXBlKFxuICAgICAgICBORVRXT1JLX0lOVEVSRkFDRV9UWVBFLFxuICAgICAgICBBTExfTkVUV09SS19JTlRFUkZBQ0VfVkVSU0lPTlMsXG4gICAgICApO1xuXG4gICAgICBOZXR3b3JrSW50ZXJmYWNlLnNjaGVtYXNSZWdpc3RlcmVkID0gdHJ1ZTtcblxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZWdpc3RlcmVkICR7QUxMX05FVFdPUktfSU5URVJGQUNFX1ZFUlNJT05TLmxlbmd0aH0gQVBJIHZlcnNpb25zIGZvciAke05FVFdPUktfSU5URVJGQUNFX1RZUEV9YCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEZhaWxlZCB0byByZWdpc3RlciBOZXR3b3JrIEludGVyZmFjZSBzY2hlbWFzOiAke2Vycm9yfS4gYCArXG4gICAgICAgICAgYFRoaXMgbWF5IGluZGljYXRlIHRoZSBzY2hlbWFzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgb3IgdGhlcmUncyBhIGNvbmZpZ3VyYXRpb24gaXNzdWUuYCxcbiAgICAgICk7XG4gICAgICBOZXR3b3JrSW50ZXJmYWNlLnNjaGVtYXNSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IE5ldHdvcmtJbnRlcmZhY2VQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYXRpb25PdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3NPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcblxuICAvLyBQdWJsaWMgcHJvcGVydGllc1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgTmV0d29yayBJbnRlcmZhY2UgdXNpbmcgdGhlIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIE5ldHdvcmsgSW50ZXJmYWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmV0d29ya0ludGVyZmFjZVByb3BzKSB7XG4gICAgLy8gRW5zdXJlIHNjaGVtYXMgYXJlIHJlZ2lzdGVyZWQgYmVmb3JlIGNhbGxpbmcgc3VwZXJcbiAgICBOZXR3b3JrSW50ZXJmYWNlLmVuc3VyZVNjaGVtYXNSZWdpc3RlcmVkKCk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIEV4dHJhY3QgcHJvcGVydGllcyBmcm9tIHRoZSBBWkFQSSByZXNvdXJjZSBvdXRwdXRzXG4gICAgdGhpcy5pZCA9IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0uaWR9YDtcbiAgICB0aGlzLnRhZ3MgPSBwcm9wcy50YWdzIHx8IHt9O1xuXG4gICAgLy8gQ3JlYXRlIFRlcnJhZm9ybSBvdXRwdXRzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgTmV0d29yayBJbnRlcmZhY2VcIixcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25PdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibG9jYXRpb25cIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubG9jYXRpb259YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsb2NhdGlvbiBvZiB0aGUgTmV0d29yayBJbnRlcmZhY2VcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZU91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm5hbWV9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBuYW1lIG9mIHRoZSBOZXR3b3JrIEludGVyZmFjZVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWdzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcInRhZ3NcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0udGFnc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHRhZ3MgYXNzaWduZWQgdG8gdGhlIE5ldHdvcmsgSW50ZXJmYWNlXCIsXG4gICAgfSk7XG5cbiAgICAvLyBPdmVycmlkZSBsb2dpY2FsIElEc1xuICAgIHRoaXMuaWRPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJpZFwiKTtcbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9jYXRpb25cIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLnRhZ3NPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJ0YWdzXCIpO1xuXG4gICAgLy8gQXBwbHkgaWdub3JlIGNoYW5nZXMgaWYgc3BlY2lmaWVkXG4gICAgdGhpcy5fYXBwbHlJZ25vcmVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSRVFVSVJFRCBBQlNUUkFDVCBNRVRIT0RTIEZST00gVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG5vIGV4cGxpY2l0IHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCIyMDI0LTEwLTAxXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSBmb3IgTmV0d29yayBJbnRlcmZhY2VzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE5FVFdPUktfSU5URVJGQUNFX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBOZXR3b3JrSW50ZXJmYWNlUHJvcHM7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaXBDb25maWd1cmF0aW9ucyB0byBtYXRjaCBBenVyZSBBUEkgc2NoZW1hXG4gICAgLy8gRWFjaCBJUCBjb25maWd1cmF0aW9uIG5lZWRzIGl0cyBwcm9wZXJ0aWVzIG5lc3RlZCB1bmRlciBhIFwicHJvcGVydGllc1wiIGtleVxuICAgIGNvbnN0IGlwQ29uZmlndXJhdGlvbnMgPSB0eXBlZFByb3BzLmlwQ29uZmlndXJhdGlvbnMubWFwKChpcENvbmZpZykgPT4gKHtcbiAgICAgIG5hbWU6IGlwQ29uZmlnLm5hbWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHN1Ym5ldDogaXBDb25maWcuc3VibmV0LFxuICAgICAgICBwcml2YXRlSVBBbGxvY2F0aW9uTWV0aG9kOlxuICAgICAgICAgIGlwQ29uZmlnLnByaXZhdGVJUEFsbG9jYXRpb25NZXRob2QgfHwgXCJEeW5hbWljXCIsXG4gICAgICAgIHByaXZhdGVJUEFkZHJlc3M6IGlwQ29uZmlnLnByaXZhdGVJUEFkZHJlc3MsXG4gICAgICAgIHB1YmxpY0lQQWRkcmVzczogaXBDb25maWcucHVibGljSVBBZGRyZXNzLFxuICAgICAgICBwcmltYXJ5OiBpcENvbmZpZy5wcmltYXJ5LFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb246IHR5cGVkUHJvcHMubG9jYXRpb24gfHwgXCJlYXN0dXNcIixcbiAgICAgIHRhZ3M6IHR5cGVkUHJvcHMudGFncyB8fCB7fSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgaXBDb25maWd1cmF0aW9ucyxcbiAgICAgICAgbmV0d29ya1NlY3VyaXR5R3JvdXA6IHR5cGVkUHJvcHMubmV0d29ya1NlY3VyaXR5R3JvdXAsXG4gICAgICAgIGVuYWJsZUFjY2VsZXJhdGVkTmV0d29ya2luZzpcbiAgICAgICAgICB0eXBlZFByb3BzLmVuYWJsZUFjY2VsZXJhdGVkTmV0d29ya2luZyB8fCBmYWxzZSxcbiAgICAgICAgZW5hYmxlSVBGb3J3YXJkaW5nOiB0eXBlZFByb3BzLmVuYWJsZUlQRm9yd2FyZGluZyB8fCBmYWxzZSxcbiAgICAgICAgZG5zU2V0dGluZ3M6IHR5cGVkUHJvcHMuZG5zU2V0dGluZ3MsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgTkVUV09SSyBJTlRFUkZBQ0UgT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHByaXZhdGUgSVAgYWRkcmVzcyBvZiB0aGUgcHJpbWFyeSBJUCBjb25maWd1cmF0aW9uXG4gICAqIE5vdGU6IFRoaXMgbWF5IG5vdCBiZSBhdmFpbGFibGUgdW50aWwgYWZ0ZXIgdGhlIHJlc291cmNlIGlzIGNyZWF0ZWRcbiAgICogVGhlIGFjdHVhbCBJUCBhZGRyZXNzIGxvY2F0aW9uIGluIEF6dXJlIEFQSSByZXNwb25zZSB2YXJpZXMgYnkgQVBJIHZlcnNpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgcHJpdmF0ZUlQQWRkcmVzcygpOiBzdHJpbmcge1xuICAgIC8vIFRoZSBwcml2YXRlIElQIGFkZHJlc3MgaXMgdHlwaWNhbGx5IGF2YWlsYWJsZSBhdCBydW50aW1lIGJ1dCBub3QgaW4gVGVycmFmb3JtIG91dHB1dFxuICAgIC8vIFVzZXJzIHNob3VsZCBxdWVyeSB0aGUgQXp1cmUgQVBJIGRpcmVjdGx5IGZvciB0aGUgcHJpdmF0ZSBJUCBpZiBuZWVkZWRcbiAgICByZXR1cm4gYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5pZH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhZyB0byB0aGUgTmV0d29yayBJbnRlcmZhY2VcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBOZXR3b3JrIEludGVyZmFjZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZVRhZyhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRhZ3MgJiYgdGhpcy5wcm9wcy50YWdzW2tleV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb3BzLnRhZ3Nba2V5XTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIEhFTFBFUiBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzIGlmIHNwZWNpZmllZCBpbiBwcm9wc1xuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlJZ25vcmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMgJiYgdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwgW1xuICAgICAgICB7XG4gICAgICAgICAgaWdub3JlX2NoYW5nZXM6IHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcyxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Integration test for Azure Network Interface
3
+ *
4
+ * This test demonstrates basic usage of the NetworkInterface construct
5
+ * and validates deployment, idempotency, and cleanup.
6
+ *
7
+ * Run with: npm run integration:nostream
8
+ */
9
+ import "cdktf/lib/testing/adapters/jest";
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * Integration test for Azure Network Interface
4
+ *
5
+ * This test demonstrates basic usage of the NetworkInterface construct
6
+ * and validates deployment, idempotency, and cleanup.
7
+ *
8
+ * Run with: npm run integration:nostream
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const cdktf_1 = require("cdktf");
12
+ require("cdktf/lib/testing/adapters/jest");
13
+ const azure_resourcegroup_1 = require("../../azure-resourcegroup");
14
+ const azure_subnet_1 = require("../../azure-subnet");
15
+ const azure_virtualnetwork_1 = require("../../azure-virtualnetwork");
16
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
17
+ const testing_1 = require("../../testing");
18
+ const network_interface_1 = require("../lib/network-interface");
19
+ /**
20
+ * Example stack demonstrating Network Interface usage
21
+ */
22
+ class NetworkInterfaceExampleStack extends cdktf_1.TerraformStack {
23
+ constructor(scope, id) {
24
+ super(scope, id);
25
+ // Configure AZAPI provider
26
+ new provider_1.AzapiProvider(this, "azapi", {});
27
+ // Create a resource group
28
+ const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "example-rg", {
29
+ name: "nic-example-rg",
30
+ location: "eastus",
31
+ tags: {
32
+ environment: "example",
33
+ purpose: "integration-test",
34
+ },
35
+ });
36
+ // Create a virtual network
37
+ const vnet = new azure_virtualnetwork_1.VirtualNetwork(this, "example-vnet", {
38
+ name: "vnet-example",
39
+ location: resourceGroup.props.location,
40
+ resourceGroupId: resourceGroup.id,
41
+ addressSpace: {
42
+ addressPrefixes: ["10.0.0.0/16"],
43
+ },
44
+ });
45
+ // Create a subnet - use virtualNetworkId to create explicit Terraform dependency
46
+ const subnet = new azure_subnet_1.Subnet(this, "example-subnet", {
47
+ name: "subnet-example",
48
+ resourceGroupId: resourceGroup.id,
49
+ virtualNetworkName: "vnet-example",
50
+ virtualNetworkId: vnet.id,
51
+ addressPrefix: "10.0.1.0/24",
52
+ });
53
+ // Example 1: Basic network interface
54
+ new network_interface_1.NetworkInterface(this, "basic-nic", {
55
+ name: "nic-basic-example",
56
+ location: resourceGroup.props.location,
57
+ resourceGroupId: resourceGroup.id,
58
+ ipConfigurations: [
59
+ {
60
+ name: "ipconfig1",
61
+ subnet: { id: subnet.id },
62
+ privateIPAllocationMethod: "Dynamic",
63
+ primary: true,
64
+ },
65
+ ],
66
+ tags: {
67
+ example: "basic",
68
+ },
69
+ });
70
+ // Example 2: Network interface with specific version
71
+ new network_interface_1.NetworkInterface(this, "versioned-nic", {
72
+ name: "nic-versioned-example",
73
+ location: resourceGroup.props.location,
74
+ resourceGroupId: resourceGroup.id,
75
+ ipConfigurations: [
76
+ {
77
+ name: "ipconfig1",
78
+ subnet: { id: subnet.id },
79
+ privateIPAllocationMethod: "Dynamic",
80
+ primary: true,
81
+ },
82
+ ],
83
+ apiVersion: "2024-07-01",
84
+ tags: {
85
+ example: "versioned",
86
+ },
87
+ });
88
+ }
89
+ }
90
+ describe("Network Interface Integration Test", () => {
91
+ it("should deploy, validate idempotency, and cleanup network interface resources", () => {
92
+ const app = cdktf_1.Testing.app();
93
+ const stack = new NetworkInterfaceExampleStack(app, "test-network-interface");
94
+ const synthesized = cdktf_1.Testing.fullSynth(stack);
95
+ // This will:
96
+ // 1. Run terraform apply to deploy resources
97
+ // 2. Run terraform plan to check idempotency (no changes expected)
98
+ // 3. Run terraform destroy to cleanup resources
99
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized);
100
+ }, 600000); // 10 minute timeout for deployment and cleanup
101
+ });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1pbnRlcmZhY2UuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtbmV0d29ya2ludGVyZmFjZS90ZXN0L25ldHdvcmstaW50ZXJmYWNlLmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQUVILGlDQUFnRDtBQUVoRCwyQ0FBeUM7QUFDekMsbUVBQTBEO0FBQzFELHFEQUE0QztBQUM1QyxxRUFBNEQ7QUFDNUQsa0ZBQW9GO0FBQ3BGLDJDQUE4RDtBQUM5RCxnRUFBNEQ7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLDRCQUE2QixTQUFRLHNCQUFjO0lBQ3ZELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMkJBQTJCO1FBQzNCLElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLDBCQUEwQjtRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLG1DQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUMxRCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRTtnQkFDSixXQUFXLEVBQUUsU0FBUztnQkFDdEIsT0FBTyxFQUFFLGtCQUFrQjthQUM1QjtTQUNGLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLHFDQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNwRCxJQUFJLEVBQUUsY0FBYztZQUNwQixRQUFRLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFTO1lBQ3ZDLGVBQWUsRUFBRSxhQUFhLENBQUMsRUFBRTtZQUNqQyxZQUFZLEVBQUU7Z0JBQ1osZUFBZSxFQUFFLENBQUMsYUFBYSxDQUFDO2FBQ2pDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsaUZBQWlGO1FBQ2pGLE1BQU0sTUFBTSxHQUFHLElBQUkscUJBQU0sQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDaEQsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsa0JBQWtCLEVBQUUsY0FBYztZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUN6QixhQUFhLEVBQUUsYUFBYTtTQUM3QixDQUFDLENBQUM7UUFFSCxxQ0FBcUM7UUFDckMsSUFBSSxvQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3RDLElBQUksRUFBRSxtQkFBbUI7WUFDekIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUztZQUN2QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsZ0JBQWdCLEVBQUU7Z0JBQ2hCO29CQUNFLElBQUksRUFBRSxXQUFXO29CQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtvQkFDekIseUJBQXlCLEVBQUUsU0FBUztvQkFDcEMsT0FBTyxFQUFFLElBQUk7aUJBQ2Q7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsT0FBTzthQUNqQjtTQUNGLENBQUMsQ0FBQztRQUVILHFEQUFxRDtRQUNyRCxJQUFJLG9DQUFnQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDMUMsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixRQUFRLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFTO1lBQ3ZDLGVBQWUsRUFBRSxhQUFhLENBQUMsRUFBRTtZQUNqQyxnQkFBZ0IsRUFBRTtnQkFDaEI7b0JBQ0UsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO29CQUN6Qix5QkFBeUIsRUFBRSxTQUFTO29CQUNwQyxPQUFPLEVBQUUsSUFBSTtpQkFDZDthQUNGO1lBQ0QsVUFBVSxFQUFFLFlBQVk7WUFDeEIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxXQUFXO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtJQUNsRCxFQUFFLENBQUMsOEVBQThFLEVBQUUsR0FBRyxFQUFFO1FBQ3RGLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLDRCQUE0QixDQUM1QyxHQUFHLEVBQ0gsd0JBQXdCLENBQ3pCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLGFBQWE7UUFDYiw2Q0FBNkM7UUFDN0MsbUVBQW1FO1FBQ25FLGdEQUFnRDtRQUNoRCxJQUFBLHVDQUE2QixFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQztBQUM3RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgTmV0d29yayBJbnRlcmZhY2VcbiAqXG4gKiBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIGJhc2ljIHVzYWdlIG9mIHRoZSBOZXR3b3JrSW50ZXJmYWNlIGNvbnN0cnVjdFxuICogYW5kIHZhbGlkYXRlcyBkZXBsb3ltZW50LCBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAuXG4gKlxuICogUnVuIHdpdGg6IG5wbSBydW4gaW50ZWdyYXRpb246bm9zdHJlYW1cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nLCBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCBcImNka3RmL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiLi4vLi4vYXp1cmUtcmVzb3VyY2Vncm91cFwiO1xuaW1wb3J0IHsgU3VibmV0IH0gZnJvbSBcIi4uLy4uL2F6dXJlLXN1Ym5ldFwiO1xuaW1wb3J0IHsgVmlydHVhbE5ldHdvcmsgfSBmcm9tIFwiLi4vLi4vYXp1cmUtdmlydHVhbG5ldHdvcmtcIjtcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5pbXBvcnQgeyBOZXR3b3JrSW50ZXJmYWNlIH0gZnJvbSBcIi4uL2xpYi9uZXR3b3JrLWludGVyZmFjZVwiO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBOZXR3b3JrIEludGVyZmFjZSB1c2FnZVxuICovXG5jbGFzcyBOZXR3b3JrSW50ZXJmYWNlRXhhbXBsZVN0YWNrIGV4dGVuZHMgVGVycmFmb3JtU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIENvbmZpZ3VyZSBBWkFQSSBwcm92aWRlclxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgLy8gQ3JlYXRlIGEgcmVzb3VyY2UgZ3JvdXBcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJleGFtcGxlLXJnXCIsIHtcbiAgICAgIG5hbWU6IFwibmljLWV4YW1wbGUtcmdcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgdGFnczoge1xuICAgICAgICBlbnZpcm9ubWVudDogXCJleGFtcGxlXCIsXG4gICAgICAgIHB1cnBvc2U6IFwiaW50ZWdyYXRpb24tdGVzdFwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHZpcnR1YWwgbmV0d29ya1xuICAgIGNvbnN0IHZuZXQgPSBuZXcgVmlydHVhbE5ldHdvcmsodGhpcywgXCJleGFtcGxlLXZuZXRcIiwge1xuICAgICAgbmFtZTogXCJ2bmV0LWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIGFkZHJlc3NTcGFjZToge1xuICAgICAgICBhZGRyZXNzUHJlZml4ZXM6IFtcIjEwLjAuMC4wLzE2XCJdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHN1Ym5ldCAtIHVzZSB2aXJ0dWFsTmV0d29ya0lkIHRvIGNyZWF0ZSBleHBsaWNpdCBUZXJyYWZvcm0gZGVwZW5kZW5jeVxuICAgIGNvbnN0IHN1Ym5ldCA9IG5ldyBTdWJuZXQodGhpcywgXCJleGFtcGxlLXN1Ym5ldFwiLCB7XG4gICAgICBuYW1lOiBcInN1Ym5ldC1leGFtcGxlXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICB2aXJ0dWFsTmV0d29ya05hbWU6IFwidm5ldC1leGFtcGxlXCIsXG4gICAgICB2aXJ0dWFsTmV0d29ya0lkOiB2bmV0LmlkLFxuICAgICAgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjEuMC8yNFwiLFxuICAgIH0pO1xuXG4gICAgLy8gRXhhbXBsZSAxOiBCYXNpYyBuZXR3b3JrIGludGVyZmFjZVxuICAgIG5ldyBOZXR3b3JrSW50ZXJmYWNlKHRoaXMsIFwiYmFzaWMtbmljXCIsIHtcbiAgICAgIG5hbWU6IFwibmljLWJhc2ljLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaXBjb25maWcxXCIsXG4gICAgICAgICAgc3VibmV0OiB7IGlkOiBzdWJuZXQuaWQgfSxcbiAgICAgICAgICBwcml2YXRlSVBBbGxvY2F0aW9uTWV0aG9kOiBcIkR5bmFtaWNcIixcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgZXhhbXBsZTogXCJiYXNpY1wiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEV4YW1wbGUgMjogTmV0d29yayBpbnRlcmZhY2Ugd2l0aCBzcGVjaWZpYyB2ZXJzaW9uXG4gICAgbmV3IE5ldHdvcmtJbnRlcmZhY2UodGhpcywgXCJ2ZXJzaW9uZWQtbmljXCIsIHtcbiAgICAgIG5hbWU6IFwibmljLXZlcnNpb25lZC1leGFtcGxlXCIsXG4gICAgICBsb2NhdGlvbjogcmVzb3VyY2VHcm91cC5wcm9wcy5sb2NhdGlvbiEsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImlwY29uZmlnMVwiLFxuICAgICAgICAgIHN1Ym5ldDogeyBpZDogc3VibmV0LmlkIH0sXG4gICAgICAgICAgcHJpdmF0ZUlQQWxsb2NhdGlvbk1ldGhvZDogXCJEeW5hbWljXCIsXG4gICAgICAgICAgcHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMDctMDFcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgZXhhbXBsZTogXCJ2ZXJzaW9uZWRcIixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZGVzY3JpYmUoXCJOZXR3b3JrIEludGVyZmFjZSBJbnRlZ3JhdGlvbiBUZXN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgZGVwbG95LCB2YWxpZGF0ZSBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgbmV0d29yayBpbnRlcmZhY2UgcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IE5ldHdvcmtJbnRlcmZhY2VFeGFtcGxlU3RhY2soXG4gICAgICBhcHAsXG4gICAgICBcInRlc3QtbmV0d29yay1pbnRlcmZhY2VcIixcbiAgICApO1xuICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spO1xuXG4gICAgLy8gVGhpcyB3aWxsOlxuICAgIC8vIDEuIFJ1biB0ZXJyYWZvcm0gYXBwbHkgdG8gZGVwbG95IHJlc291cmNlc1xuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXNcbiAgICBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveShzeW50aGVzaXplZCk7XG4gIH0sIDYwMDAwMCk7IC8vIDEwIG1pbnV0ZSB0aW1lb3V0IGZvciBkZXBsb3ltZW50IGFuZCBjbGVhbnVwXG59KTtcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Comprehensive tests for the Network Interface implementation
3
+ *
4
+ * This test suite validates the NetworkInterface class using the AzapiResource framework.
5
+ * Tests cover automatic version resolution, explicit version pinning, schema validation,
6
+ * property transformation, and resource creation.
7
+ */
8
+ export {};