@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
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AttributeAction = exports.IgnoreCaseMode = exports.SelectorType = void 0;
4
+ var SelectorType;
5
+ (function (SelectorType) {
6
+ SelectorType["Attribute"] = "attribute";
7
+ SelectorType["Pseudo"] = "pseudo";
8
+ SelectorType["PseudoElement"] = "pseudo-element";
9
+ SelectorType["Tag"] = "tag";
10
+ SelectorType["Universal"] = "universal";
11
+ // Traversals
12
+ SelectorType["Adjacent"] = "adjacent";
13
+ SelectorType["Child"] = "child";
14
+ SelectorType["Descendant"] = "descendant";
15
+ SelectorType["Parent"] = "parent";
16
+ SelectorType["Sibling"] = "sibling";
17
+ SelectorType["ColumnCombinator"] = "column-combinator";
18
+ })(SelectorType = exports.SelectorType || (exports.SelectorType = {}));
19
+ /**
20
+ * Modes for ignore case.
21
+ *
22
+ * This could be updated to an enum, and the object is
23
+ * the current stand-in that will allow code to be updated
24
+ * without big changes.
25
+ */
26
+ exports.IgnoreCaseMode = {
27
+ Unknown: null,
28
+ QuirksMode: "quirks",
29
+ IgnoreCase: true,
30
+ CaseSensitive: false,
31
+ };
32
+ var AttributeAction;
33
+ (function (AttributeAction) {
34
+ AttributeAction["Any"] = "any";
35
+ AttributeAction["Element"] = "element";
36
+ AttributeAction["End"] = "end";
37
+ AttributeAction["Equals"] = "equals";
38
+ AttributeAction["Exists"] = "exists";
39
+ AttributeAction["Hyphen"] = "hyphen";
40
+ AttributeAction["Not"] = "not";
41
+ AttributeAction["Start"] = "start";
42
+ })(AttributeAction = exports.AttributeAction || (exports.AttributeAction = {}));
@@ -0,0 +1,4 @@
1
+ export * from "./types";
2
+ export { isTraversal, parse } from "./parse";
3
+ export { stringify } from "./stringify";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export { isTraversal, parse } from "./parse";
3
+ export { stringify } from "./stringify";
@@ -0,0 +1,20 @@
1
+ import { Selector, Traversal } from "./types";
2
+ /**
3
+ * Checks whether a specific selector is a traversal.
4
+ * This is useful eg. in swapping the order of elements that
5
+ * are not traversals.
6
+ *
7
+ * @param selector Selector to check.
8
+ */
9
+ export declare function isTraversal(selector: Selector): selector is Traversal;
10
+ /**
11
+ * Parses `selector`, optionally with the passed `options`.
12
+ *
13
+ * @param selector Selector to parse.
14
+ * @param options Options for parsing.
15
+ * @returns Returns a two-dimensional array.
16
+ * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),
17
+ * the second contains the relevant tokens for that selector.
18
+ */
19
+ export declare function parse(selector: string): Selector[][];
20
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EAGR,SAAS,EAIZ,MAAM,SAAS,CAAC;AA6DjB;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAAI,SAAS,CAYrE;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,CAUpD"}
@@ -0,0 +1,420 @@
1
+ import { SelectorType, AttributeAction, } from "./types";
2
+ const reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/;
3
+ const reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi;
4
+ const actionTypes = new Map([
5
+ [126 /* Tilde */, AttributeAction.Element],
6
+ [94 /* Circumflex */, AttributeAction.Start],
7
+ [36 /* Dollar */, AttributeAction.End],
8
+ [42 /* Asterisk */, AttributeAction.Any],
9
+ [33 /* ExclamationMark */, AttributeAction.Not],
10
+ [124 /* Pipe */, AttributeAction.Hyphen],
11
+ ]);
12
+ // Pseudos, whose data property is parsed as well.
13
+ const unpackPseudos = new Set([
14
+ "has",
15
+ "not",
16
+ "matches",
17
+ "is",
18
+ "where",
19
+ "host",
20
+ "host-context",
21
+ ]);
22
+ /**
23
+ * Checks whether a specific selector is a traversal.
24
+ * This is useful eg. in swapping the order of elements that
25
+ * are not traversals.
26
+ *
27
+ * @param selector Selector to check.
28
+ */
29
+ export function isTraversal(selector) {
30
+ switch (selector.type) {
31
+ case SelectorType.Adjacent:
32
+ case SelectorType.Child:
33
+ case SelectorType.Descendant:
34
+ case SelectorType.Parent:
35
+ case SelectorType.Sibling:
36
+ case SelectorType.ColumnCombinator:
37
+ return true;
38
+ default:
39
+ return false;
40
+ }
41
+ }
42
+ const stripQuotesFromPseudos = new Set(["contains", "icontains"]);
43
+ // Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152
44
+ function funescape(_, escaped, escapedWhitespace) {
45
+ const high = parseInt(escaped, 16) - 0x10000;
46
+ // NaN means non-codepoint
47
+ return high !== high || escapedWhitespace
48
+ ? escaped
49
+ : high < 0
50
+ ? // BMP codepoint
51
+ String.fromCharCode(high + 0x10000)
52
+ : // Supplemental Plane codepoint (surrogate pair)
53
+ String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);
54
+ }
55
+ function unescapeCSS(str) {
56
+ return str.replace(reEscape, funescape);
57
+ }
58
+ function isQuote(c) {
59
+ return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;
60
+ }
61
+ function isWhitespace(c) {
62
+ return (c === 32 /* Space */ ||
63
+ c === 9 /* Tab */ ||
64
+ c === 10 /* NewLine */ ||
65
+ c === 12 /* FormFeed */ ||
66
+ c === 13 /* CarriageReturn */);
67
+ }
68
+ /**
69
+ * Parses `selector`, optionally with the passed `options`.
70
+ *
71
+ * @param selector Selector to parse.
72
+ * @param options Options for parsing.
73
+ * @returns Returns a two-dimensional array.
74
+ * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),
75
+ * the second contains the relevant tokens for that selector.
76
+ */
77
+ export function parse(selector) {
78
+ const subselects = [];
79
+ const endIndex = parseSelector(subselects, `${selector}`, 0);
80
+ if (endIndex < selector.length) {
81
+ throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);
82
+ }
83
+ return subselects;
84
+ }
85
+ function parseSelector(subselects, selector, selectorIndex) {
86
+ let tokens = [];
87
+ function getName(offset) {
88
+ const match = selector.slice(selectorIndex + offset).match(reName);
89
+ if (!match) {
90
+ throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);
91
+ }
92
+ const [name] = match;
93
+ selectorIndex += offset + name.length;
94
+ return unescapeCSS(name);
95
+ }
96
+ function stripWhitespace(offset) {
97
+ selectorIndex += offset;
98
+ while (selectorIndex < selector.length &&
99
+ isWhitespace(selector.charCodeAt(selectorIndex))) {
100
+ selectorIndex++;
101
+ }
102
+ }
103
+ function readValueWithParenthesis() {
104
+ selectorIndex += 1;
105
+ const start = selectorIndex;
106
+ let counter = 1;
107
+ for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {
108
+ if (selector.charCodeAt(selectorIndex) ===
109
+ 40 /* LeftParenthesis */ &&
110
+ !isEscaped(selectorIndex)) {
111
+ counter++;
112
+ }
113
+ else if (selector.charCodeAt(selectorIndex) ===
114
+ 41 /* RightParenthesis */ &&
115
+ !isEscaped(selectorIndex)) {
116
+ counter--;
117
+ }
118
+ }
119
+ if (counter) {
120
+ throw new Error("Parenthesis not matched");
121
+ }
122
+ return unescapeCSS(selector.slice(start, selectorIndex - 1));
123
+ }
124
+ function isEscaped(pos) {
125
+ let slashCount = 0;
126
+ while (selector.charCodeAt(--pos) === 92 /* BackSlash */)
127
+ slashCount++;
128
+ return (slashCount & 1) === 1;
129
+ }
130
+ function ensureNotTraversal() {
131
+ if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {
132
+ throw new Error("Did not expect successive traversals.");
133
+ }
134
+ }
135
+ function addTraversal(type) {
136
+ if (tokens.length > 0 &&
137
+ tokens[tokens.length - 1].type === SelectorType.Descendant) {
138
+ tokens[tokens.length - 1].type = type;
139
+ return;
140
+ }
141
+ ensureNotTraversal();
142
+ tokens.push({ type });
143
+ }
144
+ function addSpecialAttribute(name, action) {
145
+ tokens.push({
146
+ type: SelectorType.Attribute,
147
+ name,
148
+ action,
149
+ value: getName(1),
150
+ namespace: null,
151
+ ignoreCase: "quirks",
152
+ });
153
+ }
154
+ /**
155
+ * We have finished parsing the current part of the selector.
156
+ *
157
+ * Remove descendant tokens at the end if they exist,
158
+ * and return the last index, so that parsing can be
159
+ * picked up from here.
160
+ */
161
+ function finalizeSubselector() {
162
+ if (tokens.length &&
163
+ tokens[tokens.length - 1].type === SelectorType.Descendant) {
164
+ tokens.pop();
165
+ }
166
+ if (tokens.length === 0) {
167
+ throw new Error("Empty sub-selector");
168
+ }
169
+ subselects.push(tokens);
170
+ }
171
+ stripWhitespace(0);
172
+ if (selector.length === selectorIndex) {
173
+ return selectorIndex;
174
+ }
175
+ loop: while (selectorIndex < selector.length) {
176
+ const firstChar = selector.charCodeAt(selectorIndex);
177
+ switch (firstChar) {
178
+ // Whitespace
179
+ case 32 /* Space */:
180
+ case 9 /* Tab */:
181
+ case 10 /* NewLine */:
182
+ case 12 /* FormFeed */:
183
+ case 13 /* CarriageReturn */: {
184
+ if (tokens.length === 0 ||
185
+ tokens[0].type !== SelectorType.Descendant) {
186
+ ensureNotTraversal();
187
+ tokens.push({ type: SelectorType.Descendant });
188
+ }
189
+ stripWhitespace(1);
190
+ break;
191
+ }
192
+ // Traversals
193
+ case 62 /* GreaterThan */: {
194
+ addTraversal(SelectorType.Child);
195
+ stripWhitespace(1);
196
+ break;
197
+ }
198
+ case 60 /* LessThan */: {
199
+ addTraversal(SelectorType.Parent);
200
+ stripWhitespace(1);
201
+ break;
202
+ }
203
+ case 126 /* Tilde */: {
204
+ addTraversal(SelectorType.Sibling);
205
+ stripWhitespace(1);
206
+ break;
207
+ }
208
+ case 43 /* Plus */: {
209
+ addTraversal(SelectorType.Adjacent);
210
+ stripWhitespace(1);
211
+ break;
212
+ }
213
+ // Special attribute selectors: .class, #id
214
+ case 46 /* Period */: {
215
+ addSpecialAttribute("class", AttributeAction.Element);
216
+ break;
217
+ }
218
+ case 35 /* Hash */: {
219
+ addSpecialAttribute("id", AttributeAction.Equals);
220
+ break;
221
+ }
222
+ case 91 /* LeftSquareBracket */: {
223
+ stripWhitespace(1);
224
+ // Determine attribute name and namespace
225
+ let name;
226
+ let namespace = null;
227
+ if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {
228
+ // Equivalent to no namespace
229
+ name = getName(1);
230
+ }
231
+ else if (selector.startsWith("*|", selectorIndex)) {
232
+ namespace = "*";
233
+ name = getName(2);
234
+ }
235
+ else {
236
+ name = getName(0);
237
+ if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&
238
+ selector.charCodeAt(selectorIndex + 1) !==
239
+ 61 /* Equal */) {
240
+ namespace = name;
241
+ name = getName(1);
242
+ }
243
+ }
244
+ stripWhitespace(0);
245
+ // Determine comparison operation
246
+ let action = AttributeAction.Exists;
247
+ const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));
248
+ if (possibleAction) {
249
+ action = possibleAction;
250
+ if (selector.charCodeAt(selectorIndex + 1) !==
251
+ 61 /* Equal */) {
252
+ throw new Error("Expected `=`");
253
+ }
254
+ stripWhitespace(2);
255
+ }
256
+ else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {
257
+ action = AttributeAction.Equals;
258
+ stripWhitespace(1);
259
+ }
260
+ // Determine value
261
+ let value = "";
262
+ let ignoreCase = null;
263
+ if (action !== "exists") {
264
+ if (isQuote(selector.charCodeAt(selectorIndex))) {
265
+ const quote = selector.charCodeAt(selectorIndex);
266
+ let sectionEnd = selectorIndex + 1;
267
+ while (sectionEnd < selector.length &&
268
+ (selector.charCodeAt(sectionEnd) !== quote ||
269
+ isEscaped(sectionEnd))) {
270
+ sectionEnd += 1;
271
+ }
272
+ if (selector.charCodeAt(sectionEnd) !== quote) {
273
+ throw new Error("Attribute value didn't end");
274
+ }
275
+ value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));
276
+ selectorIndex = sectionEnd + 1;
277
+ }
278
+ else {
279
+ const valueStart = selectorIndex;
280
+ while (selectorIndex < selector.length &&
281
+ ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&
282
+ selector.charCodeAt(selectorIndex) !==
283
+ 93 /* RightSquareBracket */) ||
284
+ isEscaped(selectorIndex))) {
285
+ selectorIndex += 1;
286
+ }
287
+ value = unescapeCSS(selector.slice(valueStart, selectorIndex));
288
+ }
289
+ stripWhitespace(0);
290
+ // See if we have a force ignore flag
291
+ const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;
292
+ // If the forceIgnore flag is set (either `i` or `s`), use that value
293
+ if (forceIgnore === 115 /* LowerS */) {
294
+ ignoreCase = false;
295
+ stripWhitespace(1);
296
+ }
297
+ else if (forceIgnore === 105 /* LowerI */) {
298
+ ignoreCase = true;
299
+ stripWhitespace(1);
300
+ }
301
+ }
302
+ if (selector.charCodeAt(selectorIndex) !==
303
+ 93 /* RightSquareBracket */) {
304
+ throw new Error("Attribute selector didn't terminate");
305
+ }
306
+ selectorIndex += 1;
307
+ const attributeSelector = {
308
+ type: SelectorType.Attribute,
309
+ name,
310
+ action,
311
+ value,
312
+ namespace,
313
+ ignoreCase,
314
+ };
315
+ tokens.push(attributeSelector);
316
+ break;
317
+ }
318
+ case 58 /* Colon */: {
319
+ if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {
320
+ tokens.push({
321
+ type: SelectorType.PseudoElement,
322
+ name: getName(2).toLowerCase(),
323
+ data: selector.charCodeAt(selectorIndex) ===
324
+ 40 /* LeftParenthesis */
325
+ ? readValueWithParenthesis()
326
+ : null,
327
+ });
328
+ continue;
329
+ }
330
+ const name = getName(1).toLowerCase();
331
+ let data = null;
332
+ if (selector.charCodeAt(selectorIndex) ===
333
+ 40 /* LeftParenthesis */) {
334
+ if (unpackPseudos.has(name)) {
335
+ if (isQuote(selector.charCodeAt(selectorIndex + 1))) {
336
+ throw new Error(`Pseudo-selector ${name} cannot be quoted`);
337
+ }
338
+ data = [];
339
+ selectorIndex = parseSelector(data, selector, selectorIndex + 1);
340
+ if (selector.charCodeAt(selectorIndex) !==
341
+ 41 /* RightParenthesis */) {
342
+ throw new Error(`Missing closing parenthesis in :${name} (${selector})`);
343
+ }
344
+ selectorIndex += 1;
345
+ }
346
+ else {
347
+ data = readValueWithParenthesis();
348
+ if (stripQuotesFromPseudos.has(name)) {
349
+ const quot = data.charCodeAt(0);
350
+ if (quot === data.charCodeAt(data.length - 1) &&
351
+ isQuote(quot)) {
352
+ data = data.slice(1, -1);
353
+ }
354
+ }
355
+ data = unescapeCSS(data);
356
+ }
357
+ }
358
+ tokens.push({ type: SelectorType.Pseudo, name, data });
359
+ break;
360
+ }
361
+ case 44 /* Comma */: {
362
+ finalizeSubselector();
363
+ tokens = [];
364
+ stripWhitespace(1);
365
+ break;
366
+ }
367
+ default: {
368
+ if (selector.startsWith("/*", selectorIndex)) {
369
+ const endIndex = selector.indexOf("*/", selectorIndex + 2);
370
+ if (endIndex < 0) {
371
+ throw new Error("Comment was not terminated");
372
+ }
373
+ selectorIndex = endIndex + 2;
374
+ // Remove leading whitespace
375
+ if (tokens.length === 0) {
376
+ stripWhitespace(0);
377
+ }
378
+ break;
379
+ }
380
+ let namespace = null;
381
+ let name;
382
+ if (firstChar === 42 /* Asterisk */) {
383
+ selectorIndex += 1;
384
+ name = "*";
385
+ }
386
+ else if (firstChar === 124 /* Pipe */) {
387
+ name = "";
388
+ if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {
389
+ addTraversal(SelectorType.ColumnCombinator);
390
+ stripWhitespace(2);
391
+ break;
392
+ }
393
+ }
394
+ else if (reName.test(selector.slice(selectorIndex))) {
395
+ name = getName(0);
396
+ }
397
+ else {
398
+ break loop;
399
+ }
400
+ if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&
401
+ selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {
402
+ namespace = name;
403
+ if (selector.charCodeAt(selectorIndex + 1) ===
404
+ 42 /* Asterisk */) {
405
+ name = "*";
406
+ selectorIndex += 2;
407
+ }
408
+ else {
409
+ name = getName(1);
410
+ }
411
+ }
412
+ tokens.push(name === "*"
413
+ ? { type: SelectorType.Universal, namespace }
414
+ : { type: SelectorType.Tag, name, namespace });
415
+ }
416
+ }
417
+ }
418
+ finalizeSubselector();
419
+ return selectorIndex;
420
+ }
@@ -0,0 +1,8 @@
1
+ import { Selector } from "./types";
2
+ /**
3
+ * Turns `selector` back into a string.
4
+ *
5
+ * @param selector Selector to stringify.
6
+ */
7
+ export declare function stringify(selector: Selector[][]): string;
8
+ //# sourceMappingURL=stringify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringify.d.ts","sourceRoot":"","sources":["../../src/stringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiC,MAAM,SAAS,CAAC;AA6BlE;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,MAAM,CAIxD"}
@@ -0,0 +1,126 @@
1
+ import { SelectorType, AttributeAction } from "./types";
2
+ const attribValChars = ["\\", '"'];
3
+ const pseudoValChars = [...attribValChars, "(", ")"];
4
+ const charsToEscapeInAttributeValue = new Set(attribValChars.map((c) => c.charCodeAt(0)));
5
+ const charsToEscapeInPseudoValue = new Set(pseudoValChars.map((c) => c.charCodeAt(0)));
6
+ const charsToEscapeInName = new Set([
7
+ ...pseudoValChars,
8
+ "~",
9
+ "^",
10
+ "$",
11
+ "*",
12
+ "+",
13
+ "!",
14
+ "|",
15
+ ":",
16
+ "[",
17
+ "]",
18
+ " ",
19
+ ".",
20
+ ].map((c) => c.charCodeAt(0)));
21
+ /**
22
+ * Turns `selector` back into a string.
23
+ *
24
+ * @param selector Selector to stringify.
25
+ */
26
+ export function stringify(selector) {
27
+ return selector
28
+ .map((token) => token.map(stringifyToken).join(""))
29
+ .join(", ");
30
+ }
31
+ function stringifyToken(token, index, arr) {
32
+ switch (token.type) {
33
+ // Simple types
34
+ case SelectorType.Child:
35
+ return index === 0 ? "> " : " > ";
36
+ case SelectorType.Parent:
37
+ return index === 0 ? "< " : " < ";
38
+ case SelectorType.Sibling:
39
+ return index === 0 ? "~ " : " ~ ";
40
+ case SelectorType.Adjacent:
41
+ return index === 0 ? "+ " : " + ";
42
+ case SelectorType.Descendant:
43
+ return " ";
44
+ case SelectorType.ColumnCombinator:
45
+ return index === 0 ? "|| " : " || ";
46
+ case SelectorType.Universal:
47
+ // Return an empty string if the selector isn't needed.
48
+ return token.namespace === "*" &&
49
+ index + 1 < arr.length &&
50
+ "name" in arr[index + 1]
51
+ ? ""
52
+ : `${getNamespace(token.namespace)}*`;
53
+ case SelectorType.Tag:
54
+ return getNamespacedName(token);
55
+ case SelectorType.PseudoElement:
56
+ return `::${escapeName(token.name, charsToEscapeInName)}${token.data === null
57
+ ? ""
58
+ : `(${escapeName(token.data, charsToEscapeInPseudoValue)})`}`;
59
+ case SelectorType.Pseudo:
60
+ return `:${escapeName(token.name, charsToEscapeInName)}${token.data === null
61
+ ? ""
62
+ : `(${typeof token.data === "string"
63
+ ? escapeName(token.data, charsToEscapeInPseudoValue)
64
+ : stringify(token.data)})`}`;
65
+ case SelectorType.Attribute: {
66
+ if (token.name === "id" &&
67
+ token.action === AttributeAction.Equals &&
68
+ token.ignoreCase === "quirks" &&
69
+ !token.namespace) {
70
+ return `#${escapeName(token.value, charsToEscapeInName)}`;
71
+ }
72
+ if (token.name === "class" &&
73
+ token.action === AttributeAction.Element &&
74
+ token.ignoreCase === "quirks" &&
75
+ !token.namespace) {
76
+ return `.${escapeName(token.value, charsToEscapeInName)}`;
77
+ }
78
+ const name = getNamespacedName(token);
79
+ if (token.action === AttributeAction.Exists) {
80
+ return `[${name}]`;
81
+ }
82
+ return `[${name}${getActionValue(token.action)}="${escapeName(token.value, charsToEscapeInAttributeValue)}"${token.ignoreCase === null ? "" : token.ignoreCase ? " i" : " s"}]`;
83
+ }
84
+ }
85
+ }
86
+ function getActionValue(action) {
87
+ switch (action) {
88
+ case AttributeAction.Equals:
89
+ return "";
90
+ case AttributeAction.Element:
91
+ return "~";
92
+ case AttributeAction.Start:
93
+ return "^";
94
+ case AttributeAction.End:
95
+ return "$";
96
+ case AttributeAction.Any:
97
+ return "*";
98
+ case AttributeAction.Not:
99
+ return "!";
100
+ case AttributeAction.Hyphen:
101
+ return "|";
102
+ case AttributeAction.Exists:
103
+ throw new Error("Shouldn't be here");
104
+ }
105
+ }
106
+ function getNamespacedName(token) {
107
+ return `${getNamespace(token.namespace)}${escapeName(token.name, charsToEscapeInName)}`;
108
+ }
109
+ function getNamespace(namespace) {
110
+ return namespace !== null
111
+ ? `${namespace === "*"
112
+ ? "*"
113
+ : escapeName(namespace, charsToEscapeInName)}|`
114
+ : "";
115
+ }
116
+ function escapeName(str, charsToEscape) {
117
+ let lastIdx = 0;
118
+ let ret = "";
119
+ for (let i = 0; i < str.length; i++) {
120
+ if (charsToEscape.has(str.charCodeAt(i))) {
121
+ ret += `${str.slice(lastIdx, i)}\\${str.charAt(i)}`;
122
+ lastIdx = i + 1;
123
+ }
124
+ }
125
+ return ret.length > 0 ? ret + str.slice(lastIdx) : str;
126
+ }