@dotglitch/ngx-common 2.0.0 → 3.0.0-beta.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 (1187) hide show
  1. package/README.md +37 -22
  2. package/{components/command-palette → command-palette}/breadcrumb/breadcrumb.component.d.ts +1 -1
  3. package/{components/command-palette → command-palette}/command-palette.component.d.ts +1 -1
  4. package/{services → command-palette}/command-palette.service.d.ts +2 -2
  5. package/command-palette/index.d.ts +2 -0
  6. package/{components/command-palette → command-palette}/shortcut/shortcut.component.d.ts +1 -1
  7. package/{components → core/components}/menu/menu.component.d.ts +2 -2
  8. package/{directives → core/components/menu}/menu.directive.d.ts +1 -1
  9. package/{types/menu.d.ts → core/components/menu/types.d.ts} +1 -1
  10. package/{components → core/components}/types.d.ts +0 -1
  11. package/{public-api.d.ts → core/index.d.ts} +12 -20
  12. package/{services → core/services}/navigation.service.d.ts +1 -1
  13. package/core/utils/index.d.ts +18 -0
  14. package/esm2022/{components/command-palette → command-palette}/breadcrumb/breadcrumb.component.mjs +1 -1
  15. package/esm2022/command-palette/command-palette.component.mjs +257 -0
  16. package/esm2022/command-palette/command-palette.service.mjs +207 -0
  17. package/esm2022/command-palette/dotglitch-ngx-common-command-palette.mjs +5 -0
  18. package/esm2022/command-palette/index.mjs +3 -0
  19. package/esm2022/{components/command-palette → command-palette}/shortcut/shortcut.component.mjs +1 -1
  20. package/esm2022/core/components/lazy-loader/lazy-loader.component.mjs +383 -0
  21. package/esm2022/core/components/lazy-loader/lazy-loader.module.mjs +33 -0
  22. package/esm2022/core/components/lazy-loader/lazy-loader.service.mjs +216 -0
  23. package/esm2022/core/components/lazy-loader/types.mjs +26 -0
  24. package/esm2022/core/components/menu/menu.component.mjs +433 -0
  25. package/esm2022/core/components/menu/menu.directive.mjs +159 -0
  26. package/esm2022/core/components/menu/types.mjs +2 -0
  27. package/esm2022/core/components/parallax-card/parallax-card.component.mjs +138 -0
  28. package/esm2022/core/components/types.mjs +3 -0
  29. package/esm2022/core/directives/image-cache.directive.mjs +143 -0
  30. package/esm2022/core/directives/utils.mjs +120 -0
  31. package/esm2022/core/dotglitch-ngx-common-core.mjs +5 -0
  32. package/esm2022/core/index.mjs +50 -0
  33. package/esm2022/core/pipes/html-bypass.pipe.mjs +27 -0
  34. package/esm2022/core/pipes/resource-bypass.pipe.mjs +27 -0
  35. package/esm2022/core/pipes/script-bypass.pipe.mjs +27 -0
  36. package/esm2022/core/pipes/style-bypass.pipe.mjs +27 -0
  37. package/esm2022/core/pipes/url-bypass.pipe.mjs +27 -0
  38. package/esm2022/core/services/dependency.service.mjs +55 -0
  39. package/esm2022/core/services/dialog.service.mjs +67 -0
  40. package/esm2022/core/services/fetch.service.mjs +74 -0
  41. package/esm2022/core/services/file.service.mjs +42 -0
  42. package/esm2022/core/services/keyboard.service.mjs +128 -0
  43. package/esm2022/core/services/navigation.service.mjs +50 -0
  44. package/esm2022/core/services/theme.service.mjs +64 -0
  45. package/esm2022/core/types/popup.mjs +2 -0
  46. package/esm2022/core/utils/index.mjs +69 -0
  47. package/esm2022/dotglitch-ngx-common.mjs +2 -2
  48. package/esm2022/filemanager/dotglitch-ngx-common-filemanager.mjs +5 -0
  49. package/esm2022/filemanager/file-grid/file-grid.component.mjs +676 -0
  50. package/esm2022/{components/filemanager → filemanager}/filemanager.component.mjs +13 -14
  51. package/esm2022/{components/filemanager → filemanager}/folder-rename/folder-rename.component.mjs +2 -2
  52. package/esm2022/filemanager/helpers.mjs +26 -0
  53. package/esm2022/filemanager/icon-resolver.mjs +155 -0
  54. package/esm2022/filemanager/index.mjs +2 -0
  55. package/esm2022/filemanager/mat-icons.mjs +5705 -0
  56. package/esm2022/filemanager/textextensions.mjs +294 -0
  57. package/esm2022/{components/filemanager → filemanager}/toolbar/breadcrumb/breadcrumb.component.mjs +1 -1
  58. package/esm2022/{components/filemanager → filemanager}/toolbar/icon-button/icon-button.component.mjs +1 -1
  59. package/esm2022/filemanager/toolbar/toolbar.component.mjs +165 -0
  60. package/esm2022/{components/filemanager → filemanager}/tree-view/tree-view.component.mjs +1 -1
  61. package/esm2022/filemanager/types.mjs +2 -0
  62. package/esm2022/index.mjs +3 -0
  63. package/esm2022/monaco-editor/dotglitch-ngx-common-monaco-editor.mjs +5 -0
  64. package/esm2022/monaco-editor/index.mjs +2 -0
  65. package/esm2022/monaco-editor/monaco-editor.component.mjs +234 -0
  66. package/esm2022/monaco-editor/ts-type-resolver/dependency-parser.mjs +91 -0
  67. package/esm2022/monaco-editor/ts-type-resolver/dummy-source-cache.mjs +15 -0
  68. package/esm2022/monaco-editor/ts-type-resolver/import-resolver.mjs +311 -0
  69. package/esm2022/monaco-editor/ts-type-resolver/main.mjs +112 -0
  70. package/esm2022/monaco-editor/ts-type-resolver/recursion-depth.mjs +21 -0
  71. package/esm2022/monaco-editor/ts-type-resolver/types.mjs +14 -0
  72. package/esm2022/monaco-editor/ts-type-resolver/unpkg-source-resolver.mjs +21 -0
  73. package/esm2022/monaco-editor/ts-type-resolver/update-emitter.mjs +37 -0
  74. package/esm2022/overlay-wrapper/dotglitch-ngx-common-overlay-wrapper.mjs +5 -0
  75. package/esm2022/overlay-wrapper/index.mjs +2 -0
  76. package/esm2022/overlay-wrapper/overlay-wrapper.component.mjs +247 -0
  77. package/esm2022/tooltip/dotglitch-ngx-common-tooltip.mjs +5 -0
  78. package/esm2022/tooltip/index.mjs +4 -0
  79. package/esm2022/tooltip/tooltip.component.mjs +204 -0
  80. package/esm2022/tooltip/tooltip.directive.mjs +153 -0
  81. package/esm2022/tooltip/types.mjs +2 -0
  82. package/fesm2022/dotglitch-ngx-common-command-palette.mjs +508 -0
  83. package/fesm2022/dotglitch-ngx-common-command-palette.mjs.map +1 -0
  84. package/fesm2022/dotglitch-ngx-common-core.mjs +2280 -0
  85. package/fesm2022/dotglitch-ngx-common-core.mjs.map +1 -0
  86. package/fesm2022/{dotglitch-ngx-common-folder-rename.component-Bh1IiRvd.mjs → dotglitch-ngx-common-filemanager-folder-rename.component-CnKuU8nn.mjs} +9 -30
  87. package/fesm2022/dotglitch-ngx-common-filemanager-folder-rename.component-CnKuU8nn.mjs.map +1 -0
  88. package/fesm2022/dotglitch-ngx-common-filemanager.mjs +7403 -0
  89. package/fesm2022/dotglitch-ngx-common-filemanager.mjs.map +1 -0
  90. package/fesm2022/dotglitch-ngx-common-monaco-editor.mjs +850 -0
  91. package/fesm2022/dotglitch-ngx-common-monaco-editor.mjs.map +1 -0
  92. package/fesm2022/dotglitch-ngx-common-overlay-wrapper.mjs +254 -0
  93. package/fesm2022/dotglitch-ngx-common-overlay-wrapper.mjs.map +1 -0
  94. package/fesm2022/dotglitch-ngx-common-tooltip.mjs +357 -0
  95. package/fesm2022/dotglitch-ngx-common-tooltip.mjs.map +1 -0
  96. package/fesm2022/dotglitch-ngx-common.mjs +3 -11686
  97. package/fesm2022/dotglitch-ngx-common.mjs.map +1 -1
  98. package/{components/filemanager → filemanager}/file-grid/file-grid.component.d.ts +7 -14
  99. package/{components/filemanager → filemanager}/filemanager.component.d.ts +4 -5
  100. package/{components/filemanager → filemanager}/folder-rename/folder-rename.component.d.ts +1 -1
  101. package/{components/filemanager → filemanager}/helpers.d.ts +1 -1
  102. package/filemanager/index.d.ts +1 -0
  103. package/{components/filemanager → filemanager}/toolbar/toolbar.component.d.ts +2 -2
  104. package/filemanager/types.d.ts +1 -0
  105. package/index.d.ts +1 -5
  106. package/monaco-editor/README.md +3 -0
  107. package/monaco-editor/index.d.ts +1 -0
  108. package/monaco-editor/monaco-editor.component.d.ts +53 -0
  109. package/overlay-wrapper/index.d.ts +1 -0
  110. package/overlay-wrapper/overlay-wrapper.component.d.ts +11 -0
  111. package/package.json +108 -47
  112. package/tooltip/index.d.ts +3 -0
  113. package/{components/tooltip → tooltip}/tooltip.component.d.ts +3 -3
  114. package/{directives → tooltip}/tooltip.directive.d.ts +2 -2
  115. package/{types/tooltip.d.ts → tooltip/types.d.ts} +1 -1
  116. package/assets/lib/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  117. package/assets/lib/vs/base/common/worker/simpleWorker.nls.de.js +0 -8
  118. package/assets/lib/vs/base/common/worker/simpleWorker.nls.es.js +0 -8
  119. package/assets/lib/vs/base/common/worker/simpleWorker.nls.fr.js +0 -8
  120. package/assets/lib/vs/base/common/worker/simpleWorker.nls.it.js +0 -8
  121. package/assets/lib/vs/base/common/worker/simpleWorker.nls.ja.js +0 -8
  122. package/assets/lib/vs/base/common/worker/simpleWorker.nls.js +0 -8
  123. package/assets/lib/vs/base/common/worker/simpleWorker.nls.ko.js +0 -8
  124. package/assets/lib/vs/base/common/worker/simpleWorker.nls.ru.js +0 -8
  125. package/assets/lib/vs/base/common/worker/simpleWorker.nls.zh-cn.js +0 -8
  126. package/assets/lib/vs/base/common/worker/simpleWorker.nls.zh-tw.js +0 -8
  127. package/assets/lib/vs/base/worker/workerMain.js +0 -24
  128. package/assets/lib/vs/basic-languages/abap/abap.js +0 -10
  129. package/assets/lib/vs/basic-languages/apex/apex.js +0 -10
  130. package/assets/lib/vs/basic-languages/azcli/azcli.js +0 -10
  131. package/assets/lib/vs/basic-languages/bat/bat.js +0 -10
  132. package/assets/lib/vs/basic-languages/bicep/bicep.js +0 -11
  133. package/assets/lib/vs/basic-languages/cameligo/cameligo.js +0 -10
  134. package/assets/lib/vs/basic-languages/clojure/clojure.js +0 -10
  135. package/assets/lib/vs/basic-languages/coffee/coffee.js +0 -10
  136. package/assets/lib/vs/basic-languages/cpp/cpp.js +0 -10
  137. package/assets/lib/vs/basic-languages/csharp/csharp.js +0 -10
  138. package/assets/lib/vs/basic-languages/csp/csp.js +0 -10
  139. package/assets/lib/vs/basic-languages/css/css.js +0 -12
  140. package/assets/lib/vs/basic-languages/cypher/cypher.js +0 -10
  141. package/assets/lib/vs/basic-languages/dart/dart.js +0 -10
  142. package/assets/lib/vs/basic-languages/dockerfile/dockerfile.js +0 -10
  143. package/assets/lib/vs/basic-languages/ecl/ecl.js +0 -10
  144. package/assets/lib/vs/basic-languages/elixir/elixir.js +0 -10
  145. package/assets/lib/vs/basic-languages/flow9/flow9.js +0 -10
  146. package/assets/lib/vs/basic-languages/freemarker2/freemarker2.js +0 -12
  147. package/assets/lib/vs/basic-languages/fsharp/fsharp.js +0 -10
  148. package/assets/lib/vs/basic-languages/go/go.js +0 -10
  149. package/assets/lib/vs/basic-languages/graphql/graphql.js +0 -10
  150. package/assets/lib/vs/basic-languages/handlebars/handlebars.js +0 -10
  151. package/assets/lib/vs/basic-languages/hcl/hcl.js +0 -10
  152. package/assets/lib/vs/basic-languages/html/html.js +0 -10
  153. package/assets/lib/vs/basic-languages/ini/ini.js +0 -10
  154. package/assets/lib/vs/basic-languages/java/java.js +0 -10
  155. package/assets/lib/vs/basic-languages/javascript/javascript.js +0 -10
  156. package/assets/lib/vs/basic-languages/julia/julia.js +0 -10
  157. package/assets/lib/vs/basic-languages/kotlin/kotlin.js +0 -10
  158. package/assets/lib/vs/basic-languages/less/less.js +0 -11
  159. package/assets/lib/vs/basic-languages/lexon/lexon.js +0 -10
  160. package/assets/lib/vs/basic-languages/liquid/liquid.js +0 -10
  161. package/assets/lib/vs/basic-languages/lua/lua.js +0 -10
  162. package/assets/lib/vs/basic-languages/m3/m3.js +0 -10
  163. package/assets/lib/vs/basic-languages/markdown/markdown.js +0 -10
  164. package/assets/lib/vs/basic-languages/mips/mips.js +0 -10
  165. package/assets/lib/vs/basic-languages/msdax/msdax.js +0 -10
  166. package/assets/lib/vs/basic-languages/mysql/mysql.js +0 -10
  167. package/assets/lib/vs/basic-languages/objective-c/objective-c.js +0 -10
  168. package/assets/lib/vs/basic-languages/pascal/pascal.js +0 -10
  169. package/assets/lib/vs/basic-languages/pascaligo/pascaligo.js +0 -10
  170. package/assets/lib/vs/basic-languages/perl/perl.js +0 -10
  171. package/assets/lib/vs/basic-languages/pgsql/pgsql.js +0 -10
  172. package/assets/lib/vs/basic-languages/php/php.js +0 -10
  173. package/assets/lib/vs/basic-languages/pla/pla.js +0 -10
  174. package/assets/lib/vs/basic-languages/postiats/postiats.js +0 -10
  175. package/assets/lib/vs/basic-languages/powerquery/powerquery.js +0 -10
  176. package/assets/lib/vs/basic-languages/powershell/powershell.js +0 -10
  177. package/assets/lib/vs/basic-languages/protobuf/protobuf.js +0 -11
  178. package/assets/lib/vs/basic-languages/pug/pug.js +0 -10
  179. package/assets/lib/vs/basic-languages/python/python.js +0 -10
  180. package/assets/lib/vs/basic-languages/qsharp/qsharp.js +0 -10
  181. package/assets/lib/vs/basic-languages/r/r.js +0 -10
  182. package/assets/lib/vs/basic-languages/razor/razor.js +0 -10
  183. package/assets/lib/vs/basic-languages/redis/redis.js +0 -10
  184. package/assets/lib/vs/basic-languages/redshift/redshift.js +0 -10
  185. package/assets/lib/vs/basic-languages/restructuredtext/restructuredtext.js +0 -10
  186. package/assets/lib/vs/basic-languages/ruby/ruby.js +0 -10
  187. package/assets/lib/vs/basic-languages/rust/rust.js +0 -10
  188. package/assets/lib/vs/basic-languages/sb/sb.js +0 -10
  189. package/assets/lib/vs/basic-languages/scala/scala.js +0 -10
  190. package/assets/lib/vs/basic-languages/scheme/scheme.js +0 -10
  191. package/assets/lib/vs/basic-languages/scss/scss.js +0 -12
  192. package/assets/lib/vs/basic-languages/shell/shell.js +0 -10
  193. package/assets/lib/vs/basic-languages/solidity/solidity.js +0 -10
  194. package/assets/lib/vs/basic-languages/sophia/sophia.js +0 -10
  195. package/assets/lib/vs/basic-languages/sparql/sparql.js +0 -10
  196. package/assets/lib/vs/basic-languages/sql/sql.js +0 -10
  197. package/assets/lib/vs/basic-languages/st/st.js +0 -10
  198. package/assets/lib/vs/basic-languages/swift/swift.js +0 -13
  199. package/assets/lib/vs/basic-languages/systemverilog/systemverilog.js +0 -10
  200. package/assets/lib/vs/basic-languages/tcl/tcl.js +0 -10
  201. package/assets/lib/vs/basic-languages/twig/twig.js +0 -10
  202. package/assets/lib/vs/basic-languages/typescript/typescript.js +0 -10
  203. package/assets/lib/vs/basic-languages/vb/vb.js +0 -10
  204. package/assets/lib/vs/basic-languages/wgsl/wgsl.js +0 -307
  205. package/assets/lib/vs/basic-languages/xml/xml.js +0 -10
  206. package/assets/lib/vs/basic-languages/yaml/yaml.js +0 -10
  207. package/assets/lib/vs/editor/editor.main.css +0 -6
  208. package/assets/lib/vs/editor/editor.main.js +0 -752
  209. package/assets/lib/vs/editor/editor.main.nls.de.js +0 -31
  210. package/assets/lib/vs/editor/editor.main.nls.es.js +0 -31
  211. package/assets/lib/vs/editor/editor.main.nls.fr.js +0 -29
  212. package/assets/lib/vs/editor/editor.main.nls.it.js +0 -29
  213. package/assets/lib/vs/editor/editor.main.nls.ja.js +0 -31
  214. package/assets/lib/vs/editor/editor.main.nls.js +0 -29
  215. package/assets/lib/vs/editor/editor.main.nls.ko.js +0 -29
  216. package/assets/lib/vs/editor/editor.main.nls.ru.js +0 -31
  217. package/assets/lib/vs/editor/editor.main.nls.zh-cn.js +0 -31
  218. package/assets/lib/vs/editor/editor.main.nls.zh-tw.js +0 -29
  219. package/assets/lib/vs/language/css/cssMode.js +0 -13
  220. package/assets/lib/vs/language/css/cssWorker.js +0 -81
  221. package/assets/lib/vs/language/html/htmlMode.js +0 -13
  222. package/assets/lib/vs/language/html/htmlWorker.js +0 -453
  223. package/assets/lib/vs/language/json/jsonMode.js +0 -15
  224. package/assets/lib/vs/language/json/jsonWorker.js +0 -36
  225. package/assets/lib/vs/language/typescript/tsMode.js +0 -20
  226. package/assets/lib/vs/language/typescript/tsWorker.js +0 -37016
  227. package/assets/lib/vs/loader.js +0 -11
  228. package/assets/mat-icons.ts +0 -5704
  229. package/assets/material/3d.svg +0 -1
  230. package/assets/material/abc.svg +0 -1
  231. package/assets/material/actionscript.svg +0 -1
  232. package/assets/material/ada.svg +0 -1
  233. package/assets/material/adonis.svg +0 -1
  234. package/assets/material/advpl_include.svg +0 -1
  235. package/assets/material/advpl_prw.svg +0 -1
  236. package/assets/material/advpl_ptm.svg +0 -1
  237. package/assets/material/advpl_tlpp.svg +0 -1
  238. package/assets/material/android.svg +0 -1
  239. package/assets/material/angular-component.svg +0 -1
  240. package/assets/material/angular-directive.svg +0 -1
  241. package/assets/material/angular-guard.svg +0 -1
  242. package/assets/material/angular-pipe.svg +0 -1
  243. package/assets/material/angular-resolver.svg +0 -1
  244. package/assets/material/angular-service.svg +0 -1
  245. package/assets/material/angular.svg +0 -1
  246. package/assets/material/antlr.svg +0 -1
  247. package/assets/material/apiblueprint.svg +0 -1
  248. package/assets/material/apollo.svg +0 -1
  249. package/assets/material/applescript.svg +0 -1
  250. package/assets/material/appveyor.svg +0 -1
  251. package/assets/material/architecture.svg +0 -1
  252. package/assets/material/arduino.svg +0 -1
  253. package/assets/material/asciidoc.svg +0 -1
  254. package/assets/material/assembly.svg +0 -1
  255. package/assets/material/astro.svg +0 -1
  256. package/assets/material/astyle.svg +0 -1
  257. package/assets/material/audio.svg +0 -1
  258. package/assets/material/aurelia.svg +0 -1
  259. package/assets/material/authors.svg +0 -1
  260. package/assets/material/auto.svg +0 -1
  261. package/assets/material/auto_light.svg +0 -1
  262. package/assets/material/autohotkey.svg +0 -1
  263. package/assets/material/autoit.svg +0 -1
  264. package/assets/material/azure-pipelines.svg +0 -1
  265. package/assets/material/azure.svg +0 -1
  266. package/assets/material/babel.svg +0 -1
  267. package/assets/material/ballerina.svg +0 -1
  268. package/assets/material/bazel.svg +0 -1
  269. package/assets/material/bicep.svg +0 -1
  270. package/assets/material/bitbucket.svg +0 -13
  271. package/assets/material/bithound.svg +0 -1
  272. package/assets/material/blink.svg +0 -1
  273. package/assets/material/blink_light.svg +0 -1
  274. package/assets/material/blitz.svg +0 -1
  275. package/assets/material/bower.svg +0 -1
  276. package/assets/material/brainfuck.svg +0 -1
  277. package/assets/material/browserlist.svg +0 -1
  278. package/assets/material/browserlist_light.svg +0 -1
  279. package/assets/material/buck.svg +0 -1
  280. package/assets/material/bucklescript.svg +0 -1
  281. package/assets/material/buildkite.svg +0 -1
  282. package/assets/material/bun.svg +0 -2
  283. package/assets/material/bun_light.svg +0 -2
  284. package/assets/material/c.svg +0 -4
  285. package/assets/material/cabal.svg +0 -1
  286. package/assets/material/caddy.svg +0 -1
  287. package/assets/material/cadence.svg +0 -1
  288. package/assets/material/cake.svg +0 -1
  289. package/assets/material/capacitor.svg +0 -1
  290. package/assets/material/certificate.svg +0 -1
  291. package/assets/material/changelog.svg +0 -1
  292. package/assets/material/chess.svg +0 -1
  293. package/assets/material/chess_light.svg +0 -1
  294. package/assets/material/circleci.svg +0 -1
  295. package/assets/material/circleci_light.svg +0 -1
  296. package/assets/material/clojure.svg +0 -1
  297. package/assets/material/cloudfoundry.svg +0 -1
  298. package/assets/material/cmake.svg +0 -1
  299. package/assets/material/coala.svg +0 -1
  300. package/assets/material/cobol.svg +0 -1
  301. package/assets/material/coconut.svg +0 -1
  302. package/assets/material/code-climate.svg +0 -1
  303. package/assets/material/code-climate_light.svg +0 -1
  304. package/assets/material/codecov.svg +0 -1
  305. package/assets/material/codeowners.svg +0 -1
  306. package/assets/material/coffee.svg +0 -1
  307. package/assets/material/coldfusion.svg +0 -1
  308. package/assets/material/command.svg +0 -1
  309. package/assets/material/commitlint.svg +0 -1
  310. package/assets/material/conduct.svg +0 -1
  311. package/assets/material/console.svg +0 -1
  312. package/assets/material/contributing.svg +0 -1
  313. package/assets/material/cpp.svg +0 -4
  314. package/assets/material/craco.svg +0 -45
  315. package/assets/material/credits.svg +0 -1
  316. package/assets/material/crystal.svg +0 -1
  317. package/assets/material/crystal_light.svg +0 -1
  318. package/assets/material/csharp.svg +0 -4
  319. package/assets/material/css-map.svg +0 -1
  320. package/assets/material/css.svg +0 -1
  321. package/assets/material/cucumber.svg +0 -1
  322. package/assets/material/cuda.svg +0 -1
  323. package/assets/material/cypress.svg +0 -1
  324. package/assets/material/d.svg +0 -1
  325. package/assets/material/dart.svg +0 -1
  326. package/assets/material/dart_generated.svg +0 -1
  327. package/assets/material/database.svg +0 -1
  328. package/assets/material/denizenscript.svg +0 -1
  329. package/assets/material/deno.svg +0 -1
  330. package/assets/material/deno_light.svg +0 -1
  331. package/assets/material/dependabot.svg +0 -1
  332. package/assets/material/dhall.svg +0 -1
  333. package/assets/material/diff.svg +0 -1
  334. package/assets/material/dinophp.svg +0 -1
  335. package/assets/material/disc.svg +0 -1
  336. package/assets/material/django.svg +0 -1
  337. package/assets/material/docker.svg +0 -1
  338. package/assets/material/document.svg +0 -1
  339. package/assets/material/dotjs.svg +0 -1
  340. package/assets/material/drawio.svg +0 -1
  341. package/assets/material/drone.svg +0 -1
  342. package/assets/material/drone_light.svg +0 -1
  343. package/assets/material/dune.svg +0 -1
  344. package/assets/material/edge.svg +0 -1
  345. package/assets/material/editorconfig.svg +0 -1
  346. package/assets/material/ejs.svg +0 -1
  347. package/assets/material/elixir.svg +0 -1
  348. package/assets/material/elm.svg +0 -1
  349. package/assets/material/email.svg +0 -1
  350. package/assets/material/ember.svg +0 -1
  351. package/assets/material/erlang.svg +0 -1
  352. package/assets/material/eslint.svg +0 -1
  353. package/assets/material/exe.svg +0 -1
  354. package/assets/material/fastlane.svg +0 -1
  355. package/assets/material/favicon.svg +0 -1
  356. package/assets/material/figma.svg +0 -1
  357. package/assets/material/file.svg +0 -1
  358. package/assets/material/firebase.svg +0 -1
  359. package/assets/material/flash.svg +0 -1
  360. package/assets/material/flow.svg +0 -1
  361. package/assets/material/folder-admin-open.svg +0 -1
  362. package/assets/material/folder-admin.svg +0 -1
  363. package/assets/material/folder-android-open.svg +0 -1
  364. package/assets/material/folder-android.svg +0 -1
  365. package/assets/material/folder-angular-open.svg +0 -1
  366. package/assets/material/folder-angular.svg +0 -1
  367. package/assets/material/folder-animation-open.svg +0 -1
  368. package/assets/material/folder-animation.svg +0 -1
  369. package/assets/material/folder-ansible-open.svg +0 -1
  370. package/assets/material/folder-ansible.svg +0 -1
  371. package/assets/material/folder-api-open.svg +0 -1
  372. package/assets/material/folder-api.svg +0 -1
  373. package/assets/material/folder-apollo-open.svg +0 -1
  374. package/assets/material/folder-apollo.svg +0 -1
  375. package/assets/material/folder-app-open.svg +0 -1
  376. package/assets/material/folder-app.svg +0 -1
  377. package/assets/material/folder-archive-open.svg +0 -1
  378. package/assets/material/folder-archive.svg +0 -1
  379. package/assets/material/folder-audio-open.svg +0 -1
  380. package/assets/material/folder-audio.svg +0 -1
  381. package/assets/material/folder-aurelia-open.svg +0 -1
  382. package/assets/material/folder-aurelia.svg +0 -1
  383. package/assets/material/folder-aws-open.svg +0 -1
  384. package/assets/material/folder-aws.svg +0 -1
  385. package/assets/material/folder-azure-pipelines-open.svg +0 -1
  386. package/assets/material/folder-azure-pipelines.svg +0 -1
  387. package/assets/material/folder-base-open.svg +0 -1
  388. package/assets/material/folder-base.svg +0 -1
  389. package/assets/material/folder-batch-open.svg +0 -1
  390. package/assets/material/folder-batch.svg +0 -1
  391. package/assets/material/folder-benchmark-open.svg +0 -1
  392. package/assets/material/folder-benchmark.svg +0 -1
  393. package/assets/material/folder-bower-open.svg +0 -1
  394. package/assets/material/folder-bower.svg +0 -1
  395. package/assets/material/folder-buildkite-open.svg +0 -1
  396. package/assets/material/folder-buildkite.svg +0 -1
  397. package/assets/material/folder-cart-open.svg +0 -1
  398. package/assets/material/folder-cart.svg +0 -1
  399. package/assets/material/folder-changesets-open.svg +0 -5
  400. package/assets/material/folder-changesets.svg +0 -2
  401. package/assets/material/folder-ci-open.svg +0 -1
  402. package/assets/material/folder-ci.svg +0 -1
  403. package/assets/material/folder-circleci-open.svg +0 -1
  404. package/assets/material/folder-circleci.svg +0 -1
  405. package/assets/material/folder-class-open.svg +0 -1
  406. package/assets/material/folder-class.svg +0 -1
  407. package/assets/material/folder-client-open.svg +0 -1
  408. package/assets/material/folder-client.svg +0 -1
  409. package/assets/material/folder-cluster-open.svg +0 -1
  410. package/assets/material/folder-cluster.svg +0 -1
  411. package/assets/material/folder-cobol-open.svg +0 -1
  412. package/assets/material/folder-cobol.svg +0 -1
  413. package/assets/material/folder-command-open.svg +0 -1
  414. package/assets/material/folder-command.svg +0 -1
  415. package/assets/material/folder-components-open.svg +0 -1
  416. package/assets/material/folder-components.svg +0 -1
  417. package/assets/material/folder-config-open.svg +0 -1
  418. package/assets/material/folder-config.svg +0 -1
  419. package/assets/material/folder-connection-open.svg +0 -1
  420. package/assets/material/folder-connection.svg +0 -1
  421. package/assets/material/folder-constant-open.svg +0 -1
  422. package/assets/material/folder-constant.svg +0 -1
  423. package/assets/material/folder-container-open.svg +0 -1
  424. package/assets/material/folder-container.svg +0 -1
  425. package/assets/material/folder-content-open.svg +0 -1
  426. package/assets/material/folder-content.svg +0 -1
  427. package/assets/material/folder-context-open.svg +0 -1
  428. package/assets/material/folder-context.svg +0 -1
  429. package/assets/material/folder-contract-open.svg +0 -1
  430. package/assets/material/folder-contract.svg +0 -1
  431. package/assets/material/folder-controller-open.svg +0 -1
  432. package/assets/material/folder-controller.svg +0 -1
  433. package/assets/material/folder-core-open.svg +0 -1
  434. package/assets/material/folder-core.svg +0 -1
  435. package/assets/material/folder-coverage-open.svg +0 -1
  436. package/assets/material/folder-coverage.svg +0 -1
  437. package/assets/material/folder-css-open.svg +0 -1
  438. package/assets/material/folder-css.svg +0 -1
  439. package/assets/material/folder-custom-open.svg +0 -1
  440. package/assets/material/folder-custom.svg +0 -1
  441. package/assets/material/folder-cypress-open.svg +0 -1
  442. package/assets/material/folder-cypress.svg +0 -1
  443. package/assets/material/folder-database-open.svg +0 -1
  444. package/assets/material/folder-database.svg +0 -1
  445. package/assets/material/folder-debug-open.svg +0 -1
  446. package/assets/material/folder-debug.svg +0 -1
  447. package/assets/material/folder-decorators-open.svg +0 -2
  448. package/assets/material/folder-decorators.svg +0 -5
  449. package/assets/material/folder-delta-open.svg +0 -1
  450. package/assets/material/folder-delta.svg +0 -1
  451. package/assets/material/folder-dist-open.svg +0 -1
  452. package/assets/material/folder-dist.svg +0 -1
  453. package/assets/material/folder-docker-open.svg +0 -1
  454. package/assets/material/folder-docker.svg +0 -1
  455. package/assets/material/folder-docs-open.svg +0 -1
  456. package/assets/material/folder-docs.svg +0 -1
  457. package/assets/material/folder-download-open.svg +0 -1
  458. package/assets/material/folder-download.svg +0 -1
  459. package/assets/material/folder-dump-open.svg +0 -1
  460. package/assets/material/folder-dump.svg +0 -1
  461. package/assets/material/folder-environment-open.svg +0 -1
  462. package/assets/material/folder-environment.svg +0 -1
  463. package/assets/material/folder-error-open.svg +0 -1
  464. package/assets/material/folder-error.svg +0 -1
  465. package/assets/material/folder-event-open.svg +0 -1
  466. package/assets/material/folder-event.svg +0 -1
  467. package/assets/material/folder-examples-open.svg +0 -1
  468. package/assets/material/folder-examples.svg +0 -1
  469. package/assets/material/folder-expo-open.svg +0 -1
  470. package/assets/material/folder-expo.svg +0 -1
  471. package/assets/material/folder-export-open.svg +0 -1
  472. package/assets/material/folder-export.svg +0 -1
  473. package/assets/material/folder-fastlane-open.svg +0 -1
  474. package/assets/material/folder-fastlane.svg +0 -1
  475. package/assets/material/folder-firebase-open.svg +0 -1
  476. package/assets/material/folder-firebase.svg +0 -1
  477. package/assets/material/folder-flow-open.svg +0 -1
  478. package/assets/material/folder-flow.svg +0 -1
  479. package/assets/material/folder-font-open.svg +0 -1
  480. package/assets/material/folder-font.svg +0 -1
  481. package/assets/material/folder-functions-open.svg +0 -1
  482. package/assets/material/folder-functions.svg +0 -1
  483. package/assets/material/folder-gamemaker-open.svg +0 -2
  484. package/assets/material/folder-gamemaker.svg +0 -2
  485. package/assets/material/folder-generator-open.svg +0 -1
  486. package/assets/material/folder-generator.svg +0 -1
  487. package/assets/material/folder-git-open.svg +0 -1
  488. package/assets/material/folder-git.svg +0 -1
  489. package/assets/material/folder-github-open.svg +0 -1
  490. package/assets/material/folder-github.svg +0 -1
  491. package/assets/material/folder-gitlab-open.svg +0 -1
  492. package/assets/material/folder-gitlab.svg +0 -1
  493. package/assets/material/folder-global-open.svg +0 -1
  494. package/assets/material/folder-global.svg +0 -1
  495. package/assets/material/folder-godot-open.svg +0 -2
  496. package/assets/material/folder-godot.svg +0 -8
  497. package/assets/material/folder-gradle-open.svg +0 -1
  498. package/assets/material/folder-gradle.svg +0 -1
  499. package/assets/material/folder-graphql-open.svg +0 -1
  500. package/assets/material/folder-graphql.svg +0 -1
  501. package/assets/material/folder-guard-open.svg +0 -1
  502. package/assets/material/folder-guard.svg +0 -1
  503. package/assets/material/folder-gulp-open.svg +0 -1
  504. package/assets/material/folder-gulp.svg +0 -1
  505. package/assets/material/folder-helper-open.svg +0 -1
  506. package/assets/material/folder-helper.svg +0 -1
  507. package/assets/material/folder-home-open.svg +0 -1
  508. package/assets/material/folder-home.svg +0 -1
  509. package/assets/material/folder-hook-open.svg +0 -1
  510. package/assets/material/folder-hook.svg +0 -1
  511. package/assets/material/folder-husky-open.svg +0 -1
  512. package/assets/material/folder-husky.svg +0 -1
  513. package/assets/material/folder-i18n-open.svg +0 -1
  514. package/assets/material/folder-i18n.svg +0 -1
  515. package/assets/material/folder-images-open.svg +0 -1
  516. package/assets/material/folder-images.svg +0 -1
  517. package/assets/material/folder-import-open.svg +0 -1
  518. package/assets/material/folder-import.svg +0 -1
  519. package/assets/material/folder-include-open.svg +0 -1
  520. package/assets/material/folder-include.svg +0 -1
  521. package/assets/material/folder-intellij-open.svg +0 -1
  522. package/assets/material/folder-intellij-open_light.svg +0 -1
  523. package/assets/material/folder-intellij.svg +0 -1
  524. package/assets/material/folder-intellij_light.svg +0 -1
  525. package/assets/material/folder-interface-open.svg +0 -1
  526. package/assets/material/folder-interface.svg +0 -1
  527. package/assets/material/folder-ios-open.svg +0 -1
  528. package/assets/material/folder-ios.svg +0 -1
  529. package/assets/material/folder-java-open.svg +0 -1
  530. package/assets/material/folder-java.svg +0 -1
  531. package/assets/material/folder-javascript-open.svg +0 -1
  532. package/assets/material/folder-javascript.svg +0 -1
  533. package/assets/material/folder-jinja-open.svg +0 -1
  534. package/assets/material/folder-jinja-open_light.svg +0 -1
  535. package/assets/material/folder-jinja.svg +0 -1
  536. package/assets/material/folder-jinja_light.svg +0 -1
  537. package/assets/material/folder-job-open.svg +0 -1
  538. package/assets/material/folder-job.svg +0 -1
  539. package/assets/material/folder-json-open.svg +0 -1
  540. package/assets/material/folder-json.svg +0 -1
  541. package/assets/material/folder-keys-open.svg +0 -1
  542. package/assets/material/folder-keys.svg +0 -1
  543. package/assets/material/folder-kubernetes-open.svg +0 -1
  544. package/assets/material/folder-kubernetes.svg +0 -1
  545. package/assets/material/folder-layout-open.svg +0 -1
  546. package/assets/material/folder-layout.svg +0 -1
  547. package/assets/material/folder-less-open.svg +0 -1
  548. package/assets/material/folder-less.svg +0 -1
  549. package/assets/material/folder-lib-open.svg +0 -1
  550. package/assets/material/folder-lib.svg +0 -1
  551. package/assets/material/folder-log-open.svg +0 -1
  552. package/assets/material/folder-log.svg +0 -1
  553. package/assets/material/folder-lua-open.svg +0 -1
  554. package/assets/material/folder-lua.svg +0 -1
  555. package/assets/material/folder-mail-open.svg +0 -1
  556. package/assets/material/folder-mail.svg +0 -1
  557. package/assets/material/folder-mappings-open.svg +0 -1
  558. package/assets/material/folder-mappings.svg +0 -1
  559. package/assets/material/folder-markdown-open.svg +0 -1
  560. package/assets/material/folder-markdown.svg +0 -1
  561. package/assets/material/folder-mercurial-open.svg +0 -5
  562. package/assets/material/folder-mercurial.svg +0 -2
  563. package/assets/material/folder-messages-open.svg +0 -1
  564. package/assets/material/folder-messages.svg +0 -1
  565. package/assets/material/folder-meta-open.svg +0 -1
  566. package/assets/material/folder-meta.svg +0 -1
  567. package/assets/material/folder-middleware-open.svg +0 -1
  568. package/assets/material/folder-middleware.svg +0 -1
  569. package/assets/material/folder-mjml-open.svg +0 -1
  570. package/assets/material/folder-mjml.svg +0 -1
  571. package/assets/material/folder-mobile-open.svg +0 -1
  572. package/assets/material/folder-mobile.svg +0 -1
  573. package/assets/material/folder-mock-open.svg +0 -1
  574. package/assets/material/folder-mock.svg +0 -1
  575. package/assets/material/folder-netlify-open.svg +0 -5
  576. package/assets/material/folder-netlify.svg +0 -2
  577. package/assets/material/folder-next-open.svg +0 -1
  578. package/assets/material/folder-next.svg +0 -1
  579. package/assets/material/folder-ngrx-actions-open.svg +0 -1
  580. package/assets/material/folder-ngrx-actions.svg +0 -1
  581. package/assets/material/folder-ngrx-effects-open.svg +0 -1
  582. package/assets/material/folder-ngrx-effects.svg +0 -1
  583. package/assets/material/folder-ngrx-entities-open.svg +0 -1
  584. package/assets/material/folder-ngrx-entities.svg +0 -1
  585. package/assets/material/folder-ngrx-reducer-open.svg +0 -1
  586. package/assets/material/folder-ngrx-reducer.svg +0 -1
  587. package/assets/material/folder-ngrx-selectors-open.svg +0 -1
  588. package/assets/material/folder-ngrx-selectors.svg +0 -1
  589. package/assets/material/folder-ngrx-state-open.svg +0 -1
  590. package/assets/material/folder-ngrx-state.svg +0 -1
  591. package/assets/material/folder-ngrx-store-open.svg +0 -1
  592. package/assets/material/folder-ngrx-store.svg +0 -1
  593. package/assets/material/folder-node-open.svg +0 -1
  594. package/assets/material/folder-node.svg +0 -1
  595. package/assets/material/folder-nuxt-open.svg +0 -1
  596. package/assets/material/folder-nuxt.svg +0 -1
  597. package/assets/material/folder-open.svg +0 -1
  598. package/assets/material/folder-other-open.svg +0 -1
  599. package/assets/material/folder-other.svg +0 -1
  600. package/assets/material/folder-packages-open.svg +0 -1
  601. package/assets/material/folder-packages.svg +0 -1
  602. package/assets/material/folder-pdf-open.svg +0 -1
  603. package/assets/material/folder-pdf.svg +0 -1
  604. package/assets/material/folder-php-open.svg +0 -1
  605. package/assets/material/folder-php.svg +0 -1
  606. package/assets/material/folder-phpmailer-open.svg +0 -1
  607. package/assets/material/folder-phpmailer.svg +0 -1
  608. package/assets/material/folder-pipe-open.svg +0 -1
  609. package/assets/material/folder-pipe.svg +0 -1
  610. package/assets/material/folder-plastic-open.svg +0 -8
  611. package/assets/material/folder-plastic.svg +0 -2
  612. package/assets/material/folder-plugin-open.svg +0 -1
  613. package/assets/material/folder-plugin.svg +0 -1
  614. package/assets/material/folder-prisma-open.svg +0 -1
  615. package/assets/material/folder-prisma.svg +0 -1
  616. package/assets/material/folder-private-open.svg +0 -1
  617. package/assets/material/folder-private.svg +0 -1
  618. package/assets/material/folder-project-open.svg +0 -1
  619. package/assets/material/folder-project.svg +0 -1
  620. package/assets/material/folder-proto-open.svg +0 -1
  621. package/assets/material/folder-proto.svg +0 -1
  622. package/assets/material/folder-public-open.svg +0 -1
  623. package/assets/material/folder-public.svg +0 -1
  624. package/assets/material/folder-python-open.svg +0 -1
  625. package/assets/material/folder-python.svg +0 -1
  626. package/assets/material/folder-quasar-open.svg +0 -1
  627. package/assets/material/folder-quasar.svg +0 -1
  628. package/assets/material/folder-queue-open.svg +0 -1
  629. package/assets/material/folder-queue.svg +0 -1
  630. package/assets/material/folder-react-components-open.svg +0 -1
  631. package/assets/material/folder-react-components.svg +0 -1
  632. package/assets/material/folder-redux-actions-open.svg +0 -1
  633. package/assets/material/folder-redux-actions.svg +0 -1
  634. package/assets/material/folder-redux-reducer-open.svg +0 -1
  635. package/assets/material/folder-redux-reducer.svg +0 -1
  636. package/assets/material/folder-redux-selector-open.svg +0 -1
  637. package/assets/material/folder-redux-selector.svg +0 -1
  638. package/assets/material/folder-redux-store-open.svg +0 -1
  639. package/assets/material/folder-redux-store.svg +0 -1
  640. package/assets/material/folder-resolver-open.svg +0 -1
  641. package/assets/material/folder-resolver.svg +0 -1
  642. package/assets/material/folder-resource-open.svg +0 -1
  643. package/assets/material/folder-resource.svg +0 -1
  644. package/assets/material/folder-review-open.svg +0 -1
  645. package/assets/material/folder-review.svg +0 -1
  646. package/assets/material/folder-root-open.svg +0 -1
  647. package/assets/material/folder-root.svg +0 -1
  648. package/assets/material/folder-routes-open.svg +0 -1
  649. package/assets/material/folder-routes.svg +0 -1
  650. package/assets/material/folder-rules-open.svg +0 -1
  651. package/assets/material/folder-rules.svg +0 -1
  652. package/assets/material/folder-sass-open.svg +0 -1
  653. package/assets/material/folder-sass.svg +0 -1
  654. package/assets/material/folder-scala-open.svg +0 -1
  655. package/assets/material/folder-scala.svg +0 -1
  656. package/assets/material/folder-scripts-open.svg +0 -1
  657. package/assets/material/folder-scripts.svg +0 -1
  658. package/assets/material/folder-secure-open.svg +0 -1
  659. package/assets/material/folder-secure.svg +0 -1
  660. package/assets/material/folder-server-open.svg +0 -1
  661. package/assets/material/folder-server.svg +0 -1
  662. package/assets/material/folder-serverless-open.svg +0 -1
  663. package/assets/material/folder-serverless.svg +0 -1
  664. package/assets/material/folder-shader-open.svg +0 -1
  665. package/assets/material/folder-shader.svg +0 -1
  666. package/assets/material/folder-shared-open.svg +0 -1
  667. package/assets/material/folder-shared.svg +0 -1
  668. package/assets/material/folder-src-open.svg +0 -1
  669. package/assets/material/folder-src.svg +0 -1
  670. package/assets/material/folder-stack-open.svg +0 -1
  671. package/assets/material/folder-stack.svg +0 -1
  672. package/assets/material/folder-stencil-open.svg +0 -1
  673. package/assets/material/folder-stencil.svg +0 -1
  674. package/assets/material/folder-storybook-open.svg +0 -1
  675. package/assets/material/folder-storybook.svg +0 -1
  676. package/assets/material/folder-stylus-open.svg +0 -1
  677. package/assets/material/folder-stylus.svg +0 -1
  678. package/assets/material/folder-sublime-open.svg +0 -1
  679. package/assets/material/folder-sublime.svg +0 -1
  680. package/assets/material/folder-supabase-open.svg +0 -5
  681. package/assets/material/folder-supabase.svg +0 -2
  682. package/assets/material/folder-svelte-open.svg +0 -1
  683. package/assets/material/folder-svelte.svg +0 -1
  684. package/assets/material/folder-svg-open.svg +0 -1
  685. package/assets/material/folder-svg.svg +0 -1
  686. package/assets/material/folder-syntax-open.svg +0 -1
  687. package/assets/material/folder-syntax.svg +0 -1
  688. package/assets/material/folder-target-open.svg +0 -1
  689. package/assets/material/folder-target.svg +0 -1
  690. package/assets/material/folder-tasks-open.svg +0 -1
  691. package/assets/material/folder-tasks.svg +0 -1
  692. package/assets/material/folder-temp-open.svg +0 -1
  693. package/assets/material/folder-temp.svg +0 -1
  694. package/assets/material/folder-template-open.svg +0 -1
  695. package/assets/material/folder-template.svg +0 -1
  696. package/assets/material/folder-terraform-open.svg +0 -1
  697. package/assets/material/folder-terraform.svg +0 -1
  698. package/assets/material/folder-test-open.svg +0 -1
  699. package/assets/material/folder-test.svg +0 -1
  700. package/assets/material/folder-theme-open.svg +0 -1
  701. package/assets/material/folder-theme.svg +0 -1
  702. package/assets/material/folder-tools-open.svg +0 -1
  703. package/assets/material/folder-tools.svg +0 -1
  704. package/assets/material/folder-typescript-open.svg +0 -1
  705. package/assets/material/folder-typescript.svg +0 -1
  706. package/assets/material/folder-unity-open.svg +0 -1
  707. package/assets/material/folder-unity.svg +0 -1
  708. package/assets/material/folder-update-open.svg +0 -1
  709. package/assets/material/folder-update.svg +0 -1
  710. package/assets/material/folder-upload-open.svg +0 -1
  711. package/assets/material/folder-upload.svg +0 -1
  712. package/assets/material/folder-utils-open.svg +0 -1
  713. package/assets/material/folder-utils.svg +0 -1
  714. package/assets/material/folder-vercel-open.svg +0 -1
  715. package/assets/material/folder-vercel.svg +0 -1
  716. package/assets/material/folder-verdaccio-open.svg +0 -1
  717. package/assets/material/folder-verdaccio.svg +0 -1
  718. package/assets/material/folder-video-open.svg +0 -1
  719. package/assets/material/folder-video.svg +0 -1
  720. package/assets/material/folder-views-open.svg +0 -1
  721. package/assets/material/folder-views.svg +0 -1
  722. package/assets/material/folder-vm-open.svg +0 -1
  723. package/assets/material/folder-vm.svg +0 -1
  724. package/assets/material/folder-vscode-open.svg +0 -1
  725. package/assets/material/folder-vscode.svg +0 -1
  726. package/assets/material/folder-vue-directives-open.svg +0 -1
  727. package/assets/material/folder-vue-directives.svg +0 -1
  728. package/assets/material/folder-vue-open.svg +0 -1
  729. package/assets/material/folder-vue.svg +0 -1
  730. package/assets/material/folder-vuepress-open.svg +0 -1
  731. package/assets/material/folder-vuepress.svg +0 -1
  732. package/assets/material/folder-vuex-store-open.svg +0 -1
  733. package/assets/material/folder-vuex-store.svg +0 -1
  734. package/assets/material/folder-wakatime-open.svg +0 -1
  735. package/assets/material/folder-wakatime.svg +0 -1
  736. package/assets/material/folder-webpack-open.svg +0 -1
  737. package/assets/material/folder-webpack.svg +0 -1
  738. package/assets/material/folder-wordpress-open.svg +0 -1
  739. package/assets/material/folder-wordpress.svg +0 -1
  740. package/assets/material/folder-yarn-open.svg +0 -1
  741. package/assets/material/folder-yarn.svg +0 -1
  742. package/assets/material/folder.svg +0 -1
  743. package/assets/material/font.svg +0 -1
  744. package/assets/material/forth.svg +0 -1
  745. package/assets/material/fortran.svg +0 -1
  746. package/assets/material/foxpro.svg +0 -1
  747. package/assets/material/fsharp.svg +0 -1
  748. package/assets/material/fusebox.svg +0 -1
  749. package/assets/material/gamemaker.svg +0 -4
  750. package/assets/material/gatsby.svg +0 -1
  751. package/assets/material/gcp.svg +0 -1
  752. package/assets/material/gemfile.svg +0 -1
  753. package/assets/material/gemini.svg +0 -1
  754. package/assets/material/git.svg +0 -1
  755. package/assets/material/gitlab.svg +0 -1
  756. package/assets/material/gitpod.svg +0 -1
  757. package/assets/material/gleam.svg +0 -1
  758. package/assets/material/go-mod.svg +0 -1
  759. package/assets/material/go.svg +0 -1
  760. package/assets/material/go_gopher.svg +0 -1
  761. package/assets/material/godot-assets.svg +0 -7
  762. package/assets/material/godot.svg +0 -7
  763. package/assets/material/gradle.svg +0 -1
  764. package/assets/material/grain.svg +0 -1
  765. package/assets/material/graphcool.svg +0 -1
  766. package/assets/material/graphql.svg +0 -1
  767. package/assets/material/gridsome.svg +0 -1
  768. package/assets/material/groovy.svg +0 -1
  769. package/assets/material/grunt.svg +0 -1
  770. package/assets/material/gulp.svg +0 -1
  771. package/assets/material/h.svg +0 -1
  772. package/assets/material/hack.svg +0 -1
  773. package/assets/material/haml.svg +0 -1
  774. package/assets/material/handlebars.svg +0 -1
  775. package/assets/material/hardhat.svg +0 -1
  776. package/assets/material/haskell.svg +0 -1
  777. package/assets/material/haxe.svg +0 -1
  778. package/assets/material/hcl.svg +0 -1
  779. package/assets/material/hcl_light.svg +0 -1
  780. package/assets/material/helm.svg +0 -1
  781. package/assets/material/heroku.svg +0 -1
  782. package/assets/material/hex.svg +0 -1
  783. package/assets/material/horusec.svg +0 -1
  784. package/assets/material/hpp.svg +0 -1
  785. package/assets/material/html.svg +0 -1
  786. package/assets/material/http.svg +0 -1
  787. package/assets/material/husky.svg +0 -1
  788. package/assets/material/i18n.svg +0 -1
  789. package/assets/material/idris.svg +0 -1
  790. package/assets/material/ifanr-cloud.svg +0 -10
  791. package/assets/material/image.svg +0 -1
  792. package/assets/material/imba.svg +0 -1
  793. package/assets/material/ionic.svg +0 -1
  794. package/assets/material/istanbul.svg +0 -1
  795. package/assets/material/jar.svg +0 -1
  796. package/assets/material/java.svg +0 -1
  797. package/assets/material/javaclass.svg +0 -1
  798. package/assets/material/javascript-map.svg +0 -1
  799. package/assets/material/javascript.svg +0 -1
  800. package/assets/material/jenkins.svg +0 -1
  801. package/assets/material/jest.svg +0 -1
  802. package/assets/material/jinja.svg +0 -1
  803. package/assets/material/jinja_light.svg +0 -1
  804. package/assets/material/jsconfig.svg +0 -1
  805. package/assets/material/json.svg +0 -1
  806. package/assets/material/julia.svg +0 -1
  807. package/assets/material/jupyter.svg +0 -1
  808. package/assets/material/karma.svg +0 -1
  809. package/assets/material/key.svg +0 -1
  810. package/assets/material/kivy.svg +0 -1
  811. package/assets/material/kl.svg +0 -1
  812. package/assets/material/kotlin.svg +0 -1
  813. package/assets/material/kusto.svg +0 -1
  814. package/assets/material/laravel.svg +0 -1
  815. package/assets/material/lerna.svg +0 -1
  816. package/assets/material/less.svg +0 -1
  817. package/assets/material/lib.svg +0 -1
  818. package/assets/material/lighthouse.svg +0 -1
  819. package/assets/material/lilypond.svg +0 -1
  820. package/assets/material/liquid.svg +0 -1
  821. package/assets/material/lisp.svg +0 -1
  822. package/assets/material/livescript.svg +0 -1
  823. package/assets/material/lock.svg +0 -1
  824. package/assets/material/log.svg +0 -1
  825. package/assets/material/lolcode.svg +0 -1
  826. package/assets/material/lua.svg +0 -1
  827. package/assets/material/makefile.svg +0 -1
  828. package/assets/material/markdown.svg +0 -1
  829. package/assets/material/markojs.svg +0 -1
  830. package/assets/material/mathematica.svg +0 -1
  831. package/assets/material/matlab.svg +0 -1
  832. package/assets/material/maven.svg +0 -1
  833. package/assets/material/mdsvex.svg +0 -1
  834. package/assets/material/mdx.svg +0 -1
  835. package/assets/material/mercurial.svg +0 -6
  836. package/assets/material/merlin.svg +0 -1
  837. package/assets/material/mermaid.svg +0 -4
  838. package/assets/material/meson.svg +0 -1
  839. package/assets/material/minecraft.svg +0 -1
  840. package/assets/material/mint.svg +0 -1
  841. package/assets/material/mjml.svg +0 -1
  842. package/assets/material/mocha.svg +0 -1
  843. package/assets/material/modernizr.svg +0 -1
  844. package/assets/material/moonscript.svg +0 -1
  845. package/assets/material/mxml.svg +0 -1
  846. package/assets/material/nano-staged.svg +0 -1
  847. package/assets/material/nano-staged_light.svg +0 -1
  848. package/assets/material/ndst.svg +0 -1
  849. package/assets/material/nest-controller.svg +0 -1
  850. package/assets/material/nest-decorator.svg +0 -1
  851. package/assets/material/nest-filter.svg +0 -1
  852. package/assets/material/nest-gateway.svg +0 -1
  853. package/assets/material/nest-guard.svg +0 -1
  854. package/assets/material/nest-middleware.svg +0 -1
  855. package/assets/material/nest-module.svg +0 -1
  856. package/assets/material/nest-pipe.svg +0 -1
  857. package/assets/material/nest-resolver.svg +0 -1
  858. package/assets/material/nest-service.svg +0 -1
  859. package/assets/material/nest.svg +0 -1
  860. package/assets/material/netlify.svg +0 -7
  861. package/assets/material/netlify_light.svg +0 -7
  862. package/assets/material/next.svg +0 -1
  863. package/assets/material/next_light.svg +0 -1
  864. package/assets/material/nginx.svg +0 -1
  865. package/assets/material/ngrx-actions.svg +0 -1
  866. package/assets/material/ngrx-effects.svg +0 -1
  867. package/assets/material/ngrx-entity.svg +0 -1
  868. package/assets/material/ngrx-reducer.svg +0 -1
  869. package/assets/material/ngrx-selectors.svg +0 -1
  870. package/assets/material/ngrx-state.svg +0 -1
  871. package/assets/material/nim.svg +0 -1
  872. package/assets/material/nix.svg +0 -1
  873. package/assets/material/nodejs.svg +0 -1
  874. package/assets/material/nodejs_alt.svg +0 -1
  875. package/assets/material/nodemon.svg +0 -1
  876. package/assets/material/npm.svg +0 -1
  877. package/assets/material/nrwl.svg +0 -1
  878. package/assets/material/nuget.svg +0 -1
  879. package/assets/material/nunjucks.svg +0 -1
  880. package/assets/material/nuxt.svg +0 -1
  881. package/assets/material/objective-c.svg +0 -4
  882. package/assets/material/objective-cpp.svg +0 -1
  883. package/assets/material/ocaml.svg +0 -1
  884. package/assets/material/odin.svg +0 -1
  885. package/assets/material/opa.svg +0 -1
  886. package/assets/material/opam.svg +0 -1
  887. package/assets/material/otne.svg +0 -1
  888. package/assets/material/parcel.svg +0 -1
  889. package/assets/material/pascal.svg +0 -6
  890. package/assets/material/pawn.svg +0 -1
  891. package/assets/material/pdf.svg +0 -1
  892. package/assets/material/percy.svg +0 -1
  893. package/assets/material/perl.svg +0 -1
  894. package/assets/material/php-cs-fixer.svg +0 -1
  895. package/assets/material/php.svg +0 -1
  896. package/assets/material/php_elephant.svg +0 -1
  897. package/assets/material/php_elephant_pink.svg +0 -1
  898. package/assets/material/phpunit.svg +0 -1
  899. package/assets/material/pinejs.svg +0 -1
  900. package/assets/material/pipeline.svg +0 -1
  901. package/assets/material/plastic.svg +0 -7
  902. package/assets/material/playwright.svg +0 -1
  903. package/assets/material/plop.svg +0 -1
  904. package/assets/material/pnpm.svg +0 -1
  905. package/assets/material/pnpm_light.svg +0 -1
  906. package/assets/material/poetry.svg +0 -1
  907. package/assets/material/postcss.svg +0 -1
  908. package/assets/material/posthtml.svg +0 -1
  909. package/assets/material/powerpoint.svg +0 -1
  910. package/assets/material/powershell.svg +0 -1
  911. package/assets/material/prettier.svg +0 -1
  912. package/assets/material/prisma.svg +0 -1
  913. package/assets/material/processing.svg +0 -1
  914. package/assets/material/prolog.svg +0 -1
  915. package/assets/material/proto.svg +0 -1
  916. package/assets/material/protractor.svg +0 -1
  917. package/assets/material/pug.svg +0 -1
  918. package/assets/material/puppet.svg +0 -1
  919. package/assets/material/purescript.svg +0 -1
  920. package/assets/material/python-misc.svg +0 -1
  921. package/assets/material/python.svg +0 -1
  922. package/assets/material/qsharp.svg +0 -1
  923. package/assets/material/quasar.svg +0 -1
  924. package/assets/material/qwik.svg +0 -2
  925. package/assets/material/r.svg +0 -1
  926. package/assets/material/racket.svg +0 -1
  927. package/assets/material/raml.svg +0 -1
  928. package/assets/material/razor.svg +0 -1
  929. package/assets/material/rc.svg +0 -2
  930. package/assets/material/react.svg +0 -1
  931. package/assets/material/react_ts.svg +0 -1
  932. package/assets/material/readme.svg +0 -1
  933. package/assets/material/reason.svg +0 -1
  934. package/assets/material/red.svg +0 -1
  935. package/assets/material/redux-action.svg +0 -1
  936. package/assets/material/redux-reducer.svg +0 -1
  937. package/assets/material/redux-selector.svg +0 -1
  938. package/assets/material/redux-store.svg +0 -1
  939. package/assets/material/remix.svg +0 -1
  940. package/assets/material/remix_light.svg +0 -1
  941. package/assets/material/renovate.svg +0 -1
  942. package/assets/material/replit.svg +0 -1
  943. package/assets/material/rescript-interface.svg +0 -1
  944. package/assets/material/rescript.svg +0 -1
  945. package/assets/material/restql.svg +0 -1
  946. package/assets/material/riot.svg +0 -1
  947. package/assets/material/roadmap.svg +0 -1
  948. package/assets/material/robot.svg +0 -1
  949. package/assets/material/robots.svg +0 -1
  950. package/assets/material/rollup.svg +0 -1
  951. package/assets/material/rome.svg +0 -1
  952. package/assets/material/routing.svg +0 -1
  953. package/assets/material/rubocop.svg +0 -1
  954. package/assets/material/rubocop_light.svg +0 -1
  955. package/assets/material/ruby.svg +0 -1
  956. package/assets/material/rust.svg +0 -1
  957. package/assets/material/salesforce.svg +0 -1
  958. package/assets/material/san.svg +0 -1
  959. package/assets/material/sas.svg +0 -1
  960. package/assets/material/sass.svg +0 -1
  961. package/assets/material/sbt.svg +0 -1
  962. package/assets/material/scala.svg +0 -1
  963. package/assets/material/scheme.svg +0 -1
  964. package/assets/material/search.svg +0 -1
  965. package/assets/material/semantic-release.svg +0 -1
  966. package/assets/material/semantic-release_light.svg +0 -1
  967. package/assets/material/sentry.svg +0 -1
  968. package/assets/material/sequelize.svg +0 -1
  969. package/assets/material/serverless.svg +0 -1
  970. package/assets/material/settings.svg +0 -1
  971. package/assets/material/shader.svg +0 -1
  972. package/assets/material/shaderlab.svg +0 -1
  973. package/assets/material/silverstripe.svg +0 -1
  974. package/assets/material/siyuan.svg +0 -1
  975. package/assets/material/sketch.svg +0 -1
  976. package/assets/material/slim.svg +0 -1
  977. package/assets/material/slug.svg +0 -1
  978. package/assets/material/smarty.svg +0 -1
  979. package/assets/material/sml.svg +0 -1
  980. package/assets/material/snowpack.svg +0 -1
  981. package/assets/material/snowpack_light.svg +0 -1
  982. package/assets/material/snyk.svg +0 -1
  983. package/assets/material/solidity.svg +0 -1
  984. package/assets/material/sonarcloud.svg +0 -4
  985. package/assets/material/steadybit.svg +0 -1
  986. package/assets/material/stencil.svg +0 -1
  987. package/assets/material/stitches.svg +0 -1
  988. package/assets/material/stitches_light.svg +0 -1
  989. package/assets/material/storybook.svg +0 -1
  990. package/assets/material/stryker.svg +0 -1
  991. package/assets/material/stylable.svg +0 -10
  992. package/assets/material/stylelint.svg +0 -1
  993. package/assets/material/stylelint_light.svg +0 -1
  994. package/assets/material/stylus.svg +0 -1
  995. package/assets/material/sublime.svg +0 -1
  996. package/assets/material/supabase.svg +0 -4
  997. package/assets/material/svelte.svg +0 -1
  998. package/assets/material/svg.svg +0 -1
  999. package/assets/material/svgo.svg +0 -1
  1000. package/assets/material/svgr.svg +0 -1
  1001. package/assets/material/swc.svg +0 -1
  1002. package/assets/material/swift.svg +0 -1
  1003. package/assets/material/table.svg +0 -1
  1004. package/assets/material/tailwindcss.svg +0 -1
  1005. package/assets/material/tauri.svg +0 -1
  1006. package/assets/material/tcl.svg +0 -1
  1007. package/assets/material/teal.svg +0 -1
  1008. package/assets/material/template.svg +0 -1
  1009. package/assets/material/terraform.svg +0 -1
  1010. package/assets/material/test-js.svg +0 -1
  1011. package/assets/material/test-jsx.svg +0 -1
  1012. package/assets/material/test-ts.svg +0 -1
  1013. package/assets/material/tex.svg +0 -1
  1014. package/assets/material/textlint.svg +0 -1
  1015. package/assets/material/tilt.svg +0 -1
  1016. package/assets/material/tldraw.svg +0 -4
  1017. package/assets/material/tldraw_light.svg +0 -4
  1018. package/assets/material/tobi.svg +0 -1
  1019. package/assets/material/tobimake.svg +0 -1
  1020. package/assets/material/todo.svg +0 -1
  1021. package/assets/material/travis.svg +0 -1
  1022. package/assets/material/tree.svg +0 -1
  1023. package/assets/material/tsconfig.svg +0 -1
  1024. package/assets/material/tune.svg +0 -1
  1025. package/assets/material/turborepo.svg +0 -1
  1026. package/assets/material/turborepo_light.svg +0 -1
  1027. package/assets/material/twig.svg +0 -1
  1028. package/assets/material/twine.svg +0 -1
  1029. package/assets/material/typescript-def.svg +0 -1
  1030. package/assets/material/typescript.svg +0 -1
  1031. package/assets/material/typst.svg +0 -2
  1032. package/assets/material/uml.svg +0 -1
  1033. package/assets/material/uml_light.svg +0 -1
  1034. package/assets/material/url.svg +0 -1
  1035. package/assets/material/vagrant.svg +0 -1
  1036. package/assets/material/vala.svg +0 -1
  1037. package/assets/material/velocity.svg +0 -1
  1038. package/assets/material/vercel.svg +0 -1
  1039. package/assets/material/vercel_light.svg +0 -1
  1040. package/assets/material/verdaccio.svg +0 -1
  1041. package/assets/material/verilog.svg +0 -1
  1042. package/assets/material/vfl.svg +0 -1
  1043. package/assets/material/video.svg +0 -1
  1044. package/assets/material/vim.svg +0 -1
  1045. package/assets/material/virtual.svg +0 -1
  1046. package/assets/material/visualstudio.svg +0 -1
  1047. package/assets/material/vite.svg +0 -1
  1048. package/assets/material/vitest.svg +0 -6
  1049. package/assets/material/vlang.svg +0 -1
  1050. package/assets/material/vscode.svg +0 -1
  1051. package/assets/material/vue-config.svg +0 -1
  1052. package/assets/material/vue.svg +0 -1
  1053. package/assets/material/vuex-store.svg +0 -1
  1054. package/assets/material/wakatime.svg +0 -1
  1055. package/assets/material/wakatime_light.svg +0 -1
  1056. package/assets/material/wallaby.svg +0 -1
  1057. package/assets/material/watchman.svg +0 -1
  1058. package/assets/material/webassembly.svg +0 -1
  1059. package/assets/material/webhint.svg +0 -1
  1060. package/assets/material/webpack.svg +0 -1
  1061. package/assets/material/wepy.svg +0 -1
  1062. package/assets/material/windicss.svg +0 -1
  1063. package/assets/material/wolframlanguage.svg +0 -1
  1064. package/assets/material/word.svg +0 -1
  1065. package/assets/material/xaml.svg +0 -1
  1066. package/assets/material/xml.svg +0 -1
  1067. package/assets/material/yaml.svg +0 -1
  1068. package/assets/material/yang.svg +0 -1
  1069. package/assets/material/yarn.svg +0 -1
  1070. package/assets/material/zig.svg +0 -1
  1071. package/assets/material/zip.svg +0 -1
  1072. package/assets/pop/LICENSE +0 -2
  1073. package/assets/pop/binary.svg +0 -1
  1074. package/assets/pop/compressed.svg +0 -1
  1075. package/assets/pop/database.svg +0 -1
  1076. package/assets/pop/exts/7z.svg +0 -1
  1077. package/assets/pop/exts/apk.svg +0 -1
  1078. package/assets/pop/exts/arc.svg +0 -1
  1079. package/assets/pop/exts/bz.svg +0 -1
  1080. package/assets/pop/exts/deb.svg +0 -1
  1081. package/assets/pop/exts/gz.svg +0 -1
  1082. package/assets/pop/exts/pdf.svg +0 -1
  1083. package/assets/pop/exts/rar.svg +0 -1
  1084. package/assets/pop/exts/rpm.svg +0 -1
  1085. package/assets/pop/exts/tar.svg +0 -1
  1086. package/assets/pop/exts/xar.svg +0 -1
  1087. package/assets/pop/exts/xz.svg +0 -1
  1088. package/assets/pop/exts/zip.svg +0 -1
  1089. package/assets/pop/folder-open.svg +0 -1
  1090. package/assets/pop/folder.svg +0 -1
  1091. package/assets/pop/generic.svg +0 -1
  1092. package/assets/pop/presentation.svg +0 -1
  1093. package/assets/pop/richtext.svg +0 -1
  1094. package/assets/pop/spreadsheet.svg +0 -1
  1095. package/assets/pop/text.svg +0 -1
  1096. package/components/dynamic-html/dynamic-html.component.d.ts +0 -15
  1097. package/components/dynamic-html/dynamic-html.module.d.ts +0 -10
  1098. package/components/dynamic-html/dynamic-html.service.d.ts +0 -18
  1099. package/components/dynamic-html/types.d.ts +0 -12
  1100. package/components/tabulator/tabulator.component.d.ts +0 -30
  1101. package/components/vscode/vscode.component.d.ts +0 -52
  1102. package/esm2022/assets/mat-icons.mjs +0 -5705
  1103. package/esm2022/components/command-palette/command-palette.component.mjs +0 -257
  1104. package/esm2022/components/dynamic-html/dynamic-html.component.mjs +0 -43
  1105. package/esm2022/components/dynamic-html/dynamic-html.module.mjs +0 -27
  1106. package/esm2022/components/dynamic-html/dynamic-html.service.mjs +0 -66
  1107. package/esm2022/components/dynamic-html/types.mjs +0 -7
  1108. package/esm2022/components/filemanager/file-grid/file-grid.component.mjs +0 -674
  1109. package/esm2022/components/filemanager/helpers.mjs +0 -26
  1110. package/esm2022/components/filemanager/icon-resolver.mjs +0 -155
  1111. package/esm2022/components/filemanager/textextensions.mjs +0 -294
  1112. package/esm2022/components/filemanager/toolbar/toolbar.component.mjs +0 -165
  1113. package/esm2022/components/lazy-loader/lazy-loader.component.mjs +0 -383
  1114. package/esm2022/components/lazy-loader/lazy-loader.module.mjs +0 -33
  1115. package/esm2022/components/lazy-loader/lazy-loader.service.mjs +0 -217
  1116. package/esm2022/components/lazy-loader/types.mjs +0 -26
  1117. package/esm2022/components/menu/menu.component.mjs +0 -433
  1118. package/esm2022/components/parallax-card/parallax-card.component.mjs +0 -138
  1119. package/esm2022/components/tabulator/tabulator.component.mjs +0 -93
  1120. package/esm2022/components/tooltip/tooltip.component.mjs +0 -205
  1121. package/esm2022/components/types.mjs +0 -3
  1122. package/esm2022/components/vscode/ts-type-resolver/dependency-parser.mjs +0 -91
  1123. package/esm2022/components/vscode/ts-type-resolver/dummy-source-cache.mjs +0 -15
  1124. package/esm2022/components/vscode/ts-type-resolver/import-resolver.mjs +0 -311
  1125. package/esm2022/components/vscode/ts-type-resolver/main.mjs +0 -112
  1126. package/esm2022/components/vscode/ts-type-resolver/recursion-depth.mjs +0 -21
  1127. package/esm2022/components/vscode/ts-type-resolver/types.mjs +0 -14
  1128. package/esm2022/components/vscode/ts-type-resolver/unpkg-source-resolver.mjs +0 -21
  1129. package/esm2022/components/vscode/ts-type-resolver/update-emitter.mjs +0 -37
  1130. package/esm2022/components/vscode/vscode.component.mjs +0 -232
  1131. package/esm2022/directives/image-cache.directive.mjs +0 -140
  1132. package/esm2022/directives/menu.directive.mjs +0 -159
  1133. package/esm2022/directives/tooltip.directive.mjs +0 -154
  1134. package/esm2022/directives/utils.mjs +0 -120
  1135. package/esm2022/pipes/html-bypass.pipe.mjs +0 -27
  1136. package/esm2022/pipes/resource-bypass.pipe.mjs +0 -27
  1137. package/esm2022/pipes/script-bypass.pipe.mjs +0 -27
  1138. package/esm2022/pipes/style-bypass.pipe.mjs +0 -27
  1139. package/esm2022/pipes/url-bypass.pipe.mjs +0 -27
  1140. package/esm2022/public-api.mjs +0 -59
  1141. package/esm2022/services/command-palette.service.mjs +0 -209
  1142. package/esm2022/services/dependency.service.mjs +0 -55
  1143. package/esm2022/services/dialog.service.mjs +0 -69
  1144. package/esm2022/services/fetch.service.mjs +0 -74
  1145. package/esm2022/services/file.service.mjs +0 -42
  1146. package/esm2022/services/keyboard.service.mjs +0 -128
  1147. package/esm2022/services/navigation.service.mjs +0 -52
  1148. package/esm2022/services/theme.service.mjs +0 -64
  1149. package/esm2022/types/menu.mjs +0 -2
  1150. package/esm2022/types/popup.mjs +0 -2
  1151. package/esm2022/types/tooltip.mjs +0 -2
  1152. package/esm2022/utils/index.mjs +0 -205
  1153. package/fesm2022/dotglitch-ngx-common-folder-rename.component-Bh1IiRvd.mjs.map +0 -1
  1154. package/utils/index.d.ts +0 -128
  1155. /package/{components → core/components}/lazy-loader/lazy-loader.component.d.ts +0 -0
  1156. /package/{components → core/components}/lazy-loader/lazy-loader.module.d.ts +0 -0
  1157. /package/{components → core/components}/lazy-loader/lazy-loader.service.d.ts +0 -0
  1158. /package/{components → core/components}/lazy-loader/types.d.ts +0 -0
  1159. /package/{components → core/components}/parallax-card/parallax-card.component.d.ts +0 -0
  1160. /package/{directives → core/directives}/image-cache.directive.d.ts +0 -0
  1161. /package/{directives → core/directives}/utils.d.ts +0 -0
  1162. /package/{pipes → core/pipes}/html-bypass.pipe.d.ts +0 -0
  1163. /package/{pipes → core/pipes}/resource-bypass.pipe.d.ts +0 -0
  1164. /package/{pipes → core/pipes}/script-bypass.pipe.d.ts +0 -0
  1165. /package/{pipes → core/pipes}/style-bypass.pipe.d.ts +0 -0
  1166. /package/{pipes → core/pipes}/url-bypass.pipe.d.ts +0 -0
  1167. /package/{services → core/services}/dependency.service.d.ts +0 -0
  1168. /package/{services → core/services}/dialog.service.d.ts +0 -0
  1169. /package/{services → core/services}/fetch.service.d.ts +0 -0
  1170. /package/{services → core/services}/file.service.d.ts +0 -0
  1171. /package/{services → core/services}/keyboard.service.d.ts +0 -0
  1172. /package/{services → core/services}/theme.service.d.ts +0 -0
  1173. /package/{types → core/types}/popup.d.ts +0 -0
  1174. /package/{components/filemanager → filemanager}/icon-resolver.d.ts +0 -0
  1175. /package/{assets → filemanager}/mat-icons.d.ts +0 -0
  1176. /package/{components/filemanager → filemanager}/textextensions.d.ts +0 -0
  1177. /package/{components/filemanager → filemanager}/toolbar/breadcrumb/breadcrumb.component.d.ts +0 -0
  1178. /package/{components/filemanager → filemanager}/toolbar/icon-button/icon-button.component.d.ts +0 -0
  1179. /package/{components/filemanager → filemanager}/tree-view/tree-view.component.d.ts +0 -0
  1180. /package/{components/vscode → monaco-editor}/ts-type-resolver/dependency-parser.d.ts +0 -0
  1181. /package/{components/vscode → monaco-editor}/ts-type-resolver/dummy-source-cache.d.ts +0 -0
  1182. /package/{components/vscode → monaco-editor}/ts-type-resolver/import-resolver.d.ts +0 -0
  1183. /package/{components/vscode → monaco-editor}/ts-type-resolver/main.d.ts +0 -0
  1184. /package/{components/vscode → monaco-editor}/ts-type-resolver/recursion-depth.d.ts +0 -0
  1185. /package/{components/vscode → monaco-editor}/ts-type-resolver/types.d.ts +0 -0
  1186. /package/{components/vscode → monaco-editor}/ts-type-resolver/unpkg-source-resolver.d.ts +0 -0
  1187. /package/{components/vscode → monaco-editor}/ts-type-resolver/update-emitter.d.ts +0 -0
@@ -0,0 +1,311 @@
1
+ import { DependencyParser } from './dependency-parser';
2
+ import * as path from 'path-browserify';
3
+ import { invokeUpdate } from './update-emitter';
4
+ import { RecursionDepth } from './recursion-depth';
5
+ import { importResourcePathToString } from './types';
6
+ import { UnpkgSourceResolver } from './unpkg-source-resolver';
7
+ export class ImportResolver {
8
+ constructor(options) {
9
+ this.options = options;
10
+ this.loadedFiles = [];
11
+ this.dependencyParser = new DependencyParser();
12
+ this.cache = options.sourceCache;
13
+ this.newImportsResolved = false;
14
+ this.monaco = options.monaco;
15
+ if (options.preloadPackages && options.versions) {
16
+ this.versions = options.versions;
17
+ for (const [packageName, version] of Object.entries(options.versions)) {
18
+ this.resolveImport({
19
+ kind: 'package',
20
+ packageName: packageName,
21
+ importPath: '',
22
+ }, new RecursionDepth(this.options)).catch(e => {
23
+ console.error(e);
24
+ });
25
+ }
26
+ }
27
+ }
28
+ wereNewImportsResolved() {
29
+ return this.newImportsResolved;
30
+ }
31
+ resetNewImportsResolved() {
32
+ this.newImportsResolved = false;
33
+ }
34
+ async resolveImportsInFile(source, parent, depth) {
35
+ if (depth.shouldStop()) {
36
+ return;
37
+ }
38
+ const imports = this.dependencyParser.parseDependencies(source, parent);
39
+ for (const importCall of imports) {
40
+ try {
41
+ await this.resolveImport(importCall, depth);
42
+ }
43
+ catch (e) {
44
+ if (this.options.onError) {
45
+ this.options.onError?.(e.message ?? e);
46
+ }
47
+ else {
48
+ console.error(e);
49
+ }
50
+ }
51
+ }
52
+ }
53
+ async resolveImport(importResource, depth) {
54
+ const hash = this.hashImportResourcePath(importResource);
55
+ if (this.loadedFiles.includes(hash)) {
56
+ return;
57
+ }
58
+ this.loadedFiles.push(hash);
59
+ console.log("resolveImport", importResource, depth);
60
+ // Ignore these package imports as they are well-known to be pointless.
61
+ if (importResource.kind == "package" && importResource.packageName == "require")
62
+ return null;
63
+ switch (importResource.kind) {
64
+ case 'package':
65
+ const packageRelativeImport = await this.resolveImportFromPackageRoot(importResource);
66
+ if (packageRelativeImport) {
67
+ return await this.resolveImportInPackage(packageRelativeImport, depth.nextPackage().nextFile());
68
+ }
69
+ break;
70
+ case 'relative':
71
+ throw Error('Not implemented yet');
72
+ case 'relative-in-package':
73
+ return await this.resolveImportInPackage(importResource, depth.nextFile());
74
+ case 'bruteforce': {
75
+ }
76
+ }
77
+ }
78
+ async resolveImportInPackage(importResource, depth) {
79
+ console.log("resolveImportInPackage", importResource, depth);
80
+ const contents = await this.loadSourceFileContents(importResource);
81
+ if (contents) {
82
+ const { source, at } = contents;
83
+ this.createModel(source, this.monaco.Uri.parse(this.options.fileRootPath + path.join(`node_modules/${importResource.packageName}`, at)));
84
+ await this.resolveImportsInFile(source, {
85
+ kind: 'relative-in-package',
86
+ packageName: importResource.packageName,
87
+ sourcePath: path.dirname(at),
88
+ importPath: '',
89
+ }, depth);
90
+ }
91
+ }
92
+ async resolveImportFromPackageRoot(importResource) {
93
+ console.log("resolveImportFromPackageRoot", importResource);
94
+ const failedProgressUpdate = {
95
+ type: 'LookedUpPackage',
96
+ package: importResource.packageName,
97
+ definitelyTyped: false,
98
+ success: false,
99
+ };
100
+ if (this.options.onlySpecifiedPackages) {
101
+ if (!this.versions?.[importResource.packageName] && !this.versions?.['@types/' + importResource.packageName]) {
102
+ invokeUpdate(failedProgressUpdate, this.options);
103
+ return null;
104
+ }
105
+ }
106
+ const doesPkgJsonHasSubpath = importResource.importPath?.length ?? 0 > 0;
107
+ let pkgJsonSubpath = doesPkgJsonHasSubpath ? `/${importResource.importPath}` : '';
108
+ let pkgJson = await this.resolvePackageJson(importResource.packageName, this.versions?.[importResource.packageName], doesPkgJsonHasSubpath ? importResource.importPath : undefined);
109
+ if (!pkgJson && doesPkgJsonHasSubpath) {
110
+ pkgJson = await this.resolvePackageJson(importResource.packageName, this.versions?.[importResource.packageName]);
111
+ pkgJsonSubpath = '';
112
+ }
113
+ if (!pkgJson)
114
+ return invokeUpdate(failedProgressUpdate, this.options);
115
+ const pkg = JSON.parse(pkgJson);
116
+ console.log("package meta", pkg);
117
+ if (pkg.typings || pkg.types) {
118
+ const typings = pkg.typings || pkg.types;
119
+ this.createModel(pkgJson, this.monaco.Uri.parse(`${this.options.fileRootPath}node_modules/${importResource.packageName}${pkgJsonSubpath}/package.json`));
120
+ invokeUpdate({
121
+ type: 'LookedUpPackage',
122
+ package: importResource.packageName,
123
+ definitelyTyped: false,
124
+ success: true,
125
+ }, this.options);
126
+ this.setVersion(importResource.packageName, pkg.version);
127
+ return {
128
+ kind: 'relative-in-package',
129
+ packageName: importResource.packageName,
130
+ sourcePath: '',
131
+ importPath: path.join(importResource.importPath ?? '', typings.startsWith('./') ? typings.slice(2) : typings),
132
+ };
133
+ }
134
+ else {
135
+ const typingPackageName = `@types/${importResource.packageName.startsWith('@')
136
+ ? importResource.packageName.slice(1).replace(/\//, '__')
137
+ : importResource.packageName}`;
138
+ const pkgJsonTypings = await this.resolvePackageJson(typingPackageName, this.versions?.[typingPackageName]);
139
+ if (!pkgJsonTypings)
140
+ return invokeUpdate(failedProgressUpdate, this.options);
141
+ const pkg = JSON.parse(pkgJsonTypings);
142
+ if (!pkg.typings && !pkg.types) {
143
+ const files = await fetch("https://www.npmjs.com/package/@dt-esa/dynatrace-api-client/v/2.2.6/index", {
144
+ method: "get"
145
+ }).then(e => e.json());
146
+ const typingFiles = Object.entries(files.files).map(([key, val]) => val);
147
+ invokeUpdate({
148
+ type: 'LookedUpPackage',
149
+ package: typingPackageName,
150
+ definitelyTyped: true,
151
+ success: true,
152
+ }, this.options);
153
+ return {
154
+ kind: 'bruteforce',
155
+ packageName: typingPackageName,
156
+ typingFiles,
157
+ };
158
+ return;
159
+ // return invokeUpdate(failedProgressUpdate, this.options);
160
+ }
161
+ const typings = pkg.typings || pkg.types;
162
+ this.createModel(pkgJsonTypings, this.monaco.Uri.parse(`${this.options.fileRootPath}node_modules/${typingPackageName}/package.json`));
163
+ invokeUpdate({
164
+ type: 'LookedUpPackage',
165
+ package: typingPackageName,
166
+ definitelyTyped: true,
167
+ success: true,
168
+ }, this.options);
169
+ this.setVersion(typingPackageName, pkg.version);
170
+ return {
171
+ kind: 'relative-in-package',
172
+ packageName: typingPackageName,
173
+ sourcePath: '',
174
+ importPath: path.join(importResource.importPath ?? '', typings.startsWith('./') ? typings.slice(2) : typings),
175
+ };
176
+ }
177
+ }
178
+ async loadSourceFileContents(importResource) {
179
+ const progressUpdatePath = path.join(importResource.packageName, importResource.sourcePath, importResource.importPath);
180
+ const failedProgressUpdate = {
181
+ type: 'LookedUpTypeFile',
182
+ path: progressUpdatePath,
183
+ definitelyTyped: false,
184
+ success: false,
185
+ };
186
+ const pkgName = importResource.packageName;
187
+ const version = this.getVersion(importResource.packageName);
188
+ let appends = ['.d.ts', '/index.d.ts', '.ts', '.tsx', '/index.ts', '/index.tsx'];
189
+ if (appends.map(append => importResource.importPath.endsWith(append)).reduce((a, b) => a || b, false)) {
190
+ const source = await this.resolveSourceFile(pkgName, version, path.join(importResource.sourcePath, importResource.importPath));
191
+ if (source) {
192
+ return { source, at: path.join(importResource.sourcePath, importResource.importPath) };
193
+ }
194
+ }
195
+ else {
196
+ for (const append of appends) {
197
+ const fullPath = path.join(importResource.sourcePath, importResource.importPath) + append;
198
+ const source = await this.resolveSourceFile(pkgName, version, fullPath);
199
+ invokeUpdate({
200
+ type: 'AttemptedLookUpFile',
201
+ path: path.join(pkgName, fullPath),
202
+ success: !!source,
203
+ }, this.options);
204
+ if (source) {
205
+ invokeUpdate({
206
+ type: 'LookedUpTypeFile',
207
+ path: path.join(pkgName, fullPath),
208
+ success: true,
209
+ }, this.options);
210
+ return { source, at: fullPath };
211
+ }
212
+ }
213
+ }
214
+ const pkgJson = await this.resolvePackageJson(pkgName, version, path.join(importResource.sourcePath, importResource.importPath));
215
+ if (pkgJson) {
216
+ const { types } = JSON.parse(pkgJson);
217
+ if (types) {
218
+ const fullPath = path.join(importResource.sourcePath, importResource.importPath, types);
219
+ const source = await this.resolveSourceFile(pkgName, version, fullPath);
220
+ if (source) {
221
+ invokeUpdate({
222
+ type: 'LookedUpTypeFile',
223
+ path: path.join(pkgName, fullPath),
224
+ success: true,
225
+ }, this.options);
226
+ return { source, at: fullPath };
227
+ }
228
+ }
229
+ }
230
+ invokeUpdate(failedProgressUpdate, this.options);
231
+ return null;
232
+ }
233
+ getVersion(packageName) {
234
+ return this.versions?.[packageName];
235
+ }
236
+ setVersions(versions) {
237
+ this.versions = versions;
238
+ this.options.onUpdateVersions?.(versions);
239
+ // TODO reload packages whose version has changed
240
+ }
241
+ setVersion(packageName, version) {
242
+ this.setVersions({
243
+ ...this.versions,
244
+ [packageName]: version,
245
+ });
246
+ }
247
+ createModel(source, uri) {
248
+ uri = uri.with({ path: uri.path.replace('@types/', '') });
249
+ if (!this.monaco.editor.getModel(uri)) {
250
+ this.monaco.editor.createModel(source, 'typescript', uri);
251
+ this.newImportsResolved = true;
252
+ }
253
+ }
254
+ hashImportResourcePath(p) {
255
+ return importResourcePathToString(p);
256
+ }
257
+ async resolvePackageJson(packageName, version, subPath) {
258
+ const uri = path.join(packageName + (version ? `@${version}` : ''), subPath ?? '', 'package.json');
259
+ let isAvailable = false;
260
+ let content = undefined;
261
+ if (this.cache.isFileAvailable) {
262
+ isAvailable = await this.cache.isFileAvailable(uri);
263
+ }
264
+ else {
265
+ content = await this.cache.getFile(uri);
266
+ isAvailable = content !== undefined;
267
+ }
268
+ if (isAvailable) {
269
+ return content ?? (await this.cache.getFile(uri));
270
+ }
271
+ else {
272
+ console.log("recursing resolvePackageJson", packageName, version, subPath);
273
+ content = await UnpkgSourceResolver.resolvePackageJson(packageName, version, subPath);
274
+ if (content) {
275
+ this.cache.storeFile(uri, content);
276
+ }
277
+ return content;
278
+ }
279
+ }
280
+ async resolveSourceFile(packageName, version, filePath) {
281
+ const uri = path.join(packageName + (version ? `@${version}` : ''), filePath);
282
+ let isAvailable = false;
283
+ let content = undefined;
284
+ if (this.cache.isFileAvailable) {
285
+ isAvailable = await this.cache.isFileAvailable(uri);
286
+ }
287
+ else {
288
+ content = await this.cache.getFile(uri);
289
+ isAvailable = content !== undefined;
290
+ }
291
+ if (isAvailable) {
292
+ invokeUpdate({
293
+ type: 'LoadedFromCache',
294
+ importPath: uri,
295
+ }, this.options);
296
+ return content ?? (await this.cache.getFile(uri));
297
+ }
298
+ else {
299
+ content = await UnpkgSourceResolver.resolveSourceFile(packageName, version, filePath);
300
+ if (content) {
301
+ invokeUpdate({
302
+ type: 'StoredToCache',
303
+ importPath: uri,
304
+ }, this.options);
305
+ this.cache.storeFile(uri, content);
306
+ }
307
+ return content;
308
+ }
309
+ }
310
+ }
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL21vbmFjby1lZGl0b3IvdHMtdHlwZS1yZXNvbHZlci9pbXBvcnQtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxLQUFLLElBQUksTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBNEcsMEJBQTBCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0osT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsTUFBTSxPQUFPLGNBQWM7SUFRdkIsWUFBb0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU8sQ0FBQztRQUU5QixJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNqQyxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVB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QUFDO1lBQ3hDLFdBQVcsR0FBRyxPQUFPLEtBQUssU0FBUyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsWUFBWSxDQUNSO2dCQUNJLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFVBQVUsRUFBRSxHQUFHO2FBQ2xCLEVBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FDZixDQUFDO1lBQ0YsT0FBTyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQzthQUNJLENBQUM7WUFDRixPQUFPLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RGLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1YsWUFBWSxDQUNSO29CQUNJLElBQUksRUFBRSxlQUFlO29CQUNyQixVQUFVLEVBQUUsR0FBRztpQkFDbEIsRUFDRCxJQUFJLENBQUMsT0FBTyxDQUNmLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgeyBEZXBlbmRlbmN5UGFyc2VyIH0gZnJvbSAnLi9kZXBlbmRlbmN5LXBhcnNlcic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgtYnJvd3NlcmlmeSc7XG5pbXBvcnQgeyBpbnZva2VVcGRhdGUgfSBmcm9tICcuL3VwZGF0ZS1lbWl0dGVyJztcbmltcG9ydCB7IFJlY3Vyc2lvbkRlcHRoIH0gZnJvbSAnLi9yZWN1cnNpb24tZGVwdGgnO1xuaW1wb3J0IHsgSW1wb3J0UmVzb3VyY2VQYXRoLCBJbXBvcnRSZXNvdXJjZVBhdGhQYWNrYWdlLCBJbXBvcnRSZXNvdXJjZVBhdGhSZWxhdGl2ZUluUGFja2FnZSwgT3B0aW9ucywgU291cmNlQ2FjaGUsIGltcG9ydFJlc291cmNlUGF0aFRvU3RyaW5nIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBVbnBrZ1NvdXJjZVJlc29sdmVyIH0gZnJvbSAnLi91bnBrZy1zb3VyY2UtcmVzb2x2ZXInO1xuXG5leHBvcnQgY2xhc3MgSW1wb3J0UmVzb2x2ZXIge1xuICAgIHByaXZhdGUgbG9hZGVkRmlsZXM6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgZGVwZW5kZW5jeVBhcnNlcjogRGVwZW5kZW5jeVBhcnNlcjtcbiAgICBwcml2YXRlIGNhY2hlOiBTb3VyY2VDYWNoZTtcbiAgICBwcml2YXRlIHZlcnNpb25zPzogeyBbcGFja2FnZU5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIHByaXZhdGUgbmV3SW1wb3J0c1Jlc29sdmVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgbW9uYWNvOiB0eXBlb2YgbW9uYWNvO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIHRoaXMubG9hZGVkRmlsZXMgPSBbXTtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmN5UGFyc2VyID0gbmV3IERlcGVuZGVuY3lQYXJzZXIoKTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IG9wdGlvbnMuc291cmNlQ2FjaGU7XG4gICAgICAgIHRoaXMubmV3SW1wb3J0c1Jlc29sdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9uYWNvID0gb3B0aW9ucy5tb25hY28hO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnByZWxvYWRQYWNrYWdlcyAmJiBvcHRpb25zLnZlcnNpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnNpb25zID0gb3B0aW9ucy52ZXJzaW9ucztcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3BhY2thZ2VOYW1lLCB2ZXJzaW9uXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zLnZlcnNpb25zKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUltcG9ydChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ3BhY2thZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5ldyBSZWN1cnNpb25EZXB0aCh0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICAgICAgKS5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3ZXJlTmV3SW1wb3J0c1Jlc29sdmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZXdJbXBvcnRzUmVzb2x2ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0TmV3SW1wb3J0c1Jlc29sdmVkKCkge1xuICAgICAgICB0aGlzLm5ld0ltcG9ydHNSZXNvbHZlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXNvbHZlSW1wb3J0c0luRmlsZShzb3VyY2U6IHN0cmluZywgcGFyZW50OiBzdHJpbmcgfCBJbXBvcnRSZXNvdXJjZVBhdGgsIGRlcHRoOiBSZWN1cnNpb25EZXB0aCkge1xuICAgICAgICBpZiAoZGVwdGguc2hvdWxkU3RvcCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5kZXBlbmRlbmN5UGFyc2VyLnBhcnNlRGVwZW5kZW5jaWVzKHNvdXJjZSwgcGFyZW50KTtcbiAgICAgICAgZm9yIChjb25zdCBpbXBvcnRDYWxsIG9mIGltcG9ydHMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNvbHZlSW1wb3J0KGltcG9ydENhbGwsIGRlcHRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5vbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbkVycm9yPy4oKGUgYXMgRXJyb3IpLm1lc3NhZ2UgPz8gZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUltcG9ydChpbXBvcnRSZXNvdXJjZTogSW1wb3J0UmVzb3VyY2VQYXRoLCBkZXB0aDogUmVjdXJzaW9uRGVwdGgpIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuaGFzaEltcG9ydFJlc291cmNlUGF0aChpbXBvcnRSZXNvdXJjZSk7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZEZpbGVzLmluY2x1ZGVzKGhhc2gpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRlZEZpbGVzLnB1c2goaGFzaCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwicmVzb2x2ZUltcG9ydFwiLCBpbXBvcnRSZXNvdXJjZSwgZGVwdGgpO1xuXG4gICAgICAgIC8vIElnbm9yZSB0aGVzZSBwYWNrYWdlIGltcG9ydHMgYXMgdGhleSBhcmUgd2VsbC1rbm93biB0byBiZSBwb2ludGxlc3MuXG4gICAgICAgIGlmIChpbXBvcnRSZXNvdXJjZS5raW5kID09IFwicGFja2FnZVwiICYmIGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lID09IFwicmVxdWlyZVwiKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgc3dpdGNoIChpbXBvcnRSZXNvdXJjZS5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdwYWNrYWdlJzpcbiAgICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlUmVsYXRpdmVJbXBvcnQgPSBhd2FpdCB0aGlzLnJlc29sdmVJbXBvcnRGcm9tUGFja2FnZVJvb3QoaW1wb3J0UmVzb3VyY2UpO1xuICAgICAgICAgICAgICAgIGlmIChwYWNrYWdlUmVsYXRpdmVJbXBvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVzb2x2ZUltcG9ydEluUGFja2FnZShwYWNrYWdlUmVsYXRpdmVJbXBvcnQsIGRlcHRoLm5leHRQYWNrYWdlKCkubmV4dEZpbGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVsYXRpdmUnOlxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgICAgICAgICBjYXNlICdyZWxhdGl2ZS1pbi1wYWNrYWdlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXNvbHZlSW1wb3J0SW5QYWNrYWdlKGltcG9ydFJlc291cmNlLCBkZXB0aC5uZXh0RmlsZSgpKTtcbiAgICAgICAgICAgIGNhc2UgJ2JydXRlZm9yY2UnOiB7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUltcG9ydEluUGFja2FnZShpbXBvcnRSZXNvdXJjZTogSW1wb3J0UmVzb3VyY2VQYXRoUmVsYXRpdmVJblBhY2thZ2UsIGRlcHRoOiBSZWN1cnNpb25EZXB0aCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcInJlc29sdmVJbXBvcnRJblBhY2thZ2VcIiwgaW1wb3J0UmVzb3VyY2UsIGRlcHRoKTtcblxuICAgICAgICBjb25zdCBjb250ZW50cyA9IGF3YWl0IHRoaXMubG9hZFNvdXJjZUZpbGVDb250ZW50cyhpbXBvcnRSZXNvdXJjZSk7XG5cbiAgICAgICAgaWYgKGNvbnRlbnRzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHNvdXJjZSwgYXQgfSA9IGNvbnRlbnRzO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVNb2RlbChcbiAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5tb25hY28uVXJpLnBhcnNlKHRoaXMub3B0aW9ucy5maWxlUm9vdFBhdGggKyBwYXRoLmpvaW4oYG5vZGVfbW9kdWxlcy8ke2ltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lfWAsIGF0KSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVzb2x2ZUltcG9ydHNJbkZpbGUoXG4gICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogJ3JlbGF0aXZlLWluLXBhY2thZ2UnLFxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZTogaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZVBhdGg6IHBhdGguZGlybmFtZShhdCksXG4gICAgICAgICAgICAgICAgICAgIGltcG9ydFBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVwdGhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlc29sdmVJbXBvcnRGcm9tUGFja2FnZVJvb3QoXG4gICAgICAgIGltcG9ydFJlc291cmNlOiBJbXBvcnRSZXNvdXJjZVBhdGhQYWNrYWdlXG4gICAgKTogUHJvbWlzZTxJbXBvcnRSZXNvdXJjZVBhdGhSZWxhdGl2ZUluUGFja2FnZSB8IHZvaWQ+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJyZXNvbHZlSW1wb3J0RnJvbVBhY2thZ2VSb290XCIsIGltcG9ydFJlc291cmNlKTtcblxuICAgICAgICBjb25zdCBmYWlsZWRQcm9ncmVzc1VwZGF0ZSA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdMb29rZWRVcFBhY2thZ2UnLFxuICAgICAgICAgICAgcGFja2FnZTogaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUsXG4gICAgICAgICAgICBkZWZpbml0ZWx5VHlwZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIH0gYXMgY29uc3Q7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5vbmx5U3BlY2lmaWVkUGFja2FnZXMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52ZXJzaW9ucz8uW2ltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lXSAmJiAhdGhpcy52ZXJzaW9ucz8uWydAdHlwZXMvJyArIGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lXSkge1xuICAgICAgICAgICAgICAgIGludm9rZVVwZGF0ZShmYWlsZWRQcm9ncmVzc1VwZGF0ZSwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRvZXNQa2dKc29uSGFzU3VicGF0aCA9IGltcG9ydFJlc291cmNlLmltcG9ydFBhdGg/Lmxlbmd0aCA/PyAwID4gMDtcbiAgICAgICAgbGV0IHBrZ0pzb25TdWJwYXRoID0gZG9lc1BrZ0pzb25IYXNTdWJwYXRoID8gYC8ke2ltcG9ydFJlc291cmNlLmltcG9ydFBhdGh9YCA6ICcnO1xuICAgICAgICBsZXQgcGtnSnNvbiA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhY2thZ2VKc29uKFxuICAgICAgICAgICAgaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUsXG4gICAgICAgICAgICB0aGlzLnZlcnNpb25zPy5baW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWVdLFxuICAgICAgICAgICAgZG9lc1BrZ0pzb25IYXNTdWJwYXRoID8gaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aCA6IHVuZGVmaW5lZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghcGtnSnNvbiAmJiBkb2VzUGtnSnNvbkhhc1N1YnBhdGgpIHtcbiAgICAgICAgICAgIHBrZ0pzb24gPSBhd2FpdCB0aGlzLnJlc29sdmVQYWNrYWdlSnNvbihpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZSwgdGhpcy52ZXJzaW9ucz8uW2ltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lXSk7XG4gICAgICAgICAgICBwa2dKc29uU3VicGF0aCA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwa2dKc29uKSByZXR1cm4gaW52b2tlVXBkYXRlKGZhaWxlZFByb2dyZXNzVXBkYXRlLCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UocGtnSnNvbik7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJwYWNrYWdlIG1ldGFcIiwgcGtnKTtcblxuICAgICAgICBpZiAocGtnLnR5cGluZ3MgfHwgcGtnLnR5cGVzKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBpbmdzID0gcGtnLnR5cGluZ3MgfHwgcGtnLnR5cGVzO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVNb2RlbChcbiAgICAgICAgICAgICAgICBwa2dKc29uLFxuICAgICAgICAgICAgICAgIHRoaXMubW9uYWNvLlVyaS5wYXJzZShcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLmZpbGVSb290UGF0aH1ub2RlX21vZHVsZXMvJHtpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZX0ke3BrZ0pzb25TdWJwYXRofS9wYWNrYWdlLmpzb25gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaW52b2tlVXBkYXRlKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0xvb2tlZFVwUGFja2FnZScsXG4gICAgICAgICAgICAgICAgICAgIHBhY2thZ2U6IGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZWZpbml0ZWx5VHlwZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZXRWZXJzaW9uKGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lLCBwa2cudmVyc2lvbik7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2luZDogJ3JlbGF0aXZlLWluLXBhY2thZ2UnLFxuICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZSxcbiAgICAgICAgICAgICAgICBzb3VyY2VQYXRoOiAnJyxcbiAgICAgICAgICAgICAgICBpbXBvcnRQYXRoOiBwYXRoLmpvaW4oaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aCA/PyAnJywgdHlwaW5ncy5zdGFydHNXaXRoKCcuLycpID8gdHlwaW5ncy5zbGljZSgyKSA6IHR5cGluZ3MpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcblxuICAgICAgICAgICAgY29uc3QgdHlwaW5nUGFja2FnZU5hbWUgPSBgQHR5cGVzLyR7XG4gICAgICAgICAgICAgICAgaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUuc3RhcnRzV2l0aCgnQCcpXG4gICAgICAgICAgICAgICAgICAgID8gaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUuc2xpY2UoMSkucmVwbGFjZSgvXFwvLywgJ19fJylcbiAgICAgICAgICAgICAgICAgICAgOiBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZVxuICAgICAgICAgICAgfWA7XG5cbiAgICAgICAgICAgIGNvbnN0IHBrZ0pzb25UeXBpbmdzID0gYXdhaXQgdGhpcy5yZXNvbHZlUGFja2FnZUpzb24odHlwaW5nUGFja2FnZU5hbWUsIHRoaXMudmVyc2lvbnM/Llt0eXBpbmdQYWNrYWdlTmFtZV0pO1xuXG4gICAgICAgICAgICBpZiAoIXBrZ0pzb25UeXBpbmdzKVxuICAgICAgICAgICAgICAgIHJldHVybiBpbnZva2VVcGRhdGUoZmFpbGVkUHJvZ3Jlc3NVcGRhdGUsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UocGtnSnNvblR5cGluZ3MpO1xuXG4gICAgICAgICAgICBpZiAoIXBrZy50eXBpbmdzICYmICFwa2cudHlwZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlczoge1xuICAgICAgICAgICAgICAgICAgICBmaWxlQ291bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJGaWxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNCaW5hcnk6IFwidHJ1ZVwiIHwgXCJmYWxzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICBzaGFzdW06IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgdG90YWxTaXplOiBudW1iZXJcbiAgICAgICAgICAgICAgICB9ID0gYXdhaXQgZmV0Y2goXCJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AZHQtZXNhL2R5bmF0cmFjZS1hcGktY2xpZW50L3YvMi4yLjYvaW5kZXhcIiwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiZ2V0XCJcbiAgICAgICAgICAgICAgICB9KS50aGVuKGUgPT4gZS5qc29uKCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwaW5nRmlsZXMgPSBPYmplY3QuZW50cmllcyhmaWxlcy5maWxlcykubWFwKChba2V5LCB2YWxdKSA9PiB2YWwpO1xuXG4gICAgICAgICAgICAgICAgaW52b2tlVXBkYXRlKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTG9va2VkVXBQYWNrYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2U6IHR5cGluZ1BhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGVseVR5cGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdicnV0ZWZvcmNlJyxcbiAgICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6IHR5cGluZ1BhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICB0eXBpbmdGaWxlcyxcbiAgICAgICAgICAgICAgICB9IGFzIGFueTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gaW52b2tlVXBkYXRlKGZhaWxlZFByb2dyZXNzVXBkYXRlLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0eXBpbmdzID0gcGtnLnR5cGluZ3MgfHwgcGtnLnR5cGVzO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVNb2RlbChcbiAgICAgICAgICAgICAgICBwa2dKc29uVHlwaW5ncyxcbiAgICAgICAgICAgICAgICB0aGlzLm1vbmFjby5VcmkucGFyc2UoYCR7dGhpcy5vcHRpb25zLmZpbGVSb290UGF0aH1ub2RlX21vZHVsZXMvJHt0eXBpbmdQYWNrYWdlTmFtZX0vcGFja2FnZS5qc29uYClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGludm9rZVVwZGF0ZShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdMb29rZWRVcFBhY2thZ2UnLFxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlOiB0eXBpbmdQYWNrYWdlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGVseVR5cGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZXRWZXJzaW9uKHR5cGluZ1BhY2thZ2VOYW1lLCBwa2cudmVyc2lvbik7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2luZDogJ3JlbGF0aXZlLWluLXBhY2thZ2UnLFxuICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiB0eXBpbmdQYWNrYWdlTmFtZSxcbiAgICAgICAgICAgICAgICBzb3VyY2VQYXRoOiAnJyxcbiAgICAgICAgICAgICAgICBpbXBvcnRQYXRoOiBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICAgIGltcG9ydFJlc291cmNlLmltcG9ydFBhdGggPz8gJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGluZ3Muc3RhcnRzV2l0aCgnLi8nKSA/IHR5cGluZ3Muc2xpY2UoMikgOiB0eXBpbmdzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRTb3VyY2VGaWxlQ29udGVudHMoXG4gICAgICAgIGltcG9ydFJlc291cmNlOiBJbXBvcnRSZXNvdXJjZVBhdGhSZWxhdGl2ZUluUGFja2FnZVxuICAgICk6IFByb21pc2U8eyBzb3VyY2U6IHN0cmluZzsgYXQ6IHN0cmluZyB9IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBwcm9ncmVzc1VwZGF0ZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZSxcbiAgICAgICAgICAgIGltcG9ydFJlc291cmNlLnNvdXJjZVBhdGgsXG4gICAgICAgICAgICBpbXBvcnRSZXNvdXJjZS5pbXBvcnRQYXRoXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZmFpbGVkUHJvZ3Jlc3NVcGRhdGUgPSB7XG4gICAgICAgICAgICB0eXBlOiAnTG9va2VkVXBUeXBlRmlsZScsXG4gICAgICAgICAgICBwYXRoOiBwcm9ncmVzc1VwZGF0ZVBhdGgsXG4gICAgICAgICAgICBkZWZpbml0ZWx5VHlwZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIH0gYXMgY29uc3Q7XG5cbiAgICAgICAgY29uc3QgcGtnTmFtZSA9IGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lO1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRWZXJzaW9uKGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lKTtcblxuICAgICAgICBsZXQgYXBwZW5kcyA9IFsnLmQudHMnLCAnL2luZGV4LmQudHMnLCAnLnRzJywgJy50c3gnLCAnL2luZGV4LnRzJywgJy9pbmRleC50c3gnXTtcblxuICAgICAgICBpZiAoYXBwZW5kcy5tYXAoYXBwZW5kID0+IGltcG9ydFJlc291cmNlLmltcG9ydFBhdGguZW5kc1dpdGgoYXBwZW5kKSkucmVkdWNlKChhLCBiKSA9PiBhIHx8IGIsIGZhbHNlKSkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgdGhpcy5yZXNvbHZlU291cmNlRmlsZShcbiAgICAgICAgICAgICAgICBwa2dOYW1lLFxuICAgICAgICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKGltcG9ydFJlc291cmNlLnNvdXJjZVBhdGgsIGltcG9ydFJlc291cmNlLmltcG9ydFBhdGgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZSwgYXQ6IHBhdGguam9pbihpbXBvcnRSZXNvdXJjZS5zb3VyY2VQYXRoLCBpbXBvcnRSZXNvdXJjZS5pbXBvcnRQYXRoKSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhcHBlbmQgb2YgYXBwZW5kcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGltcG9ydFJlc291cmNlLnNvdXJjZVBhdGgsIGltcG9ydFJlc291cmNlLmltcG9ydFBhdGgpICsgYXBwZW5kO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHRoaXMucmVzb2x2ZVNvdXJjZUZpbGUocGtnTmFtZSwgdmVyc2lvbiwgZnVsbFBhdGgpO1xuICAgICAgICAgICAgICAgIGludm9rZVVwZGF0ZShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0F0dGVtcHRlZExvb2tVcEZpbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHBrZ05hbWUsIGZ1bGxQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICEhc291cmNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVXBkYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdMb29rZWRVcFR5cGVGaWxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocGtnTmFtZSwgZnVsbFBhdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZSwgYXQ6IGZ1bGxQYXRoIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGtnSnNvbiA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhY2thZ2VKc29uKFxuICAgICAgICAgICAgcGtnTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgICBwYXRoLmpvaW4oaW1wb3J0UmVzb3VyY2Uuc291cmNlUGF0aCwgaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocGtnSnNvbikge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlcyB9ID0gSlNPTi5wYXJzZShwa2dKc29uKTtcbiAgICAgICAgICAgIGlmICh0eXBlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGltcG9ydFJlc291cmNlLnNvdXJjZVBhdGgsIGltcG9ydFJlc291cmNlLmltcG9ydFBhdGgsIHR5cGVzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCB0aGlzLnJlc29sdmVTb3VyY2VGaWxlKHBrZ05hbWUsIHZlcnNpb24sIGZ1bGxQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGludm9rZVVwZGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTG9va2VkVXBUeXBlRmlsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHBrZ05hbWUsIGZ1bGxQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBzb3VyY2UsIGF0OiBmdWxsUGF0aCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGludm9rZVVwZGF0ZShmYWlsZWRQcm9ncmVzc1VwZGF0ZSwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWZXJzaW9uKHBhY2thZ2VOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVyc2lvbnM/LltwYWNrYWdlTmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZlcnNpb25zKHZlcnNpb25zOiB7IFtwYWNrYWdlTmFtZTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICAgICAgdGhpcy52ZXJzaW9ucyA9IHZlcnNpb25zO1xuICAgICAgICB0aGlzLm9wdGlvbnMub25VcGRhdGVWZXJzaW9ucz8uKHZlcnNpb25zKTtcbiAgICAgICAgLy8gVE9ETyByZWxvYWQgcGFja2FnZXMgd2hvc2UgdmVyc2lvbiBoYXMgY2hhbmdlZFxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmVyc2lvbihwYWNrYWdlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRWZXJzaW9ucyh7XG4gICAgICAgICAgICAuLi50aGlzLnZlcnNpb25zLFxuICAgICAgICAgICAgW3BhY2thZ2VOYW1lXTogdmVyc2lvbixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNb2RlbChzb3VyY2U6IHN0cmluZywgdXJpOiBtb25hY28uVXJpKSB7XG4gICAgICAgIHVyaSA9IHVyaS53aXRoKHsgcGF0aDogdXJpLnBhdGgucmVwbGFjZSgnQHR5cGVzLycsICcnKSB9KTtcbiAgICAgICAgaWYgKCF0aGlzLm1vbmFjby5lZGl0b3IuZ2V0TW9kZWwodXJpKSkge1xuICAgICAgICAgICAgdGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHNvdXJjZSwgJ3R5cGVzY3JpcHQnLCB1cmkpO1xuICAgICAgICAgICAgdGhpcy5uZXdJbXBvcnRzUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNoSW1wb3J0UmVzb3VyY2VQYXRoKHA6IEltcG9ydFJlc291cmNlUGF0aCkge1xuICAgICAgICByZXR1cm4gaW1wb3J0UmVzb3VyY2VQYXRoVG9TdHJpbmcocCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNvbHZlUGFja2FnZUpzb24oXG4gICAgICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgICAgIHZlcnNpb24/OiBzdHJpbmcsXG4gICAgICAgIHN1YlBhdGg/OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuXG4gICAgICAgIGNvbnN0IHVyaSA9IHBhdGguam9pbihwYWNrYWdlTmFtZSArICh2ZXJzaW9uID8gYEAke3ZlcnNpb259YCA6ICcnKSwgc3ViUGF0aCA/PyAnJywgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgICBsZXQgaXNBdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgbGV0IGNvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodGhpcy5jYWNoZS5pc0ZpbGVBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy5jYWNoZS5pc0ZpbGVBdmFpbGFibGUodXJpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCB0aGlzLmNhY2hlLmdldEZpbGUodXJpKTtcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlID0gY29udGVudCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGVudCA/PyAoYXdhaXQgdGhpcy5jYWNoZS5nZXRGaWxlKHVyaSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJyZWN1cnNpbmcgcmVzb2x2ZVBhY2thZ2VKc29uXCIsIHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBzdWJQYXRoKVxuICAgICAgICAgICAgY29udGVudCA9IGF3YWl0IFVucGtnU291cmNlUmVzb2x2ZXIucmVzb2x2ZVBhY2thZ2VKc29uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBzdWJQYXRoKTtcbiAgICAgICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZS5zdG9yZUZpbGUodXJpLCBjb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNvbHZlU291cmNlRmlsZShcbiAgICAgICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBmaWxlUGF0aDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcblxuICAgICAgICBjb25zdCB1cmkgPSBwYXRoLmpvaW4ocGFja2FnZU5hbWUgKyAodmVyc2lvbiA/IGBAJHt2ZXJzaW9ufWAgOiAnJyksIGZpbGVQYXRoKTtcbiAgICAgICAgbGV0IGlzQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAgIGxldCBjb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FjaGUuaXNGaWxlQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMuY2FjaGUuaXNGaWxlQXZhaWxhYmxlKHVyaSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb250ZW50ID0gYXdhaXQgdGhpcy5jYWNoZS5nZXRGaWxlKHVyaSk7XG4gICAgICAgICAgICBpc0F2YWlsYWJsZSA9IGNvbnRlbnQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgaW52b2tlVXBkYXRlKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0xvYWRlZEZyb21DYWNoZScsXG4gICAgICAgICAgICAgICAgICAgIGltcG9ydFBhdGg6IHVyaSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50ID8/IChhd2FpdCB0aGlzLmNhY2hlLmdldEZpbGUodXJpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb250ZW50ID0gYXdhaXQgVW5wa2dTb3VyY2VSZXNvbHZlci5yZXNvbHZlU291cmNlRmlsZShwYWNrYWdlTmFtZSwgdmVyc2lvbiwgZmlsZVBhdGgpO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpbnZva2VVcGRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTdG9yZWRUb0NhY2hlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydFBhdGg6IHVyaSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLnN0b3JlRmlsZSh1cmksIGNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,112 @@
1
+ import { ImportResolver } from './import-resolver';
2
+ import * as path from 'path-browserify';
3
+ import { invokeUpdate } from './update-emitter';
4
+ import { RecursionDepth } from './recursion-depth';
5
+ import { DummySourceCache } from './dummy-source-cache';
6
+ // https://github.com/lukasbach/monaco-editor-auto-typings
7
+ export class MonacoAutoTypeImporter {
8
+ constructor(editor, options) {
9
+ this.editor = editor;
10
+ this.options = options;
11
+ this.disposables = [];
12
+ this.importResolver = new ImportResolver(options);
13
+ const changeModelDisposable = editor.onDidChangeModelContent(e => {
14
+ this.debouncedResolveContents();
15
+ });
16
+ this.disposables.push(changeModelDisposable);
17
+ this.resolveContents();
18
+ if (!options.dontAdaptEditorOptions) {
19
+ options.monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
20
+ ...options.monaco.languages.typescript.typescriptDefaults.getCompilerOptions(),
21
+ moduleResolution: options.monaco.languages.typescript.ModuleResolutionKind.NodeJs,
22
+ allowSyntheticDefaultImports: true,
23
+ rootDir: options.fileRootPath,
24
+ });
25
+ }
26
+ }
27
+ static async create(editor, options) {
28
+ if (options?.shareCache && options.sourceCache && !MonacoAutoTypeImporter.sharedCache) {
29
+ MonacoAutoTypeImporter.sharedCache = options.sourceCache;
30
+ }
31
+ const monacoInstance = options?.monaco ?? window['monaco'];
32
+ if (!monacoInstance) {
33
+ throw new Error('monacoInstance not found, you can specify the monaco instance via options.monaco');
34
+ }
35
+ return new MonacoAutoTypeImporter(editor, {
36
+ fileRootPath: 'inmemory://model/',
37
+ onlySpecifiedPackages: false,
38
+ preloadPackages: false,
39
+ shareCache: false,
40
+ dontAdaptEditorOptions: false,
41
+ dontRefreshModelValueAfterResolvement: false,
42
+ sourceCache: MonacoAutoTypeImporter.sharedCache ?? new DummySourceCache(),
43
+ debounceDuration: 4000,
44
+ fileRecursionDepth: 10,
45
+ packageRecursionDepth: 3,
46
+ ...options,
47
+ monaco: monacoInstance,
48
+ });
49
+ }
50
+ dispose() {
51
+ this.disposables.forEach(d => d.dispose());
52
+ }
53
+ setVersions(versions) {
54
+ this.importResolver.setVersions(versions);
55
+ this.options.versions = versions;
56
+ }
57
+ async clearCache() {
58
+ await this.options.sourceCache.clear();
59
+ }
60
+ debouncedResolveContents() {
61
+ if (this.isResolving) {
62
+ return;
63
+ }
64
+ invokeUpdate({ type: 'CodeChanged' }, this.options);
65
+ if (this.options.debounceDuration <= 0) {
66
+ this.resolveContents();
67
+ }
68
+ else {
69
+ if (this.debounceTimer !== undefined) {
70
+ clearTimeout(this.debounceTimer);
71
+ }
72
+ this.debounceTimer = setTimeout(async () => {
73
+ await this.resolveContents();
74
+ this.debounceTimer = undefined;
75
+ }, this.options.debounceDuration);
76
+ }
77
+ }
78
+ async resolveContents() {
79
+ this.isResolving = true;
80
+ invokeUpdate({ type: 'ResolveNewImports' }, this.options);
81
+ const model = this.editor.getModel();
82
+ // This can happen when the editor is disposed before all typings
83
+ // are installed.
84
+ if (!model) {
85
+ throw Error('No model');
86
+ }
87
+ const content = model.getLinesContent();
88
+ try {
89
+ await this.importResolver.resolveImportsInFile(content.join('\n'), path.dirname(model.uri.toString()), new RecursionDepth(this.options));
90
+ }
91
+ catch (e) {
92
+ if (this.options.onError) {
93
+ this.options.onError(e.message ?? e);
94
+ }
95
+ else {
96
+ throw e;
97
+ }
98
+ }
99
+ if (this.importResolver.wereNewImportsResolved()) {
100
+ if (!this.options.dontRefreshModelValueAfterResolvement) {
101
+ const currentPosition = this.editor.getPosition();
102
+ model.setValue(model.getValue());
103
+ if (currentPosition) {
104
+ this.editor.setPosition(currentPosition);
105
+ }
106
+ }
107
+ this.importResolver.resetNewImportsResolved();
108
+ }
109
+ this.isResolving = false;
110
+ }
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9tb25hY28tZWRpdG9yL3RzLXR5cGUtcmVzb2x2ZXIvbWFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxLQUFLLElBQUksTUFBTSxpQkFBaUIsQ0FBQztBQUV4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXhELDBEQUEwRDtBQUMxRCxNQUFNLE9BQU8sc0JBQXNCO0lBTy9CLFlBQTJCLE1BQWMsRUFBVSxPQUFnQjtRQUF4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUYzRCxnQkFBVyxHQUF5QixFQUFFLENBQUM7UUFHM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3RFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FB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S0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDakMsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbXBvcnRSZXNvbHZlciB9IGZyb20gJy4vaW1wb3J0LXJlc29sdmVyJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aC1icm93c2VyaWZ5JztcbmltcG9ydCB0eXBlICogYXMgbW9uYWNvIGZyb20gJ21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHsgaW52b2tlVXBkYXRlIH0gZnJvbSAnLi91cGRhdGUtZW1pdHRlcic7XG5pbXBvcnQgeyBSZWN1cnNpb25EZXB0aCB9IGZyb20gJy4vcmVjdXJzaW9uLWRlcHRoJztcbmltcG9ydCB7IE9wdGlvbnMsIFNvdXJjZUNhY2hlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBEdW1teVNvdXJjZUNhY2hlIH0gZnJvbSAnLi9kdW1teS1zb3VyY2UtY2FjaGUnO1xuXG50eXBlIEVkaXRvciA9IG1vbmFjby5lZGl0b3IuSUNvZGVFZGl0b3IgfCBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcjtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2x1a2FzYmFjaC9tb25hY28tZWRpdG9yLWF1dG8tdHlwaW5nc1xuZXhwb3J0IGNsYXNzIE1vbmFjb0F1dG9UeXBlSW1wb3J0ZXIgaW1wbGVtZW50cyBtb25hY28uSURpc3Bvc2FibGUge1xuICAgIHByaXZhdGUgc3RhdGljIHNoYXJlZENhY2hlPzogU291cmNlQ2FjaGU7XG4gICAgcHJpdmF0ZSBpbXBvcnRSZXNvbHZlcjogSW1wb3J0UmVzb2x2ZXI7XG4gICAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVyPzogbnVtYmVyO1xuICAgIHByaXZhdGUgaXNSZXNvbHZpbmc/OiBib29sZWFuO1xuICAgIHByaXZhdGUgZGlzcG9zYWJsZXM6IG1vbmFjby5JRGlzcG9zYWJsZVtdID0gW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3I6IEVkaXRvciwgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuaW1wb3J0UmVzb2x2ZXIgPSBuZXcgSW1wb3J0UmVzb2x2ZXIob3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgY2hhbmdlTW9kZWxEaXNwb3NhYmxlID0gZWRpdG9yLm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWJvdW5jZWRSZXNvbHZlQ29udGVudHMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzcG9zYWJsZXMucHVzaChjaGFuZ2VNb2RlbERpc3Bvc2FibGUpO1xuICAgICAgICB0aGlzLnJlc29sdmVDb250ZW50cygpO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5kb250QWRhcHRFZGl0b3JPcHRpb25zKSB7XG4gICAgICAgICAgICBvcHRpb25zLm1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC50eXBlc2NyaXB0RGVmYXVsdHMuc2V0Q29tcGlsZXJPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLm1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC50eXBlc2NyaXB0RGVmYXVsdHMuZ2V0Q29tcGlsZXJPcHRpb25zKCksXG4gICAgICAgICAgICAgICAgbW9kdWxlUmVzb2x1dGlvbjogb3B0aW9ucy5tb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzLFxuICAgICAgICAgICAgICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgICAgICAgICAgICAgcm9vdERpcjogb3B0aW9ucy5maWxlUm9vdFBhdGgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgY3JlYXRlKGVkaXRvcjogRWRpdG9yLCBvcHRpb25zPzogUGFydGlhbDxPcHRpb25zPik6IFByb21pc2U8TW9uYWNvQXV0b1R5cGVJbXBvcnRlcj4ge1xuICAgICAgICBpZiAob3B0aW9ucz8uc2hhcmVDYWNoZSAmJiBvcHRpb25zLnNvdXJjZUNhY2hlICYmICFNb25hY29BdXRvVHlwZUltcG9ydGVyLnNoYXJlZENhY2hlKSB7XG4gICAgICAgICAgICBNb25hY29BdXRvVHlwZUltcG9ydGVyLnNoYXJlZENhY2hlID0gb3B0aW9ucy5zb3VyY2VDYWNoZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vbmFjb0luc3RhbmNlID0gb3B0aW9ucz8ubW9uYWNvID8/IHdpbmRvd1snbW9uYWNvJ107XG5cbiAgICAgICAgaWYgKCFtb25hY29JbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtb25hY29JbnN0YW5jZSBub3QgZm91bmQsIHlvdSBjYW4gc3BlY2lmeSB0aGUgbW9uYWNvIGluc3RhbmNlIHZpYSBvcHRpb25zLm1vbmFjbycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBNb25hY29BdXRvVHlwZUltcG9ydGVyKGVkaXRvciwge1xuICAgICAgICAgICAgZmlsZVJvb3RQYXRoOiAnaW5tZW1vcnk6Ly9tb2RlbC8nLFxuICAgICAgICAgICAgb25seVNwZWNpZmllZFBhY2thZ2VzOiBmYWxzZSxcbiAgICAgICAgICAgIHByZWxvYWRQYWNrYWdlczogZmFsc2UsXG4gICAgICAgICAgICBzaGFyZUNhY2hlOiBmYWxzZSxcbiAgICAgICAgICAgIGRvbnRBZGFwdEVkaXRvck9wdGlvbnM6IGZhbHNlLFxuICAgICAgICAgICAgZG9udFJlZnJlc2hNb2RlbFZhbHVlQWZ0ZXJSZXNvbHZlbWVudDogZmFsc2UsXG4gICAgICAgICAgICBzb3VyY2VDYWNoZTogTW9uYWNvQXV0b1R5cGVJbXBvcnRlci5zaGFyZWRDYWNoZSA/PyBuZXcgRHVtbXlTb3VyY2VDYWNoZSgpLFxuICAgICAgICAgICAgZGVib3VuY2VEdXJhdGlvbjogNDAwMCxcbiAgICAgICAgICAgIGZpbGVSZWN1cnNpb25EZXB0aDogMTAsXG4gICAgICAgICAgICBwYWNrYWdlUmVjdXJzaW9uRGVwdGg6IDMsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgbW9uYWNvOiBtb25hY29JbnN0YW5jZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc3Bvc2UoKSB7XG4gICAgICAgIHRoaXMuZGlzcG9zYWJsZXMuZm9yRWFjaChkID0+IGQuZGlzcG9zZSgpKVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRWZXJzaW9ucyh2ZXJzaW9uczogeyBbcGFja2FnZU5hbWU6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgICAgIHRoaXMuaW1wb3J0UmVzb2x2ZXIuc2V0VmVyc2lvbnModmVyc2lvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMudmVyc2lvbnMgPSB2ZXJzaW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJDYWNoZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vcHRpb25zLnNvdXJjZUNhY2hlLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWJvdW5jZWRSZXNvbHZlQ29udGVudHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVzb2x2aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpbnZva2VVcGRhdGUoeyB0eXBlOiAnQ29kZUNoYW5nZWQnIH0sIHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJvdW5jZUR1cmF0aW9uIDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUNvbnRlbnRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWJvdW5jZVRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVib3VuY2VUaW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVzb2x2ZUNvbnRlbnRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWJvdW5jZVRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSwgdGhpcy5vcHRpb25zLmRlYm91bmNlRHVyYXRpb24pIGFzIGFueTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUNvbnRlbnRzKCkge1xuICAgICAgICB0aGlzLmlzUmVzb2x2aW5nID0gdHJ1ZTtcbiAgICAgICAgaW52b2tlVXBkYXRlKHsgdHlwZTogJ1Jlc29sdmVOZXdJbXBvcnRzJyB9LCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IG1vZGVsID0gdGhpcy5lZGl0b3IuZ2V0TW9kZWwoKTtcbiAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGVkaXRvciBpcyBkaXNwb3NlZCBiZWZvcmUgYWxsIHR5cGluZ3NcbiAgICAgICAgLy8gYXJlIGluc3RhbGxlZC5cbiAgICAgICAgaWYgKCFtb2RlbCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ05vIG1vZGVsJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250ZW50ID0gbW9kZWwuZ2V0TGluZXNDb250ZW50KCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW1wb3J0UmVzb2x2ZXIucmVzb2x2ZUltcG9ydHNJbkZpbGUoXG4gICAgICAgICAgICAgICAgY29udGVudC5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgICBwYXRoLmRpcm5hbWUobW9kZWwudXJpLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgICAgIG5ldyBSZWN1cnNpb25EZXB0aCh0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMub25FcnJvcigoZSBhcyBFcnJvcikubWVzc2FnZSA/PyBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbXBvcnRSZXNvbHZlci53ZXJlTmV3SW1wb3J0c1Jlc29sdmVkKCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRvbnRSZWZyZXNoTW9kZWxWYWx1ZUFmdGVyUmVzb2x2ZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLmVkaXRvci5nZXRQb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIG1vZGVsLnNldFZhbHVlKG1vZGVsLmdldFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3Iuc2V0UG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmltcG9ydFJlc29sdmVyLnJlc2V0TmV3SW1wb3J0c1Jlc29sdmVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzUmVzb2x2aW5nID0gZmFsc2U7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ export class RecursionDepth {
2
+ constructor(options, fileRecursionDepth = 0, packageRecursionDepth = 0) {
3
+ this.options = options;
4
+ this.fileRecursionDepth = fileRecursionDepth;
5
+ this.packageRecursionDepth = packageRecursionDepth;
6
+ }
7
+ nextPackage() {
8
+ return new RecursionDepth(this.options, this.fileRecursionDepth, this.packageRecursionDepth + 1);
9
+ }
10
+ nextFile() {
11
+ return new RecursionDepth(this.options, this.fileRecursionDepth + 1, this.packageRecursionDepth);
12
+ }
13
+ same() {
14
+ return new RecursionDepth(this.options, this.fileRecursionDepth, this.packageRecursionDepth);
15
+ }
16
+ shouldStop() {
17
+ return ((this.options.fileRecursionDepth > 0 && this.fileRecursionDepth >= this.options.fileRecursionDepth) ||
18
+ (this.options.packageRecursionDepth > 0 && this.packageRecursionDepth >= this.options.packageRecursionDepth));
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdXJzaW9uLWRlcHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL21vbmFjby1lZGl0b3IvdHMtdHlwZS1yZXNvbHZlci9yZWN1cnNpb24tZGVwdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFBb0IsT0FBZ0IsRUFBVSxxQkFBcUIsQ0FBQyxFQUFVLHdCQUF3QixDQUFDO1FBQW5GLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQUk7UUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQUk7SUFBRyxDQUFDO0lBRXBHLFdBQVc7UUFDZCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRU0sUUFBUTtRQUNYLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTSxJQUFJO1FBQ1AsT0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sVUFBVTtRQUNiLE9BQU8sQ0FDSCxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1lBQ25HLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FDL0csQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFJlY3Vyc2lvbkRlcHRoIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnMsIHByaXZhdGUgZmlsZVJlY3Vyc2lvbkRlcHRoID0gMCwgcHJpdmF0ZSBwYWNrYWdlUmVjdXJzaW9uRGVwdGggPSAwKSB7fVxuXG4gICAgcHVibGljIG5leHRQYWNrYWdlKCkge1xuICAgICAgICByZXR1cm4gbmV3IFJlY3Vyc2lvbkRlcHRoKHRoaXMub3B0aW9ucywgdGhpcy5maWxlUmVjdXJzaW9uRGVwdGgsIHRoaXMucGFja2FnZVJlY3Vyc2lvbkRlcHRoICsgMSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRGaWxlKCkge1xuICAgICAgICByZXR1cm4gbmV3IFJlY3Vyc2lvbkRlcHRoKHRoaXMub3B0aW9ucywgdGhpcy5maWxlUmVjdXJzaW9uRGVwdGggKyAxLCB0aGlzLnBhY2thZ2VSZWN1cnNpb25EZXB0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNhbWUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVjdXJzaW9uRGVwdGgodGhpcy5vcHRpb25zLCB0aGlzLmZpbGVSZWN1cnNpb25EZXB0aCwgdGhpcy5wYWNrYWdlUmVjdXJzaW9uRGVwdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG91bGRTdG9wKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMub3B0aW9ucy5maWxlUmVjdXJzaW9uRGVwdGggPiAwICYmIHRoaXMuZmlsZVJlY3Vyc2lvbkRlcHRoID49IHRoaXMub3B0aW9ucy5maWxlUmVjdXJzaW9uRGVwdGgpIHx8XG4gICAgICAgICAgICAodGhpcy5vcHRpb25zLnBhY2thZ2VSZWN1cnNpb25EZXB0aCA+IDAgJiYgdGhpcy5wYWNrYWdlUmVjdXJzaW9uRGVwdGggPj0gdGhpcy5vcHRpb25zLnBhY2thZ2VSZWN1cnNpb25EZXB0aClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import * as path from 'path-browserify';
2
+ export const importResourcePathToString = (p) => {
3
+ switch (p.kind) {
4
+ case 'package':
5
+ return path.join(p.packageName, p.importPath ?? '', 'package.json');
6
+ case 'relative':
7
+ return path.join(p.sourcePath, p.importPath);
8
+ case 'relative-in-package':
9
+ return path.join(p.packageName, p.sourcePath, p.importPath);
10
+ case 'bruteforce':
11
+ throw new Error("Not Implemented");
12
+ }
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vbW9uYWNvLWVkaXRvci90cy10eXBlLXJlc29sdmVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0saUJBQWlCLENBQUM7QUFrTnhDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBcUIsRUFBRSxFQUFFO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxTQUFTO1lBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDeEUsS0FBSyxVQUFVO1lBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELEtBQUsscUJBQXFCO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLEtBQUssWUFBWTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgtYnJvd3NlcmlmeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlQ2FjaGUge1xuICAgIGlzRmlsZUF2YWlsYWJsZT86ICh1cmk6IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgICBzdG9yZUZpbGU6ICh1cmk6IHN0cmluZywgY29udGVudDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIGdldEZpbGU6ICh1cmk6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICAgIGNsZWFyOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBQcm9ncmVzc1VwZGF0ZSA9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdDb2RlQ2hhbmdlZCc7XG4gICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnUmVzb2x2ZU5ld0ltcG9ydHMnO1xuICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ0xvb2tlZFVwVHlwZUZpbGUnO1xuICAgICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnQXR0ZW1wdGVkTG9va1VwRmlsZSc7XG4gICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdMb29rZWRVcFBhY2thZ2UnO1xuICAgICAgICBwYWNrYWdlOiBzdHJpbmc7XG4gICAgICAgIGRlZmluaXRlbHlUeXBlZDogYm9vbGVhbjtcbiAgICAgICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdMb2FkZWRGcm9tQ2FjaGUnO1xuICAgICAgICBpbXBvcnRQYXRoOiBzdHJpbmc7XG4gICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnU3RvcmVkVG9DYWNoZSc7XG4gICAgICAgIGltcG9ydFBhdGg6IHN0cmluZztcbiAgICB9O1xuXG5cblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBTaGFyZSBzb3VyY2UgY2FjaGUgYmV0d2VlbiBtdWx0aXBsZSBlZGl0b3IgaW5zdGFuY2VzIGJ5IHN0b3JpbmdcbiAgICAgKiB0aGUgY2FjaGUgaW4gYSBzdGF0aWMgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBzaGFyZUNhY2hlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogT25seSB1c2UgcGFja2FnZXMgc3BlY2lmaWVkIGluIHRoZSBgdmVyc2lvbnNgIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICovXG4gICAgb25seVNwZWNpZmllZFBhY2thZ2VzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTG9hZCB0eXBpbmdzIGZyb20gcHJlc3BlY2lmaWVkIHZlcnNpb25zIHdoZW4gaW5pdGlhbGl6aW5nLiBWZXJzaW9uc1xuICAgICAqIG5lZWQgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBgYHZlcnNpb25zYGAgb3B0aW9uLlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICovXG4gICAgcHJlbG9hZFBhY2thZ2VzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBjb21waWxlciBvcHRpb25zIHRvIGRlZmF1bHRzIHN1aXRhYmxlIGZvciBhdXRvLWxvYWRlZFxuICAgICAqIGRlY2xhcmF0aW9ucywgc3BlY2lmaWNhbGx5IGJ5IHNldHRpbmcgYGBtb2R1bGVSZXNvbHV0aW9uYGAgdG9cbiAgICAgKiBgYE5vZGVKc2BgIGFuZCBgYGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHNgYCB0byB0cnVlLlxuICAgICAqIE90aGVyIG9wdGlvbnMgYXJlIG5vdCBjaGFuZ2VkLiBTZXQgdGhpcyBwcm9wZXJ0eSB0byB0cnVlIHRvXG4gICAgICogZGlzYWJsZSB0aGlzIGJlaGF2aW91ci5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAqL1xuICAgIGRvbnRBZGFwdEVkaXRvck9wdGlvbnM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBZnRlciB0eXBpbmdzIHdlcmUgcmVzb2x2ZWQgYW5kIGluamVjdGVkIGludG8gbW9uYWNvLCBhdXRvLXR5cGluZ3NcbiAgICAgKiB1cGRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBtb2RlbCB0byB0cmlnZ2VyIGEgcmVmcmVzaCBpblxuICAgICAqIG1vbmFjbydzIHR5cGluZyBsb2dpYywgc28gdGhhdCBpdCB1c2VzIHRoZSBpbmplY3RlZCB0eXBpbmdzLlxuICAgICAqL1xuICAgIGRvbnRSZWZyZXNoTW9kZWxWYWx1ZUFmdGVyUmVzb2x2ZW1lbnQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBQcmVzcGVjaWZpZWQgcGFja2FnZSB2ZXJzaW9ucy4gSWYgYSBwYWNrYWdlIGlzIGxvYWRlZCB3aG9zZVxuICAgICAqIG5hbWUgaXMgc3BlY2lmaWVkIGluIHRoaXMgb2JqZWN0LCBpdCB3aWxsIGxvYWQgd2l0aCB0aGUgZXhhY3RcbiAgICAgKiB2ZXJzaW9uIHNwZWNpZmllZCBpbiB0aGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogRXhhbXBsZTpcbiAgICAgKlxuICAgICAqIGBgYGpzb25cbiAgICAgKiB7XG4gICAgICogICBcIkB0eXBlcy9yZWFjdFwiOiBcIjE3LjAuMFwiLFxuICAgICAqICAgXCJjc3N0eXBlXCI6IFwiMy4wLjVcIlxuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFNldHRpbmcgdGhlIG9wdGlvbiBgYG9ubHlTcGVjaWZpZWRQYWNrYWdlc2BgIHRvIHRydWUgbWFrZXMgdGhpc1xuICAgICAqIHByb3BlcnR5IGFjdCBhcyBhIHdoaXRlbGlzdCBmb3IgcGFja2FnZXMuXG4gICAgICpcbiAgICAgKiBTZXR0aW5nIHRoZSBvcHRpb24gYGBwcmVsb2FkUGFja2FnZXNgYCBtYWtlcyB0aGUgcGFja2FnZXMgc3BlY2lmaWVkXG4gICAgICogaW4gdGhpcyBwcm9wZXJ0eSBsb2FkIGRpcmVjdGx5IGFmdGVyIGluaXRpYWxpemluZyB0aGUgYXV0by1sb2FkZXIuXG4gICAgICovXG4gICAgdmVyc2lvbnM/OiB7IFtwYWNrYWdlTmFtZTogc3RyaW5nXTogc3RyaW5nOyB9O1xuXG4gICAgLyoqXG4gICAgICogSWYgYSBuZXcgcGFja2FnZSB3YXMgbG9hZGVkLCBpdHMgbmFtZSBhbmQgdmVyc2lvbiBpcyBhZGRlZCB0byB0aGVcbiAgICAgKiB2ZXJzaW9uIG9iamVjdCwgYW5kIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIHRoZSB1cGRhdGVkIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gdmVyc2lvbnMgdXBkYXRlZCB2ZXJzaW9ucyBvYmplY3QuXG4gICAgICovXG4gICAgb25VcGRhdGVWZXJzaW9ucz86ICh2ZXJzaW9uczogeyBbcGFja2FnZU5hbWU6IHN0cmluZ106IHN0cmluZzsgfSkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFN1cHBseSBhIGNhY2hlIHdoZXJlIGRlY2xhcmF0aW9uIGZpbGVzIGFuZCBwYWNrYWdlLmpzb24gZmlsZXMgYXJlXG4gICAgICogY2FjaGVkIHRvLiBTdXBwbHkgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIExvY2FsU3RvcmFnZUNhY2hlfSB0byBjYWNoZVxuICAgICAqIGZpbGVzIHRvIGxvY2FsU3RvcmFnZS5cbiAgICAgKi9cbiAgICBzb3VyY2VDYWNoZTogU291cmNlQ2FjaGU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcm9vdCBkaXJlY3Rvcnkgd2hlcmUgeW91ciBlZGl0ZWQgZmlsZXMgYXJlLiBNdXN0IGVuZCB3aXRoXG4gICAgICogYSBzbGFzaC4gVGhlIGRlZmF1bHQgaXMgc3VpdGFibGUgdW5sZXNzIHlvdSBjaGFuZ2UgdGhlIGRlZmF1bHRcbiAgICAgKiBVUkkgb2YgZmlsZXMgbG9hZGVkIGluIHRoZSBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBcImlubWVtb3J5Oi8vbW9kZWwvXCJcbiAgICAgKi9cbiAgICBmaWxlUm9vdFBhdGg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlYm91bmNlcyBjb2RlIHJlYW5hbHl6aW5nIGFmdGVyIHVzZXIgaGFzIGNoYW5nZWQgdGhlIGVkaXRvciBjb250ZW50c1xuICAgICAqIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBTZXQgdG8gemVybyB0byBkaXNhYmxlLiBWYWx1ZSBwcm92aWRlZCBpblxuICAgICAqIG1pbGxpc2Vjb25kcy5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIDQwMDAsIGkuZS4gNCBzZWNvbmRzLlxuICAgICAqL1xuICAgIGRlYm91bmNlRHVyYXRpb246IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIE1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGZvciByZWN1cnNpbmcgcGFja2FnZXMuIERldGVybWluZXMgaG93IG1hbnlcbiAgICAgKiBuZXN0ZWQgcGFja2FnZSBkZWNsYXJhdGlvbnMgYXJlIGxvYWRlZC4gRm9yIGV4YW1wbGUsIGlmIGBgcGFja2FnZVJlY3Vyc2lvbkRlcHRoYGBcbiAgICAgKiBoYXMgdGhlIHZhbHVlIDIsIHRoZSBjb2RlIGluIHRoZSBtb25hY28gZWRpdG9yIHJlZmVyZW5jZXMgcGFja2FnZXMgYGBBMWBgLCBgYEEyYGBcbiAgICAgKiBhbmQgYGBBM2BgLCBwYWNrYWdlIGBgQTFgYCByZWZlcmVuY2VzIHBhY2thZ2UgYGBCMWBgIGFuZCBgYEIxYGAgcmVmZXJlbmNlcyBgYEMxYGAsXG4gICAgICogdGhlbiBwYWNrYWdlcyBgYEExYGAsIGBgQTJgYCwgYGBBM2BgIGFuZCBgYEIxYGAgYXJlIGxvYWRlZC4gU2V0IHRvIHplcm8gdG9cbiAgICAgKiBkaXNhYmxlLlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gMy5cbiAgICAgKi9cbiAgICBwYWNrYWdlUmVjdXJzaW9uRGVwdGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIE1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGZvciByZWN1cnNpbmcgZmlsZXMuIERldGVybWluZXMgaG93IG1hbnlcbiAgICAgKiBuZXN0ZWQgZmlsZSBkZWNsYXJhdGlvbnMgYXJlIGxvYWRlZC4gVGhlIHNhbWUgYXMgYGBwYWNrYWdlUmVjdXJzaW9uRGVwdGhgYCxcbiAgICAgKiBidXQgZm9yIGluZGl2aWR1YWwgZmlsZXMuIFNldCB0byB6ZXJvIHRvIGRpc2FibGUuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byAxMC5cbiAgICAgKi9cbiAgICBmaWxlUmVjdXJzaW9uRGVwdGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCBhZnRlciBwcm9ncmVzcyB1cGRhdGVzIGxpa2UgbG9hZGVkIGRlY2xhcmF0aW9ucyBvciBldmVudHMuXG4gICAgICogQHBhcmFtIHVwZGF0ZSBkZXRhaWxlZCBldmVudCBvYmplY3QgY29udGFpbmluZyB1cGRhdGUgaW5mb3MuXG4gICAgICogQHBhcmFtIHRleHR1YWwgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1cGRhdGUgZm9yIGRlYnVnZ2luZy5cbiAgICAgKi9cbiAgICBvblVwZGF0ZT86ICh1cGRhdGU6IFByb2dyZXNzVXBkYXRlLCB0ZXh0dWFsOiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgaWYgZXJyb3JzIG9jY3VyLlxuICAgICAqIEBwYXJhbSBlcnJvciBhIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yLlxuICAgICAqL1xuICAgIG9uRXJyb3I/OiAoZXJyb3I6IHN0cmluZykgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBpbnN0YW5jZSBvZiBtb25hY28gZWRpdG9yXG4gICAgICovXG4gICAgbW9uYWNvOiB0eXBlb2YgbW9uYWNvO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UmVzb3VyY2VQYXRoUGFja2FnZSB7XG4gICAga2luZDogJ3BhY2thZ2UnO1xuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gICAgaW1wb3J0UGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRSZXNvdXJjZVBhdGhSZWxhdGl2ZSB7XG4gICAga2luZDogJ3JlbGF0aXZlJztcbiAgICBpbXBvcnRQYXRoOiBzdHJpbmc7XG4gICAgc291cmNlUGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFJlc291cmNlUGF0aFJlbGF0aXZlSW5QYWNrYWdlIHtcbiAgICBraW5kOiAncmVsYXRpdmUtaW4tcGFja2FnZSc7XG4gICAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICBpbXBvcnRQYXRoOiBzdHJpbmc7XG4gICAgc291cmNlUGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFJlc291cmNlQnJ1dGVGb3JjZSB7XG4gICAga2luZDogJ2JydXRlZm9yY2UnO1xuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gICAgdHlwaW5nRmlsZXM6IGFueVtdO1xufVxuXG5leHBvcnQgdHlwZSBJbXBvcnRSZXNvdXJjZVBhdGggPVxuICAgIHwgSW1wb3J0UmVzb3VyY2VQYXRoUGFja2FnZVxuICAgIHwgSW1wb3J0UmVzb3VyY2VQYXRoUmVsYXRpdmVcbiAgICB8IEltcG9ydFJlc291cmNlUGF0aFJlbGF0aXZlSW5QYWNrYWdlXG4gICAgfCBJbXBvcnRSZXNvdXJjZUJydXRlRm9yY2U7XG5cbmV4cG9ydCBjb25zdCBpbXBvcnRSZXNvdXJjZVBhdGhUb1N0cmluZyA9IChwOiBJbXBvcnRSZXNvdXJjZVBhdGgpID0+IHtcbiAgICBzd2l0Y2ggKHAua2luZCkge1xuICAgICAgICBjYXNlICdwYWNrYWdlJzpcbiAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4ocC5wYWNrYWdlTmFtZSwgcC5pbXBvcnRQYXRoID8/ICcnLCAncGFja2FnZS5qc29uJyk7XG4gICAgICAgIGNhc2UgJ3JlbGF0aXZlJzpcbiAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4ocC5zb3VyY2VQYXRoLCBwLmltcG9ydFBhdGgpO1xuICAgICAgICBjYXNlICdyZWxhdGl2ZS1pbi1wYWNrYWdlJzpcbiAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4ocC5wYWNrYWdlTmFtZSwgcC5zb3VyY2VQYXRoLCBwLmltcG9ydFBhdGgpO1xuICAgICAgICBjYXNlICdicnV0ZWZvcmNlJzpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBJbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59O1xuIl19
@@ -0,0 +1,21 @@
1
+ export class UnpkgSourceResolver {
2
+ static async resolvePackageJson(packageName, version, subPath) {
3
+ return await this.resolveFile(`https://unpkg.com/${packageName}${version ? `@${version}` : ''}${subPath ? `/${subPath}` : ''}/package.json`);
4
+ }
5
+ static async resolveSourceFile(packageName, version, path) {
6
+ return await this.resolveFile(`https://unpkg.com/${packageName}${version ? `@${version}` : ''}/${path}`);
7
+ }
8
+ static async resolveFile(url) {
9
+ const res = await fetch(url, { method: 'GET' });
10
+ if (res.ok) {
11
+ return await res.text();
12
+ }
13
+ else if (res.status === 404) {
14
+ return '';
15
+ }
16
+ else {
17
+ throw Error(`Error other than 404 while fetching from Unpkg at ${url}`);
18
+ }
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5wa2ctc291cmNlLXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL21vbmFjby1lZGl0b3IvdHMtdHlwZS1yZXNvbHZlci91bnBrZy1zb3VyY2UtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUNsQyxXQUFtQixFQUNuQixPQUEyQixFQUMzQixPQUEyQjtRQUUzQixPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FDekIscUJBQXFCLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUNoSCxDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQ2pDLFdBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLElBQVk7UUFFWixPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQVc7UUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFaEQsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDVCxPQUFPLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUM7YUFDSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO2FBQ0ksQ0FBQztZQUNGLE1BQU0sS0FBSyxDQUFDLHFEQUFxRCxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjbGFzcyBVbnBrZ1NvdXJjZVJlc29sdmVyIHtcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlc29sdmVQYWNrYWdlSnNvbihcbiAgICAgICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBzdWJQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXNvbHZlRmlsZShcbiAgICAgICAgICAgIGBodHRwczovL3VucGtnLmNvbS8ke3BhY2thZ2VOYW1lfSR7dmVyc2lvbiA/IGBAJHt2ZXJzaW9ufWAgOiAnJ30ke3N1YlBhdGggPyBgLyR7c3ViUGF0aH1gIDogJyd9L3BhY2thZ2UuanNvbmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlc29sdmVTb3VyY2VGaWxlKFxuICAgICAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIHBhdGg6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlc29sdmVGaWxlKGBodHRwczovL3VucGtnLmNvbS8ke3BhY2thZ2VOYW1lfSR7dmVyc2lvbiA/IGBAJHt2ZXJzaW9ufWAgOiAnJ30vJHtwYXRofWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIHJlc29sdmVGaWxlKHVybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgeyBtZXRob2Q6ICdHRVQnIH0pO1xuXG4gICAgICAgIGlmIChyZXMub2spIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXMudGV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEVycm9yIG90aGVyIHRoYW4gNDA0IHdoaWxlIGZldGNoaW5nIGZyb20gVW5wa2cgYXQgJHt1cmx9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=