@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.
- package/README.md +37 -22
- package/{components/command-palette → command-palette}/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/{components/command-palette → command-palette}/command-palette.component.d.ts +1 -1
- package/{services → command-palette}/command-palette.service.d.ts +2 -2
- package/command-palette/index.d.ts +2 -0
- package/{components/command-palette → command-palette}/shortcut/shortcut.component.d.ts +1 -1
- package/{components → core/components}/menu/menu.component.d.ts +2 -2
- package/{directives → core/components/menu}/menu.directive.d.ts +1 -1
- package/{types/menu.d.ts → core/components/menu/types.d.ts} +1 -1
- package/{components → core/components}/types.d.ts +0 -1
- package/{public-api.d.ts → core/index.d.ts} +12 -20
- package/{services → core/services}/navigation.service.d.ts +1 -1
- package/core/utils/index.d.ts +18 -0
- package/esm2022/{components/command-palette → command-palette}/breadcrumb/breadcrumb.component.mjs +1 -1
- package/esm2022/command-palette/command-palette.component.mjs +257 -0
- package/esm2022/command-palette/command-palette.service.mjs +207 -0
- package/esm2022/command-palette/dotglitch-ngx-common-command-palette.mjs +5 -0
- package/esm2022/command-palette/index.mjs +3 -0
- package/esm2022/{components/command-palette → command-palette}/shortcut/shortcut.component.mjs +1 -1
- package/esm2022/core/components/lazy-loader/lazy-loader.component.mjs +383 -0
- package/esm2022/core/components/lazy-loader/lazy-loader.module.mjs +33 -0
- package/esm2022/core/components/lazy-loader/lazy-loader.service.mjs +216 -0
- package/esm2022/core/components/lazy-loader/types.mjs +26 -0
- package/esm2022/core/components/menu/menu.component.mjs +433 -0
- package/esm2022/core/components/menu/menu.directive.mjs +159 -0
- package/esm2022/core/components/menu/types.mjs +2 -0
- package/esm2022/core/components/parallax-card/parallax-card.component.mjs +138 -0
- package/esm2022/core/components/types.mjs +3 -0
- package/esm2022/core/directives/image-cache.directive.mjs +143 -0
- package/esm2022/core/directives/utils.mjs +120 -0
- package/esm2022/core/dotglitch-ngx-common-core.mjs +5 -0
- package/esm2022/core/index.mjs +50 -0
- package/esm2022/core/pipes/html-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/resource-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/script-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/style-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/url-bypass.pipe.mjs +27 -0
- package/esm2022/core/services/dependency.service.mjs +55 -0
- package/esm2022/core/services/dialog.service.mjs +67 -0
- package/esm2022/core/services/fetch.service.mjs +74 -0
- package/esm2022/core/services/file.service.mjs +42 -0
- package/esm2022/core/services/keyboard.service.mjs +128 -0
- package/esm2022/core/services/navigation.service.mjs +50 -0
- package/esm2022/core/services/theme.service.mjs +64 -0
- package/esm2022/core/types/popup.mjs +2 -0
- package/esm2022/core/utils/index.mjs +69 -0
- package/esm2022/dotglitch-ngx-common.mjs +2 -2
- package/esm2022/filemanager/dotglitch-ngx-common-filemanager.mjs +5 -0
- package/esm2022/filemanager/file-grid/file-grid.component.mjs +676 -0
- package/esm2022/{components/filemanager → filemanager}/filemanager.component.mjs +13 -14
- package/esm2022/{components/filemanager → filemanager}/folder-rename/folder-rename.component.mjs +2 -2
- package/esm2022/filemanager/helpers.mjs +26 -0
- package/esm2022/filemanager/icon-resolver.mjs +155 -0
- package/esm2022/filemanager/index.mjs +2 -0
- package/esm2022/filemanager/mat-icons.mjs +5705 -0
- package/esm2022/filemanager/textextensions.mjs +294 -0
- package/esm2022/{components/filemanager → filemanager}/toolbar/breadcrumb/breadcrumb.component.mjs +1 -1
- package/esm2022/{components/filemanager → filemanager}/toolbar/icon-button/icon-button.component.mjs +1 -1
- package/esm2022/filemanager/toolbar/toolbar.component.mjs +165 -0
- package/esm2022/{components/filemanager → filemanager}/tree-view/tree-view.component.mjs +1 -1
- package/esm2022/filemanager/types.mjs +2 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/monaco-editor/dotglitch-ngx-common-monaco-editor.mjs +5 -0
- package/esm2022/monaco-editor/index.mjs +2 -0
- package/esm2022/monaco-editor/monaco-editor.component.mjs +234 -0
- package/esm2022/monaco-editor/ts-type-resolver/dependency-parser.mjs +91 -0
- package/esm2022/monaco-editor/ts-type-resolver/dummy-source-cache.mjs +15 -0
- package/esm2022/monaco-editor/ts-type-resolver/import-resolver.mjs +311 -0
- package/esm2022/monaco-editor/ts-type-resolver/main.mjs +112 -0
- package/esm2022/monaco-editor/ts-type-resolver/recursion-depth.mjs +21 -0
- package/esm2022/monaco-editor/ts-type-resolver/types.mjs +14 -0
- package/esm2022/monaco-editor/ts-type-resolver/unpkg-source-resolver.mjs +21 -0
- package/esm2022/monaco-editor/ts-type-resolver/update-emitter.mjs +37 -0
- package/esm2022/overlay-wrapper/dotglitch-ngx-common-overlay-wrapper.mjs +5 -0
- package/esm2022/overlay-wrapper/index.mjs +2 -0
- package/esm2022/overlay-wrapper/overlay-wrapper.component.mjs +247 -0
- package/esm2022/tooltip/dotglitch-ngx-common-tooltip.mjs +5 -0
- package/esm2022/tooltip/index.mjs +4 -0
- package/esm2022/tooltip/tooltip.component.mjs +204 -0
- package/esm2022/tooltip/tooltip.directive.mjs +153 -0
- package/esm2022/tooltip/types.mjs +2 -0
- package/fesm2022/dotglitch-ngx-common-command-palette.mjs +508 -0
- package/fesm2022/dotglitch-ngx-common-command-palette.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-core.mjs +2280 -0
- package/fesm2022/dotglitch-ngx-common-core.mjs.map +1 -0
- package/fesm2022/{dotglitch-ngx-common-folder-rename.component-Bh1IiRvd.mjs → dotglitch-ngx-common-filemanager-folder-rename.component-CnKuU8nn.mjs} +9 -30
- package/fesm2022/dotglitch-ngx-common-filemanager-folder-rename.component-CnKuU8nn.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-filemanager.mjs +7403 -0
- package/fesm2022/dotglitch-ngx-common-filemanager.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-monaco-editor.mjs +850 -0
- package/fesm2022/dotglitch-ngx-common-monaco-editor.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-overlay-wrapper.mjs +254 -0
- package/fesm2022/dotglitch-ngx-common-overlay-wrapper.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-tooltip.mjs +357 -0
- package/fesm2022/dotglitch-ngx-common-tooltip.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common.mjs +3 -11686
- package/fesm2022/dotglitch-ngx-common.mjs.map +1 -1
- package/{components/filemanager → filemanager}/file-grid/file-grid.component.d.ts +7 -14
- package/{components/filemanager → filemanager}/filemanager.component.d.ts +4 -5
- package/{components/filemanager → filemanager}/folder-rename/folder-rename.component.d.ts +1 -1
- package/{components/filemanager → filemanager}/helpers.d.ts +1 -1
- package/filemanager/index.d.ts +1 -0
- package/{components/filemanager → filemanager}/toolbar/toolbar.component.d.ts +2 -2
- package/filemanager/types.d.ts +1 -0
- package/index.d.ts +1 -5
- package/monaco-editor/README.md +3 -0
- package/monaco-editor/index.d.ts +1 -0
- package/monaco-editor/monaco-editor.component.d.ts +53 -0
- package/overlay-wrapper/index.d.ts +1 -0
- package/overlay-wrapper/overlay-wrapper.component.d.ts +11 -0
- package/package.json +108 -47
- package/tooltip/index.d.ts +3 -0
- package/{components/tooltip → tooltip}/tooltip.component.d.ts +3 -3
- package/{directives → tooltip}/tooltip.directive.d.ts +2 -2
- package/{types/tooltip.d.ts → tooltip/types.d.ts} +1 -1
- package/assets/lib/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.de.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.es.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.fr.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.it.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.ja.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.ko.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.ru.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.zh-cn.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.zh-tw.js +0 -8
- package/assets/lib/vs/base/worker/workerMain.js +0 -24
- package/assets/lib/vs/basic-languages/abap/abap.js +0 -10
- package/assets/lib/vs/basic-languages/apex/apex.js +0 -10
- package/assets/lib/vs/basic-languages/azcli/azcli.js +0 -10
- package/assets/lib/vs/basic-languages/bat/bat.js +0 -10
- package/assets/lib/vs/basic-languages/bicep/bicep.js +0 -11
- package/assets/lib/vs/basic-languages/cameligo/cameligo.js +0 -10
- package/assets/lib/vs/basic-languages/clojure/clojure.js +0 -10
- package/assets/lib/vs/basic-languages/coffee/coffee.js +0 -10
- package/assets/lib/vs/basic-languages/cpp/cpp.js +0 -10
- package/assets/lib/vs/basic-languages/csharp/csharp.js +0 -10
- package/assets/lib/vs/basic-languages/csp/csp.js +0 -10
- package/assets/lib/vs/basic-languages/css/css.js +0 -12
- package/assets/lib/vs/basic-languages/cypher/cypher.js +0 -10
- package/assets/lib/vs/basic-languages/dart/dart.js +0 -10
- package/assets/lib/vs/basic-languages/dockerfile/dockerfile.js +0 -10
- package/assets/lib/vs/basic-languages/ecl/ecl.js +0 -10
- package/assets/lib/vs/basic-languages/elixir/elixir.js +0 -10
- package/assets/lib/vs/basic-languages/flow9/flow9.js +0 -10
- package/assets/lib/vs/basic-languages/freemarker2/freemarker2.js +0 -12
- package/assets/lib/vs/basic-languages/fsharp/fsharp.js +0 -10
- package/assets/lib/vs/basic-languages/go/go.js +0 -10
- package/assets/lib/vs/basic-languages/graphql/graphql.js +0 -10
- package/assets/lib/vs/basic-languages/handlebars/handlebars.js +0 -10
- package/assets/lib/vs/basic-languages/hcl/hcl.js +0 -10
- package/assets/lib/vs/basic-languages/html/html.js +0 -10
- package/assets/lib/vs/basic-languages/ini/ini.js +0 -10
- package/assets/lib/vs/basic-languages/java/java.js +0 -10
- package/assets/lib/vs/basic-languages/javascript/javascript.js +0 -10
- package/assets/lib/vs/basic-languages/julia/julia.js +0 -10
- package/assets/lib/vs/basic-languages/kotlin/kotlin.js +0 -10
- package/assets/lib/vs/basic-languages/less/less.js +0 -11
- package/assets/lib/vs/basic-languages/lexon/lexon.js +0 -10
- package/assets/lib/vs/basic-languages/liquid/liquid.js +0 -10
- package/assets/lib/vs/basic-languages/lua/lua.js +0 -10
- package/assets/lib/vs/basic-languages/m3/m3.js +0 -10
- package/assets/lib/vs/basic-languages/markdown/markdown.js +0 -10
- package/assets/lib/vs/basic-languages/mips/mips.js +0 -10
- package/assets/lib/vs/basic-languages/msdax/msdax.js +0 -10
- package/assets/lib/vs/basic-languages/mysql/mysql.js +0 -10
- package/assets/lib/vs/basic-languages/objective-c/objective-c.js +0 -10
- package/assets/lib/vs/basic-languages/pascal/pascal.js +0 -10
- package/assets/lib/vs/basic-languages/pascaligo/pascaligo.js +0 -10
- package/assets/lib/vs/basic-languages/perl/perl.js +0 -10
- package/assets/lib/vs/basic-languages/pgsql/pgsql.js +0 -10
- package/assets/lib/vs/basic-languages/php/php.js +0 -10
- package/assets/lib/vs/basic-languages/pla/pla.js +0 -10
- package/assets/lib/vs/basic-languages/postiats/postiats.js +0 -10
- package/assets/lib/vs/basic-languages/powerquery/powerquery.js +0 -10
- package/assets/lib/vs/basic-languages/powershell/powershell.js +0 -10
- package/assets/lib/vs/basic-languages/protobuf/protobuf.js +0 -11
- package/assets/lib/vs/basic-languages/pug/pug.js +0 -10
- package/assets/lib/vs/basic-languages/python/python.js +0 -10
- package/assets/lib/vs/basic-languages/qsharp/qsharp.js +0 -10
- package/assets/lib/vs/basic-languages/r/r.js +0 -10
- package/assets/lib/vs/basic-languages/razor/razor.js +0 -10
- package/assets/lib/vs/basic-languages/redis/redis.js +0 -10
- package/assets/lib/vs/basic-languages/redshift/redshift.js +0 -10
- package/assets/lib/vs/basic-languages/restructuredtext/restructuredtext.js +0 -10
- package/assets/lib/vs/basic-languages/ruby/ruby.js +0 -10
- package/assets/lib/vs/basic-languages/rust/rust.js +0 -10
- package/assets/lib/vs/basic-languages/sb/sb.js +0 -10
- package/assets/lib/vs/basic-languages/scala/scala.js +0 -10
- package/assets/lib/vs/basic-languages/scheme/scheme.js +0 -10
- package/assets/lib/vs/basic-languages/scss/scss.js +0 -12
- package/assets/lib/vs/basic-languages/shell/shell.js +0 -10
- package/assets/lib/vs/basic-languages/solidity/solidity.js +0 -10
- package/assets/lib/vs/basic-languages/sophia/sophia.js +0 -10
- package/assets/lib/vs/basic-languages/sparql/sparql.js +0 -10
- package/assets/lib/vs/basic-languages/sql/sql.js +0 -10
- package/assets/lib/vs/basic-languages/st/st.js +0 -10
- package/assets/lib/vs/basic-languages/swift/swift.js +0 -13
- package/assets/lib/vs/basic-languages/systemverilog/systemverilog.js +0 -10
- package/assets/lib/vs/basic-languages/tcl/tcl.js +0 -10
- package/assets/lib/vs/basic-languages/twig/twig.js +0 -10
- package/assets/lib/vs/basic-languages/typescript/typescript.js +0 -10
- package/assets/lib/vs/basic-languages/vb/vb.js +0 -10
- package/assets/lib/vs/basic-languages/wgsl/wgsl.js +0 -307
- package/assets/lib/vs/basic-languages/xml/xml.js +0 -10
- package/assets/lib/vs/basic-languages/yaml/yaml.js +0 -10
- package/assets/lib/vs/editor/editor.main.css +0 -6
- package/assets/lib/vs/editor/editor.main.js +0 -752
- package/assets/lib/vs/editor/editor.main.nls.de.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.es.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.fr.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.it.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.ja.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.ko.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.ru.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.zh-cn.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.zh-tw.js +0 -29
- package/assets/lib/vs/language/css/cssMode.js +0 -13
- package/assets/lib/vs/language/css/cssWorker.js +0 -81
- package/assets/lib/vs/language/html/htmlMode.js +0 -13
- package/assets/lib/vs/language/html/htmlWorker.js +0 -453
- package/assets/lib/vs/language/json/jsonMode.js +0 -15
- package/assets/lib/vs/language/json/jsonWorker.js +0 -36
- package/assets/lib/vs/language/typescript/tsMode.js +0 -20
- package/assets/lib/vs/language/typescript/tsWorker.js +0 -37016
- package/assets/lib/vs/loader.js +0 -11
- package/assets/mat-icons.ts +0 -5704
- package/assets/material/3d.svg +0 -1
- package/assets/material/abc.svg +0 -1
- package/assets/material/actionscript.svg +0 -1
- package/assets/material/ada.svg +0 -1
- package/assets/material/adonis.svg +0 -1
- package/assets/material/advpl_include.svg +0 -1
- package/assets/material/advpl_prw.svg +0 -1
- package/assets/material/advpl_ptm.svg +0 -1
- package/assets/material/advpl_tlpp.svg +0 -1
- package/assets/material/android.svg +0 -1
- package/assets/material/angular-component.svg +0 -1
- package/assets/material/angular-directive.svg +0 -1
- package/assets/material/angular-guard.svg +0 -1
- package/assets/material/angular-pipe.svg +0 -1
- package/assets/material/angular-resolver.svg +0 -1
- package/assets/material/angular-service.svg +0 -1
- package/assets/material/angular.svg +0 -1
- package/assets/material/antlr.svg +0 -1
- package/assets/material/apiblueprint.svg +0 -1
- package/assets/material/apollo.svg +0 -1
- package/assets/material/applescript.svg +0 -1
- package/assets/material/appveyor.svg +0 -1
- package/assets/material/architecture.svg +0 -1
- package/assets/material/arduino.svg +0 -1
- package/assets/material/asciidoc.svg +0 -1
- package/assets/material/assembly.svg +0 -1
- package/assets/material/astro.svg +0 -1
- package/assets/material/astyle.svg +0 -1
- package/assets/material/audio.svg +0 -1
- package/assets/material/aurelia.svg +0 -1
- package/assets/material/authors.svg +0 -1
- package/assets/material/auto.svg +0 -1
- package/assets/material/auto_light.svg +0 -1
- package/assets/material/autohotkey.svg +0 -1
- package/assets/material/autoit.svg +0 -1
- package/assets/material/azure-pipelines.svg +0 -1
- package/assets/material/azure.svg +0 -1
- package/assets/material/babel.svg +0 -1
- package/assets/material/ballerina.svg +0 -1
- package/assets/material/bazel.svg +0 -1
- package/assets/material/bicep.svg +0 -1
- package/assets/material/bitbucket.svg +0 -13
- package/assets/material/bithound.svg +0 -1
- package/assets/material/blink.svg +0 -1
- package/assets/material/blink_light.svg +0 -1
- package/assets/material/blitz.svg +0 -1
- package/assets/material/bower.svg +0 -1
- package/assets/material/brainfuck.svg +0 -1
- package/assets/material/browserlist.svg +0 -1
- package/assets/material/browserlist_light.svg +0 -1
- package/assets/material/buck.svg +0 -1
- package/assets/material/bucklescript.svg +0 -1
- package/assets/material/buildkite.svg +0 -1
- package/assets/material/bun.svg +0 -2
- package/assets/material/bun_light.svg +0 -2
- package/assets/material/c.svg +0 -4
- package/assets/material/cabal.svg +0 -1
- package/assets/material/caddy.svg +0 -1
- package/assets/material/cadence.svg +0 -1
- package/assets/material/cake.svg +0 -1
- package/assets/material/capacitor.svg +0 -1
- package/assets/material/certificate.svg +0 -1
- package/assets/material/changelog.svg +0 -1
- package/assets/material/chess.svg +0 -1
- package/assets/material/chess_light.svg +0 -1
- package/assets/material/circleci.svg +0 -1
- package/assets/material/circleci_light.svg +0 -1
- package/assets/material/clojure.svg +0 -1
- package/assets/material/cloudfoundry.svg +0 -1
- package/assets/material/cmake.svg +0 -1
- package/assets/material/coala.svg +0 -1
- package/assets/material/cobol.svg +0 -1
- package/assets/material/coconut.svg +0 -1
- package/assets/material/code-climate.svg +0 -1
- package/assets/material/code-climate_light.svg +0 -1
- package/assets/material/codecov.svg +0 -1
- package/assets/material/codeowners.svg +0 -1
- package/assets/material/coffee.svg +0 -1
- package/assets/material/coldfusion.svg +0 -1
- package/assets/material/command.svg +0 -1
- package/assets/material/commitlint.svg +0 -1
- package/assets/material/conduct.svg +0 -1
- package/assets/material/console.svg +0 -1
- package/assets/material/contributing.svg +0 -1
- package/assets/material/cpp.svg +0 -4
- package/assets/material/craco.svg +0 -45
- package/assets/material/credits.svg +0 -1
- package/assets/material/crystal.svg +0 -1
- package/assets/material/crystal_light.svg +0 -1
- package/assets/material/csharp.svg +0 -4
- package/assets/material/css-map.svg +0 -1
- package/assets/material/css.svg +0 -1
- package/assets/material/cucumber.svg +0 -1
- package/assets/material/cuda.svg +0 -1
- package/assets/material/cypress.svg +0 -1
- package/assets/material/d.svg +0 -1
- package/assets/material/dart.svg +0 -1
- package/assets/material/dart_generated.svg +0 -1
- package/assets/material/database.svg +0 -1
- package/assets/material/denizenscript.svg +0 -1
- package/assets/material/deno.svg +0 -1
- package/assets/material/deno_light.svg +0 -1
- package/assets/material/dependabot.svg +0 -1
- package/assets/material/dhall.svg +0 -1
- package/assets/material/diff.svg +0 -1
- package/assets/material/dinophp.svg +0 -1
- package/assets/material/disc.svg +0 -1
- package/assets/material/django.svg +0 -1
- package/assets/material/docker.svg +0 -1
- package/assets/material/document.svg +0 -1
- package/assets/material/dotjs.svg +0 -1
- package/assets/material/drawio.svg +0 -1
- package/assets/material/drone.svg +0 -1
- package/assets/material/drone_light.svg +0 -1
- package/assets/material/dune.svg +0 -1
- package/assets/material/edge.svg +0 -1
- package/assets/material/editorconfig.svg +0 -1
- package/assets/material/ejs.svg +0 -1
- package/assets/material/elixir.svg +0 -1
- package/assets/material/elm.svg +0 -1
- package/assets/material/email.svg +0 -1
- package/assets/material/ember.svg +0 -1
- package/assets/material/erlang.svg +0 -1
- package/assets/material/eslint.svg +0 -1
- package/assets/material/exe.svg +0 -1
- package/assets/material/fastlane.svg +0 -1
- package/assets/material/favicon.svg +0 -1
- package/assets/material/figma.svg +0 -1
- package/assets/material/file.svg +0 -1
- package/assets/material/firebase.svg +0 -1
- package/assets/material/flash.svg +0 -1
- package/assets/material/flow.svg +0 -1
- package/assets/material/folder-admin-open.svg +0 -1
- package/assets/material/folder-admin.svg +0 -1
- package/assets/material/folder-android-open.svg +0 -1
- package/assets/material/folder-android.svg +0 -1
- package/assets/material/folder-angular-open.svg +0 -1
- package/assets/material/folder-angular.svg +0 -1
- package/assets/material/folder-animation-open.svg +0 -1
- package/assets/material/folder-animation.svg +0 -1
- package/assets/material/folder-ansible-open.svg +0 -1
- package/assets/material/folder-ansible.svg +0 -1
- package/assets/material/folder-api-open.svg +0 -1
- package/assets/material/folder-api.svg +0 -1
- package/assets/material/folder-apollo-open.svg +0 -1
- package/assets/material/folder-apollo.svg +0 -1
- package/assets/material/folder-app-open.svg +0 -1
- package/assets/material/folder-app.svg +0 -1
- package/assets/material/folder-archive-open.svg +0 -1
- package/assets/material/folder-archive.svg +0 -1
- package/assets/material/folder-audio-open.svg +0 -1
- package/assets/material/folder-audio.svg +0 -1
- package/assets/material/folder-aurelia-open.svg +0 -1
- package/assets/material/folder-aurelia.svg +0 -1
- package/assets/material/folder-aws-open.svg +0 -1
- package/assets/material/folder-aws.svg +0 -1
- package/assets/material/folder-azure-pipelines-open.svg +0 -1
- package/assets/material/folder-azure-pipelines.svg +0 -1
- package/assets/material/folder-base-open.svg +0 -1
- package/assets/material/folder-base.svg +0 -1
- package/assets/material/folder-batch-open.svg +0 -1
- package/assets/material/folder-batch.svg +0 -1
- package/assets/material/folder-benchmark-open.svg +0 -1
- package/assets/material/folder-benchmark.svg +0 -1
- package/assets/material/folder-bower-open.svg +0 -1
- package/assets/material/folder-bower.svg +0 -1
- package/assets/material/folder-buildkite-open.svg +0 -1
- package/assets/material/folder-buildkite.svg +0 -1
- package/assets/material/folder-cart-open.svg +0 -1
- package/assets/material/folder-cart.svg +0 -1
- package/assets/material/folder-changesets-open.svg +0 -5
- package/assets/material/folder-changesets.svg +0 -2
- package/assets/material/folder-ci-open.svg +0 -1
- package/assets/material/folder-ci.svg +0 -1
- package/assets/material/folder-circleci-open.svg +0 -1
- package/assets/material/folder-circleci.svg +0 -1
- package/assets/material/folder-class-open.svg +0 -1
- package/assets/material/folder-class.svg +0 -1
- package/assets/material/folder-client-open.svg +0 -1
- package/assets/material/folder-client.svg +0 -1
- package/assets/material/folder-cluster-open.svg +0 -1
- package/assets/material/folder-cluster.svg +0 -1
- package/assets/material/folder-cobol-open.svg +0 -1
- package/assets/material/folder-cobol.svg +0 -1
- package/assets/material/folder-command-open.svg +0 -1
- package/assets/material/folder-command.svg +0 -1
- package/assets/material/folder-components-open.svg +0 -1
- package/assets/material/folder-components.svg +0 -1
- package/assets/material/folder-config-open.svg +0 -1
- package/assets/material/folder-config.svg +0 -1
- package/assets/material/folder-connection-open.svg +0 -1
- package/assets/material/folder-connection.svg +0 -1
- package/assets/material/folder-constant-open.svg +0 -1
- package/assets/material/folder-constant.svg +0 -1
- package/assets/material/folder-container-open.svg +0 -1
- package/assets/material/folder-container.svg +0 -1
- package/assets/material/folder-content-open.svg +0 -1
- package/assets/material/folder-content.svg +0 -1
- package/assets/material/folder-context-open.svg +0 -1
- package/assets/material/folder-context.svg +0 -1
- package/assets/material/folder-contract-open.svg +0 -1
- package/assets/material/folder-contract.svg +0 -1
- package/assets/material/folder-controller-open.svg +0 -1
- package/assets/material/folder-controller.svg +0 -1
- package/assets/material/folder-core-open.svg +0 -1
- package/assets/material/folder-core.svg +0 -1
- package/assets/material/folder-coverage-open.svg +0 -1
- package/assets/material/folder-coverage.svg +0 -1
- package/assets/material/folder-css-open.svg +0 -1
- package/assets/material/folder-css.svg +0 -1
- package/assets/material/folder-custom-open.svg +0 -1
- package/assets/material/folder-custom.svg +0 -1
- package/assets/material/folder-cypress-open.svg +0 -1
- package/assets/material/folder-cypress.svg +0 -1
- package/assets/material/folder-database-open.svg +0 -1
- package/assets/material/folder-database.svg +0 -1
- package/assets/material/folder-debug-open.svg +0 -1
- package/assets/material/folder-debug.svg +0 -1
- package/assets/material/folder-decorators-open.svg +0 -2
- package/assets/material/folder-decorators.svg +0 -5
- package/assets/material/folder-delta-open.svg +0 -1
- package/assets/material/folder-delta.svg +0 -1
- package/assets/material/folder-dist-open.svg +0 -1
- package/assets/material/folder-dist.svg +0 -1
- package/assets/material/folder-docker-open.svg +0 -1
- package/assets/material/folder-docker.svg +0 -1
- package/assets/material/folder-docs-open.svg +0 -1
- package/assets/material/folder-docs.svg +0 -1
- package/assets/material/folder-download-open.svg +0 -1
- package/assets/material/folder-download.svg +0 -1
- package/assets/material/folder-dump-open.svg +0 -1
- package/assets/material/folder-dump.svg +0 -1
- package/assets/material/folder-environment-open.svg +0 -1
- package/assets/material/folder-environment.svg +0 -1
- package/assets/material/folder-error-open.svg +0 -1
- package/assets/material/folder-error.svg +0 -1
- package/assets/material/folder-event-open.svg +0 -1
- package/assets/material/folder-event.svg +0 -1
- package/assets/material/folder-examples-open.svg +0 -1
- package/assets/material/folder-examples.svg +0 -1
- package/assets/material/folder-expo-open.svg +0 -1
- package/assets/material/folder-expo.svg +0 -1
- package/assets/material/folder-export-open.svg +0 -1
- package/assets/material/folder-export.svg +0 -1
- package/assets/material/folder-fastlane-open.svg +0 -1
- package/assets/material/folder-fastlane.svg +0 -1
- package/assets/material/folder-firebase-open.svg +0 -1
- package/assets/material/folder-firebase.svg +0 -1
- package/assets/material/folder-flow-open.svg +0 -1
- package/assets/material/folder-flow.svg +0 -1
- package/assets/material/folder-font-open.svg +0 -1
- package/assets/material/folder-font.svg +0 -1
- package/assets/material/folder-functions-open.svg +0 -1
- package/assets/material/folder-functions.svg +0 -1
- package/assets/material/folder-gamemaker-open.svg +0 -2
- package/assets/material/folder-gamemaker.svg +0 -2
- package/assets/material/folder-generator-open.svg +0 -1
- package/assets/material/folder-generator.svg +0 -1
- package/assets/material/folder-git-open.svg +0 -1
- package/assets/material/folder-git.svg +0 -1
- package/assets/material/folder-github-open.svg +0 -1
- package/assets/material/folder-github.svg +0 -1
- package/assets/material/folder-gitlab-open.svg +0 -1
- package/assets/material/folder-gitlab.svg +0 -1
- package/assets/material/folder-global-open.svg +0 -1
- package/assets/material/folder-global.svg +0 -1
- package/assets/material/folder-godot-open.svg +0 -2
- package/assets/material/folder-godot.svg +0 -8
- package/assets/material/folder-gradle-open.svg +0 -1
- package/assets/material/folder-gradle.svg +0 -1
- package/assets/material/folder-graphql-open.svg +0 -1
- package/assets/material/folder-graphql.svg +0 -1
- package/assets/material/folder-guard-open.svg +0 -1
- package/assets/material/folder-guard.svg +0 -1
- package/assets/material/folder-gulp-open.svg +0 -1
- package/assets/material/folder-gulp.svg +0 -1
- package/assets/material/folder-helper-open.svg +0 -1
- package/assets/material/folder-helper.svg +0 -1
- package/assets/material/folder-home-open.svg +0 -1
- package/assets/material/folder-home.svg +0 -1
- package/assets/material/folder-hook-open.svg +0 -1
- package/assets/material/folder-hook.svg +0 -1
- package/assets/material/folder-husky-open.svg +0 -1
- package/assets/material/folder-husky.svg +0 -1
- package/assets/material/folder-i18n-open.svg +0 -1
- package/assets/material/folder-i18n.svg +0 -1
- package/assets/material/folder-images-open.svg +0 -1
- package/assets/material/folder-images.svg +0 -1
- package/assets/material/folder-import-open.svg +0 -1
- package/assets/material/folder-import.svg +0 -1
- package/assets/material/folder-include-open.svg +0 -1
- package/assets/material/folder-include.svg +0 -1
- package/assets/material/folder-intellij-open.svg +0 -1
- package/assets/material/folder-intellij-open_light.svg +0 -1
- package/assets/material/folder-intellij.svg +0 -1
- package/assets/material/folder-intellij_light.svg +0 -1
- package/assets/material/folder-interface-open.svg +0 -1
- package/assets/material/folder-interface.svg +0 -1
- package/assets/material/folder-ios-open.svg +0 -1
- package/assets/material/folder-ios.svg +0 -1
- package/assets/material/folder-java-open.svg +0 -1
- package/assets/material/folder-java.svg +0 -1
- package/assets/material/folder-javascript-open.svg +0 -1
- package/assets/material/folder-javascript.svg +0 -1
- package/assets/material/folder-jinja-open.svg +0 -1
- package/assets/material/folder-jinja-open_light.svg +0 -1
- package/assets/material/folder-jinja.svg +0 -1
- package/assets/material/folder-jinja_light.svg +0 -1
- package/assets/material/folder-job-open.svg +0 -1
- package/assets/material/folder-job.svg +0 -1
- package/assets/material/folder-json-open.svg +0 -1
- package/assets/material/folder-json.svg +0 -1
- package/assets/material/folder-keys-open.svg +0 -1
- package/assets/material/folder-keys.svg +0 -1
- package/assets/material/folder-kubernetes-open.svg +0 -1
- package/assets/material/folder-kubernetes.svg +0 -1
- package/assets/material/folder-layout-open.svg +0 -1
- package/assets/material/folder-layout.svg +0 -1
- package/assets/material/folder-less-open.svg +0 -1
- package/assets/material/folder-less.svg +0 -1
- package/assets/material/folder-lib-open.svg +0 -1
- package/assets/material/folder-lib.svg +0 -1
- package/assets/material/folder-log-open.svg +0 -1
- package/assets/material/folder-log.svg +0 -1
- package/assets/material/folder-lua-open.svg +0 -1
- package/assets/material/folder-lua.svg +0 -1
- package/assets/material/folder-mail-open.svg +0 -1
- package/assets/material/folder-mail.svg +0 -1
- package/assets/material/folder-mappings-open.svg +0 -1
- package/assets/material/folder-mappings.svg +0 -1
- package/assets/material/folder-markdown-open.svg +0 -1
- package/assets/material/folder-markdown.svg +0 -1
- package/assets/material/folder-mercurial-open.svg +0 -5
- package/assets/material/folder-mercurial.svg +0 -2
- package/assets/material/folder-messages-open.svg +0 -1
- package/assets/material/folder-messages.svg +0 -1
- package/assets/material/folder-meta-open.svg +0 -1
- package/assets/material/folder-meta.svg +0 -1
- package/assets/material/folder-middleware-open.svg +0 -1
- package/assets/material/folder-middleware.svg +0 -1
- package/assets/material/folder-mjml-open.svg +0 -1
- package/assets/material/folder-mjml.svg +0 -1
- package/assets/material/folder-mobile-open.svg +0 -1
- package/assets/material/folder-mobile.svg +0 -1
- package/assets/material/folder-mock-open.svg +0 -1
- package/assets/material/folder-mock.svg +0 -1
- package/assets/material/folder-netlify-open.svg +0 -5
- package/assets/material/folder-netlify.svg +0 -2
- package/assets/material/folder-next-open.svg +0 -1
- package/assets/material/folder-next.svg +0 -1
- package/assets/material/folder-ngrx-actions-open.svg +0 -1
- package/assets/material/folder-ngrx-actions.svg +0 -1
- package/assets/material/folder-ngrx-effects-open.svg +0 -1
- package/assets/material/folder-ngrx-effects.svg +0 -1
- package/assets/material/folder-ngrx-entities-open.svg +0 -1
- package/assets/material/folder-ngrx-entities.svg +0 -1
- package/assets/material/folder-ngrx-reducer-open.svg +0 -1
- package/assets/material/folder-ngrx-reducer.svg +0 -1
- package/assets/material/folder-ngrx-selectors-open.svg +0 -1
- package/assets/material/folder-ngrx-selectors.svg +0 -1
- package/assets/material/folder-ngrx-state-open.svg +0 -1
- package/assets/material/folder-ngrx-state.svg +0 -1
- package/assets/material/folder-ngrx-store-open.svg +0 -1
- package/assets/material/folder-ngrx-store.svg +0 -1
- package/assets/material/folder-node-open.svg +0 -1
- package/assets/material/folder-node.svg +0 -1
- package/assets/material/folder-nuxt-open.svg +0 -1
- package/assets/material/folder-nuxt.svg +0 -1
- package/assets/material/folder-open.svg +0 -1
- package/assets/material/folder-other-open.svg +0 -1
- package/assets/material/folder-other.svg +0 -1
- package/assets/material/folder-packages-open.svg +0 -1
- package/assets/material/folder-packages.svg +0 -1
- package/assets/material/folder-pdf-open.svg +0 -1
- package/assets/material/folder-pdf.svg +0 -1
- package/assets/material/folder-php-open.svg +0 -1
- package/assets/material/folder-php.svg +0 -1
- package/assets/material/folder-phpmailer-open.svg +0 -1
- package/assets/material/folder-phpmailer.svg +0 -1
- package/assets/material/folder-pipe-open.svg +0 -1
- package/assets/material/folder-pipe.svg +0 -1
- package/assets/material/folder-plastic-open.svg +0 -8
- package/assets/material/folder-plastic.svg +0 -2
- package/assets/material/folder-plugin-open.svg +0 -1
- package/assets/material/folder-plugin.svg +0 -1
- package/assets/material/folder-prisma-open.svg +0 -1
- package/assets/material/folder-prisma.svg +0 -1
- package/assets/material/folder-private-open.svg +0 -1
- package/assets/material/folder-private.svg +0 -1
- package/assets/material/folder-project-open.svg +0 -1
- package/assets/material/folder-project.svg +0 -1
- package/assets/material/folder-proto-open.svg +0 -1
- package/assets/material/folder-proto.svg +0 -1
- package/assets/material/folder-public-open.svg +0 -1
- package/assets/material/folder-public.svg +0 -1
- package/assets/material/folder-python-open.svg +0 -1
- package/assets/material/folder-python.svg +0 -1
- package/assets/material/folder-quasar-open.svg +0 -1
- package/assets/material/folder-quasar.svg +0 -1
- package/assets/material/folder-queue-open.svg +0 -1
- package/assets/material/folder-queue.svg +0 -1
- package/assets/material/folder-react-components-open.svg +0 -1
- package/assets/material/folder-react-components.svg +0 -1
- package/assets/material/folder-redux-actions-open.svg +0 -1
- package/assets/material/folder-redux-actions.svg +0 -1
- package/assets/material/folder-redux-reducer-open.svg +0 -1
- package/assets/material/folder-redux-reducer.svg +0 -1
- package/assets/material/folder-redux-selector-open.svg +0 -1
- package/assets/material/folder-redux-selector.svg +0 -1
- package/assets/material/folder-redux-store-open.svg +0 -1
- package/assets/material/folder-redux-store.svg +0 -1
- package/assets/material/folder-resolver-open.svg +0 -1
- package/assets/material/folder-resolver.svg +0 -1
- package/assets/material/folder-resource-open.svg +0 -1
- package/assets/material/folder-resource.svg +0 -1
- package/assets/material/folder-review-open.svg +0 -1
- package/assets/material/folder-review.svg +0 -1
- package/assets/material/folder-root-open.svg +0 -1
- package/assets/material/folder-root.svg +0 -1
- package/assets/material/folder-routes-open.svg +0 -1
- package/assets/material/folder-routes.svg +0 -1
- package/assets/material/folder-rules-open.svg +0 -1
- package/assets/material/folder-rules.svg +0 -1
- package/assets/material/folder-sass-open.svg +0 -1
- package/assets/material/folder-sass.svg +0 -1
- package/assets/material/folder-scala-open.svg +0 -1
- package/assets/material/folder-scala.svg +0 -1
- package/assets/material/folder-scripts-open.svg +0 -1
- package/assets/material/folder-scripts.svg +0 -1
- package/assets/material/folder-secure-open.svg +0 -1
- package/assets/material/folder-secure.svg +0 -1
- package/assets/material/folder-server-open.svg +0 -1
- package/assets/material/folder-server.svg +0 -1
- package/assets/material/folder-serverless-open.svg +0 -1
- package/assets/material/folder-serverless.svg +0 -1
- package/assets/material/folder-shader-open.svg +0 -1
- package/assets/material/folder-shader.svg +0 -1
- package/assets/material/folder-shared-open.svg +0 -1
- package/assets/material/folder-shared.svg +0 -1
- package/assets/material/folder-src-open.svg +0 -1
- package/assets/material/folder-src.svg +0 -1
- package/assets/material/folder-stack-open.svg +0 -1
- package/assets/material/folder-stack.svg +0 -1
- package/assets/material/folder-stencil-open.svg +0 -1
- package/assets/material/folder-stencil.svg +0 -1
- package/assets/material/folder-storybook-open.svg +0 -1
- package/assets/material/folder-storybook.svg +0 -1
- package/assets/material/folder-stylus-open.svg +0 -1
- package/assets/material/folder-stylus.svg +0 -1
- package/assets/material/folder-sublime-open.svg +0 -1
- package/assets/material/folder-sublime.svg +0 -1
- package/assets/material/folder-supabase-open.svg +0 -5
- package/assets/material/folder-supabase.svg +0 -2
- package/assets/material/folder-svelte-open.svg +0 -1
- package/assets/material/folder-svelte.svg +0 -1
- package/assets/material/folder-svg-open.svg +0 -1
- package/assets/material/folder-svg.svg +0 -1
- package/assets/material/folder-syntax-open.svg +0 -1
- package/assets/material/folder-syntax.svg +0 -1
- package/assets/material/folder-target-open.svg +0 -1
- package/assets/material/folder-target.svg +0 -1
- package/assets/material/folder-tasks-open.svg +0 -1
- package/assets/material/folder-tasks.svg +0 -1
- package/assets/material/folder-temp-open.svg +0 -1
- package/assets/material/folder-temp.svg +0 -1
- package/assets/material/folder-template-open.svg +0 -1
- package/assets/material/folder-template.svg +0 -1
- package/assets/material/folder-terraform-open.svg +0 -1
- package/assets/material/folder-terraform.svg +0 -1
- package/assets/material/folder-test-open.svg +0 -1
- package/assets/material/folder-test.svg +0 -1
- package/assets/material/folder-theme-open.svg +0 -1
- package/assets/material/folder-theme.svg +0 -1
- package/assets/material/folder-tools-open.svg +0 -1
- package/assets/material/folder-tools.svg +0 -1
- package/assets/material/folder-typescript-open.svg +0 -1
- package/assets/material/folder-typescript.svg +0 -1
- package/assets/material/folder-unity-open.svg +0 -1
- package/assets/material/folder-unity.svg +0 -1
- package/assets/material/folder-update-open.svg +0 -1
- package/assets/material/folder-update.svg +0 -1
- package/assets/material/folder-upload-open.svg +0 -1
- package/assets/material/folder-upload.svg +0 -1
- package/assets/material/folder-utils-open.svg +0 -1
- package/assets/material/folder-utils.svg +0 -1
- package/assets/material/folder-vercel-open.svg +0 -1
- package/assets/material/folder-vercel.svg +0 -1
- package/assets/material/folder-verdaccio-open.svg +0 -1
- package/assets/material/folder-verdaccio.svg +0 -1
- package/assets/material/folder-video-open.svg +0 -1
- package/assets/material/folder-video.svg +0 -1
- package/assets/material/folder-views-open.svg +0 -1
- package/assets/material/folder-views.svg +0 -1
- package/assets/material/folder-vm-open.svg +0 -1
- package/assets/material/folder-vm.svg +0 -1
- package/assets/material/folder-vscode-open.svg +0 -1
- package/assets/material/folder-vscode.svg +0 -1
- package/assets/material/folder-vue-directives-open.svg +0 -1
- package/assets/material/folder-vue-directives.svg +0 -1
- package/assets/material/folder-vue-open.svg +0 -1
- package/assets/material/folder-vue.svg +0 -1
- package/assets/material/folder-vuepress-open.svg +0 -1
- package/assets/material/folder-vuepress.svg +0 -1
- package/assets/material/folder-vuex-store-open.svg +0 -1
- package/assets/material/folder-vuex-store.svg +0 -1
- package/assets/material/folder-wakatime-open.svg +0 -1
- package/assets/material/folder-wakatime.svg +0 -1
- package/assets/material/folder-webpack-open.svg +0 -1
- package/assets/material/folder-webpack.svg +0 -1
- package/assets/material/folder-wordpress-open.svg +0 -1
- package/assets/material/folder-wordpress.svg +0 -1
- package/assets/material/folder-yarn-open.svg +0 -1
- package/assets/material/folder-yarn.svg +0 -1
- package/assets/material/folder.svg +0 -1
- package/assets/material/font.svg +0 -1
- package/assets/material/forth.svg +0 -1
- package/assets/material/fortran.svg +0 -1
- package/assets/material/foxpro.svg +0 -1
- package/assets/material/fsharp.svg +0 -1
- package/assets/material/fusebox.svg +0 -1
- package/assets/material/gamemaker.svg +0 -4
- package/assets/material/gatsby.svg +0 -1
- package/assets/material/gcp.svg +0 -1
- package/assets/material/gemfile.svg +0 -1
- package/assets/material/gemini.svg +0 -1
- package/assets/material/git.svg +0 -1
- package/assets/material/gitlab.svg +0 -1
- package/assets/material/gitpod.svg +0 -1
- package/assets/material/gleam.svg +0 -1
- package/assets/material/go-mod.svg +0 -1
- package/assets/material/go.svg +0 -1
- package/assets/material/go_gopher.svg +0 -1
- package/assets/material/godot-assets.svg +0 -7
- package/assets/material/godot.svg +0 -7
- package/assets/material/gradle.svg +0 -1
- package/assets/material/grain.svg +0 -1
- package/assets/material/graphcool.svg +0 -1
- package/assets/material/graphql.svg +0 -1
- package/assets/material/gridsome.svg +0 -1
- package/assets/material/groovy.svg +0 -1
- package/assets/material/grunt.svg +0 -1
- package/assets/material/gulp.svg +0 -1
- package/assets/material/h.svg +0 -1
- package/assets/material/hack.svg +0 -1
- package/assets/material/haml.svg +0 -1
- package/assets/material/handlebars.svg +0 -1
- package/assets/material/hardhat.svg +0 -1
- package/assets/material/haskell.svg +0 -1
- package/assets/material/haxe.svg +0 -1
- package/assets/material/hcl.svg +0 -1
- package/assets/material/hcl_light.svg +0 -1
- package/assets/material/helm.svg +0 -1
- package/assets/material/heroku.svg +0 -1
- package/assets/material/hex.svg +0 -1
- package/assets/material/horusec.svg +0 -1
- package/assets/material/hpp.svg +0 -1
- package/assets/material/html.svg +0 -1
- package/assets/material/http.svg +0 -1
- package/assets/material/husky.svg +0 -1
- package/assets/material/i18n.svg +0 -1
- package/assets/material/idris.svg +0 -1
- package/assets/material/ifanr-cloud.svg +0 -10
- package/assets/material/image.svg +0 -1
- package/assets/material/imba.svg +0 -1
- package/assets/material/ionic.svg +0 -1
- package/assets/material/istanbul.svg +0 -1
- package/assets/material/jar.svg +0 -1
- package/assets/material/java.svg +0 -1
- package/assets/material/javaclass.svg +0 -1
- package/assets/material/javascript-map.svg +0 -1
- package/assets/material/javascript.svg +0 -1
- package/assets/material/jenkins.svg +0 -1
- package/assets/material/jest.svg +0 -1
- package/assets/material/jinja.svg +0 -1
- package/assets/material/jinja_light.svg +0 -1
- package/assets/material/jsconfig.svg +0 -1
- package/assets/material/json.svg +0 -1
- package/assets/material/julia.svg +0 -1
- package/assets/material/jupyter.svg +0 -1
- package/assets/material/karma.svg +0 -1
- package/assets/material/key.svg +0 -1
- package/assets/material/kivy.svg +0 -1
- package/assets/material/kl.svg +0 -1
- package/assets/material/kotlin.svg +0 -1
- package/assets/material/kusto.svg +0 -1
- package/assets/material/laravel.svg +0 -1
- package/assets/material/lerna.svg +0 -1
- package/assets/material/less.svg +0 -1
- package/assets/material/lib.svg +0 -1
- package/assets/material/lighthouse.svg +0 -1
- package/assets/material/lilypond.svg +0 -1
- package/assets/material/liquid.svg +0 -1
- package/assets/material/lisp.svg +0 -1
- package/assets/material/livescript.svg +0 -1
- package/assets/material/lock.svg +0 -1
- package/assets/material/log.svg +0 -1
- package/assets/material/lolcode.svg +0 -1
- package/assets/material/lua.svg +0 -1
- package/assets/material/makefile.svg +0 -1
- package/assets/material/markdown.svg +0 -1
- package/assets/material/markojs.svg +0 -1
- package/assets/material/mathematica.svg +0 -1
- package/assets/material/matlab.svg +0 -1
- package/assets/material/maven.svg +0 -1
- package/assets/material/mdsvex.svg +0 -1
- package/assets/material/mdx.svg +0 -1
- package/assets/material/mercurial.svg +0 -6
- package/assets/material/merlin.svg +0 -1
- package/assets/material/mermaid.svg +0 -4
- package/assets/material/meson.svg +0 -1
- package/assets/material/minecraft.svg +0 -1
- package/assets/material/mint.svg +0 -1
- package/assets/material/mjml.svg +0 -1
- package/assets/material/mocha.svg +0 -1
- package/assets/material/modernizr.svg +0 -1
- package/assets/material/moonscript.svg +0 -1
- package/assets/material/mxml.svg +0 -1
- package/assets/material/nano-staged.svg +0 -1
- package/assets/material/nano-staged_light.svg +0 -1
- package/assets/material/ndst.svg +0 -1
- package/assets/material/nest-controller.svg +0 -1
- package/assets/material/nest-decorator.svg +0 -1
- package/assets/material/nest-filter.svg +0 -1
- package/assets/material/nest-gateway.svg +0 -1
- package/assets/material/nest-guard.svg +0 -1
- package/assets/material/nest-middleware.svg +0 -1
- package/assets/material/nest-module.svg +0 -1
- package/assets/material/nest-pipe.svg +0 -1
- package/assets/material/nest-resolver.svg +0 -1
- package/assets/material/nest-service.svg +0 -1
- package/assets/material/nest.svg +0 -1
- package/assets/material/netlify.svg +0 -7
- package/assets/material/netlify_light.svg +0 -7
- package/assets/material/next.svg +0 -1
- package/assets/material/next_light.svg +0 -1
- package/assets/material/nginx.svg +0 -1
- package/assets/material/ngrx-actions.svg +0 -1
- package/assets/material/ngrx-effects.svg +0 -1
- package/assets/material/ngrx-entity.svg +0 -1
- package/assets/material/ngrx-reducer.svg +0 -1
- package/assets/material/ngrx-selectors.svg +0 -1
- package/assets/material/ngrx-state.svg +0 -1
- package/assets/material/nim.svg +0 -1
- package/assets/material/nix.svg +0 -1
- package/assets/material/nodejs.svg +0 -1
- package/assets/material/nodejs_alt.svg +0 -1
- package/assets/material/nodemon.svg +0 -1
- package/assets/material/npm.svg +0 -1
- package/assets/material/nrwl.svg +0 -1
- package/assets/material/nuget.svg +0 -1
- package/assets/material/nunjucks.svg +0 -1
- package/assets/material/nuxt.svg +0 -1
- package/assets/material/objective-c.svg +0 -4
- package/assets/material/objective-cpp.svg +0 -1
- package/assets/material/ocaml.svg +0 -1
- package/assets/material/odin.svg +0 -1
- package/assets/material/opa.svg +0 -1
- package/assets/material/opam.svg +0 -1
- package/assets/material/otne.svg +0 -1
- package/assets/material/parcel.svg +0 -1
- package/assets/material/pascal.svg +0 -6
- package/assets/material/pawn.svg +0 -1
- package/assets/material/pdf.svg +0 -1
- package/assets/material/percy.svg +0 -1
- package/assets/material/perl.svg +0 -1
- package/assets/material/php-cs-fixer.svg +0 -1
- package/assets/material/php.svg +0 -1
- package/assets/material/php_elephant.svg +0 -1
- package/assets/material/php_elephant_pink.svg +0 -1
- package/assets/material/phpunit.svg +0 -1
- package/assets/material/pinejs.svg +0 -1
- package/assets/material/pipeline.svg +0 -1
- package/assets/material/plastic.svg +0 -7
- package/assets/material/playwright.svg +0 -1
- package/assets/material/plop.svg +0 -1
- package/assets/material/pnpm.svg +0 -1
- package/assets/material/pnpm_light.svg +0 -1
- package/assets/material/poetry.svg +0 -1
- package/assets/material/postcss.svg +0 -1
- package/assets/material/posthtml.svg +0 -1
- package/assets/material/powerpoint.svg +0 -1
- package/assets/material/powershell.svg +0 -1
- package/assets/material/prettier.svg +0 -1
- package/assets/material/prisma.svg +0 -1
- package/assets/material/processing.svg +0 -1
- package/assets/material/prolog.svg +0 -1
- package/assets/material/proto.svg +0 -1
- package/assets/material/protractor.svg +0 -1
- package/assets/material/pug.svg +0 -1
- package/assets/material/puppet.svg +0 -1
- package/assets/material/purescript.svg +0 -1
- package/assets/material/python-misc.svg +0 -1
- package/assets/material/python.svg +0 -1
- package/assets/material/qsharp.svg +0 -1
- package/assets/material/quasar.svg +0 -1
- package/assets/material/qwik.svg +0 -2
- package/assets/material/r.svg +0 -1
- package/assets/material/racket.svg +0 -1
- package/assets/material/raml.svg +0 -1
- package/assets/material/razor.svg +0 -1
- package/assets/material/rc.svg +0 -2
- package/assets/material/react.svg +0 -1
- package/assets/material/react_ts.svg +0 -1
- package/assets/material/readme.svg +0 -1
- package/assets/material/reason.svg +0 -1
- package/assets/material/red.svg +0 -1
- package/assets/material/redux-action.svg +0 -1
- package/assets/material/redux-reducer.svg +0 -1
- package/assets/material/redux-selector.svg +0 -1
- package/assets/material/redux-store.svg +0 -1
- package/assets/material/remix.svg +0 -1
- package/assets/material/remix_light.svg +0 -1
- package/assets/material/renovate.svg +0 -1
- package/assets/material/replit.svg +0 -1
- package/assets/material/rescript-interface.svg +0 -1
- package/assets/material/rescript.svg +0 -1
- package/assets/material/restql.svg +0 -1
- package/assets/material/riot.svg +0 -1
- package/assets/material/roadmap.svg +0 -1
- package/assets/material/robot.svg +0 -1
- package/assets/material/robots.svg +0 -1
- package/assets/material/rollup.svg +0 -1
- package/assets/material/rome.svg +0 -1
- package/assets/material/routing.svg +0 -1
- package/assets/material/rubocop.svg +0 -1
- package/assets/material/rubocop_light.svg +0 -1
- package/assets/material/ruby.svg +0 -1
- package/assets/material/rust.svg +0 -1
- package/assets/material/salesforce.svg +0 -1
- package/assets/material/san.svg +0 -1
- package/assets/material/sas.svg +0 -1
- package/assets/material/sass.svg +0 -1
- package/assets/material/sbt.svg +0 -1
- package/assets/material/scala.svg +0 -1
- package/assets/material/scheme.svg +0 -1
- package/assets/material/search.svg +0 -1
- package/assets/material/semantic-release.svg +0 -1
- package/assets/material/semantic-release_light.svg +0 -1
- package/assets/material/sentry.svg +0 -1
- package/assets/material/sequelize.svg +0 -1
- package/assets/material/serverless.svg +0 -1
- package/assets/material/settings.svg +0 -1
- package/assets/material/shader.svg +0 -1
- package/assets/material/shaderlab.svg +0 -1
- package/assets/material/silverstripe.svg +0 -1
- package/assets/material/siyuan.svg +0 -1
- package/assets/material/sketch.svg +0 -1
- package/assets/material/slim.svg +0 -1
- package/assets/material/slug.svg +0 -1
- package/assets/material/smarty.svg +0 -1
- package/assets/material/sml.svg +0 -1
- package/assets/material/snowpack.svg +0 -1
- package/assets/material/snowpack_light.svg +0 -1
- package/assets/material/snyk.svg +0 -1
- package/assets/material/solidity.svg +0 -1
- package/assets/material/sonarcloud.svg +0 -4
- package/assets/material/steadybit.svg +0 -1
- package/assets/material/stencil.svg +0 -1
- package/assets/material/stitches.svg +0 -1
- package/assets/material/stitches_light.svg +0 -1
- package/assets/material/storybook.svg +0 -1
- package/assets/material/stryker.svg +0 -1
- package/assets/material/stylable.svg +0 -10
- package/assets/material/stylelint.svg +0 -1
- package/assets/material/stylelint_light.svg +0 -1
- package/assets/material/stylus.svg +0 -1
- package/assets/material/sublime.svg +0 -1
- package/assets/material/supabase.svg +0 -4
- package/assets/material/svelte.svg +0 -1
- package/assets/material/svg.svg +0 -1
- package/assets/material/svgo.svg +0 -1
- package/assets/material/svgr.svg +0 -1
- package/assets/material/swc.svg +0 -1
- package/assets/material/swift.svg +0 -1
- package/assets/material/table.svg +0 -1
- package/assets/material/tailwindcss.svg +0 -1
- package/assets/material/tauri.svg +0 -1
- package/assets/material/tcl.svg +0 -1
- package/assets/material/teal.svg +0 -1
- package/assets/material/template.svg +0 -1
- package/assets/material/terraform.svg +0 -1
- package/assets/material/test-js.svg +0 -1
- package/assets/material/test-jsx.svg +0 -1
- package/assets/material/test-ts.svg +0 -1
- package/assets/material/tex.svg +0 -1
- package/assets/material/textlint.svg +0 -1
- package/assets/material/tilt.svg +0 -1
- package/assets/material/tldraw.svg +0 -4
- package/assets/material/tldraw_light.svg +0 -4
- package/assets/material/tobi.svg +0 -1
- package/assets/material/tobimake.svg +0 -1
- package/assets/material/todo.svg +0 -1
- package/assets/material/travis.svg +0 -1
- package/assets/material/tree.svg +0 -1
- package/assets/material/tsconfig.svg +0 -1
- package/assets/material/tune.svg +0 -1
- package/assets/material/turborepo.svg +0 -1
- package/assets/material/turborepo_light.svg +0 -1
- package/assets/material/twig.svg +0 -1
- package/assets/material/twine.svg +0 -1
- package/assets/material/typescript-def.svg +0 -1
- package/assets/material/typescript.svg +0 -1
- package/assets/material/typst.svg +0 -2
- package/assets/material/uml.svg +0 -1
- package/assets/material/uml_light.svg +0 -1
- package/assets/material/url.svg +0 -1
- package/assets/material/vagrant.svg +0 -1
- package/assets/material/vala.svg +0 -1
- package/assets/material/velocity.svg +0 -1
- package/assets/material/vercel.svg +0 -1
- package/assets/material/vercel_light.svg +0 -1
- package/assets/material/verdaccio.svg +0 -1
- package/assets/material/verilog.svg +0 -1
- package/assets/material/vfl.svg +0 -1
- package/assets/material/video.svg +0 -1
- package/assets/material/vim.svg +0 -1
- package/assets/material/virtual.svg +0 -1
- package/assets/material/visualstudio.svg +0 -1
- package/assets/material/vite.svg +0 -1
- package/assets/material/vitest.svg +0 -6
- package/assets/material/vlang.svg +0 -1
- package/assets/material/vscode.svg +0 -1
- package/assets/material/vue-config.svg +0 -1
- package/assets/material/vue.svg +0 -1
- package/assets/material/vuex-store.svg +0 -1
- package/assets/material/wakatime.svg +0 -1
- package/assets/material/wakatime_light.svg +0 -1
- package/assets/material/wallaby.svg +0 -1
- package/assets/material/watchman.svg +0 -1
- package/assets/material/webassembly.svg +0 -1
- package/assets/material/webhint.svg +0 -1
- package/assets/material/webpack.svg +0 -1
- package/assets/material/wepy.svg +0 -1
- package/assets/material/windicss.svg +0 -1
- package/assets/material/wolframlanguage.svg +0 -1
- package/assets/material/word.svg +0 -1
- package/assets/material/xaml.svg +0 -1
- package/assets/material/xml.svg +0 -1
- package/assets/material/yaml.svg +0 -1
- package/assets/material/yang.svg +0 -1
- package/assets/material/yarn.svg +0 -1
- package/assets/material/zig.svg +0 -1
- package/assets/material/zip.svg +0 -1
- package/assets/pop/LICENSE +0 -2
- package/assets/pop/binary.svg +0 -1
- package/assets/pop/compressed.svg +0 -1
- package/assets/pop/database.svg +0 -1
- package/assets/pop/exts/7z.svg +0 -1
- package/assets/pop/exts/apk.svg +0 -1
- package/assets/pop/exts/arc.svg +0 -1
- package/assets/pop/exts/bz.svg +0 -1
- package/assets/pop/exts/deb.svg +0 -1
- package/assets/pop/exts/gz.svg +0 -1
- package/assets/pop/exts/pdf.svg +0 -1
- package/assets/pop/exts/rar.svg +0 -1
- package/assets/pop/exts/rpm.svg +0 -1
- package/assets/pop/exts/tar.svg +0 -1
- package/assets/pop/exts/xar.svg +0 -1
- package/assets/pop/exts/xz.svg +0 -1
- package/assets/pop/exts/zip.svg +0 -1
- package/assets/pop/folder-open.svg +0 -1
- package/assets/pop/folder.svg +0 -1
- package/assets/pop/generic.svg +0 -1
- package/assets/pop/presentation.svg +0 -1
- package/assets/pop/richtext.svg +0 -1
- package/assets/pop/spreadsheet.svg +0 -1
- package/assets/pop/text.svg +0 -1
- package/components/dynamic-html/dynamic-html.component.d.ts +0 -15
- package/components/dynamic-html/dynamic-html.module.d.ts +0 -10
- package/components/dynamic-html/dynamic-html.service.d.ts +0 -18
- package/components/dynamic-html/types.d.ts +0 -12
- package/components/tabulator/tabulator.component.d.ts +0 -30
- package/components/vscode/vscode.component.d.ts +0 -52
- package/esm2022/assets/mat-icons.mjs +0 -5705
- package/esm2022/components/command-palette/command-palette.component.mjs +0 -257
- package/esm2022/components/dynamic-html/dynamic-html.component.mjs +0 -43
- package/esm2022/components/dynamic-html/dynamic-html.module.mjs +0 -27
- package/esm2022/components/dynamic-html/dynamic-html.service.mjs +0 -66
- package/esm2022/components/dynamic-html/types.mjs +0 -7
- package/esm2022/components/filemanager/file-grid/file-grid.component.mjs +0 -674
- package/esm2022/components/filemanager/helpers.mjs +0 -26
- package/esm2022/components/filemanager/icon-resolver.mjs +0 -155
- package/esm2022/components/filemanager/textextensions.mjs +0 -294
- package/esm2022/components/filemanager/toolbar/toolbar.component.mjs +0 -165
- package/esm2022/components/lazy-loader/lazy-loader.component.mjs +0 -383
- package/esm2022/components/lazy-loader/lazy-loader.module.mjs +0 -33
- package/esm2022/components/lazy-loader/lazy-loader.service.mjs +0 -217
- package/esm2022/components/lazy-loader/types.mjs +0 -26
- package/esm2022/components/menu/menu.component.mjs +0 -433
- package/esm2022/components/parallax-card/parallax-card.component.mjs +0 -138
- package/esm2022/components/tabulator/tabulator.component.mjs +0 -93
- package/esm2022/components/tooltip/tooltip.component.mjs +0 -205
- package/esm2022/components/types.mjs +0 -3
- package/esm2022/components/vscode/ts-type-resolver/dependency-parser.mjs +0 -91
- package/esm2022/components/vscode/ts-type-resolver/dummy-source-cache.mjs +0 -15
- package/esm2022/components/vscode/ts-type-resolver/import-resolver.mjs +0 -311
- package/esm2022/components/vscode/ts-type-resolver/main.mjs +0 -112
- package/esm2022/components/vscode/ts-type-resolver/recursion-depth.mjs +0 -21
- package/esm2022/components/vscode/ts-type-resolver/types.mjs +0 -14
- package/esm2022/components/vscode/ts-type-resolver/unpkg-source-resolver.mjs +0 -21
- package/esm2022/components/vscode/ts-type-resolver/update-emitter.mjs +0 -37
- package/esm2022/components/vscode/vscode.component.mjs +0 -232
- package/esm2022/directives/image-cache.directive.mjs +0 -140
- package/esm2022/directives/menu.directive.mjs +0 -159
- package/esm2022/directives/tooltip.directive.mjs +0 -154
- package/esm2022/directives/utils.mjs +0 -120
- package/esm2022/pipes/html-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/resource-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/script-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/style-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/url-bypass.pipe.mjs +0 -27
- package/esm2022/public-api.mjs +0 -59
- package/esm2022/services/command-palette.service.mjs +0 -209
- package/esm2022/services/dependency.service.mjs +0 -55
- package/esm2022/services/dialog.service.mjs +0 -69
- package/esm2022/services/fetch.service.mjs +0 -74
- package/esm2022/services/file.service.mjs +0 -42
- package/esm2022/services/keyboard.service.mjs +0 -128
- package/esm2022/services/navigation.service.mjs +0 -52
- package/esm2022/services/theme.service.mjs +0 -64
- package/esm2022/types/menu.mjs +0 -2
- package/esm2022/types/popup.mjs +0 -2
- package/esm2022/types/tooltip.mjs +0 -2
- package/esm2022/utils/index.mjs +0 -205
- package/fesm2022/dotglitch-ngx-common-folder-rename.component-Bh1IiRvd.mjs.map +0 -1
- package/utils/index.d.ts +0 -128
- /package/{components → core/components}/lazy-loader/lazy-loader.component.d.ts +0 -0
- /package/{components → core/components}/lazy-loader/lazy-loader.module.d.ts +0 -0
- /package/{components → core/components}/lazy-loader/lazy-loader.service.d.ts +0 -0
- /package/{components → core/components}/lazy-loader/types.d.ts +0 -0
- /package/{components → core/components}/parallax-card/parallax-card.component.d.ts +0 -0
- /package/{directives → core/directives}/image-cache.directive.d.ts +0 -0
- /package/{directives → core/directives}/utils.d.ts +0 -0
- /package/{pipes → core/pipes}/html-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/resource-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/script-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/style-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/url-bypass.pipe.d.ts +0 -0
- /package/{services → core/services}/dependency.service.d.ts +0 -0
- /package/{services → core/services}/dialog.service.d.ts +0 -0
- /package/{services → core/services}/fetch.service.d.ts +0 -0
- /package/{services → core/services}/file.service.d.ts +0 -0
- /package/{services → core/services}/keyboard.service.d.ts +0 -0
- /package/{services → core/services}/theme.service.d.ts +0 -0
- /package/{types → core/types}/popup.d.ts +0 -0
- /package/{components/filemanager → filemanager}/icon-resolver.d.ts +0 -0
- /package/{assets → filemanager}/mat-icons.d.ts +0 -0
- /package/{components/filemanager → filemanager}/textextensions.d.ts +0 -0
- /package/{components/filemanager → filemanager}/toolbar/breadcrumb/breadcrumb.component.d.ts +0 -0
- /package/{components/filemanager → filemanager}/toolbar/icon-button/icon-button.component.d.ts +0 -0
- /package/{components/filemanager → filemanager}/tree-view/tree-view.component.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/dependency-parser.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/dummy-source-cache.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/import-resolver.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/main.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/recursion-depth.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/types.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/unpkg-source-resolver.d.ts +0 -0
- /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=
|