@mavogel/cdk-vscode-server 0.0.2

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 (439) hide show
  1. package/.jsii +4351 -0
  2. package/API.md +367 -0
  3. package/CONTRIBUTING.md +59 -0
  4. package/LICENSE +202 -0
  5. package/README.md +183 -0
  6. package/assets/installer/installer.lambda/index.js +112 -0
  7. package/assets/secret-retriever/secret-retriever.lambda/index.js +57 -0
  8. package/docs/img/vscode-server-ui-login-min.png +0 -0
  9. package/docs/img/vscode-server-ui-min.png +0 -0
  10. package/docs/img/vscode-server.drawio +108 -0
  11. package/docs/img/vscode-server.drawio-min.png +0 -0
  12. package/integ-tests/code-server login.html +48 -0
  13. package/integ-tests/functions/login-handler.ts +63 -0
  14. package/integ-tests/integ.al2023.ts +69 -0
  15. package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.assets.json +32 -0
  16. package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.template.json +337 -0
  17. package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.assets.json +110 -0
  18. package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.template.json +2459 -0
  19. package/integ-tests/integ.al2023.ts.snapshot/asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce/index.js +6169 -0
  20. package/integ-tests/integ.al2023.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  21. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/cfn-response.js +1 -0
  22. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/consts.js +1 -0
  23. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/framework.js +3 -0
  24. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/outbound.js +1 -0
  25. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/util.js +1 -0
  26. package/integ-tests/integ.al2023.ts.snapshot/asset.512cf155ada4793b37a885c1aa6d9bb8f534e88bac6f63c69672d4d73df2decf.lambda/index.js +112 -0
  27. package/integ-tests/integ.al2023.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
  28. package/integ-tests/integ.al2023.ts.snapshot/asset.c504585dae89ce8e394d7744ccae054318e7d1aff14afb545438d173d51dc97d.bundle/index.js +30572 -0
  29. package/integ-tests/integ.al2023.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a/index.js +1 -0
  30. package/integ-tests/integ.al2023.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/__entrypoint__.js +1 -0
  31. package/integ-tests/integ.al2023.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/index.js +1 -0
  32. package/integ-tests/integ.al2023.ts.snapshot/cdk.out +1 -0
  33. package/integ-tests/integ.al2023.ts.snapshot/integ.json +22 -0
  34. package/integ-tests/integ.al2023.ts.snapshot/manifest.json +510 -0
  35. package/integ-tests/integ.al2023.ts.snapshot/tree.json +2944 -0
  36. package/integ-tests/integ.ubuntu.ts +66 -0
  37. package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.assets.json +32 -0
  38. package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.template.json +337 -0
  39. package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.assets.json +110 -0
  40. package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.template.json +2477 -0
  41. package/integ-tests/integ.ubuntu.ts.snapshot/asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce/index.js +6169 -0
  42. package/integ-tests/integ.ubuntu.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  43. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/cfn-response.js +1 -0
  44. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/consts.js +1 -0
  45. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/framework.js +3 -0
  46. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/outbound.js +1 -0
  47. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/util.js +1 -0
  48. package/integ-tests/integ.ubuntu.ts.snapshot/asset.512cf155ada4793b37a885c1aa6d9bb8f534e88bac6f63c69672d4d73df2decf.lambda/index.js +112 -0
  49. package/integ-tests/integ.ubuntu.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
  50. package/integ-tests/integ.ubuntu.ts.snapshot/asset.c504585dae89ce8e394d7744ccae054318e7d1aff14afb545438d173d51dc97d.bundle/index.js +30572 -0
  51. package/integ-tests/integ.ubuntu.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a/index.js +1 -0
  52. package/integ-tests/integ.ubuntu.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/__entrypoint__.js +1 -0
  53. package/integ-tests/integ.ubuntu.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/index.js +1 -0
  54. package/integ-tests/integ.ubuntu.ts.snapshot/cdk.out +1 -0
  55. package/integ-tests/integ.ubuntu.ts.snapshot/integ.json +22 -0
  56. package/integ-tests/integ.ubuntu.ts.snapshot/manifest.json +510 -0
  57. package/integ-tests/integ.ubuntu.ts.snapshot/tree.json +2962 -0
  58. package/lib/index.d.ts +1 -0
  59. package/lib/index.js +18 -0
  60. package/lib/installer/installer-function.d.ts +13 -0
  61. package/lib/installer/installer-function.js +23 -0
  62. package/lib/installer/installer.d.ts +64 -0
  63. package/lib/installer/installer.js +707 -0
  64. package/lib/installer/installer.lambda.d.ts +3 -0
  65. package/lib/installer/installer.lambda.js +94 -0
  66. package/lib/mappings.d.ts +2 -0
  67. package/lib/mappings.js +25 -0
  68. package/lib/prefixlist-retriever/prefixlist-retriever.d.ts +16 -0
  69. package/lib/prefixlist-retriever/prefixlist-retriever.js +56 -0
  70. package/lib/secret-retriever/secret-retriever-function.d.ts +13 -0
  71. package/lib/secret-retriever/secret-retriever-function.js +23 -0
  72. package/lib/secret-retriever/secret-retriever.d.ts +33 -0
  73. package/lib/secret-retriever/secret-retriever.js +72 -0
  74. package/lib/secret-retriever/secret-retriever.lambda.d.ts +2 -0
  75. package/lib/secret-retriever/secret-retriever.lambda.js +36 -0
  76. package/lib/vscode-server.d.ts +97 -0
  77. package/lib/vscode-server.js +417 -0
  78. package/node_modules/boolbase/README.md +10 -0
  79. package/node_modules/boolbase/index.js +8 -0
  80. package/node_modules/boolbase/package.json +23 -0
  81. package/node_modules/css-select/LICENSE +11 -0
  82. package/node_modules/css-select/README.md +264 -0
  83. package/node_modules/css-select/lib/attributes.d.ts +7 -0
  84. package/node_modules/css-select/lib/attributes.d.ts.map +1 -0
  85. package/node_modules/css-select/lib/attributes.js +236 -0
  86. package/node_modules/css-select/lib/attributes.js.map +1 -0
  87. package/node_modules/css-select/lib/compile.d.ts +13 -0
  88. package/node_modules/css-select/lib/compile.d.ts.map +1 -0
  89. package/node_modules/css-select/lib/compile.js +151 -0
  90. package/node_modules/css-select/lib/compile.js.map +1 -0
  91. package/node_modules/css-select/lib/esm/attributes.d.ts +7 -0
  92. package/node_modules/css-select/lib/esm/attributes.d.ts.map +1 -0
  93. package/node_modules/css-select/lib/esm/attributes.js +222 -0
  94. package/node_modules/css-select/lib/esm/attributes.js.map +1 -0
  95. package/node_modules/css-select/lib/esm/compile.d.ts +13 -0
  96. package/node_modules/css-select/lib/esm/compile.d.ts.map +1 -0
  97. package/node_modules/css-select/lib/esm/compile.js +115 -0
  98. package/node_modules/css-select/lib/esm/compile.js.map +1 -0
  99. package/node_modules/css-select/lib/esm/general.d.ts +3 -0
  100. package/node_modules/css-select/lib/esm/general.d.ts.map +1 -0
  101. package/node_modules/css-select/lib/esm/general.js +144 -0
  102. package/node_modules/css-select/lib/esm/general.js.map +1 -0
  103. package/node_modules/css-select/lib/esm/index.d.ts +50 -0
  104. package/node_modules/css-select/lib/esm/index.d.ts.map +1 -0
  105. package/node_modules/css-select/lib/esm/index.js +115 -0
  106. package/node_modules/css-select/lib/esm/index.js.map +1 -0
  107. package/node_modules/css-select/lib/esm/package.json +1 -0
  108. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts +5 -0
  109. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts.map +1 -0
  110. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js +35 -0
  111. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js.map +1 -0
  112. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts +4 -0
  113. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts.map +1 -0
  114. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.js +143 -0
  115. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.js.map +1 -0
  116. package/node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts +8 -0
  117. package/node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts.map +1 -0
  118. package/node_modules/css-select/lib/esm/pseudo-selectors/index.js +40 -0
  119. package/node_modules/css-select/lib/esm/pseudo-selectors/index.js.map +1 -0
  120. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts +6 -0
  121. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts.map +1 -0
  122. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js +79 -0
  123. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js.map +1 -0
  124. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts +9 -0
  125. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts.map +1 -0
  126. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js +94 -0
  127. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js.map +1 -0
  128. package/node_modules/css-select/lib/esm/sort.d.ts +12 -0
  129. package/node_modules/css-select/lib/esm/sort.d.ts.map +1 -0
  130. package/node_modules/css-select/lib/esm/sort.js +79 -0
  131. package/node_modules/css-select/lib/esm/sort.js.map +1 -0
  132. package/node_modules/css-select/lib/esm/types.d.ts +167 -0
  133. package/node_modules/css-select/lib/esm/types.d.ts.map +1 -0
  134. package/node_modules/css-select/lib/esm/types.js +2 -0
  135. package/node_modules/css-select/lib/esm/types.js.map +1 -0
  136. package/node_modules/css-select/lib/general.d.ts +3 -0
  137. package/node_modules/css-select/lib/general.d.ts.map +1 -0
  138. package/node_modules/css-select/lib/general.js +148 -0
  139. package/node_modules/css-select/lib/general.js.map +1 -0
  140. package/node_modules/css-select/lib/index.d.ts +50 -0
  141. package/node_modules/css-select/lib/index.d.ts.map +1 -0
  142. package/node_modules/css-select/lib/index.js +154 -0
  143. package/node_modules/css-select/lib/index.js.map +1 -0
  144. package/node_modules/css-select/lib/pseudo-selectors/aliases.d.ts +5 -0
  145. package/node_modules/css-select/lib/pseudo-selectors/aliases.d.ts.map +1 -0
  146. package/node_modules/css-select/lib/pseudo-selectors/aliases.js +34 -0
  147. package/node_modules/css-select/lib/pseudo-selectors/aliases.js.map +1 -0
  148. package/node_modules/css-select/lib/pseudo-selectors/filters.d.ts +4 -0
  149. package/node_modules/css-select/lib/pseudo-selectors/filters.d.ts.map +1 -0
  150. package/node_modules/css-select/lib/pseudo-selectors/filters.js +157 -0
  151. package/node_modules/css-select/lib/pseudo-selectors/filters.js.map +1 -0
  152. package/node_modules/css-select/lib/pseudo-selectors/index.d.ts +8 -0
  153. package/node_modules/css-select/lib/pseudo-selectors/index.d.ts.map +1 -0
  154. package/node_modules/css-select/lib/pseudo-selectors/index.js +46 -0
  155. package/node_modules/css-select/lib/pseudo-selectors/index.js.map +1 -0
  156. package/node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts +6 -0
  157. package/node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts.map +1 -0
  158. package/node_modules/css-select/lib/pseudo-selectors/pseudos.js +93 -0
  159. package/node_modules/css-select/lib/pseudo-selectors/pseudos.js.map +1 -0
  160. package/node_modules/css-select/lib/pseudo-selectors/subselects.d.ts +9 -0
  161. package/node_modules/css-select/lib/pseudo-selectors/subselects.d.ts.map +1 -0
  162. package/node_modules/css-select/lib/pseudo-selectors/subselects.js +112 -0
  163. package/node_modules/css-select/lib/pseudo-selectors/subselects.js.map +1 -0
  164. package/node_modules/css-select/lib/sort.d.ts +12 -0
  165. package/node_modules/css-select/lib/sort.d.ts.map +1 -0
  166. package/node_modules/css-select/lib/sort.js +84 -0
  167. package/node_modules/css-select/lib/sort.js.map +1 -0
  168. package/node_modules/css-select/lib/types.d.ts +167 -0
  169. package/node_modules/css-select/lib/types.d.ts.map +1 -0
  170. package/node_modules/css-select/lib/types.js +3 -0
  171. package/node_modules/css-select/lib/types.js.map +1 -0
  172. package/node_modules/css-select/package.json +81 -0
  173. package/node_modules/css-what/LICENSE +11 -0
  174. package/node_modules/css-what/lib/commonjs/index.d.ts +4 -0
  175. package/node_modules/css-what/lib/commonjs/index.d.ts.map +1 -0
  176. package/node_modules/css-what/lib/commonjs/index.js +23 -0
  177. package/node_modules/css-what/lib/commonjs/parse.d.ts +20 -0
  178. package/node_modules/css-what/lib/commonjs/parse.d.ts.map +1 -0
  179. package/node_modules/css-what/lib/commonjs/parse.js +425 -0
  180. package/node_modules/css-what/lib/commonjs/stringify.d.ts +8 -0
  181. package/node_modules/css-what/lib/commonjs/stringify.d.ts.map +1 -0
  182. package/node_modules/css-what/lib/commonjs/stringify.js +138 -0
  183. package/node_modules/css-what/lib/commonjs/types.d.ts +70 -0
  184. package/node_modules/css-what/lib/commonjs/types.d.ts.map +1 -0
  185. package/node_modules/css-what/lib/commonjs/types.js +42 -0
  186. package/node_modules/css-what/lib/es/index.d.ts +4 -0
  187. package/node_modules/css-what/lib/es/index.d.ts.map +1 -0
  188. package/node_modules/css-what/lib/es/index.js +3 -0
  189. package/node_modules/css-what/lib/es/parse.d.ts +20 -0
  190. package/node_modules/css-what/lib/es/parse.d.ts.map +1 -0
  191. package/node_modules/css-what/lib/es/parse.js +420 -0
  192. package/node_modules/css-what/lib/es/stringify.d.ts +8 -0
  193. package/node_modules/css-what/lib/es/stringify.d.ts.map +1 -0
  194. package/node_modules/css-what/lib/es/stringify.js +126 -0
  195. package/node_modules/css-what/lib/es/types.d.ts +70 -0
  196. package/node_modules/css-what/lib/es/types.d.ts.map +1 -0
  197. package/node_modules/css-what/lib/es/types.js +39 -0
  198. package/node_modules/css-what/package.json +59 -0
  199. package/node_modules/css-what/readme.md +69 -0
  200. package/node_modules/dom-serializer/LICENSE +11 -0
  201. package/node_modules/dom-serializer/README.md +109 -0
  202. package/node_modules/dom-serializer/lib/esm/foreignNames.d.ts +3 -0
  203. package/node_modules/dom-serializer/lib/esm/foreignNames.d.ts.map +1 -0
  204. package/node_modules/dom-serializer/lib/esm/foreignNames.js +100 -0
  205. package/node_modules/dom-serializer/lib/esm/index.d.ts +52 -0
  206. package/node_modules/dom-serializer/lib/esm/index.d.ts.map +1 -0
  207. package/node_modules/dom-serializer/lib/esm/index.js +190 -0
  208. package/node_modules/dom-serializer/lib/esm/package.json +1 -0
  209. package/node_modules/dom-serializer/lib/foreignNames.d.ts +3 -0
  210. package/node_modules/dom-serializer/lib/foreignNames.d.ts.map +1 -0
  211. package/node_modules/dom-serializer/lib/foreignNames.js +103 -0
  212. package/node_modules/dom-serializer/lib/index.d.ts +52 -0
  213. package/node_modules/dom-serializer/lib/index.d.ts.map +1 -0
  214. package/node_modules/dom-serializer/lib/index.js +229 -0
  215. package/node_modules/dom-serializer/package.json +69 -0
  216. package/node_modules/domelementtype/LICENSE +11 -0
  217. package/node_modules/domelementtype/lib/esm/index.d.ts +48 -0
  218. package/node_modules/domelementtype/lib/esm/index.d.ts.map +1 -0
  219. package/node_modules/domelementtype/lib/esm/index.js +51 -0
  220. package/node_modules/domelementtype/lib/esm/package.json +1 -0
  221. package/node_modules/domelementtype/lib/index.d.ts +48 -0
  222. package/node_modules/domelementtype/lib/index.d.ts.map +1 -0
  223. package/node_modules/domelementtype/lib/index.js +55 -0
  224. package/node_modules/domelementtype/package.json +54 -0
  225. package/node_modules/domelementtype/readme.md +1 -0
  226. package/node_modules/domhandler/LICENSE +11 -0
  227. package/node_modules/domhandler/lib/esm/index.d.ts +76 -0
  228. package/node_modules/domhandler/lib/esm/index.d.ts.map +1 -0
  229. package/node_modules/domhandler/lib/esm/index.js +146 -0
  230. package/node_modules/domhandler/lib/esm/node.d.ts +245 -0
  231. package/node_modules/domhandler/lib/esm/node.d.ts.map +1 -0
  232. package/node_modules/domhandler/lib/esm/node.js +338 -0
  233. package/node_modules/domhandler/lib/esm/package.json +1 -0
  234. package/node_modules/domhandler/lib/index.d.ts +76 -0
  235. package/node_modules/domhandler/lib/index.d.ts.map +1 -0
  236. package/node_modules/domhandler/lib/index.js +165 -0
  237. package/node_modules/domhandler/lib/node.d.ts +245 -0
  238. package/node_modules/domhandler/lib/node.d.ts.map +1 -0
  239. package/node_modules/domhandler/lib/node.js +474 -0
  240. package/node_modules/domhandler/package.json +73 -0
  241. package/node_modules/domhandler/readme.md +92 -0
  242. package/node_modules/domutils/LICENSE +11 -0
  243. package/node_modules/domutils/lib/esm/feeds.d.ts +71 -0
  244. package/node_modules/domutils/lib/esm/feeds.d.ts.map +1 -0
  245. package/node_modules/domutils/lib/esm/feeds.js +183 -0
  246. package/node_modules/domutils/lib/esm/feeds.js.map +1 -0
  247. package/node_modules/domutils/lib/esm/helpers.d.ts +59 -0
  248. package/node_modules/domutils/lib/esm/helpers.d.ts.map +1 -0
  249. package/node_modules/domutils/lib/esm/helpers.js +136 -0
  250. package/node_modules/domutils/lib/esm/helpers.js.map +1 -0
  251. package/node_modules/domutils/lib/esm/index.d.ts +10 -0
  252. package/node_modules/domutils/lib/esm/index.d.ts.map +1 -0
  253. package/node_modules/domutils/lib/esm/index.js +10 -0
  254. package/node_modules/domutils/lib/esm/index.js.map +1 -0
  255. package/node_modules/domutils/lib/esm/legacy.d.ts +79 -0
  256. package/node_modules/domutils/lib/esm/legacy.d.ts.map +1 -0
  257. package/node_modules/domutils/lib/esm/legacy.js +152 -0
  258. package/node_modules/domutils/lib/esm/legacy.js.map +1 -0
  259. package/node_modules/domutils/lib/esm/manipulation.d.ts +49 -0
  260. package/node_modules/domutils/lib/esm/manipulation.d.ts.map +1 -0
  261. package/node_modules/domutils/lib/esm/manipulation.js +134 -0
  262. package/node_modules/domutils/lib/esm/manipulation.js.map +1 -0
  263. package/node_modules/domutils/lib/esm/package.json +1 -0
  264. package/node_modules/domutils/lib/esm/querying.d.ts +64 -0
  265. package/node_modules/domutils/lib/esm/querying.d.ts.map +1 -0
  266. package/node_modules/domutils/lib/esm/querying.js +142 -0
  267. package/node_modules/domutils/lib/esm/querying.js.map +1 -0
  268. package/node_modules/domutils/lib/esm/stringify.d.ts +46 -0
  269. package/node_modules/domutils/lib/esm/stringify.d.ts.map +1 -0
  270. package/node_modules/domutils/lib/esm/stringify.js +81 -0
  271. package/node_modules/domutils/lib/esm/stringify.js.map +1 -0
  272. package/node_modules/domutils/lib/esm/traversal.d.ts +67 -0
  273. package/node_modules/domutils/lib/esm/traversal.d.ts.map +1 -0
  274. package/node_modules/domutils/lib/esm/traversal.js +112 -0
  275. package/node_modules/domutils/lib/esm/traversal.js.map +1 -0
  276. package/node_modules/domutils/lib/feeds.d.ts +71 -0
  277. package/node_modules/domutils/lib/feeds.d.ts.map +1 -0
  278. package/node_modules/domutils/lib/feeds.js +190 -0
  279. package/node_modules/domutils/lib/feeds.js.map +1 -0
  280. package/node_modules/domutils/lib/helpers.d.ts +59 -0
  281. package/node_modules/domutils/lib/helpers.d.ts.map +1 -0
  282. package/node_modules/domutils/lib/helpers.js +142 -0
  283. package/node_modules/domutils/lib/helpers.js.map +1 -0
  284. package/node_modules/domutils/lib/index.d.ts +10 -0
  285. package/node_modules/domutils/lib/index.d.ts.map +1 -0
  286. package/node_modules/domutils/lib/index.js +33 -0
  287. package/node_modules/domutils/lib/index.js.map +1 -0
  288. package/node_modules/domutils/lib/legacy.d.ts +79 -0
  289. package/node_modules/domutils/lib/legacy.d.ts.map +1 -0
  290. package/node_modules/domutils/lib/legacy.js +168 -0
  291. package/node_modules/domutils/lib/legacy.js.map +1 -0
  292. package/node_modules/domutils/lib/manipulation.d.ts +49 -0
  293. package/node_modules/domutils/lib/manipulation.d.ts.map +1 -0
  294. package/node_modules/domutils/lib/manipulation.js +142 -0
  295. package/node_modules/domutils/lib/manipulation.js.map +1 -0
  296. package/node_modules/domutils/lib/querying.d.ts +64 -0
  297. package/node_modules/domutils/lib/querying.d.ts.map +1 -0
  298. package/node_modules/domutils/lib/querying.js +155 -0
  299. package/node_modules/domutils/lib/querying.js.map +1 -0
  300. package/node_modules/domutils/lib/stringify.d.ts +46 -0
  301. package/node_modules/domutils/lib/stringify.d.ts.map +1 -0
  302. package/node_modules/domutils/lib/stringify.js +91 -0
  303. package/node_modules/domutils/lib/stringify.js.map +1 -0
  304. package/node_modules/domutils/lib/traversal.d.ts +67 -0
  305. package/node_modules/domutils/lib/traversal.d.ts.map +1 -0
  306. package/node_modules/domutils/lib/traversal.js +125 -0
  307. package/node_modules/domutils/lib/traversal.js.map +1 -0
  308. package/node_modules/domutils/package.json +79 -0
  309. package/node_modules/domutils/readme.md +31 -0
  310. package/node_modules/entities/LICENSE +11 -0
  311. package/node_modules/entities/lib/decode.d.ts +211 -0
  312. package/node_modules/entities/lib/decode.d.ts.map +1 -0
  313. package/node_modules/entities/lib/decode.js +536 -0
  314. package/node_modules/entities/lib/decode.js.map +1 -0
  315. package/node_modules/entities/lib/decode_codepoint.d.ts +19 -0
  316. package/node_modules/entities/lib/decode_codepoint.d.ts.map +1 -0
  317. package/node_modules/entities/lib/decode_codepoint.js +76 -0
  318. package/node_modules/entities/lib/decode_codepoint.js.map +1 -0
  319. package/node_modules/entities/lib/encode.d.ts +22 -0
  320. package/node_modules/entities/lib/encode.d.ts.map +1 -0
  321. package/node_modules/entities/lib/encode.js +77 -0
  322. package/node_modules/entities/lib/encode.js.map +1 -0
  323. package/node_modules/entities/lib/escape.d.ts +43 -0
  324. package/node_modules/entities/lib/escape.d.ts.map +1 -0
  325. package/node_modules/entities/lib/escape.js +122 -0
  326. package/node_modules/entities/lib/escape.js.map +1 -0
  327. package/node_modules/entities/lib/esm/decode.d.ts +211 -0
  328. package/node_modules/entities/lib/esm/decode.d.ts.map +1 -0
  329. package/node_modules/entities/lib/esm/decode.js +496 -0
  330. package/node_modules/entities/lib/esm/decode.js.map +1 -0
  331. package/node_modules/entities/lib/esm/decode_codepoint.d.ts +19 -0
  332. package/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +1 -0
  333. package/node_modules/entities/lib/esm/decode_codepoint.js +71 -0
  334. package/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
  335. package/node_modules/entities/lib/esm/encode.d.ts +22 -0
  336. package/node_modules/entities/lib/esm/encode.d.ts.map +1 -0
  337. package/node_modules/entities/lib/esm/encode.js +69 -0
  338. package/node_modules/entities/lib/esm/encode.js.map +1 -0
  339. package/node_modules/entities/lib/esm/escape.d.ts +43 -0
  340. package/node_modules/entities/lib/esm/escape.d.ts.map +1 -0
  341. package/node_modules/entities/lib/esm/escape.js +116 -0
  342. package/node_modules/entities/lib/esm/escape.js.map +1 -0
  343. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +3 -0
  344. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +1 -0
  345. package/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
  346. package/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
  347. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +3 -0
  348. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +1 -0
  349. package/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
  350. package/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
  351. package/node_modules/entities/lib/esm/generated/encode-html.d.ts +8 -0
  352. package/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +1 -0
  353. package/node_modules/entities/lib/esm/generated/encode-html.js +10 -0
  354. package/node_modules/entities/lib/esm/generated/encode-html.js.map +1 -0
  355. package/node_modules/entities/lib/esm/index.d.ts +96 -0
  356. package/node_modules/entities/lib/esm/index.d.ts.map +1 -0
  357. package/node_modules/entities/lib/esm/index.js +99 -0
  358. package/node_modules/entities/lib/esm/index.js.map +1 -0
  359. package/node_modules/entities/lib/esm/package.json +1 -0
  360. package/node_modules/entities/lib/generated/decode-data-html.d.ts +3 -0
  361. package/node_modules/entities/lib/generated/decode-data-html.d.ts.map +1 -0
  362. package/node_modules/entities/lib/generated/decode-data-html.js +9 -0
  363. package/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
  364. package/node_modules/entities/lib/generated/decode-data-xml.d.ts +3 -0
  365. package/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +1 -0
  366. package/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
  367. package/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
  368. package/node_modules/entities/lib/generated/encode-html.d.ts +8 -0
  369. package/node_modules/entities/lib/generated/encode-html.d.ts.map +1 -0
  370. package/node_modules/entities/lib/generated/encode-html.js +12 -0
  371. package/node_modules/entities/lib/generated/encode-html.js.map +1 -0
  372. package/node_modules/entities/lib/index.d.ts +96 -0
  373. package/node_modules/entities/lib/index.d.ts.map +1 -0
  374. package/node_modules/entities/lib/index.js +126 -0
  375. package/node_modules/entities/lib/index.js.map +1 -0
  376. package/node_modules/entities/package.json +90 -0
  377. package/node_modules/entities/readme.md +122 -0
  378. package/node_modules/he/LICENSE-MIT.txt +20 -0
  379. package/node_modules/he/README.md +379 -0
  380. package/node_modules/he/bin/he +148 -0
  381. package/node_modules/he/he.js +345 -0
  382. package/node_modules/he/man/he.1 +78 -0
  383. package/node_modules/he/package.json +58 -0
  384. package/node_modules/node-html-parser/CHANGELOG.md +137 -0
  385. package/node_modules/node-html-parser/LICENSE +7 -0
  386. package/node_modules/node-html-parser/README.md +365 -0
  387. package/node_modules/node-html-parser/dist/back.d.ts +1 -0
  388. package/node_modules/node-html-parser/dist/back.js +6 -0
  389. package/node_modules/node-html-parser/dist/index.d.ts +20 -0
  390. package/node_modules/node-html-parser/dist/index.js +32 -0
  391. package/node_modules/node-html-parser/dist/main.js +1646 -0
  392. package/node_modules/node-html-parser/dist/matcher.d.ts +6 -0
  393. package/node_modules/node-html-parser/dist/matcher.js +106 -0
  394. package/node_modules/node-html-parser/dist/nodes/comment.d.ts +20 -0
  395. package/node_modules/node-html-parser/dist/nodes/comment.js +57 -0
  396. package/node_modules/node-html-parser/dist/nodes/html.d.ts +240 -0
  397. package/node_modules/node-html-parser/dist/nodes/html.js +1218 -0
  398. package/node_modules/node-html-parser/dist/nodes/node.d.ts +24 -0
  399. package/node_modules/node-html-parser/dist/nodes/node.js +52 -0
  400. package/node_modules/node-html-parser/dist/nodes/text.d.ts +44 -0
  401. package/node_modules/node-html-parser/dist/nodes/text.js +144 -0
  402. package/node_modules/node-html-parser/dist/nodes/type.d.ts +6 -0
  403. package/node_modules/node-html-parser/dist/nodes/type.js +9 -0
  404. package/node_modules/node-html-parser/dist/parse.d.ts +1 -0
  405. package/node_modules/node-html-parser/dist/parse.js +5 -0
  406. package/node_modules/node-html-parser/dist/valid.d.ts +6 -0
  407. package/node_modules/node-html-parser/dist/valid.js +13 -0
  408. package/node_modules/node-html-parser/dist/void-tag.d.ts +7 -0
  409. package/node_modules/node-html-parser/dist/void-tag.js +29 -0
  410. package/node_modules/node-html-parser/package.json +114 -0
  411. package/node_modules/nth-check/LICENSE +11 -0
  412. package/node_modules/nth-check/README.md +136 -0
  413. package/node_modules/nth-check/lib/compile.d.ts +55 -0
  414. package/node_modules/nth-check/lib/compile.d.ts.map +1 -0
  415. package/node_modules/nth-check/lib/compile.js +121 -0
  416. package/node_modules/nth-check/lib/compile.js.map +1 -0
  417. package/node_modules/nth-check/lib/esm/compile.d.ts +55 -0
  418. package/node_modules/nth-check/lib/esm/compile.d.ts.map +1 -0
  419. package/node_modules/nth-check/lib/esm/compile.js +113 -0
  420. package/node_modules/nth-check/lib/esm/compile.js.map +1 -0
  421. package/node_modules/nth-check/lib/esm/index.d.ts +59 -0
  422. package/node_modules/nth-check/lib/esm/index.d.ts.map +1 -0
  423. package/node_modules/nth-check/lib/esm/index.js +63 -0
  424. package/node_modules/nth-check/lib/esm/index.js.map +1 -0
  425. package/node_modules/nth-check/lib/esm/package.json +1 -0
  426. package/node_modules/nth-check/lib/esm/parse.d.ts +9 -0
  427. package/node_modules/nth-check/lib/esm/parse.d.ts.map +1 -0
  428. package/node_modules/nth-check/lib/esm/parse.js +73 -0
  429. package/node_modules/nth-check/lib/esm/parse.js.map +1 -0
  430. package/node_modules/nth-check/lib/index.d.ts +59 -0
  431. package/node_modules/nth-check/lib/index.d.ts.map +1 -0
  432. package/node_modules/nth-check/lib/index.js +70 -0
  433. package/node_modules/nth-check/lib/index.js.map +1 -0
  434. package/node_modules/nth-check/lib/parse.d.ts +9 -0
  435. package/node_modules/nth-check/lib/parse.d.ts.map +1 -0
  436. package/node_modules/nth-check/lib/parse.js +77 -0
  437. package/node_modules/nth-check/lib/parse.js.map +1 -0
  438. package/node_modules/nth-check/package.json +78 -0
  439. package/package.json +154 -0
package/README.md ADDED
@@ -0,0 +1,183 @@
1
+ [![Build Status](https://github.com/MV-Consulting/cdk-vscode-server/actions/workflows/build.yml/badge.svg)](https://github.com/MV-Consulting/cdk-vscode-server/actions/workflows/build.yml)
2
+ [![ESLint Code Formatting](https://img.shields.io/badge/code_style-eslint-brightgreen.svg)](https://eslint.org)
3
+ [![Latest release](https://img.shields.io/github/release/MV-Consulting/cdk-vscode-server.svg)](https://github.com/MV-Consulting/cdk-vscode-server/releases)
4
+
5
+ # cdk-vscode-server
6
+
7
+ Running your dev IDE vscode on AWS for development and workshop purposes.
8
+
9
+ > [!Note]
10
+ > This construct is designed for workshop purposes and does not fulfill all security and authentication best practices.
11
+
12
+ ## Table of Contents
13
+
14
+ - [Features](#features)
15
+ - [Usage](#usage)
16
+ - [Solution Design](#solution-design)
17
+ - [Inspiration](#inspiration)
18
+
19
+ ## Features
20
+
21
+ - ⚡ **Quick Setup**: Spin up and configure your [vscode](https://code.visualstudio.com/) server in under 10 minutes in your AWS account
22
+ - 📏 **Best Practice Setup**: Set up with [projen](https://projen.io/) and a [single configuration file](./.projenrc.ts) to keep your changes centralized.
23
+ - 🤹‍♂️ **Pre-installed packages**: Besides the [vscode](https://code.visualstudio.com/) server, other tools and software packages such as `git`, `docker`, `awscli` `nodejs` and `python` are pre-installed on the EC2 instance.
24
+ - 🏗️ **Extensibility**: Pass in properties to the construct, which start with `additional*`. They allow you to extend the configuration to your needs. There are more to come...
25
+
26
+ ## Usage
27
+ The following steps get you started:
28
+
29
+ 1. Create a new `awscdk-app` via
30
+ ```bash
31
+ npx projen new awscdk-app-ts --package-manager=npm
32
+ ```
33
+ 3. Add `@mavogel/cdk-vscode-server` as a dependency to your project in the `.projenrc.ts` file
34
+ 4. Run `yarn run projen` to install it
35
+ 5. Add the following to the `src/main.ts` file:
36
+ ```ts
37
+ import { App, Stack, StackProps } from 'aws-cdk-lib';
38
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
39
+ import * as iam from 'aws-cdk-lib/aws-iam';
40
+ import { Construct } from 'constructs';
41
+ import {
42
+ LinuxArchitectureType,
43
+ LinuxFlavorType,
44
+ VSCodeServer
45
+ } from '@mavogel/cdk-vscode-server';
46
+
47
+ export class MyStack extends Stack {
48
+ constructor(scope: Construct, id: string, props: StackProps = {}) {
49
+ super(scope, id, props);
50
+
51
+ new VSCodeServer(this, 'vscode', {
52
+ // for example (or simply use the defaults by not setting the properties)
53
+ instanceVolumeSize: 8,
54
+ instanceClass: ec2.InstanceClass.M7G,
55
+ instanceSize: ec2.InstanceSize.LARGE,
56
+ instanceOperatingSystem: LinuxFlavorType.UBUNTU_22,
57
+ instanceCpuArchitecture: LinuxArchitectureType.ARM,
58
+
59
+ // 👇🏽 or if you want to give the InstanceRole more permissions
60
+ additionalInstanceRolePolicies: [
61
+ new iam.PolicyStatement({
62
+ effect: iam.Effect.ALLOW,
63
+ actions: [
64
+ 'codebuild:*',
65
+ ],
66
+ resources: [
67
+ `arn:aws:codebuild:*:${Stack.of(this).account}:*/*`,
68
+ ],
69
+ }),
70
+ ]
71
+
72
+ // and more... 💡
73
+ });
74
+ }
75
+ }
76
+
77
+ const env = {
78
+ account: '123456789912',
79
+ region: 'eu-central-1',
80
+ };
81
+
82
+ const app = new App();
83
+ new MyStack(app, 'vscode-server', { env });
84
+ app.synth();
85
+ ```
86
+
87
+ and deploy it
88
+ ```bash
89
+ npx projen build
90
+ npx projen deploy
91
+ ```
92
+
93
+ with the output
94
+ ```console
95
+ ✨ Deployment time: 509.87s
96
+
97
+ Outputs:
98
+ dev.vscodedomainName6729AA39 = https://d1foo65bar4baz.cloudfront.net/?folder=/Workshop
99
+ dev.vscodepassword64FBCA12 = foobarbaz
100
+ ```
101
+
102
+ > [!Important]
103
+ > There are issues with copy pasting into the VSCode terminal within the Firefox browser (2025-01-12)
104
+
105
+ Then open the domain name in your favorite browser and you'd see the following login screen:
106
+ ![vscode-server-ui-login](docs/img/vscode-server-ui-login-min.png)
107
+
108
+ After entering the password, you are logged into VSCode and can start coding :tada:
109
+
110
+ ![vscode-server-ui](docs/img/vscode-server-ui-min.png)
111
+
112
+ ## Solution Design
113
+
114
+ <details>
115
+ <summary>... if you're curious about click here for the details</summary>
116
+
117
+ ![vscode-server-solution-design](docs/img/vscode-server.drawio-min.png)
118
+
119
+ </details>
120
+
121
+ ## Inspiration
122
+ This project was created based on the following inspiration
123
+
124
+ - [vscode-on-ec2-for-prototyping](https://github.com/aws-samples/vscode-on-ec2-for-prototyping): as baseline, which unfortunately was outdated
125
+ - [aws-terraform-dev-container](https://github.com/awslabs/aws-terraform-dev-container): as baseline for terraform, but unfortunately also outdated
126
+ - [java-on-aws-workshop-ide-only.yaml](https://github.com/aws-samples/java-on-aws/blob/main/labs/unicorn-store/infrastructure/cfn/java-on-aws-workshop-ide-only.yaml): an already synthesized cloudformation stack, which used mostly python as the custom resources
127
+ - [fleet-workshop-team-stack-self.json](https://static.us-east-1.prod.workshops.aws/public/cc4aa67e-5b7a-4df1-abf7-c42502899a25/assets/fleet-workshop-team-stack-self.json): also an already synthesized cloudformation stack, which did much more as I currently implemented here.
128
+ - [eks-workshop-vscode-cfn.yaml](https://github.com/aws-samples/eks-workshop-v2/blob/main/lab/cfn/eks-workshop-vscode-cfn.yaml): another great baseline
129
+
130
+ ## Unlock the full potential of your AWS cloud infrastructure - Work with us!
131
+
132
+ > [!TIP]
133
+ > Bring your AWS Infrastructure with [MV Consulting](https://manuel-vogel.de/) to a new level. Let's raise your bar! We ship well-architected, resilient, operationally efficient, performance- and cost-optimized AWS solutions. They are designed to scale using Infrastructure as Code (IaC), DevOps best-practices and tailored to cloud-native systems for your businesses.
134
+ >
135
+ > Our Approach:
136
+ >
137
+ > - **Tailored AWS Solutions**: Custom-built and adapted for your unique business needs
138
+ > - **Future-Proof Architecture**: Scalable designs that grow with you
139
+ > - **Cloud-Native in-mind**: Modern and optimized for cloud-native usage
140
+ > - **Empowerment Through Ownership**: Your business, your infrastructure, our expertise
141
+ >
142
+ > Why Choose Us:
143
+ > - 7+ Years of AWS Experience
144
+ > - 12x AWS Certified, including Solutions Architect & DevOps Engineer Professional
145
+ > - 5x Kubernetes Certified with proven deep knowledge and profound hands-on experience
146
+ > - Proven Track Record + transparent open source code and Testimonials
147
+ > - For us business drives tech and not the other way around
148
+ >
149
+ > Ready to elevate your AWS Infrastructure?
150
+ >
151
+ > <a href="https://manuel-vogel.de/contact"><img alt="Schedule your call" src="https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge"/></a>
152
+ > <details><summary>☁️ <strong>Discover more about my one-person business: MV Consulting</strong></summary>
153
+ >
154
+ > <br/>
155
+ >
156
+ > Hi, I'm Manuel – AWS expert and founder of [MV Consulting](https://manuel-vogel.de). With over a decade of hands-on experience, I specialized myself in deploying well-architected, highly scalable and cost-effective AWS Solutions using Infrastructure as Code (IaC).
157
+ >
158
+ > #### When you work with me, you're getting a package deal of expertise and personalized service:
159
+ >
160
+ > - **AWS IaC Proficiency**: I bring deep AWS CDK and [terraform](https://www.terraform.io/) knowledge to the table, ensuring your infrastructure is not just maintainable and scalable, but also fully automated.
161
+ > - **AWS Certified**: [Equipped with 12 AWS Certifications](https://www.credly.com/users/manuel-vogel/badges), including Solutions Architect & DevOps Engineer Professional, to ensure best practices across diverse cloud scenarios.
162
+ > - **Direct Access**: You work with me, not a team of managers. Expect quick decisions and high-quality work.
163
+ > - **Tailored Solutions**: Understanding that no two businesses are alike, I Custom-fit cloud infrastructure for your unique needs.
164
+ > - **Cost-Effective**: I'll optimize your AWS spending without cutting corners on performance or security.
165
+ > - **Seamless CI/CD**: I'll set up smooth CI/CD processes using GitHub Actions or Gitlab CI, making changes a breeze through Pull Requests.
166
+ >
167
+ > *My mission is clear: I'll free you from infrastructure and automation headaches so you can focus on what truly matters – your core business.*
168
+ >
169
+ > Ready to unlock the full potential of the AWS Cloud?
170
+ >
171
+ > <a href="https://manuel-vogel.de/contact"><img alt="Schedule your call" src="https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge"/></a>
172
+ > </details>
173
+
174
+ ## Acknowledgements
175
+
176
+ Big thank you to the creators of [projen](https://github.com/projen/projen). This project stands on the shoulders of giants, made possible by their pioneering work in simplifying cloud infrastructure projects!
177
+
178
+ ## Author
179
+
180
+ [Manuel Vogel](https://manuel-vogel.de/about/)
181
+
182
+ [![](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/manuel-vogel)
183
+ [![](https://img.shields.io/badge/GitHub-2b3137?style=for-the-badge&logo=github&logoColor=white)](https://github.com/mavogel)
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/installer/installer.lambda.ts
21
+ var installer_lambda_exports = {};
22
+ __export(installer_lambda_exports, {
23
+ handler: () => handler
24
+ });
25
+ module.exports = __toCommonJS(installer_lambda_exports);
26
+ var import_client_ssm = require("@aws-sdk/client-ssm");
27
+ var ssm = new import_client_ssm.SSM();
28
+ var SLEEP_MS = 2900;
29
+ var handler = async (event, context) => {
30
+ console.log("Event: %j", { ...event, ResponseURL: "..." });
31
+ if (event.RequestType !== "Create") {
32
+ return {};
33
+ }
34
+ const resourceProperties = event.ResourceProperties;
35
+ const instanceId = event.ResourceProperties.InstanceId;
36
+ const documentName = event.ResourceProperties.DocumentName;
37
+ const cloudWatchLogGroupName = event.ResourceProperties.CloudWatchLogGroupName;
38
+ console.log("ResourceProperties raw: %j", resourceProperties);
39
+ console.log("InstanceId: %s", event.ResourceProperties.InstanceId);
40
+ console.log("VSCodePassword: %s", event.ResourceProperties.VSCodePassword);
41
+ const resourcePropertiesPartial = resourceProperties;
42
+ console.log("ResourceProperties before: %j", resourcePropertiesPartial);
43
+ delete resourcePropertiesPartial.ServiceToken;
44
+ if (resourcePropertiesPartial.ServiceTimeout) {
45
+ delete resourcePropertiesPartial.ServiceTimeout;
46
+ }
47
+ delete resourcePropertiesPartial.InstanceId;
48
+ delete resourcePropertiesPartial.DocumentName;
49
+ delete resourcePropertiesPartial.CloudWatchLogGroupName;
50
+ if (resourcePropertiesPartial.PhysicalResourceId) {
51
+ delete resourcePropertiesPartial.PhysicalResourceId;
52
+ }
53
+ console.log("ResourceProperties filtered after: %j", resourcePropertiesPartial);
54
+ const parameters = {};
55
+ for (const [key, value] of Object.entries(resourcePropertiesPartial)) {
56
+ parameters[key] = [value];
57
+ }
58
+ console.log("mapped parameters: %j", parameters);
59
+ let attemptNo = 0;
60
+ let timeRemaining = context.getRemainingTimeInMillis();
61
+ console.log(`Running SSM Document '${documentName}' on EC2 instance '${instanceId}'. Logging to '${cloudWatchLogGroupName}' with parameters: '${JSON.stringify(parameters)}'`);
62
+ while (true) {
63
+ attemptNo += 1;
64
+ console.log(`Attempt: ${attemptNo}. Time Remaining: ${timeRemaining / 1e3}s`);
65
+ try {
66
+ const response = await ssm.sendCommand({
67
+ DocumentName: documentName,
68
+ InstanceIds: [instanceId],
69
+ CloudWatchOutputConfig: {
70
+ CloudWatchLogGroupName: cloudWatchLogGroupName,
71
+ CloudWatchOutputEnabled: true
72
+ },
73
+ Parameters: parameters
74
+ });
75
+ console.log(`response: ${JSON.stringify(response)}`);
76
+ const command = response.Command;
77
+ const commandId = command.CommandId;
78
+ const responseData = { CommandId: commandId };
79
+ switch (command.Status) {
80
+ case "Pending":
81
+ case "InProgress":
82
+ timeRemaining = context.getRemainingTimeInMillis();
83
+ if (timeRemaining > SLEEP_MS) {
84
+ console.log(`Instance ${instanceId} not ready: 'InProgress'. Sleeping: ${SLEEP_MS / 1e3}s`);
85
+ await new Promise((resolve) => setTimeout(resolve, SLEEP_MS));
86
+ break;
87
+ } else {
88
+ throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} timed out while lambda in progress`);
89
+ }
90
+ case "Success":
91
+ console.log(`Instance ${instanceId} successfully bootstrapped`);
92
+ return { Data: responseData };
93
+ case "TimedOut":
94
+ throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} timed out`);
95
+ case "Cancelled":
96
+ throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} cancelled`);
97
+ case "Failed":
98
+ throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} failed`);
99
+ default:
100
+ throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} status ${command.Status}`);
101
+ }
102
+ return { Data: responseData };
103
+ } catch (error) {
104
+ console.log(error);
105
+ throw error;
106
+ }
107
+ }
108
+ };
109
+ // Annotate the CommonJS export names for ESM import in node:
110
+ 0 && (module.exports = {
111
+ handler
112
+ });
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/secret-retriever/secret-retriever.lambda.ts
21
+ var secret_retriever_lambda_exports = {};
22
+ __export(secret_retriever_lambda_exports, {
23
+ handler: () => handler
24
+ });
25
+ module.exports = __toCommonJS(secret_retriever_lambda_exports);
26
+ var import_client_secrets_manager = require("@aws-sdk/client-secrets-manager");
27
+ var secretsManager = new import_client_secrets_manager.SecretsManager();
28
+ var handler = async (event) => {
29
+ console.log("Event: %j", { ...event, ResponseURL: "..." });
30
+ if (event.RequestType === "Delete") {
31
+ return {};
32
+ }
33
+ const secretArn = event.ResourceProperties.SecretArn;
34
+ console.log("secretArn: %j", secretArn);
35
+ try {
36
+ const secret = await secretsManager.getSecretValue({
37
+ SecretId: secretArn
38
+ });
39
+ const secretValue = secret.SecretString;
40
+ console.log("secretValue: %j", secretValue);
41
+ const parsedSecretValue = JSON.parse(secretValue);
42
+ console.log("secretValue is JSON: %j", parsedSecretValue);
43
+ return {
44
+ Data: {
45
+ secretValue: parsedSecretValue,
46
+ secretPasswordValue: parsedSecretValue.password
47
+ }
48
+ };
49
+ } catch (error) {
50
+ console.error(error);
51
+ throw error;
52
+ }
53
+ };
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ handler
57
+ });
@@ -0,0 +1,108 @@
1
+ <mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" version="24.7.6">
2
+ <diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">
3
+ <mxGraphModel dx="2215" dy="605" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
4
+ <root>
5
+ <mxCell id="0" />
6
+ <mxCell id="1" parent="0" />
7
+ <mxCell id="UEzPUAAOIrF-is8g5C7q-74" value="AWS Cloud" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;labelBackgroundColor=#ffffff;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;" parent="1" vertex="1">
8
+ <mxGeometry x="70" y="100" width="860" height="690" as="geometry" />
9
+ </mxCell>
10
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-13" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" vertex="1" parent="UEzPUAAOIrF-is8g5C7q-74">
11
+ <mxGeometry x="55.5" y="68" width="744.5" height="572" as="geometry" />
12
+ </mxCell>
13
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-1" value="VPC" style="sketch=0;outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;strokeColor=#879196;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#879196;dashed=0;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-13">
14
+ <mxGeometry x="-30" y="-30" width="810" height="630" as="geometry" />
15
+ </mxCell>
16
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-16" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1NWmoB_3eEeEF4lO7WTZ-13" source="1NWmoB_3eEeEF4lO7WTZ-10" target="1NWmoB_3eEeEF4lO7WTZ-2">
17
+ <mxGeometry relative="1" as="geometry" />
18
+ </mxCell>
19
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-17" value="configures&amp;nbsp;&lt;div&gt;Ingress&lt;/div&gt;&lt;div&gt;Rule&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1NWmoB_3eEeEF4lO7WTZ-16">
20
+ <mxGeometry x="-0.1337" y="2" relative="1" as="geometry">
21
+ <mxPoint y="1" as="offset" />
22
+ </mxGeometry>
23
+ </mxCell>
24
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-10" value="Retrieve&lt;div&gt;PrefixListId&lt;/div&gt;&lt;div&gt;for region&lt;/div&gt;" style="outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;labelBackgroundColor=#ffffff;spacingTop=6;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-13">
25
+ <mxGeometry x="402.5" y="207" width="78" height="78" as="geometry" />
26
+ </mxCell>
27
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-31" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1NWmoB_3eEeEF4lO7WTZ-13" source="UEzPUAAOIrF-is8g5C7q-85" target="1NWmoB_3eEeEF4lO7WTZ-8">
28
+ <mxGeometry relative="1" as="geometry" />
29
+ </mxCell>
30
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-35" value="configures&lt;br&gt;SSM Document&lt;div&gt;with password&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1NWmoB_3eEeEF4lO7WTZ-31">
31
+ <mxGeometry x="0.0457" relative="1" as="geometry">
32
+ <mxPoint as="offset" />
33
+ </mxGeometry>
34
+ </mxCell>
35
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-33" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1NWmoB_3eEeEF4lO7WTZ-13" source="UEzPUAAOIrF-is8g5C7q-85" target="1NWmoB_3eEeEF4lO7WTZ-6">
36
+ <mxGeometry relative="1" as="geometry">
37
+ <Array as="points">
38
+ <mxPoint x="525" y="82" />
39
+ <mxPoint x="525" y="82" />
40
+ </Array>
41
+ </mxGeometry>
42
+ </mxCell>
43
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-34" value="gets" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1NWmoB_3eEeEF4lO7WTZ-33">
44
+ <mxGeometry x="0.0024" y="-1" relative="1" as="geometry">
45
+ <mxPoint as="offset" />
46
+ </mxGeometry>
47
+ </mxCell>
48
+ <mxCell id="UEzPUAAOIrF-is8g5C7q-85" value="SecretRetriever" style="outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;labelBackgroundColor=#ffffff;spacingTop=6;" parent="1NWmoB_3eEeEF4lO7WTZ-13" vertex="1">
49
+ <mxGeometry x="577.5" y="42" width="78" height="78" as="geometry" />
50
+ </mxCell>
51
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-6" value="VSCode Server Password" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;shape=mxgraph.aws4.productIcon;prIcon=mxgraph.aws4.secrets_manager;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-13">
52
+ <mxGeometry x="401.5" y="42" width="80" height="118" as="geometry" />
53
+ </mxCell>
54
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-8" value="Installer&amp;nbsp;&lt;div&gt;SSM document&lt;/div&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#E7157B;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.documents;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-13">
55
+ <mxGeometry x="584.5" y="382" width="64" height="78" as="geometry" />
56
+ </mxCell>
57
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-22" value="" style="group" vertex="1" connectable="0" parent="1NWmoB_3eEeEF4lO7WTZ-13">
58
+ <mxGeometry x="44.5" y="180" width="268" height="378.75" as="geometry" />
59
+ </mxCell>
60
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-4" value="VSCode Server&amp;nbsp;&lt;div&gt;Instance&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-22">
61
+ <mxGeometry x="78.75" y="112" width="78" height="78" as="geometry" />
62
+ </mxCell>
63
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-2" value="" style="rounded=1;arcSize=10;dashed=1;strokeColor=#ff0000;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-22">
64
+ <mxGeometry x="-3" width="223" height="300" as="geometry" />
65
+ </mxCell>
66
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-3" value="Cloudfront Access" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudfront;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-13">
67
+ <mxGeometry x="123.25" y="42" width="78" height="78" as="geometry" />
68
+ </mxCell>
69
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-23" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1NWmoB_3eEeEF4lO7WTZ-13" source="1NWmoB_3eEeEF4lO7WTZ-3" target="1NWmoB_3eEeEF4lO7WTZ-4">
70
+ <mxGeometry relative="1" as="geometry" />
71
+ </mxCell>
72
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-27" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1NWmoB_3eEeEF4lO7WTZ-13" source="1NWmoB_3eEeEF4lO7WTZ-9" target="1NWmoB_3eEeEF4lO7WTZ-8">
73
+ <mxGeometry relative="1" as="geometry" />
74
+ </mxCell>
75
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-28" value="uses" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1NWmoB_3eEeEF4lO7WTZ-27">
76
+ <mxGeometry x="-0.187" y="-2" relative="1" as="geometry">
77
+ <mxPoint as="offset" />
78
+ </mxGeometry>
79
+ </mxCell>
80
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-21" value="&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;SecGroup Port 80&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;padding: 0px; margin: 0px; text-wrap-mode: nowrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;from PrefixListId&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-13">
81
+ <mxGeometry x="93.5" y="492" width="107.75" height="30" as="geometry" />
82
+ </mxCell>
83
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-9" value="Installer" style="outlineConnect=0;fontColor=#232F3E;gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;labelBackgroundColor=#ffffff;spacingTop=6;" vertex="1" parent="1NWmoB_3eEeEF4lO7WTZ-13">
84
+ <mxGeometry x="401.5" y="382" width="78" height="78" as="geometry" />
85
+ </mxCell>
86
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-36" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1NWmoB_3eEeEF4lO7WTZ-13" source="1NWmoB_3eEeEF4lO7WTZ-9" target="1NWmoB_3eEeEF4lO7WTZ-4">
87
+ <mxGeometry relative="1" as="geometry" />
88
+ </mxCell>
89
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-37" value="installs via SSM document" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1NWmoB_3eEeEF4lO7WTZ-36">
90
+ <mxGeometry x="0.1601" relative="1" as="geometry">
91
+ <mxPoint x="51" as="offset" />
92
+ </mxGeometry>
93
+ </mxCell>
94
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-14" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#434445;aspect=fixed;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.vvd.web_browser;" vertex="1" parent="1">
95
+ <mxGeometry x="-20" y="231.25" width="50" height="35.5" as="geometry" />
96
+ </mxCell>
97
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-15" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="1NWmoB_3eEeEF4lO7WTZ-14" target="1NWmoB_3eEeEF4lO7WTZ-3">
98
+ <mxGeometry relative="1" as="geometry" />
99
+ </mxCell>
100
+ <mxCell id="1NWmoB_3eEeEF4lO7WTZ-29" value="https access" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1NWmoB_3eEeEF4lO7WTZ-15">
101
+ <mxGeometry x="-0.3846" y="4" relative="1" as="geometry">
102
+ <mxPoint as="offset" />
103
+ </mxGeometry>
104
+ </mxCell>
105
+ </root>
106
+ </mxGraphModel>
107
+ </diagram>
108
+ </mxfile>
@@ -0,0 +1,48 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en"><head>
3
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
6
+ <meta http-equiv="Content-Security-Policy" content="style-src 'self'; script-src 'self' 'unsafe-inline'; manifest-src 'self'; img-src 'self' data:; font-src 'self' data:;">
7
+ <meta name="color-scheme" content="light dark">
8
+ <title>code-server login</title>
9
+ <link rel="icon" href="https://dyvkvteetusm8.cloudfront.net/_static/src/browser/media/favicon-dark-support.svg">
10
+ <link rel="alternate icon" href="https://dyvkvteetusm8.cloudfront.net/_static/src/browser/media/favicon.ico">
11
+ <link rel="manifest" href="https://dyvkvteetusm8.cloudfront.net/manifest.json" crossorigin="use-credentials">
12
+ <link rel="apple-touch-icon" sizes="192x192" href="https://dyvkvteetusm8.cloudfront.net/_static/src/browser/media/pwa-icon-192.png">
13
+ <link rel="apple-touch-icon" sizes="512x512" href="https://dyvkvteetusm8.cloudfront.net/_static/src/browser/media/pwa-icon-512.png">
14
+ <link href="code-server%20login_files/global.css" rel="stylesheet">
15
+ <link href="code-server%20login_files/login.css" rel="stylesheet">
16
+ <meta id="coder-options" data-settings="{&quot;base&quot;:&quot;.&quot;,&quot;csStaticBase&quot;:&quot;./_static&quot;,&quot;codeServerVersion&quot;:&quot;4.96.1&quot;}">
17
+ </head>
18
+ <body>
19
+ <div class="center-container">
20
+ <div class="card-box">
21
+ <div class="header">
22
+ <h1 class="main">Welcome to code-server</h1>
23
+ <div class="sub">Please log in below. Check the config file at /home/participant/.config/code-server/config.yaml for the password.</div>
24
+ </div>
25
+ <div class="content">
26
+ <form class="login-form" method="post">
27
+ <input class="user" type="text" autocomplete="username">
28
+ <input id="base" type="hidden" name="base" value=".">
29
+ <input id="href" type="hidden" name="href" value="https://dyvkvteetusm8.cloudfront.net/login?folder=/Workshop&amp;to=">
30
+ <div class="field">
31
+ <input required="" autofocus="" class="password" type="password" placeholder="PASSWORD" name="password" autocomplete="current-password">
32
+ <input class="submit -button" value="SUBMIT" type="submit">
33
+ </div>
34
+ </form>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <script>
39
+ // Inform the backend about the path since the proxy might have rewritten
40
+ // it out of the headers and cookies must be set with absolute paths.
41
+ const el = document.getElementById("href")
42
+ if (el) {
43
+ el.value = location.href
44
+ }
45
+ </script>
46
+
47
+
48
+ </body></html>
@@ -0,0 +1,63 @@
1
+ import { parse } from 'node-html-parser';
2
+
3
+ export const handler = async (event: any) => {
4
+ const domainName = event.domainName || 'test-domain';
5
+ const password = event.password || 'test-password';
6
+ log({
7
+ message: 'Login in',
8
+ event,
9
+ });
10
+
11
+ let htmlContent: string = '';
12
+ try {
13
+ if (!domainName || !password) {
14
+ throw new Error('Domain name and password are required');
15
+ }
16
+
17
+ const url = domainName.startsWith('http') ? domainName : `https://${domainName}`;
18
+
19
+ // No logs due to error 'Response object is too long'
20
+ // https://github.com/aws/aws-cdk/issues/24490
21
+ // log({ message: 'Fetching document', url })
22
+ const response = await fetch(url);
23
+ // log({ message: 'Got response' })
24
+ if (!response.ok) {
25
+ throw new Error(`HTTP error! status: ${response.status}`);
26
+ }
27
+
28
+ htmlContent = await response.text();
29
+ // log({ message: 'Got HTML content' })
30
+
31
+ // log({ message: 'Parsing HTML' })
32
+ const root = parse(htmlContent);
33
+
34
+ // log({ message: 'Querying document' })
35
+ const centerContainer = root.querySelector('.center-container');
36
+
37
+ if (!centerContainer) {
38
+ error({
39
+ message: 'Center container NOT found. See retrieved htmlContent',
40
+ htmlContent,
41
+ });
42
+ return 'NOK';
43
+ }
44
+
45
+ log({ message: 'Found center container. TADA' });
46
+ return 'OK';
47
+ } catch (err) {
48
+ error({
49
+ message: 'Error fetching or processing document',
50
+ err,
51
+ htmlContent,
52
+ });
53
+ return 'NOK';
54
+ }
55
+ };
56
+
57
+ function log(msg: any) {
58
+ console.log(JSON.stringify(msg));
59
+ }
60
+
61
+ function error(msg: any) {
62
+ console.error(JSON.stringify(msg));
63
+ }