@esri/solutions-components 0.6.7 → 0.6.8
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/ExpandToggle-e6a0d66e.js +117 -0
- package/dist/cjs/FloatingArrow-0119ec6e.js +48 -0
- package/dist/cjs/Heading-521f39ac.js +25 -0
- package/dist/cjs/app-globals-72576a1c.js +69 -0
- package/dist/cjs/ar-1718ae57.js +97 -0
- package/dist/cjs/basemap-gallery_4.cjs.entry.js +622 -0
- package/dist/cjs/bg-190a176c.js +78 -0
- package/dist/cjs/bs-919e0de8.js +47 -0
- package/dist/cjs/buffer-tools_4.cjs.entry.js +1437 -1437
- package/dist/cjs/ca-94918e06.js +67 -0
- package/dist/cjs/calcite-accordion-item.cjs.entry.js +140 -140
- package/dist/cjs/calcite-accordion.cjs.entry.js +75 -75
- package/dist/cjs/calcite-action-bar.cjs.entry.js +216 -216
- package/dist/cjs/calcite-action-group_2.cjs.entry.js +365 -365
- package/dist/cjs/calcite-action-pad.cjs.entry.js +135 -135
- package/dist/cjs/calcite-action_2.cjs.entry.js +445 -445
- package/dist/cjs/calcite-alert.cjs.entry.js +247 -247
- package/dist/cjs/calcite-avatar.cjs.entry.js +73 -73
- package/dist/cjs/calcite-block-section.cjs.entry.js +122 -122
- package/dist/cjs/calcite-block.cjs.entry.js +131 -131
- package/dist/cjs/calcite-button.cjs.entry.js +182 -182
- package/dist/cjs/calcite-card.cjs.entry.js +99 -99
- package/dist/cjs/calcite-checkbox.cjs.entry.js +125 -125
- package/dist/cjs/calcite-chip-group.cjs.entry.js +164 -164
- package/dist/cjs/calcite-chip.cjs.entry.js +213 -213
- package/dist/cjs/calcite-color-picker-hex-input_2.cjs.entry.js +303 -303
- package/dist/cjs/calcite-color-picker.cjs.entry.js +886 -886
- package/dist/cjs/calcite-combobox-item-group.cjs.entry.js +35 -35
- package/dist/cjs/calcite-combobox_6.cjs.entry.js +1786 -1786
- package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js +589 -589
- package/dist/cjs/calcite-date-picker.cjs.entry.js +434 -434
- package/dist/cjs/calcite-fab.cjs.entry.js +66 -66
- package/dist/cjs/calcite-filter_5.cjs.entry.js +1131 -1131
- package/dist/cjs/calcite-flow-item.cjs.entry.js +146 -146
- package/dist/cjs/calcite-flow.cjs.entry.js +117 -117
- package/dist/cjs/calcite-graph.cjs.entry.js +66 -66
- package/dist/cjs/calcite-icon.cjs.entry.js +80 -80
- package/dist/cjs/calcite-inline-editable.cjs.entry.js +225 -225
- package/dist/cjs/calcite-input-date-picker.cjs.entry.js +632 -632
- package/dist/cjs/calcite-input-number_2.cjs.entry.js +846 -846
- package/dist/cjs/calcite-input-time-picker-b99baf7b.js +1718 -0
- package/dist/cjs/calcite-input-time-picker.cjs.entry.js +15 -15
- package/dist/cjs/calcite-input-time-zone.cjs.entry.js +150 -150
- package/dist/cjs/calcite-input_2.cjs.entry.js +645 -645
- package/dist/cjs/calcite-label.cjs.entry.js +40 -40
- package/dist/cjs/calcite-link.cjs.entry.js +96 -96
- package/dist/cjs/calcite-list-item-group.cjs.entry.js +46 -46
- package/dist/cjs/calcite-loader.cjs.entry.js +65 -65
- package/dist/cjs/calcite-menu-item.cjs.entry.js +246 -246
- package/dist/cjs/calcite-menu.cjs.entry.js +161 -161
- package/dist/cjs/calcite-modal.cjs.entry.js +282 -282
- package/dist/cjs/calcite-navigation-logo.cjs.entry.js +52 -52
- package/dist/cjs/calcite-navigation-user.cjs.entry.js +45 -45
- package/dist/cjs/calcite-navigation.cjs.entry.js +126 -126
- package/dist/cjs/calcite-notice.cjs.entry.js +105 -105
- package/dist/cjs/calcite-option-group.cjs.entry.js +24 -24
- package/dist/cjs/calcite-option_2.cjs.entry.js +271 -271
- package/dist/cjs/calcite-pagination.cjs.entry.js +191 -191
- package/dist/cjs/calcite-panel_2.cjs.entry.js +346 -346
- package/dist/cjs/calcite-pick-list-group.cjs.entry.js +46 -46
- package/dist/cjs/calcite-pick-list-item.cjs.entry.js +181 -181
- package/dist/cjs/calcite-pick-list.cjs.entry.js +130 -130
- package/dist/cjs/calcite-radio-button-group.cjs.entry.js +118 -118
- package/dist/cjs/calcite-radio-button.cjs.entry.js +292 -292
- package/dist/cjs/calcite-rating.cjs.entry.js +245 -245
- package/dist/cjs/calcite-scrim.cjs.entry.js +93 -93
- package/dist/cjs/calcite-segmented-control_2.cjs.entry.js +225 -225
- package/dist/cjs/calcite-shell-center-row.cjs.entry.js +42 -42
- package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +2604 -2604
- package/dist/cjs/calcite-sortable-list.cjs.entry.js +134 -134
- package/dist/cjs/calcite-split-button.cjs.entry.js +92 -92
- package/dist/cjs/calcite-stepper-item.cjs.entry.js +197 -197
- package/dist/cjs/calcite-stepper.cjs.entry.js +187 -187
- package/dist/cjs/calcite-switch.cjs.entry.js +100 -100
- package/dist/cjs/calcite-text-area.cjs.entry.js +235 -235
- package/dist/cjs/calcite-tile-select-group.cjs.entry.js +27 -27
- package/dist/cjs/calcite-tile-select.cjs.entry.js +180 -180
- package/dist/cjs/calcite-tile.cjs.entry.js +58 -58
- package/dist/cjs/calcite-time-picker.cjs.entry.js +619 -619
- package/dist/cjs/calcite-tip-group.cjs.entry.js +10 -10
- package/dist/cjs/calcite-tip-manager.cjs.entry.js +185 -185
- package/dist/cjs/calcite-tip.cjs.entry.js +94 -94
- package/dist/cjs/calcite-tooltip.cjs.entry.js +185 -185
- package/dist/cjs/calcite-tree_3.cjs.entry.js +821 -821
- package/dist/cjs/card-manager_4.cjs.entry.js +707 -653
- package/dist/cjs/conditionalSlot-85b3a6b3.js +63 -0
- package/dist/cjs/crowdsource-manager.cjs.entry.js +258 -256
- package/dist/cjs/crowdsource-reporter.cjs.entry.js +60 -60
- package/dist/cjs/cs-fe27e732.js +143 -0
- package/dist/cjs/da-1b7f3440.js +62 -0
- package/dist/cjs/date-cec32b0e.js +250 -0
- package/dist/cjs/de-0dc1effa.js +87 -0
- package/dist/cjs/de-at-acdc4d01.js +86 -0
- package/dist/cjs/de-ch-778a0d99.js +86 -0
- package/dist/cjs/deduct-calculator.cjs.entry.js +90 -90
- package/dist/cjs/dom-c1807fc1.js +1046 -0
- package/dist/cjs/downloadUtils-a8c530f7.js +2767 -0
- package/dist/cjs/edit-card_2.cjs.entry.js +345 -345
- package/dist/cjs/el-fdbc9bc1.js +62 -0
- package/dist/cjs/en-au-0ff50cdf.js +62 -0
- package/dist/cjs/en-ca-284e9368.js +61 -0
- package/dist/cjs/en-gb-0fcae8ae.js +65 -0
- package/dist/cjs/es-cd54acba.js +62 -0
- package/dist/cjs/es-mx-2078d50f.js +61 -0
- package/dist/cjs/et-17f323f6.js +88 -0
- package/dist/cjs/fi-82f27397.js +111 -0
- package/dist/cjs/filter-bda212b4.js +765 -0
- package/dist/cjs/floating-ui-8d10af88.js +1888 -0
- package/dist/cjs/focusTrapComponent-a22fc6a8.js +1009 -0
- package/dist/cjs/form-9d8ebf06.js +288 -0
- package/dist/cjs/fr-af7e1192.js +64 -0
- package/dist/cjs/fr-ch-5e1f2c28.js +62 -0
- package/dist/cjs/he-ea851800.js +101 -0
- package/dist/cjs/hi-5212a21d.js +61 -0
- package/dist/cjs/hr-4eecb2ed.js +76 -0
- package/dist/cjs/hu-6b527d8e.js +84 -0
- package/dist/cjs/id-d78f12ec.js +62 -0
- package/dist/cjs/index-0e50040c.js +1938 -0
- package/dist/cjs/index-2b60e135.js +201 -0
- package/dist/cjs/index.es-4542630e.js +10808 -0
- package/dist/cjs/interfaces-d539e30c.js +85 -0
- package/dist/cjs/it-15242935.js +62 -0
- package/dist/cjs/it-ch-9dc21944.js +62 -0
- package/dist/cjs/ja-f702cfc2.js +68 -0
- package/dist/cjs/ko-aa9bde2c.js +68 -0
- package/dist/cjs/label-6e33e971.js +136 -0
- package/dist/cjs/list-item.cjs.entry.js +60 -60
- package/dist/cjs/loadModules-31cab7ac.js +30 -0
- package/dist/cjs/loadable-bac9cdd6.js +94 -0
- package/dist/cjs/loader.cjs.js +5 -14
- package/dist/cjs/locale-c63a1b57.js +604 -0
- package/dist/cjs/locale-d15cd743.js +416 -0
- package/dist/cjs/lt-e741ff2f.js +93 -0
- package/dist/cjs/lv-92d6768e.js +62 -0
- package/dist/cjs/map-select-tools_3.cjs.entry.js +1285 -1285
- package/dist/cjs/mapViewUtils-9da2dddd.js +411 -0
- package/dist/cjs/mk-b209ac0d.js +62 -0
- package/dist/cjs/nb-db13e666.js +63 -0
- package/dist/cjs/nl-fcd9e0c5.js +63 -0
- package/dist/cjs/openCloseComponent-5d70fcd8.js +84 -0
- package/dist/cjs/pci-calculator.cjs.entry.js +102 -102
- package/dist/cjs/pciUtils-e0ddeb7c.js +847 -0
- package/dist/cjs/pl-87c83322.js +110 -0
- package/dist/cjs/pt-b0b5f472.js +63 -0
- package/dist/cjs/pt-br-03333e90.js +61 -0
- package/dist/cjs/public-notification.cjs.entry.js +844 -844
- package/dist/cjs/publicNotificationStore-55edd658.js +51 -0
- package/dist/cjs/ro-c3661b73.js +62 -0
- package/dist/cjs/ru-8dd3fd58.js +122 -0
- package/dist/cjs/shared-list-render-c0adb192.js +364 -0
- package/dist/cjs/sk-151d9acf.js +144 -0
- package/dist/cjs/sl-9b45a152.js +62 -0
- package/dist/cjs/solution-configuration.cjs.entry.js +888 -888
- package/dist/cjs/solution-contents_3.cjs.entry.js +21506 -21506
- package/dist/cjs/solution-store-0004e4e6.js +4100 -0
- package/dist/cjs/solutions-components.cjs.js +5 -5
- package/dist/cjs/sortableComponent-58679f07.js +3112 -0
- package/dist/cjs/sr-186bf15c.js +97 -0
- package/dist/cjs/store-manager.cjs.entry.js +52 -52
- package/dist/cjs/sv-a93fee0c.js +67 -0
- package/dist/cjs/t9n-1d032c30.js +100 -0
- package/dist/cjs/th-41680352.js +61 -0
- package/dist/cjs/throttle-aeeb1b4d.js +75 -0
- package/dist/cjs/time-5e450ec8.js +208 -0
- package/dist/cjs/tr-0bd886d6.js +62 -0
- package/dist/cjs/uk-4fade133.js +100 -0
- package/dist/cjs/utils-acfeed9d.js +64 -0
- package/dist/cjs/utils-ae9bdd59.js +55 -0
- package/dist/cjs/vi-1c9fe343.js +66 -0
- package/dist/cjs/zh-cn-28fa1fe1.js +90 -0
- package/dist/cjs/zh-hk-5abf8eb5.js +67 -0
- package/dist/cjs/zh-tw-07500357.js +88 -0
- package/dist/collection/collection-manifest.json +37 -35
- package/dist/collection/components/basemap-gallery/basemap-gallery.css +19 -0
- package/dist/collection/components/basemap-gallery/basemap-gallery.js +166 -0
- package/dist/collection/components/basemap-gallery/test/basemap-gallery.e2e.js +29 -0
- package/dist/collection/components/basemap-gallery/test/basemap-gallery.spec.js +37 -0
- package/dist/collection/components/buffer-tools/buffer-tools.js +481 -476
- package/dist/collection/components/buffer-tools/test/buffer-tools.e2e.js +29 -0
- package/dist/collection/components/buffer-tools/test/buffer-tools.spec.js +160 -0
- package/dist/collection/components/card-manager/card-manager.js +199 -197
- package/dist/collection/components/card-manager/test/card-manager.e2e.js +29 -0
- package/dist/collection/components/card-manager/test/card-manager.spec.js +37 -0
- package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +448 -406
- package/dist/collection/components/crowdsource-manager/test/crowdsource-manager.e2e.js +29 -0
- package/dist/collection/components/crowdsource-manager/test/crowdsource-manager.spec.js +37 -0
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +89 -89
- package/dist/collection/components/crowdsource-reporter/test/crowdsource-reporter.e2e.js +29 -0
- package/dist/collection/components/crowdsource-reporter/test/crowdsource-reporter.spec.js +37 -0
- package/dist/collection/components/deduct-calculator/deduct-calculator.js +143 -143
- package/dist/collection/components/deduct-calculator/test/deduct-calculator.e2e.js +29 -0
- package/dist/collection/components/deduct-calculator/test/deduct-calculator.spec.js +37 -0
- package/dist/collection/components/edit-card/edit-card.js +302 -300
- package/dist/collection/components/edit-card/test/edit-card.e2e.js +14 -0
- package/dist/collection/components/edit-card/test/edit-card.spec.js +22 -0
- package/dist/collection/components/info-card/info-card.js +361 -357
- package/dist/collection/components/info-card/test/info-card.e2e.js +29 -0
- package/dist/collection/components/info-card/test/info-card.spec.js +37 -0
- package/dist/collection/components/json-editor/json-editor.js +618 -614
- package/dist/collection/components/json-editor/test/json-editor.e2e.js +36 -0
- package/dist/collection/components/json-editor/test/json-editor.spec.js +65 -0
- package/dist/collection/components/layer-table/layer-table.js +620 -548
- package/dist/collection/components/layer-table/test/layer-table.e2e.js +29 -0
- package/dist/collection/components/layer-table/test/layer-table.spec.js +37 -0
- package/dist/collection/components/layout-manager/layout-manager.js +136 -135
- package/dist/collection/components/layout-manager/test/layout-manager.e2e.js +29 -0
- package/dist/collection/components/layout-manager/test/layout-manager.spec.js +37 -0
- package/dist/collection/components/list-item/list-item.js +89 -89
- package/dist/collection/components/list-item/test/list-item.e2e.js +29 -0
- package/dist/collection/components/list-item/test/list-item.spec.js +37 -0
- package/dist/collection/components/map-card/map-card.css +0 -7
- package/dist/collection/components/map-card/map-card.js +211 -203
- package/dist/collection/components/map-card/test/map-card.e2e.js +29 -0
- package/dist/collection/components/map-card/test/map-card.spec.js +37 -0
- package/dist/collection/components/map-draw-tools/map-draw-tools.js +692 -683
- package/dist/collection/components/map-draw-tools/test/map-draw-tools.e2e.js +29 -0
- package/dist/collection/components/map-draw-tools/test/map-draw-tools.spec.js +37 -0
- package/dist/collection/components/map-layer-picker/map-layer-picker.js +424 -423
- package/dist/collection/components/map-layer-picker/test/map-layer-picker.e2e.js +29 -0
- package/dist/collection/components/map-layer-picker/test/map-layer-picker.spec.js +114 -0
- package/dist/collection/components/map-picker/map-picker.js +226 -224
- package/dist/collection/components/map-picker/test/map-picker.e2e.js +29 -0
- package/dist/collection/components/map-picker/test/map-picker.spec.js +37 -0
- package/dist/collection/components/map-search/map-search.css +24 -0
- package/dist/collection/components/map-search/map-search.js +321 -0
- package/dist/collection/components/map-search/test/map-search.e2e.js +29 -0
- package/dist/collection/components/map-search/test/map-search.spec.js +37 -0
- package/dist/collection/components/map-select-tools/map-select-tools.js +1242 -1229
- package/dist/collection/components/map-select-tools/test/map-select-tools.e2e.js +29 -0
- package/dist/collection/components/map-select-tools/test/map-select-tools.spec.js +366 -0
- package/dist/collection/components/map-tools/map-tools.js +337 -210
- package/dist/collection/components/map-tools/test/map-tools.e2e.js +29 -0
- package/dist/collection/components/map-tools/test/map-tools.spec.js +37 -0
- package/dist/collection/components/pci-calculator/pci-calculator.js +143 -143
- package/dist/collection/components/pci-calculator/test/pci-calculator.e2e.js +29 -0
- package/dist/collection/components/pci-calculator/test/pci-calculator.spec.js +37 -0
- package/dist/collection/components/pdf-download/pdf-download.js +338 -333
- package/dist/collection/components/pdf-download/test/pdf-download.e2e.js +76 -0
- package/dist/collection/components/pdf-download/test/pdf-download.spec.js +107 -0
- package/dist/collection/components/public-notification/public-notification.js +1295 -1287
- package/dist/collection/components/public-notification/test/public-notification.spec.js +161 -0
- package/dist/collection/components/refine-selection/refine-selection.js +608 -601
- package/dist/collection/components/refine-selection/test/refine-selection.e2e.js +14 -0
- package/dist/collection/components/refine-selection/test/refine-selection.spec.js +22 -0
- package/dist/collection/components/solution-configuration/solution-configuration.js +739 -735
- package/dist/collection/components/solution-configuration/test/solution-configuration.e2e.js +36 -0
- package/dist/collection/components/solution-configuration/test/solution-configuration.spec.js +119 -0
- package/dist/collection/components/solution-contents/solution-contents.js +163 -162
- package/dist/collection/components/solution-contents/test/solution-contents.e2e.js +94 -0
- package/dist/collection/components/solution-contents/test/solution-contents.spec.js +143 -0
- package/dist/collection/components/solution-item/solution-item.js +203 -202
- package/dist/collection/components/solution-item/test/solution-item.e2e.js +36 -0
- package/dist/collection/components/solution-item/test/solution-item.spec.js +77 -0
- package/dist/collection/components/solution-item-details/solution-item-details.js +248 -248
- package/dist/collection/components/solution-item-details/test/solution-item-details.e2e.js +36 -0
- package/dist/collection/components/solution-item-details/test/solution-item-details.spec.js +142 -0
- package/dist/collection/components/solution-item-icon/solution-item-icon.js +398 -398
- package/dist/collection/components/solution-item-icon/test/solution-item-icon.e2e.js +29 -0
- package/dist/collection/components/solution-item-icon/test/solution-item-icon.spec.js +39 -0
- package/dist/collection/components/solution-item-sharing/solution-item-sharing.js +200 -199
- package/dist/collection/components/solution-item-sharing/test/solution-item-sharing.e2e.js +36 -0
- package/dist/collection/components/solution-item-sharing/test/solution-item-sharing.spec.js +54 -0
- package/dist/collection/components/solution-organization-variables/solution-organization-variables.js +156 -156
- package/dist/collection/components/solution-organization-variables/test/solution-organization-variables.e2e.js +36 -0
- package/dist/collection/components/solution-organization-variables/test/solution-organization-variables.spec.js +65 -0
- package/dist/collection/components/solution-resource-item/solution-resource-item.js +348 -347
- package/dist/collection/components/solution-resource-item/test/solution-resource-item.e2e.js +36 -0
- package/dist/collection/components/solution-resource-item/test/solution-resource-item.spec.js +55 -0
- package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js +515 -510
- package/dist/collection/components/solution-spatial-ref/spatialreferences.js +21046 -21046
- package/dist/collection/components/solution-spatial-ref/test/solution-spatial-ref.e2e.js +36 -0
- package/dist/collection/components/solution-spatial-ref/test/solution-spatial-ref.spec.js +175 -0
- package/dist/collection/components/solution-template-data/solution-template-data.js +230 -230
- package/dist/collection/components/solution-template-data/test/solution-template-data.e2e.js +36 -0
- package/dist/collection/components/solution-template-data/test/solution-template-data.spec.js +60 -0
- package/dist/collection/components/solution-variables/solution-variables.js +168 -168
- package/dist/collection/components/solution-variables/test/solution-variables.e2e.js +36 -0
- package/dist/collection/components/solution-variables/test/solution-variables.spec.js +131 -0
- package/dist/collection/components/store-manager/store-manager.js +128 -127
- package/dist/collection/demos/crowdsource-manager.html +3 -3
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/common.js +296 -296
- package/dist/collection/utils/csvDownload.js +41 -41
- package/dist/collection/utils/csvUtils.js +37 -37
- package/dist/collection/utils/downloadUtils.js +530 -530
- package/dist/collection/utils/interfaces.js +83 -83
- package/dist/collection/utils/interfaces.ts +2 -0
- package/dist/collection/utils/languageUtil.js +90 -90
- package/dist/collection/utils/loadModules.js +25 -25
- package/dist/collection/utils/locale.js +61 -61
- package/dist/collection/utils/mapViewUtils.js +240 -240
- package/dist/collection/utils/pciUtils.js +842 -842
- package/dist/collection/utils/pdfUtils.js +87 -87
- package/dist/collection/utils/publicNotificationStore.js +47 -47
- package/dist/collection/utils/queryUtils.js +200 -200
- package/dist/collection/utils/solution-store.js +584 -584
- package/dist/collection/utils/templates.e2e.js +30 -0
- package/dist/collection/utils/templates.js +346 -346
- package/dist/collection/utils/test/csvUtils.spec.js +51 -0
- package/dist/collection/utils/test/downloadUtils.spec.js +357 -0
- package/dist/collection/utils/test/mocks/jsApi.js +79 -79
- package/dist/collection/utils/test/pciUtils.spec.js +302 -0
- package/dist/collection/utils/test/solution-store.spec.js +444 -0
- package/dist/collection/utils/test/testUtils.js +123 -123
- package/dist/collection/utils/types.js +1 -1
- package/dist/components/ExpandToggle.js +1 -1
- package/dist/components/action-bar.js +262 -262
- package/dist/components/action-group.js +144 -144
- package/dist/components/action-menu.js +310 -310
- package/dist/components/action.js +185 -185
- package/dist/components/alert.js +286 -286
- package/dist/components/avatar.js +99 -99
- package/dist/components/basemap-gallery.d.ts +11 -0
- package/dist/components/basemap-gallery.js +11 -0
- package/dist/components/basemap-gallery2.js +118 -0
- package/dist/components/buffer-tools2.js +263 -263
- package/dist/components/button.js +225 -225
- package/dist/components/calcite-accordion-item.js +168 -167
- package/dist/components/calcite-accordion.js +95 -95
- package/dist/components/calcite-action-pad.js +180 -180
- package/dist/components/calcite-block-section.js +150 -150
- package/dist/components/calcite-block.js +186 -186
- package/dist/components/calcite-card.js +132 -132
- package/dist/components/calcite-chip-group.js +181 -181
- package/dist/components/calcite-color-picker.js +979 -979
- package/dist/components/calcite-combobox-item-group.js +52 -52
- package/dist/components/calcite-fab.js +104 -104
- package/dist/components/calcite-filter.js +1 -1
- package/dist/components/calcite-flow-item.js +204 -204
- package/dist/components/calcite-flow.js +136 -136
- package/dist/components/calcite-inline-editable.js +259 -259
- package/dist/components/calcite-input-date-picker.js +703 -703
- package/dist/components/calcite-input-time-picker.js +595 -595
- package/dist/components/calcite-input-time-zone.js +189 -189
- package/dist/components/calcite-label.js +1 -1
- package/dist/components/calcite-list-item-group.js +64 -64
- package/dist/components/calcite-menu-item.js +297 -296
- package/dist/components/calcite-modal.js +328 -328
- package/dist/components/calcite-navigation-logo.js +76 -76
- package/dist/components/calcite-navigation-user.js +78 -78
- package/dist/components/calcite-navigation.js +166 -166
- package/dist/components/calcite-option-group.js +42 -42
- package/dist/components/calcite-pagination.js +217 -217
- package/dist/components/calcite-pick-list-group.js +59 -59
- package/dist/components/calcite-pick-list.js +150 -150
- package/dist/components/calcite-radio-button-group.js +141 -141
- package/dist/components/calcite-radio-button.js +316 -316
- package/dist/components/calcite-rating.js +279 -279
- package/dist/components/calcite-shell-center-row.js +57 -57
- package/dist/components/calcite-sortable-list.js +153 -153
- package/dist/components/calcite-split-button.js +142 -142
- package/dist/components/calcite-stack.js +1 -1
- package/dist/components/calcite-stepper-item.js +225 -225
- package/dist/components/calcite-stepper.js +212 -212
- package/dist/components/calcite-text-area.js +266 -266
- package/dist/components/calcite-tile-select-group.js +44 -44
- package/dist/components/calcite-tile-select.js +223 -223
- package/dist/components/calcite-tip-group.js +27 -27
- package/dist/components/calcite-tip-manager.js +222 -222
- package/dist/components/calcite-tip.js +126 -126
- package/dist/components/card-manager2.js +155 -155
- package/dist/components/checkbox.js +146 -146
- package/dist/components/chip.js +245 -245
- package/dist/components/color-picker-hex-input.js +287 -287
- package/dist/components/color-picker-swatch.js +79 -79
- package/dist/components/combobox-item.js +135 -135
- package/dist/components/combobox.js +921 -921
- package/dist/components/crowdsource-manager.js +528 -512
- package/dist/components/crowdsource-reporter.js +75 -75
- package/dist/components/date-picker-day.js +110 -109
- package/dist/components/date-picker-month-header.js +197 -197
- package/dist/components/date-picker-month.js +372 -372
- package/dist/components/date-picker.js +492 -492
- package/dist/components/date.js +1 -1
- package/dist/components/deduct-calculator2.js +981 -981
- package/dist/components/dom.js +2 -23
- package/dist/components/downloadUtils.js +655 -655
- package/dist/components/dropdown-group.js +72 -72
- package/dist/components/dropdown-item.js +195 -195
- package/dist/components/dropdown.js +420 -420
- package/dist/components/edit-card2.js +191 -191
- package/dist/components/esri-loader.js +301 -0
- package/dist/components/filter.js +751 -202
- package/dist/components/filter2.js +191 -740
- package/dist/components/floating-ui.js +2 -2
- package/dist/components/focusTrapComponent.js +1 -1
- package/dist/components/graph.js +86 -86
- package/dist/components/handle.js +165 -165
- package/dist/components/icon.js +99 -99
- package/dist/components/index.d.ts +5 -35
- package/dist/components/index.js +26 -154
- package/dist/components/info-card2.js +251 -251
- package/dist/components/input-message.js +66 -66
- package/dist/components/input-number.js +600 -599
- package/dist/components/input-text.js +368 -367
- package/dist/components/input.js +687 -686
- package/dist/components/interfaces.js +78 -78
- package/dist/components/json-editor2.js +425 -425
- package/dist/components/label.js +117 -65
- package/dist/components/label2.js +58 -110
- package/dist/components/layer-table2.js +598 -547
- package/dist/components/layout-manager2.js +118 -118
- package/dist/components/link.js +123 -122
- package/dist/components/list-item.js +75 -75
- package/dist/components/list-item2.js +431 -431
- package/dist/components/list.js +510 -510
- package/dist/components/loadModules.js +19 -19
- package/dist/components/loader.js +86 -86
- package/dist/components/locale.js +106 -399
- package/dist/components/locale2.js +2 -2
- package/dist/components/map-card2.js +236 -218
- package/dist/components/map-draw-tools2.js +383 -383
- package/dist/components/map-layer-picker2.js +291 -291
- package/dist/components/map-picker2.js +235 -235
- package/dist/components/map-search.d.ts +11 -0
- package/dist/components/map-search.js +11 -0
- package/dist/components/map-search2.js +201 -0
- package/dist/components/map-select-tools2.js +916 -916
- package/dist/components/map-tools2.js +287 -177
- package/dist/components/mapViewUtils.js +235 -235
- package/dist/components/menu.js +178 -178
- package/dist/components/notice.js +130 -130
- package/dist/components/option.js +91 -91
- package/dist/components/panel.js +307 -307
- package/dist/components/pci-calculator.js +169 -169
- package/dist/components/pdf-download2.js +173 -173
- package/dist/components/pick-list-item.js +219 -219
- package/dist/components/popover.js +349 -349
- package/dist/components/progress.js +46 -45
- package/dist/components/public-notification.js +1101 -1101
- package/dist/components/publicNotificationStore.js +39 -39
- package/dist/components/queryUtils.js +152 -152
- package/dist/components/refine-selection2.js +546 -546
- package/dist/components/resources.js +17 -9
- package/dist/components/resources2.js +9 -13
- package/dist/components/resources3.js +9 -5
- package/dist/components/scrim.js +115 -115
- package/dist/components/segmented-control-item.js +62 -62
- package/dist/components/segmented-control.js +213 -213
- package/dist/components/select.js +226 -226
- package/dist/components/shared-list-render.js +3 -3
- package/dist/components/shell-panel.js +398 -397
- package/dist/components/shell.js +119 -119
- package/dist/components/slider.js +898 -898
- package/dist/components/solution-configuration.js +1095 -1095
- package/dist/components/solution-contents2.js +111 -111
- package/dist/components/solution-item-details2.js +217 -217
- package/dist/components/solution-item-icon2.js +330 -330
- package/dist/components/solution-item-sharing2.js +151 -151
- package/dist/components/solution-item2.js +269 -269
- package/dist/components/solution-organization-variables2.js +115 -115
- package/dist/components/solution-resource-item2.js +331 -331
- package/dist/components/solution-spatial-ref2.js +21420 -21420
- package/dist/components/solution-store.js +575 -575
- package/dist/components/solution-template-data2.js +202 -202
- package/dist/components/solution-variables2.js +132 -132
- package/dist/components/sortableComponent.js +1 -1
- package/dist/components/stack.js +78 -78
- package/dist/components/store-manager.js +70 -70
- package/dist/components/switch.js +118 -118
- package/dist/components/tab-nav.js +254 -254
- package/dist/components/tab-title.js +300 -300
- package/dist/components/tab.js +111 -111
- package/dist/components/tabs.js +130 -130
- package/dist/components/tile.js +89 -89
- package/dist/components/time-picker.js +654 -654
- package/dist/components/tooltip.js +207 -207
- package/dist/components/tree-item.js +288 -287
- package/dist/components/tree.js +281 -281
- package/dist/components/utils.js +1 -1
- package/dist/components/utils2.js +2 -2
- package/dist/components/utils3.js +1 -1
- package/dist/components/value-list-item.js +169 -169
- package/dist/components/value-list.js +275 -275
- package/dist/esm/ExpandToggle-3d10bd1e.js +109 -0
- package/dist/esm/FloatingArrow-29db6da6.js +46 -0
- package/dist/esm/Heading-cb79e5b2.js +22 -0
- package/dist/esm/app-globals-5cbac6b0.js +67 -0
- package/dist/esm/ar-4b751ba8.js +95 -0
- package/dist/esm/basemap-gallery_4.entry.js +615 -0
- package/dist/esm/bg-5d8bf5ea.js +76 -0
- package/dist/esm/bs-ff510e71.js +45 -0
- package/dist/esm/buffer-tools_4.entry.js +1437 -1437
- package/dist/esm/ca-b9a5e51a.js +65 -0
- package/dist/esm/calcite-accordion-item.entry.js +140 -140
- package/dist/esm/calcite-accordion.entry.js +75 -75
- package/dist/esm/calcite-action-bar.entry.js +216 -216
- package/dist/esm/calcite-action-group_2.entry.js +365 -365
- package/dist/esm/calcite-action-pad.entry.js +135 -135
- package/dist/esm/calcite-action_2.entry.js +445 -445
- package/dist/esm/calcite-alert.entry.js +247 -247
- package/dist/esm/calcite-avatar.entry.js +73 -73
- package/dist/esm/calcite-block-section.entry.js +122 -122
- package/dist/esm/calcite-block.entry.js +131 -131
- package/dist/esm/calcite-button.entry.js +182 -182
- package/dist/esm/calcite-card.entry.js +99 -99
- package/dist/esm/calcite-checkbox.entry.js +125 -125
- package/dist/esm/calcite-chip-group.entry.js +164 -164
- package/dist/esm/calcite-chip.entry.js +213 -213
- package/dist/esm/calcite-color-picker-hex-input_2.entry.js +303 -303
- package/dist/esm/calcite-color-picker.entry.js +886 -886
- package/dist/esm/calcite-combobox-item-group.entry.js +35 -35
- package/dist/esm/calcite-combobox_6.entry.js +1786 -1786
- package/dist/esm/calcite-date-picker-day_3.entry.js +589 -589
- package/dist/esm/calcite-date-picker.entry.js +434 -434
- package/dist/esm/calcite-fab.entry.js +66 -66
- package/dist/esm/calcite-filter_5.entry.js +1131 -1131
- package/dist/esm/calcite-flow-item.entry.js +146 -146
- package/dist/esm/calcite-flow.entry.js +117 -117
- package/dist/esm/calcite-graph.entry.js +66 -66
- package/dist/esm/calcite-icon.entry.js +80 -80
- package/dist/esm/calcite-inline-editable.entry.js +225 -225
- package/dist/esm/calcite-input-date-picker.entry.js +632 -632
- package/dist/esm/calcite-input-number_2.entry.js +846 -846
- package/dist/esm/calcite-input-time-picker-13448515.js +1715 -0
- package/dist/esm/calcite-input-time-picker.entry.js +15 -15
- package/dist/esm/calcite-input-time-zone.entry.js +150 -150
- package/dist/esm/calcite-input_2.entry.js +645 -645
- package/dist/esm/calcite-label.entry.js +40 -40
- package/dist/esm/calcite-link.entry.js +96 -96
- package/dist/esm/calcite-list-item-group.entry.js +46 -46
- package/dist/esm/calcite-loader.entry.js +65 -65
- package/dist/esm/calcite-menu-item.entry.js +246 -246
- package/dist/esm/calcite-menu.entry.js +161 -161
- package/dist/esm/calcite-modal.entry.js +282 -282
- package/dist/esm/calcite-navigation-logo.entry.js +52 -52
- package/dist/esm/calcite-navigation-user.entry.js +45 -45
- package/dist/esm/calcite-navigation.entry.js +126 -126
- package/dist/esm/calcite-notice.entry.js +105 -105
- package/dist/esm/calcite-option-group.entry.js +24 -24
- package/dist/esm/calcite-option_2.entry.js +271 -271
- package/dist/esm/calcite-pagination.entry.js +191 -191
- package/dist/esm/calcite-panel_2.entry.js +346 -346
- package/dist/esm/calcite-pick-list-group.entry.js +46 -46
- package/dist/esm/calcite-pick-list-item.entry.js +181 -181
- package/dist/esm/calcite-pick-list.entry.js +130 -130
- package/dist/esm/calcite-radio-button-group.entry.js +118 -118
- package/dist/esm/calcite-radio-button.entry.js +292 -292
- package/dist/esm/calcite-rating.entry.js +245 -245
- package/dist/esm/calcite-scrim.entry.js +93 -93
- package/dist/esm/calcite-segmented-control_2.entry.js +225 -225
- package/dist/esm/calcite-shell-center-row.entry.js +42 -42
- package/dist/esm/calcite-shell-panel_14.entry.js +2604 -2604
- package/dist/esm/calcite-sortable-list.entry.js +134 -134
- package/dist/esm/calcite-split-button.entry.js +92 -92
- package/dist/esm/calcite-stepper-item.entry.js +197 -197
- package/dist/esm/calcite-stepper.entry.js +187 -187
- package/dist/esm/calcite-switch.entry.js +100 -100
- package/dist/esm/calcite-text-area.entry.js +235 -235
- package/dist/esm/calcite-tile-select-group.entry.js +27 -27
- package/dist/esm/calcite-tile-select.entry.js +180 -180
- package/dist/esm/calcite-tile.entry.js +58 -58
- package/dist/esm/calcite-time-picker.entry.js +619 -619
- package/dist/esm/calcite-tip-group.entry.js +10 -10
- package/dist/esm/calcite-tip-manager.entry.js +185 -185
- package/dist/esm/calcite-tip.entry.js +94 -94
- package/dist/esm/calcite-tooltip.entry.js +185 -185
- package/dist/esm/calcite-tree_3.entry.js +821 -821
- package/dist/esm/card-manager_4.entry.js +707 -653
- package/dist/esm/conditionalSlot-27a0fce0.js +60 -0
- package/dist/esm/crowdsource-manager.entry.js +258 -256
- package/dist/esm/crowdsource-reporter.entry.js +60 -60
- package/dist/esm/cs-f21a0628.js +141 -0
- package/dist/esm/da-dc48fc4c.js +60 -0
- package/dist/esm/date-0ed48e97.js +235 -0
- package/dist/esm/de-59290071.js +85 -0
- package/dist/esm/de-at-cd6e6ab7.js +84 -0
- package/dist/esm/de-ch-27c44e34.js +84 -0
- package/dist/esm/deduct-calculator.entry.js +90 -90
- package/dist/esm/dom-843e3afd.js +1017 -0
- package/dist/esm/downloadUtils-63661805.js +2761 -0
- package/dist/esm/edit-card_2.entry.js +345 -345
- package/dist/esm/el-f09fdec6.js +60 -0
- package/dist/esm/en-au-90087aa5.js +60 -0
- package/dist/esm/en-ca-10751695.js +59 -0
- package/dist/esm/en-gb-0f8547bd.js +63 -0
- package/dist/esm/es-b0997cf1.js +60 -0
- package/dist/esm/es-mx-226f5028.js +59 -0
- package/dist/esm/et-dc96c453.js +86 -0
- package/dist/esm/fi-0941704d.js +109 -0
- package/dist/esm/filter-1cac3edf.js +763 -0
- package/dist/esm/floating-ui-d28d0fd6.js +1880 -0
- package/dist/esm/focusTrapComponent-ff3a9f28.js +1004 -0
- package/dist/esm/form-11c6a015.js +280 -0
- package/dist/esm/fr-8da3458d.js +62 -0
- package/dist/esm/fr-ch-739ceddf.js +60 -0
- package/dist/esm/he-8b662dfa.js +99 -0
- package/dist/esm/hi-10996f89.js +59 -0
- package/dist/esm/hr-42c2024d.js +74 -0
- package/dist/esm/hu-4768b3ff.js +82 -0
- package/dist/esm/id-24a08170.js +60 -0
- package/dist/esm/index-b5d9d795.js +1904 -0
- package/dist/esm/index-b91c174c.js +199 -0
- package/dist/esm/index.es-3a3aa8e3.js +10722 -0
- package/dist/esm/interfaces-5a2fe8b4.js +85 -0
- package/dist/esm/it-ad09649f.js +60 -0
- package/dist/esm/it-ch-b05fc10d.js +60 -0
- package/dist/esm/ja-ab839b73.js +66 -0
- package/dist/esm/ko-c778539e.js +66 -0
- package/dist/esm/label-6a1caf64.js +130 -0
- package/dist/esm/list-item.entry.js +60 -60
- package/dist/esm/loadModules-2ecd1e44.js +28 -0
- package/dist/esm/loadable-6bca96ad.js +89 -0
- package/dist/esm/loader.js +6 -15
- package/dist/esm/locale-aa3de591.js +412 -0
- package/dist/esm/locale-d8561d54.js +592 -0
- package/dist/esm/lt-447d9aa9.js +91 -0
- package/dist/esm/lv-4d715e11.js +60 -0
- package/dist/esm/map-select-tools_3.entry.js +1285 -1285
- package/dist/esm/mapViewUtils-f0c04325.js +395 -0
- package/dist/esm/mk-b3d7401a.js +60 -0
- package/dist/esm/nb-2b4a8366.js +61 -0
- package/dist/esm/nl-c0db1da2.js +61 -0
- package/dist/esm/openCloseComponent-2b5c6bed.js +82 -0
- package/dist/esm/pci-calculator.entry.js +102 -102
- package/dist/esm/pciUtils-59c29b42.js +844 -0
- package/dist/esm/pl-0d322bb4.js +108 -0
- package/dist/esm/pt-5997598c.js +61 -0
- package/dist/esm/pt-br-6b77e7db.js +59 -0
- package/dist/esm/public-notification.entry.js +844 -844
- package/dist/esm/publicNotificationStore-ade82148.js +49 -0
- package/dist/esm/resources-40d8e06f.js +20 -0
- package/dist/esm/ro-ac3724e0.js +60 -0
- package/dist/esm/ru-4e75151f.js +120 -0
- package/dist/esm/shared-list-render-abd19c8d.js +342 -0
- package/dist/esm/sk-bbfa22a3.js +142 -0
- package/dist/esm/sl-867cecfc.js +60 -0
- package/dist/esm/solution-configuration.entry.js +888 -888
- package/dist/esm/solution-contents_3.entry.js +21506 -21506
- package/dist/esm/solution-store-46bc46a5.js +4092 -0
- package/dist/esm/solutions-components.js +6 -6
- package/dist/esm/sortableComponent-db502e97.js +3109 -0
- package/dist/esm/sr-198b5c00.js +95 -0
- package/dist/esm/store-manager.entry.js +52 -52
- package/dist/esm/sv-02d64370.js +65 -0
- package/dist/esm/t9n-76168237.js +95 -0
- package/dist/esm/th-1616e303.js +59 -0
- package/dist/esm/throttle-9ab70933.js +73 -0
- package/dist/esm/time-6721a4c2.js +195 -0
- package/dist/esm/tr-f4619f64.js +60 -0
- package/dist/esm/uk-df7df34a.js +98 -0
- package/dist/esm/utils-ccfd94a7.js +45 -0
- package/dist/esm/utils-f54411df.js +61 -0
- package/dist/esm/vi-176ca9f7.js +64 -0
- package/dist/esm/zh-cn-e13d83d1.js +88 -0
- package/dist/esm/zh-hk-d97365d8.js +65 -0
- package/dist/esm/zh-tw-a2b6f0b7.js +86 -0
- package/dist/loader/index.d.ts +2 -2
- package/dist/solutions-components/demos/crowdsource-manager.html +3 -3
- package/dist/solutions-components/p-022a9b7a.js +6 -0
- package/dist/solutions-components/p-03fccde6.entry.js +11 -0
- package/dist/solutions-components/p-052ff2c7.js +6 -0
- package/dist/solutions-components/p-05db4340.js +6 -0
- package/dist/solutions-components/p-07bc4f07.entry.js +11 -0
- package/dist/solutions-components/p-0cc32f06.js +6 -0
- package/dist/solutions-components/p-0e7914e6.entry.js +11 -0
- package/dist/solutions-components/p-0ece6df1.entry.js +12 -0
- package/dist/solutions-components/p-0f8440bb.entry.js +6 -0
- package/dist/solutions-components/p-0fbc27fd.entry.js +11 -0
- package/dist/solutions-components/p-10248e04.js +11 -0
- package/dist/solutions-components/p-108fbf59.entry.js +6 -0
- package/dist/solutions-components/p-12a4fa84.js +6 -0
- package/dist/solutions-components/p-13290851.js +259 -0
- package/dist/solutions-components/p-15ef7894.js +6 -0
- package/dist/solutions-components/p-164be8ef.entry.js +6 -0
- package/dist/solutions-components/p-19fe7725.js +6 -0
- package/dist/solutions-components/p-1add4e39.entry.js +11 -0
- package/dist/solutions-components/p-1ea1dcac.js +61 -0
- package/dist/solutions-components/p-1ede2e18.js +11 -0
- package/dist/solutions-components/p-2005280f.js +11 -0
- package/dist/solutions-components/p-216801d5.js +6 -0
- package/dist/solutions-components/p-21f00df6.js +6 -0
- package/dist/solutions-components/p-22d580b0.entry.js +11 -0
- package/dist/solutions-components/p-2656168f.entry.js +11 -0
- package/dist/solutions-components/p-27a1ac1f.entry.js +17 -0
- package/dist/solutions-components/p-28d2670f.entry.js +6 -0
- package/dist/solutions-components/p-29d41c7e.js +11 -0
- package/dist/solutions-components/p-2ae17fa2.js +6 -0
- package/dist/solutions-components/p-2b252afd.entry.js +6 -0
- package/dist/solutions-components/p-2b96e551.entry.js +11 -0
- package/dist/solutions-components/p-2c0dc7b1.js +6 -0
- package/dist/solutions-components/p-2d70d3fd.js +12 -0
- package/dist/solutions-components/p-31316d61.entry.js +11 -0
- package/dist/solutions-components/p-31ff3452.entry.js +11 -0
- package/dist/solutions-components/p-326fa270.js +6 -0
- package/dist/solutions-components/p-32ef065d.entry.js +11 -0
- package/dist/solutions-components/p-32f9c709.js +6 -0
- package/dist/solutions-components/p-3445a8c6.js +21 -0
- package/dist/solutions-components/p-35123c90.js +6 -0
- package/dist/solutions-components/p-361f1fe1.js +11 -0
- package/dist/solutions-components/p-39ff5ee5.js +11 -0
- package/dist/solutions-components/p-3aba40e8.js +18 -0
- package/dist/solutions-components/p-3bd99fc9.js +11 -0
- package/dist/solutions-components/p-3cbe5ef3.js +6 -0
- package/dist/solutions-components/p-3cce003d.js +27 -0
- package/dist/solutions-components/p-3e139360.js +6 -0
- package/dist/solutions-components/p-3f0193e9.js +6 -0
- package/dist/solutions-components/p-418d0b60.entry.js +6 -0
- package/dist/solutions-components/p-421d5e7c.js +6 -0
- package/dist/solutions-components/p-42c7a5fa.entry.js +11 -0
- package/dist/solutions-components/p-46d5970b.entry.js +37 -0
- package/dist/solutions-components/p-4b95d05e.entry.js +6 -0
- package/dist/solutions-components/p-4bc7b875.entry.js +11 -0
- package/dist/solutions-components/p-4c43820f.entry.js +6 -0
- package/dist/solutions-components/p-4d17943f.js +6 -0
- package/dist/solutions-components/p-4daae757.js +6 -0
- package/dist/solutions-components/p-4e4b55b9.entry.js +37 -0
- package/dist/solutions-components/p-4f0c3fc1.js +6 -0
- package/dist/solutions-components/p-525f1188.js +11 -0
- package/dist/solutions-components/p-5383607a.js +22 -0
- package/dist/solutions-components/p-541697d0.js +11 -0
- package/dist/solutions-components/p-55aefaa8.entry.js +6 -0
- package/dist/solutions-components/p-56300653.js +16 -0
- package/dist/solutions-components/p-57c08531.entry.js +6 -0
- package/dist/solutions-components/p-5adf37ea.entry.js +12 -0
- package/dist/solutions-components/p-5b5a6ac8.entry.js +6 -0
- package/dist/solutions-components/p-5b9b1cbb.entry.js +11 -0
- package/dist/solutions-components/p-5c097e25.entry.js +11 -0
- package/dist/solutions-components/p-5e59219b.entry.js +6 -0
- package/dist/solutions-components/p-5f5c371e.js +6 -0
- package/dist/solutions-components/p-606ca126.js +6 -0
- package/dist/solutions-components/p-634e1240.js +6 -0
- package/dist/solutions-components/p-639cca97.js +6 -0
- package/dist/solutions-components/p-6431fd69.js +11 -0
- package/dist/solutions-components/p-647a4130.js +16 -0
- package/dist/solutions-components/p-6665fa1f.js +6 -0
- package/dist/solutions-components/p-67ce3c0c.entry.js +11 -0
- package/dist/solutions-components/p-680d193d.entry.js +11 -0
- package/dist/solutions-components/p-6a524392.entry.js +11 -0
- package/dist/solutions-components/p-6a820c4d.js +6 -0
- package/dist/solutions-components/p-6b2f2b85.js +17 -0
- package/dist/solutions-components/p-6de98c51.js +21 -0
- package/dist/solutions-components/p-754e2df2.js +6 -0
- package/dist/solutions-components/p-75f26870.js +474 -0
- package/dist/solutions-components/p-7601988d.entry.js +11 -0
- package/dist/solutions-components/p-761a033a.entry.js +11 -0
- package/dist/solutions-components/p-7920b5a2.entry.js +11 -0
- package/dist/solutions-components/p-7aa949a3.entry.js +11 -0
- package/dist/solutions-components/p-7b90c18e.entry.js +6 -0
- package/dist/solutions-components/p-7b9adfff.js +6 -0
- package/dist/solutions-components/p-7c33e500.entry.js +6 -0
- package/dist/solutions-components/p-804e4751.entry.js +17 -0
- package/dist/solutions-components/p-82199b7b.entry.js +6 -0
- package/dist/solutions-components/p-825bac0e.js +6 -0
- package/dist/solutions-components/p-844ee452.entry.js +11 -0
- package/dist/solutions-components/p-8a758303.js +17 -0
- package/dist/solutions-components/p-90bbf223.entry.js +6 -0
- package/dist/solutions-components/p-916f90ec.entry.js +6 -0
- package/dist/solutions-components/p-91caf655.entry.js +11 -0
- package/dist/solutions-components/p-93074bd4.entry.js +11 -0
- package/dist/solutions-components/p-9310b882.js +7 -0
- package/dist/solutions-components/p-955a956a.entry.js +23 -0
- package/dist/solutions-components/p-9603c3ff.entry.js +11 -0
- package/dist/solutions-components/p-97c47bbd.entry.js +18 -0
- package/dist/solutions-components/p-9bbc05ff.js +11 -0
- package/dist/solutions-components/p-9cb94ea0.js +6 -0
- package/dist/solutions-components/p-9e727488.js +6 -0
- package/dist/solutions-components/p-9fb16c72.entry.js +35 -0
- package/dist/solutions-components/p-a040efff.js +6 -0
- package/dist/solutions-components/p-a08bd8c1.entry.js +6 -0
- package/dist/solutions-components/p-a0a2c53d.js +21 -0
- package/dist/solutions-components/p-a0edbb27.js +6 -0
- package/dist/solutions-components/p-a258f5e7.js +6 -0
- package/dist/solutions-components/p-a2748b38.entry.js +6 -0
- package/dist/solutions-components/p-a6900100.entry.js +11 -0
- package/dist/solutions-components/p-a6c85bd7.entry.js +6 -0
- package/dist/solutions-components/p-a775ba2f.entry.js +11 -0
- package/dist/solutions-components/p-a777b18c.js +11 -0
- package/dist/solutions-components/p-a82f35c9.js +6 -0
- package/dist/solutions-components/p-a843af2a.js +6 -0
- package/dist/solutions-components/p-ab8f5c6b.entry.js +11 -0
- package/dist/solutions-components/p-abda8ca2.entry.js +11 -0
- package/dist/solutions-components/p-ad4d6d02.entry.js +22 -0
- package/dist/solutions-components/p-ad72a379.entry.js +16 -0
- package/dist/solutions-components/p-aeebdb15.js +6 -0
- package/dist/solutions-components/p-b0c4138f.entry.js +11 -0
- package/dist/solutions-components/p-b1f84ae5.js +6 -0
- package/dist/solutions-components/p-b2e6c578.js +6 -0
- package/dist/solutions-components/p-b4157e6a.js +6 -0
- package/dist/solutions-components/p-b49bdc72.entry.js +6 -0
- package/dist/solutions-components/p-b5d67495.entry.js +11 -0
- package/dist/solutions-components/p-b6578a32.js +6 -0
- package/dist/solutions-components/p-b684bbc7.entry.js +6 -0
- package/dist/solutions-components/p-b86b4512.entry.js +11 -0
- package/dist/solutions-components/p-b948ecd2.entry.js +11 -0
- package/dist/solutions-components/p-baccfd70.entry.js +6 -0
- package/dist/solutions-components/p-bba3fa4e.entry.js +11 -0
- package/dist/solutions-components/p-bbb0d957.entry.js +6 -0
- package/dist/solutions-components/p-bd3a3afe.js +6 -0
- package/dist/solutions-components/p-bf9e18d4.js +8 -0
- package/dist/solutions-components/p-c07af9c2.entry.js +11 -0
- package/dist/solutions-components/p-c1ee0d69.js +11 -0
- package/dist/solutions-components/p-c3f8b670.js +6 -0
- package/dist/solutions-components/p-c5e294e4.js +6 -0
- package/dist/solutions-components/p-c6d83122.entry.js +11 -0
- package/dist/solutions-components/p-c70392c4.entry.js +6 -0
- package/dist/solutions-components/p-c9858d8f.entry.js +11 -0
- package/dist/solutions-components/p-cad5587c.entry.js +35 -0
- package/dist/solutions-components/p-cf1af08f.entry.js +6 -0
- package/dist/solutions-components/p-cf43278c.entry.js +11 -0
- package/dist/solutions-components/p-d3a22725.js +6 -0
- package/dist/solutions-components/p-d62784a4.js +11 -0
- package/dist/solutions-components/p-d6322e4b.js +6 -0
- package/dist/solutions-components/p-dc9dad31.entry.js +6 -0
- package/dist/solutions-components/p-de58bd49.js +6 -0
- package/dist/solutions-components/p-de59d2f5.js +6 -0
- package/dist/solutions-components/p-e02fcfa9.entry.js +12 -0
- package/dist/solutions-components/p-e07b8a72.entry.js +11 -0
- package/dist/solutions-components/p-e10a62f4.entry.js +11 -0
- package/dist/solutions-components/p-e4253e1b.entry.js +6 -0
- package/dist/solutions-components/p-e645edf2.entry.js +6 -0
- package/dist/solutions-components/p-e6bee82f.js +6 -0
- package/dist/solutions-components/p-ea282908.js +6 -0
- package/dist/solutions-components/p-ee066c67.js +16 -0
- package/dist/solutions-components/p-ef48bd77.entry.js +17 -0
- package/dist/solutions-components/p-ef96894d.entry.js +23 -0
- package/dist/solutions-components/p-f28d69ac.entry.js +11 -0
- package/dist/solutions-components/p-f41105c8.js +6 -0
- package/dist/solutions-components/p-f8dd2784.js +36 -0
- package/dist/solutions-components/p-ffac6f88.entry.js +6 -0
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/interfaces.ts +2 -0
- package/dist/types/components/basemap-gallery/basemap-gallery.d.ts +64 -0
- package/dist/types/components/buffer-tools/buffer-tools.d.ts +170 -170
- package/dist/types/components/card-manager/card-manager.d.ts +70 -70
- package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +182 -174
- package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +26 -26
- package/dist/types/components/deduct-calculator/deduct-calculator.d.ts +90 -90
- package/dist/types/components/edit-card/edit-card.d.ts +140 -140
- package/dist/types/components/info-card/info-card.d.ts +143 -143
- package/dist/types/components/json-editor/json-editor.d.ts +229 -229
- package/dist/types/components/layer-table/layer-table.d.ts +298 -276
- package/dist/types/components/layout-manager/layout-manager.d.ts +69 -69
- package/dist/types/components/list-item/list-item.d.ts +26 -26
- package/dist/types/components/map-card/map-card.d.ts +91 -83
- package/dist/types/components/map-draw-tools/map-draw-tools.d.ts +231 -231
- package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +160 -160
- package/dist/types/components/map-picker/map-picker.d.ts +109 -109
- package/dist/types/components/map-search/map-search.d.ts +107 -0
- package/dist/types/components/map-select-tools/map-select-tools.d.ts +469 -469
- package/dist/types/components/map-tools/map-tools.d.ts +167 -104
- package/dist/types/components/pci-calculator/pci-calculator.d.ts +71 -71
- package/dist/types/components/pdf-download/pdf-download.d.ts +101 -101
- package/dist/types/components/public-notification/public-notification.d.ts +610 -610
- package/dist/types/components/refine-selection/refine-selection.d.ts +234 -234
- package/dist/types/components/solution-configuration/solution-configuration.d.ts +205 -205
- package/dist/types/components/solution-contents/solution-contents.d.ts +46 -46
- package/dist/types/components/solution-item/solution-item.d.ts +71 -71
- package/dist/types/components/solution-item-details/solution-item-details.d.ts +100 -100
- package/dist/types/components/solution-item-icon/solution-item-icon.d.ts +44 -44
- package/dist/types/components/solution-item-sharing/solution-item-sharing.d.ts +62 -62
- package/dist/types/components/solution-organization-variables/solution-organization-variables.d.ts +63 -63
- package/dist/types/components/solution-resource-item/solution-resource-item.d.ts +144 -144
- package/dist/types/components/solution-spatial-ref/solution-spatial-ref.d.ts +180 -180
- package/dist/types/components/solution-spatial-ref/spatialreferences.d.ts +17 -17
- package/dist/types/components/solution-template-data/solution-template-data.d.ts +72 -72
- package/dist/types/components/solution-variables/solution-variables.d.ts +69 -69
- package/dist/types/components/store-manager/store-manager.d.ts +55 -55
- package/dist/types/components.d.ts +124 -0
- package/dist/types/index.d.ts +16 -16
- package/dist/types/preact.d.ts +4 -0
- package/dist/types/stencil-public-runtime.d.ts +29 -14
- package/dist/types/utils/common.d.ts +49 -49
- package/dist/types/utils/csvDownload.d.ts +24 -24
- package/dist/types/utils/csvUtils.d.ts +22 -22
- package/dist/types/utils/downloadUtils.d.ts +118 -118
- package/dist/types/utils/interfaces.d.ts +400 -398
- package/dist/types/utils/languageUtil.d.ts +11 -11
- package/dist/types/utils/loadModules.d.ts +17 -17
- package/dist/types/utils/locale.d.ts +22 -22
- package/dist/types/utils/mapViewUtils.d.ts +124 -124
- package/dist/types/utils/pciUtils.d.ts +97 -97
- package/dist/types/utils/pdfUtils.d.ts +27 -27
- package/dist/types/utils/publicNotificationStore.d.ts +24 -24
- package/dist/types/utils/queryUtils.d.ts +95 -95
- package/dist/types/utils/solution-store.d.ts +234 -234
- package/dist/types/utils/templates.d.ts +50 -50
- package/dist/types/utils/test/mocks/jsApi.d.ts +59 -59
- package/dist/types/utils/test/testUtils.d.ts +36 -36
- package/dist/types/utils/types.d.ts +1 -1
- package/package.json +2 -2
- package/dist/cjs/ExpandToggle-70890ae0.js +0 -117
- package/dist/cjs/FloatingArrow-4ca06439.js +0 -48
- package/dist/cjs/Heading-c5c71fc5.js +0 -25
- package/dist/cjs/app-globals-a34c0991.js +0 -64
- package/dist/cjs/ar-fa16156d.js +0 -97
- package/dist/cjs/bg-b39e773e.js +0 -78
- package/dist/cjs/bs-4579ea2a.js +0 -47
- package/dist/cjs/ca-f3f64686.js +0 -67
- package/dist/cjs/calcite-input-time-picker-6f38ef8c.js +0 -1718
- package/dist/cjs/conditionalSlot-a51326e7.js +0 -63
- package/dist/cjs/cs-1bcd5b46.js +0 -143
- package/dist/cjs/da-30ee21db.js +0 -62
- package/dist/cjs/date-f6611a19.js +0 -250
- package/dist/cjs/de-42aae5ad.js +0 -87
- package/dist/cjs/de-at-a3a6f020.js +0 -86
- package/dist/cjs/de-ch-36c13310.js +0 -86
- package/dist/cjs/dom-d529bae8.js +0 -1046
- package/dist/cjs/downloadUtils-6eb59363.js +0 -2767
- package/dist/cjs/el-90d066ae.js +0 -62
- package/dist/cjs/en-au-685b882b.js +0 -62
- package/dist/cjs/en-ca-ff4bc403.js +0 -61
- package/dist/cjs/en-gb-2f5587ad.js +0 -65
- package/dist/cjs/es-e9183ca0.js +0 -62
- package/dist/cjs/es-mx-dcc9afb2.js +0 -61
- package/dist/cjs/et-a18949ea.js +0 -88
- package/dist/cjs/fi-1ce00d38.js +0 -111
- package/dist/cjs/filter-494bf35e.js +0 -765
- package/dist/cjs/floating-ui-7d6e57d3.js +0 -1888
- package/dist/cjs/focusTrapComponent-0c4d7671.js +0 -1009
- package/dist/cjs/form-bcf49eae.js +0 -288
- package/dist/cjs/fr-a9435a19.js +0 -64
- package/dist/cjs/fr-ch-51efa9bf.js +0 -62
- package/dist/cjs/he-c5dccfa2.js +0 -101
- package/dist/cjs/hi-0898e7f2.js +0 -61
- package/dist/cjs/hr-68f7d8da.js +0 -76
- package/dist/cjs/hu-e494037d.js +0 -84
- package/dist/cjs/id-bef40c1c.js +0 -62
- package/dist/cjs/index-6654298b.js +0 -1796
- package/dist/cjs/index-e1b1954f.js +0 -201
- package/dist/cjs/index.es-d9b5d3a5.js +0 -10808
- package/dist/cjs/interfaces-ad03ec39.js +0 -85
- package/dist/cjs/it-1144ca67.js +0 -62
- package/dist/cjs/it-ch-2c14dca7.js +0 -62
- package/dist/cjs/ja-caad9809.js +0 -68
- package/dist/cjs/ko-ddec9054.js +0 -68
- package/dist/cjs/label-215c4af3.js +0 -136
- package/dist/cjs/loadModules-ae7715f2.js +0 -30
- package/dist/cjs/loadable-6da743c6.js +0 -94
- package/dist/cjs/locale-477d8d51.js +0 -604
- package/dist/cjs/locale-b113c6b2.js +0 -416
- package/dist/cjs/lt-205a1aa6.js +0 -93
- package/dist/cjs/lv-3ba82f9b.js +0 -62
- package/dist/cjs/map-picker_2.cjs.entry.js +0 -264
- package/dist/cjs/mapViewUtils-77a1ff88.js +0 -411
- package/dist/cjs/mk-069ea86a.js +0 -62
- package/dist/cjs/nb-9e9c934f.js +0 -63
- package/dist/cjs/nl-5dd0116f.js +0 -63
- package/dist/cjs/openCloseComponent-3fa18210.js +0 -84
- package/dist/cjs/pciUtils-423cfc68.js +0 -847
- package/dist/cjs/pl-74e70b37.js +0 -110
- package/dist/cjs/pt-br-0f76e430.js +0 -61
- package/dist/cjs/pt-cc737fcc.js +0 -63
- package/dist/cjs/publicNotificationStore-ec1bdd2d.js +0 -51
- package/dist/cjs/ro-5e396753.js +0 -62
- package/dist/cjs/ru-f7371aca.js +0 -122
- package/dist/cjs/shared-list-render-76c5dc25.js +0 -364
- package/dist/cjs/sk-ec02498f.js +0 -144
- package/dist/cjs/sl-8363f4d7.js +0 -62
- package/dist/cjs/solution-store-bd956f06.js +0 -4100
- package/dist/cjs/sortableComponent-8135ea87.js +0 -3112
- package/dist/cjs/sr-b0f92cb1.js +0 -97
- package/dist/cjs/sv-e2c27fff.js +0 -67
- package/dist/cjs/t9n-8be30efb.js +0 -100
- package/dist/cjs/th-8a6dc2cc.js +0 -61
- package/dist/cjs/throttle-8ee74c77.js +0 -75
- package/dist/cjs/time-9004df7e.js +0 -208
- package/dist/cjs/tr-09137435.js +0 -62
- package/dist/cjs/uk-c30401f4.js +0 -100
- package/dist/cjs/utils-ed4e5028.js +0 -55
- package/dist/cjs/utils-fb81c6b3.js +0 -64
- package/dist/cjs/vi-e069c9e4.js +0 -66
- package/dist/cjs/zh-cn-50f223a8.js +0 -90
- package/dist/cjs/zh-hk-5498073d.js +0 -67
- package/dist/cjs/zh-tw-dfdb0ae8.js +0 -88
- package/dist/esm/ExpandToggle-3420fa39.js +0 -109
- package/dist/esm/FloatingArrow-cd8eafa4.js +0 -46
- package/dist/esm/Heading-1763134e.js +0 -22
- package/dist/esm/app-globals-580889bd.js +0 -62
- package/dist/esm/ar-ceb1b389.js +0 -95
- package/dist/esm/bg-a8824832.js +0 -76
- package/dist/esm/bs-5c2ca44f.js +0 -45
- package/dist/esm/ca-47f86073.js +0 -65
- package/dist/esm/calcite-input-time-picker-59a3ed66.js +0 -1715
- package/dist/esm/conditionalSlot-91396dd5.js +0 -60
- package/dist/esm/cs-f651c3cd.js +0 -141
- package/dist/esm/da-e32ccc0a.js +0 -60
- package/dist/esm/date-51fa981b.js +0 -235
- package/dist/esm/de-9b417aed.js +0 -85
- package/dist/esm/de-at-f73447e2.js +0 -84
- package/dist/esm/de-ch-7ec8c31e.js +0 -84
- package/dist/esm/dom-8a9e4ee8.js +0 -1017
- package/dist/esm/downloadUtils-43b53f5a.js +0 -2761
- package/dist/esm/el-9a3189a2.js +0 -60
- package/dist/esm/en-au-5aea3b73.js +0 -60
- package/dist/esm/en-ca-fe3e706b.js +0 -59
- package/dist/esm/en-gb-a4278000.js +0 -63
- package/dist/esm/es-383f9c9e.js +0 -60
- package/dist/esm/es-mx-7845b382.js +0 -59
- package/dist/esm/et-d8f8df06.js +0 -86
- package/dist/esm/fi-14894338.js +0 -109
- package/dist/esm/filter-bf34614b.js +0 -763
- package/dist/esm/floating-ui-9870f74c.js +0 -1880
- package/dist/esm/focusTrapComponent-34010d00.js +0 -1004
- package/dist/esm/form-6669a774.js +0 -280
- package/dist/esm/fr-6f570086.js +0 -62
- package/dist/esm/fr-ch-b9f89159.js +0 -60
- package/dist/esm/he-174aca6e.js +0 -99
- package/dist/esm/hi-7e469aab.js +0 -59
- package/dist/esm/hr-a4ac455a.js +0 -74
- package/dist/esm/hu-207da291.js +0 -82
- package/dist/esm/id-8e4d57bf.js +0 -60
- package/dist/esm/index-4c4a4f3d.js +0 -199
- package/dist/esm/index-d298aca9.js +0 -1762
- package/dist/esm/index.es-a185f2b1.js +0 -10722
- package/dist/esm/interfaces-bf20e69c.js +0 -85
- package/dist/esm/it-7ade952c.js +0 -60
- package/dist/esm/it-ch-181d76ab.js +0 -60
- package/dist/esm/ja-42013dd3.js +0 -66
- package/dist/esm/ko-8de07550.js +0 -66
- package/dist/esm/label-661d8e10.js +0 -130
- package/dist/esm/loadModules-cd3569de.js +0 -28
- package/dist/esm/loadable-08376d90.js +0 -89
- package/dist/esm/locale-54cac39a.js +0 -412
- package/dist/esm/locale-73d0926a.js +0 -592
- package/dist/esm/lt-1ef29b5b.js +0 -91
- package/dist/esm/lv-263a2f78.js +0 -60
- package/dist/esm/map-picker_2.entry.js +0 -259
- package/dist/esm/mapViewUtils-1e68cede.js +0 -395
- package/dist/esm/mk-d8bae136.js +0 -60
- package/dist/esm/nb-494542b3.js +0 -61
- package/dist/esm/nl-cd882d7f.js +0 -61
- package/dist/esm/openCloseComponent-a40fd6fd.js +0 -82
- package/dist/esm/pciUtils-ecda46e5.js +0 -844
- package/dist/esm/pl-b79095d5.js +0 -108
- package/dist/esm/polyfills/css-shim.js +0 -1
- package/dist/esm/pt-5ca0b751.js +0 -61
- package/dist/esm/pt-br-e1a1ce60.js +0 -59
- package/dist/esm/publicNotificationStore-6ef555f3.js +0 -49
- package/dist/esm/ro-5cbc0f2a.js +0 -60
- package/dist/esm/ru-e66f5b84.js +0 -120
- package/dist/esm/shared-list-render-5b788e63.js +0 -342
- package/dist/esm/sk-be2b5cec.js +0 -142
- package/dist/esm/sl-74600272.js +0 -60
- package/dist/esm/solution-store-c107ca4d.js +0 -4092
- package/dist/esm/sortableComponent-1dd8a4ae.js +0 -3109
- package/dist/esm/sr-58280ce5.js +0 -95
- package/dist/esm/sv-f0e2171a.js +0 -65
- package/dist/esm/t9n-745553e0.js +0 -95
- package/dist/esm/th-6c3eac31.js +0 -59
- package/dist/esm/throttle-26fa347b.js +0 -73
- package/dist/esm/time-7e3ba7c6.js +0 -195
- package/dist/esm/tr-092713ca.js +0 -60
- package/dist/esm/uk-95df0f95.js +0 -98
- package/dist/esm/utils-4f695ec2.js +0 -45
- package/dist/esm/utils-ddff4ef3.js +0 -61
- package/dist/esm/vi-70a9857c.js +0 -64
- package/dist/esm/zh-cn-e024ef2d.js +0 -88
- package/dist/esm/zh-hk-36ff9e8f.js +0 -65
- package/dist/esm/zh-tw-96ddb74c.js +0 -86
- package/dist/solutions-components/p-0056655c.js +0 -6
- package/dist/solutions-components/p-017265ef.entry.js +0 -23
- package/dist/solutions-components/p-017543d5.entry.js +0 -11
- package/dist/solutions-components/p-0209ed2e.js +0 -6
- package/dist/solutions-components/p-0245bb56.entry.js +0 -6
- package/dist/solutions-components/p-043ead99.entry.js +0 -6
- package/dist/solutions-components/p-048a2a6d.js +0 -6
- package/dist/solutions-components/p-050e12eb.entry.js +0 -12
- package/dist/solutions-components/p-06916de9.entry.js +0 -11
- package/dist/solutions-components/p-08320fb9.entry.js +0 -11
- package/dist/solutions-components/p-08e12eb0.js +0 -6
- package/dist/solutions-components/p-0a2c02fd.js +0 -6
- package/dist/solutions-components/p-0a4bc416.js +0 -6
- package/dist/solutions-components/p-0afa17dc.entry.js +0 -23
- package/dist/solutions-components/p-0b4eb6e4.entry.js +0 -11
- package/dist/solutions-components/p-0d900572.js +0 -6
- package/dist/solutions-components/p-0f4d3009.entry.js +0 -11
- package/dist/solutions-components/p-10181f33.entry.js +0 -6
- package/dist/solutions-components/p-105ef63c.entry.js +0 -17
- package/dist/solutions-components/p-11983a08.js +0 -6
- package/dist/solutions-components/p-1260db08.js +0 -61
- package/dist/solutions-components/p-129fcd0a.js +0 -6
- package/dist/solutions-components/p-13f7e487.js +0 -11
- package/dist/solutions-components/p-14769a01.js +0 -11
- package/dist/solutions-components/p-14a4ad77.entry.js +0 -11
- package/dist/solutions-components/p-15e67907.entry.js +0 -11
- package/dist/solutions-components/p-17799448.entry.js +0 -11
- package/dist/solutions-components/p-185a82e0.js +0 -17
- package/dist/solutions-components/p-191c59e9.js +0 -6
- package/dist/solutions-components/p-1b63bec9.entry.js +0 -11
- package/dist/solutions-components/p-1c810f4c.entry.js +0 -6
- package/dist/solutions-components/p-1d28ff09.entry.js +0 -11
- package/dist/solutions-components/p-1e30069a.entry.js +0 -6
- package/dist/solutions-components/p-1e63db11.entry.js +0 -6
- package/dist/solutions-components/p-20274226.entry.js +0 -6
- package/dist/solutions-components/p-2411f1f6.js +0 -6
- package/dist/solutions-components/p-2509b65f.entry.js +0 -22
- package/dist/solutions-components/p-25faeab6.js +0 -6
- package/dist/solutions-components/p-27f5bb4f.js +0 -36
- package/dist/solutions-components/p-2a0d8a46.entry.js +0 -11
- package/dist/solutions-components/p-2dea68b6.entry.js +0 -17
- package/dist/solutions-components/p-2ecd5cb7.js +0 -6
- package/dist/solutions-components/p-30dbc43d.entry.js +0 -11
- package/dist/solutions-components/p-32d821d1.entry.js +0 -37
- package/dist/solutions-components/p-3479d873.entry.js +0 -6
- package/dist/solutions-components/p-36d09c0c.entry.js +0 -35
- package/dist/solutions-components/p-375f0b74.js +0 -474
- package/dist/solutions-components/p-38b4873b.entry.js +0 -6
- package/dist/solutions-components/p-38d61356.js +0 -18
- package/dist/solutions-components/p-3a7156b8.entry.js +0 -6
- package/dist/solutions-components/p-3b041268.js +0 -6
- package/dist/solutions-components/p-3ca9bb95.js +0 -6
- package/dist/solutions-components/p-3e5c8b2f.js +0 -6
- package/dist/solutions-components/p-3ee6af74.js +0 -11
- package/dist/solutions-components/p-3eecbcf0.entry.js +0 -18
- package/dist/solutions-components/p-40432de5.entry.js +0 -11
- package/dist/solutions-components/p-4058733e.entry.js +0 -11
- package/dist/solutions-components/p-4152fae0.js +0 -6
- package/dist/solutions-components/p-4321edfc.js +0 -6
- package/dist/solutions-components/p-4344b6ca.entry.js +0 -11
- package/dist/solutions-components/p-44e26e37.js +0 -6
- package/dist/solutions-components/p-477ae127.js +0 -21
- package/dist/solutions-components/p-4c8b1179.js +0 -6
- package/dist/solutions-components/p-4e32bf8c.js +0 -6
- package/dist/solutions-components/p-4e93132b.entry.js +0 -6
- package/dist/solutions-components/p-4ea79dc4.entry.js +0 -11
- package/dist/solutions-components/p-4f51db32.js +0 -6
- package/dist/solutions-components/p-4f64d786.js +0 -6
- package/dist/solutions-components/p-4ff653eb.js +0 -6
- package/dist/solutions-components/p-53347add.js +0 -6
- package/dist/solutions-components/p-54fce798.js +0 -11
- package/dist/solutions-components/p-573d282b.entry.js +0 -11
- package/dist/solutions-components/p-58340eba.js +0 -6
- package/dist/solutions-components/p-5930cd6d.entry.js +0 -6
- package/dist/solutions-components/p-5fc99541.js +0 -257
- package/dist/solutions-components/p-6071078a.entry.js +0 -6
- package/dist/solutions-components/p-69863a28.entry.js +0 -6
- package/dist/solutions-components/p-699031c9.entry.js +0 -11
- package/dist/solutions-components/p-6998e886.entry.js +0 -11
- package/dist/solutions-components/p-6a813a31.entry.js +0 -6
- package/dist/solutions-components/p-6b12b5eb.entry.js +0 -16
- package/dist/solutions-components/p-6e89e9dd.js +0 -6
- package/dist/solutions-components/p-705b7f81.entry.js +0 -12
- package/dist/solutions-components/p-75578ebf.entry.js +0 -6
- package/dist/solutions-components/p-7c72df3c.js +0 -22
- package/dist/solutions-components/p-7ca47589.entry.js +0 -11
- package/dist/solutions-components/p-7cb8a4db.js +0 -6
- package/dist/solutions-components/p-7cc13b24.js +0 -8
- package/dist/solutions-components/p-8008b2fe.entry.js +0 -6
- package/dist/solutions-components/p-81531fbe.entry.js +0 -11
- package/dist/solutions-components/p-81627211.entry.js +0 -11
- package/dist/solutions-components/p-8aa806fe.js +0 -12
- package/dist/solutions-components/p-8ae8b789.js +0 -6
- package/dist/solutions-components/p-8b1236bf.js +0 -6
- package/dist/solutions-components/p-8b14f9aa.js +0 -16
- package/dist/solutions-components/p-8b4e79fd.js +0 -16
- package/dist/solutions-components/p-8bc91d5b.entry.js +0 -11
- package/dist/solutions-components/p-8df0c98c.entry.js +0 -35
- package/dist/solutions-components/p-953cf07a.entry.js +0 -6
- package/dist/solutions-components/p-95cf8aa0.entry.js +0 -11
- package/dist/solutions-components/p-99ece5e1.js +0 -11
- package/dist/solutions-components/p-9a2a551d.js +0 -6
- package/dist/solutions-components/p-9b43b4cf.js +0 -11
- package/dist/solutions-components/p-9f922d49.js +0 -11
- package/dist/solutions-components/p-9fb09c2c.js +0 -11
- package/dist/solutions-components/p-a0e50ea6.entry.js +0 -6
- package/dist/solutions-components/p-a1154bb5.entry.js +0 -11
- package/dist/solutions-components/p-a709a84a.js +0 -11
- package/dist/solutions-components/p-a99832c1.js +0 -27
- package/dist/solutions-components/p-ad41cd27.entry.js +0 -6
- package/dist/solutions-components/p-ad962e25.js +0 -6
- package/dist/solutions-components/p-ae1459ed.entry.js +0 -6
- package/dist/solutions-components/p-af9510a4.entry.js +0 -6
- package/dist/solutions-components/p-afc462f0.js +0 -6
- package/dist/solutions-components/p-b02a2b2f.js +0 -11
- package/dist/solutions-components/p-b0eb13a1.js +0 -6
- package/dist/solutions-components/p-b1228e6c.entry.js +0 -11
- package/dist/solutions-components/p-b1ff9f2e.entry.js +0 -11
- package/dist/solutions-components/p-b20bf7b7.entry.js +0 -6
- package/dist/solutions-components/p-b361af64.entry.js +0 -11
- package/dist/solutions-components/p-b4a6abe2.js +0 -11
- package/dist/solutions-components/p-b68b17b6.entry.js +0 -37
- package/dist/solutions-components/p-b73e9c4d.js +0 -6
- package/dist/solutions-components/p-b9111e12.js +0 -6
- package/dist/solutions-components/p-b9653a1e.js +0 -6
- package/dist/solutions-components/p-b9fa9ca9.js +0 -6
- package/dist/solutions-components/p-ba9bb2ba.entry.js +0 -11
- package/dist/solutions-components/p-bc35e445.entry.js +0 -6
- package/dist/solutions-components/p-bccc74a8.js +0 -6
- package/dist/solutions-components/p-bd213033.entry.js +0 -6
- package/dist/solutions-components/p-c0dc792a.entry.js +0 -11
- package/dist/solutions-components/p-c16e540d.js +0 -6
- package/dist/solutions-components/p-c35b219b.entry.js +0 -11
- package/dist/solutions-components/p-c38c0612.entry.js +0 -11
- package/dist/solutions-components/p-c8c3554b.js +0 -17
- package/dist/solutions-components/p-cbebdffa.js +0 -6
- package/dist/solutions-components/p-cbf52aa2.entry.js +0 -11
- package/dist/solutions-components/p-ce21ee76.js +0 -6
- package/dist/solutions-components/p-ce3e73ae.entry.js +0 -6
- package/dist/solutions-components/p-cf14e2f3.js +0 -6
- package/dist/solutions-components/p-cfebc45c.entry.js +0 -11
- package/dist/solutions-components/p-d15a4f36.entry.js +0 -11
- package/dist/solutions-components/p-d3550542.js +0 -6
- package/dist/solutions-components/p-d3dceabd.entry.js +0 -11
- package/dist/solutions-components/p-d43c1fc8.entry.js +0 -11
- package/dist/solutions-components/p-d7ddd3a2.js +0 -21
- package/dist/solutions-components/p-d841cb8b.js +0 -6
- package/dist/solutions-components/p-d9868bac.js +0 -6
- package/dist/solutions-components/p-dc94bec2.js +0 -6
- package/dist/solutions-components/p-dd0f8875.js +0 -6
- package/dist/solutions-components/p-dec7b660.js +0 -11
- package/dist/solutions-components/p-deca8a07.js +0 -6
- package/dist/solutions-components/p-df5ec082.entry.js +0 -11
- package/dist/solutions-components/p-e046f728.js +0 -6
- package/dist/solutions-components/p-e27ce6d2.entry.js +0 -11
- package/dist/solutions-components/p-e2abc969.js +0 -6
- package/dist/solutions-components/p-e3f9e213.js +0 -6
- package/dist/solutions-components/p-e43839a8.entry.js +0 -11
- package/dist/solutions-components/p-e4d5188b.entry.js +0 -6
- package/dist/solutions-components/p-e666c0d6.entry.js +0 -6
- package/dist/solutions-components/p-e6c20791.js +0 -11
- package/dist/solutions-components/p-ec4c8dc3.js +0 -11
- package/dist/solutions-components/p-ef34c9e2.entry.js +0 -11
- package/dist/solutions-components/p-f346f8ab.js +0 -11
- package/dist/solutions-components/p-f780ecc1.entry.js +0 -11
- package/dist/solutions-components/p-f8be5d5f.js +0 -7
- package/dist/solutions-components/p-f9a56d6b.entry.js +0 -6
- package/dist/solutions-components/p-f9b9b211.entry.js +0 -12
- package/dist/solutions-components/p-fc2277fe.js +0 -21
- package/dist/solutions-components/p-fd65b14d.entry.js +0 -6
- package/dist/solutions-components/p-fe0e8542.entry.js +0 -17
- /package/dist/cjs/{array-51e7da8f.js → array-46bb7df1.js} +0 -0
- /package/dist/cjs/{debounce-69c3bada.js → debounce-30afab47.js} +0 -0
- /package/dist/cjs/{guid-ca85ade0.js → guid-3abe3cc6.js} +0 -0
- /package/dist/cjs/{html2canvas-770c1171.js → html2canvas-34208bbf.js} +0 -0
- /package/dist/cjs/{interactive-4e212b36.js → interactive-2fe0f43a.js} +0 -0
- /package/dist/cjs/{key-b32a6438.js → key-b8b55ea3.js} +0 -0
- /package/dist/cjs/{math-ef14a84a.js → math-5132d9bd.js} +0 -0
- /package/dist/cjs/{observers-20fe6f01.js → observers-f5fa975b.js} +0 -0
- /package/dist/cjs/{purify-5389d8d6.js → purify-f8c3e427.js} +0 -0
- /package/dist/cjs/{resources-1d2258a1.js → resources-2901b608.js} +0 -0
- /package/dist/cjs/{resources-a7e3371d.js → resources-4da89742.js} +0 -0
- /package/dist/cjs/{resources-7c9bff85.js → resources-60c27547.js} +0 -0
- /package/dist/cjs/{resources-b4b4b4fe.js → resources-77713c2e.js} +0 -0
- /package/dist/cjs/{resources-b176fc52.js → resources-8233a151.js} +0 -0
- /package/dist/cjs/{resources-f13e2605.js → resources-91409a5d.js} +0 -0
- /package/dist/cjs/{resources-9dcbf30f.js → resources-9f2b33ee.js} +0 -0
- /package/dist/cjs/{resources-f3e30b7b.js → resources-c913200c.js} +0 -0
- /package/dist/cjs/{resources-c6f066a4.js → resources-e1258e8a.js} +0 -0
- /package/dist/cjs/{utils-662561ad.js → utils-bae432a9.js} +0 -0
- /package/dist/cjs/{utils-8a0f3e68.js → utils-cd14113f.js} +0 -0
- /package/dist/{esm/resources-b5267429.js → components/resources4.js} +0 -0
- /package/dist/esm/{array-4a653f59.js → array-751a2b87.js} +0 -0
- /package/dist/esm/{debounce-4c884e5c.js → debounce-229b1a22.js} +0 -0
- /package/dist/esm/{guid-1608fd71.js → guid-2bbb8cd1.js} +0 -0
- /package/dist/esm/{html2canvas-12c862c8.js → html2canvas-a0a4df55.js} +0 -0
- /package/dist/esm/{interactive-0733ee76.js → interactive-eaf4be29.js} +0 -0
- /package/dist/esm/{key-97b504af.js → key-7a525416.js} +0 -0
- /package/dist/esm/{math-e006358c.js → math-5f92f517.js} +0 -0
- /package/dist/esm/{observers-67bdf9e5.js → observers-9d66685a.js} +0 -0
- /package/dist/esm/{purify-75c61cf7.js → purify-c99d2ace.js} +0 -0
- /package/dist/esm/{resources-913009ae.js → resources-58d30a0f.js} +0 -0
- /package/dist/esm/{resources-6be20fcc.js → resources-5bce3953.js} +0 -0
- /package/dist/esm/{resources-f97db74e.js → resources-94c47e64.js} +0 -0
- /package/dist/esm/{resources-43d63050.js → resources-a9b2d33c.js} +0 -0
- /package/dist/esm/{resources-34b761fa.js → resources-c253772f.js} +0 -0
- /package/dist/esm/{resources-6b7800e6.js → resources-c65f5654.js} +0 -0
- /package/dist/esm/{resources-01034dfa.js → resources-d6a4d343.js} +0 -0
- /package/dist/esm/{resources-5490ccf4.js → resources-dca3d475.js} +0 -0
- /package/dist/esm/{utils-dcd05f69.js → utils-18db6b1d.js} +0 -0
- /package/dist/esm/{utils-649c76ab.js → utils-2c91c963.js} +0 -0
- /package/dist/solutions-components/{p-5d25ba99.js → p-18869c0f.js} +0 -0
- /package/dist/solutions-components/{p-43ebe36a.js → p-18f1772b.js} +0 -0
- /package/dist/solutions-components/{p-76b83a13.js → p-1f468797.js} +0 -0
- /package/dist/solutions-components/{p-f93e6931.js → p-215d3505.js} +0 -0
- /package/dist/solutions-components/{p-0b32d4fe.js → p-2291b598.js} +0 -0
- /package/dist/solutions-components/{p-0630e686.js → p-283e3a2d.js} +0 -0
- /package/dist/solutions-components/{p-a963dd48.js → p-38ef0684.js} +0 -0
- /package/dist/solutions-components/{p-3adf63ca.js → p-3fc17d72.js} +0 -0
- /package/dist/solutions-components/{p-fb3ba11a.js → p-4805ff13.js} +0 -0
- /package/dist/solutions-components/{p-5242a652.js → p-58ce5639.js} +0 -0
- /package/dist/solutions-components/{p-203b16df.js → p-5961c4e0.js} +0 -0
- /package/dist/solutions-components/{p-cc815aca.js → p-63a0e9bf.js} +0 -0
- /package/dist/solutions-components/{p-d556b5c4.js → p-6f2edf5b.js} +0 -0
- /package/dist/solutions-components/{p-9ab03591.js → p-868df4a0.js} +0 -0
- /package/dist/solutions-components/{p-ff4afb7d.js → p-b9749e09.js} +0 -0
- /package/dist/solutions-components/{p-3b72043f.js → p-d4c103a8.js} +0 -0
- /package/dist/solutions-components/{p-7ac7b1a1.js → p-d554507d.js} +0 -0
- /package/dist/solutions-components/{p-0506e06f.js → p-f055a840.js} +0 -0
- /package/dist/solutions-components/{p-08ab045a.js → p-fb7e0054.js} +0 -0
@@ -0,0 +1,4100 @@
|
|
1
|
+
/*!
|
2
|
+
* Copyright 2022 Esri
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
4
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
*/
|
6
|
+
'use strict';
|
7
|
+
|
8
|
+
const index = require('./index-2b60e135.js');
|
9
|
+
const interfaces = require('./interfaces-d539e30c.js');
|
10
|
+
const _commonjsHelpers = require('./_commonjsHelpers-384729db.js');
|
11
|
+
|
12
|
+
/*! *****************************************************************************
|
13
|
+
Copyright (c) Microsoft Corporation.
|
14
|
+
|
15
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
16
|
+
purpose with or without fee is hereby granted.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
19
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
20
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
21
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
22
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
23
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
24
|
+
PERFORMANCE OF THIS SOFTWARE.
|
25
|
+
***************************************************************************** */
|
26
|
+
/* global Reflect, Promise */
|
27
|
+
|
28
|
+
var extendStatics = function(d, b) {
|
29
|
+
extendStatics = Object.setPrototypeOf ||
|
30
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
31
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
32
|
+
return extendStatics(d, b);
|
33
|
+
};
|
34
|
+
|
35
|
+
function __extends(d, b) {
|
36
|
+
extendStatics(d, b);
|
37
|
+
function __() { this.constructor = d; }
|
38
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
39
|
+
}
|
40
|
+
|
41
|
+
var __assign$1 = function() {
|
42
|
+
__assign$1 = Object.assign || function __assign(t) {
|
43
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
44
|
+
s = arguments[i];
|
45
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
46
|
+
}
|
47
|
+
return t;
|
48
|
+
};
|
49
|
+
return __assign$1.apply(this, arguments);
|
50
|
+
};
|
51
|
+
|
52
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
53
|
+
* Apache-2.0 */
|
54
|
+
/**
|
55
|
+
* Checks parameters to see if we should use FormData to send the request
|
56
|
+
* @param params The object whose keys will be encoded.
|
57
|
+
* @return A boolean indicating if FormData will be required.
|
58
|
+
*/
|
59
|
+
function requiresFormData(params) {
|
60
|
+
return Object.keys(params).some(function (key) {
|
61
|
+
var value = params[key];
|
62
|
+
if (!value) {
|
63
|
+
return false;
|
64
|
+
}
|
65
|
+
if (value && value.toParam) {
|
66
|
+
value = value.toParam();
|
67
|
+
}
|
68
|
+
var type = value.constructor.name;
|
69
|
+
switch (type) {
|
70
|
+
case "Array":
|
71
|
+
return false;
|
72
|
+
case "Object":
|
73
|
+
return false;
|
74
|
+
case "Date":
|
75
|
+
return false;
|
76
|
+
case "Function":
|
77
|
+
return false;
|
78
|
+
case "Boolean":
|
79
|
+
return false;
|
80
|
+
case "String":
|
81
|
+
return false;
|
82
|
+
case "Number":
|
83
|
+
return false;
|
84
|
+
default:
|
85
|
+
return true;
|
86
|
+
}
|
87
|
+
});
|
88
|
+
}
|
89
|
+
/**
|
90
|
+
* Converts parameters to the proper representation to send to the ArcGIS REST API.
|
91
|
+
* @param params The object whose keys will be encoded.
|
92
|
+
* @return A new object with properly encoded values.
|
93
|
+
*/
|
94
|
+
function processParams(params) {
|
95
|
+
var newParams = {};
|
96
|
+
Object.keys(params).forEach(function (key) {
|
97
|
+
var _a, _b;
|
98
|
+
var param = params[key];
|
99
|
+
if (param && param.toParam) {
|
100
|
+
param = param.toParam();
|
101
|
+
}
|
102
|
+
if (!param &&
|
103
|
+
param !== 0 &&
|
104
|
+
typeof param !== "boolean" &&
|
105
|
+
typeof param !== "string") {
|
106
|
+
return;
|
107
|
+
}
|
108
|
+
var type = param.constructor.name;
|
109
|
+
var value;
|
110
|
+
// properly encodes objects, arrays and dates for arcgis.com and other services.
|
111
|
+
// ported from https://github.com/Esri/esri-leaflet/blob/master/src/Request.js#L22-L30
|
112
|
+
// also see https://github.com/Esri/arcgis-rest-js/issues/18:
|
113
|
+
// null, undefined, function are excluded. If you want to send an empty key you need to send an empty string "".
|
114
|
+
switch (type) {
|
115
|
+
case "Array":
|
116
|
+
// Based on the first element of the array, classify array as an array of arrays, an array of objects
|
117
|
+
// to be stringified, or an array of non-objects to be comma-separated
|
118
|
+
// eslint-disable-next-line no-case-declarations
|
119
|
+
var firstElementType = (_b = (_a = param[0]) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name;
|
120
|
+
value =
|
121
|
+
firstElementType === "Array" ? param : // pass thru array of arrays
|
122
|
+
firstElementType === "Object" ? JSON.stringify(param) : // stringify array of objects
|
123
|
+
param.join(","); // join other types of array elements
|
124
|
+
break;
|
125
|
+
case "Object":
|
126
|
+
value = JSON.stringify(param);
|
127
|
+
break;
|
128
|
+
case "Date":
|
129
|
+
value = param.valueOf();
|
130
|
+
break;
|
131
|
+
case "Function":
|
132
|
+
value = null;
|
133
|
+
break;
|
134
|
+
case "Boolean":
|
135
|
+
value = param + "";
|
136
|
+
break;
|
137
|
+
default:
|
138
|
+
value = param;
|
139
|
+
break;
|
140
|
+
}
|
141
|
+
if (value || value === 0 || typeof value === "string" || Array.isArray(value)) {
|
142
|
+
newParams[key] = value;
|
143
|
+
}
|
144
|
+
});
|
145
|
+
return newParams;
|
146
|
+
}
|
147
|
+
|
148
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
149
|
+
* Apache-2.0 */
|
150
|
+
/**
|
151
|
+
* Encodes keys and parameters for use in a URL's query string.
|
152
|
+
*
|
153
|
+
* @param key Parameter's key
|
154
|
+
* @param value Parameter's value
|
155
|
+
* @returns Query string with key and value pairs separated by "&"
|
156
|
+
*/
|
157
|
+
function encodeParam(key, value) {
|
158
|
+
// For array of arrays, repeat key=value for each element of containing array
|
159
|
+
if (Array.isArray(value) && value[0] && Array.isArray(value[0])) {
|
160
|
+
return value.map(function (arrayElem) { return encodeParam(key, arrayElem); }).join("&");
|
161
|
+
}
|
162
|
+
return encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
163
|
+
}
|
164
|
+
/**
|
165
|
+
* Encodes the passed object as a query string.
|
166
|
+
*
|
167
|
+
* @param params An object to be encoded.
|
168
|
+
* @returns An encoded query string.
|
169
|
+
*/
|
170
|
+
function encodeQueryString(params) {
|
171
|
+
var newParams = processParams(params);
|
172
|
+
return Object.keys(newParams)
|
173
|
+
.map(function (key) {
|
174
|
+
return encodeParam(key, newParams[key]);
|
175
|
+
})
|
176
|
+
.join("&");
|
177
|
+
}
|
178
|
+
|
179
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
180
|
+
* Apache-2.0 */
|
181
|
+
/**
|
182
|
+
* Encodes parameters in a [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object in browsers or in a [FormData](https://github.com/form-data/form-data) in Node.js
|
183
|
+
*
|
184
|
+
* @param params An object to be encoded.
|
185
|
+
* @returns The complete [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object.
|
186
|
+
*/
|
187
|
+
function encodeFormData(params, forceFormData) {
|
188
|
+
// see https://github.com/Esri/arcgis-rest-js/issues/499 for more info.
|
189
|
+
var useFormData = requiresFormData(params) || forceFormData;
|
190
|
+
var newParams = processParams(params);
|
191
|
+
if (useFormData) {
|
192
|
+
var formData_1 = new FormData();
|
193
|
+
Object.keys(newParams).forEach(function (key) {
|
194
|
+
if (typeof Blob !== "undefined" && newParams[key] instanceof Blob) {
|
195
|
+
/* To name the Blob:
|
196
|
+
1. look to an alternate request parameter called 'fileName'
|
197
|
+
2. see if 'name' has been tacked onto the Blob manually
|
198
|
+
3. if all else fails, use the request parameter
|
199
|
+
*/
|
200
|
+
var filename = newParams["fileName"] || newParams[key].name || key;
|
201
|
+
formData_1.append(key, newParams[key], filename);
|
202
|
+
}
|
203
|
+
else {
|
204
|
+
formData_1.append(key, newParams[key]);
|
205
|
+
}
|
206
|
+
});
|
207
|
+
return formData_1;
|
208
|
+
}
|
209
|
+
else {
|
210
|
+
return encodeQueryString(params);
|
211
|
+
}
|
212
|
+
}
|
213
|
+
|
214
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
215
|
+
* Apache-2.0 */
|
216
|
+
// TypeScript 2.1 no longer allows you to extend built in types. See https://github.com/Microsoft/TypeScript/issues/12790#issuecomment-265981442
|
217
|
+
// and https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
218
|
+
//
|
219
|
+
// This code is from MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types.
|
220
|
+
var ArcGISRequestError = /** @class */ (function () {
|
221
|
+
/**
|
222
|
+
* Create a new `ArcGISRequestError` object.
|
223
|
+
*
|
224
|
+
* @param message - The error message from the API
|
225
|
+
* @param code - The error code from the API
|
226
|
+
* @param response - The original response from the API that caused the error
|
227
|
+
* @param url - The original url of the request
|
228
|
+
* @param options - The original options and parameters of the request
|
229
|
+
*/
|
230
|
+
function ArcGISRequestError(message, code, response, url, options) {
|
231
|
+
message = message || "UNKNOWN_ERROR";
|
232
|
+
code = code || "UNKNOWN_ERROR_CODE";
|
233
|
+
this.name = "ArcGISRequestError";
|
234
|
+
this.message =
|
235
|
+
code === "UNKNOWN_ERROR_CODE" ? message : code + ": " + message;
|
236
|
+
this.originalMessage = message;
|
237
|
+
this.code = code;
|
238
|
+
this.response = response;
|
239
|
+
this.url = url;
|
240
|
+
this.options = options;
|
241
|
+
}
|
242
|
+
return ArcGISRequestError;
|
243
|
+
}());
|
244
|
+
ArcGISRequestError.prototype = Object.create(Error.prototype);
|
245
|
+
ArcGISRequestError.prototype.constructor = ArcGISRequestError;
|
246
|
+
|
247
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
248
|
+
* Apache-2.0 */
|
249
|
+
var NODEJS_DEFAULT_REFERER_HEADER = "@esri/arcgis-rest-js";
|
250
|
+
var DEFAULT_ARCGIS_REQUEST_OPTIONS = {
|
251
|
+
httpMethod: "POST",
|
252
|
+
params: {
|
253
|
+
f: "json",
|
254
|
+
},
|
255
|
+
};
|
256
|
+
var ArcGISAuthError = /** @class */ (function (_super) {
|
257
|
+
__extends(ArcGISAuthError, _super);
|
258
|
+
/**
|
259
|
+
* Create a new `ArcGISAuthError` object.
|
260
|
+
*
|
261
|
+
* @param message - The error message from the API
|
262
|
+
* @param code - The error code from the API
|
263
|
+
* @param response - The original response from the API that caused the error
|
264
|
+
* @param url - The original url of the request
|
265
|
+
* @param options - The original options of the request
|
266
|
+
*/
|
267
|
+
function ArcGISAuthError(message, code, response, url, options) {
|
268
|
+
if (message === void 0) { message = "AUTHENTICATION_ERROR"; }
|
269
|
+
if (code === void 0) { code = "AUTHENTICATION_ERROR_CODE"; }
|
270
|
+
var _this = _super.call(this, message, code, response, url, options) || this;
|
271
|
+
_this.name = "ArcGISAuthError";
|
272
|
+
_this.message =
|
273
|
+
code === "AUTHENTICATION_ERROR_CODE" ? message : code + ": " + message;
|
274
|
+
return _this;
|
275
|
+
}
|
276
|
+
ArcGISAuthError.prototype.retry = function (getSession, retryLimit) {
|
277
|
+
var _this = this;
|
278
|
+
if (retryLimit === void 0) { retryLimit = 3; }
|
279
|
+
var tries = 0;
|
280
|
+
var retryRequest = function (resolve, reject) {
|
281
|
+
getSession(_this.url, _this.options)
|
282
|
+
.then(function (session) {
|
283
|
+
var newOptions = __assign$1(__assign$1({}, _this.options), { authentication: session });
|
284
|
+
tries = tries + 1;
|
285
|
+
return request(_this.url, newOptions);
|
286
|
+
})
|
287
|
+
.then(function (response) {
|
288
|
+
resolve(response);
|
289
|
+
})
|
290
|
+
.catch(function (e) {
|
291
|
+
if (e.name === "ArcGISAuthError" && tries < retryLimit) {
|
292
|
+
retryRequest(resolve, reject);
|
293
|
+
}
|
294
|
+
else if (e.name === "ArcGISAuthError" && tries >= retryLimit) {
|
295
|
+
reject(_this);
|
296
|
+
}
|
297
|
+
else {
|
298
|
+
reject(e);
|
299
|
+
}
|
300
|
+
});
|
301
|
+
};
|
302
|
+
return new Promise(function (resolve, reject) {
|
303
|
+
retryRequest(resolve, reject);
|
304
|
+
});
|
305
|
+
};
|
306
|
+
return ArcGISAuthError;
|
307
|
+
}(ArcGISRequestError));
|
308
|
+
/**
|
309
|
+
* Checks for errors in a JSON response from the ArcGIS REST API. If there are no errors, it will return the `data` passed in. If there is an error, it will throw an `ArcGISRequestError` or `ArcGISAuthError`.
|
310
|
+
*
|
311
|
+
* @param data The response JSON to check for errors.
|
312
|
+
* @param url The url of the original request
|
313
|
+
* @param params The parameters of the original request
|
314
|
+
* @param options The options of the original request
|
315
|
+
* @returns The data that was passed in the `data` parameter
|
316
|
+
*/
|
317
|
+
function checkForErrors(response, url, params, options, originalAuthError) {
|
318
|
+
// this is an error message from billing.arcgis.com backend
|
319
|
+
if (response.code >= 400) {
|
320
|
+
var message = response.message, code = response.code;
|
321
|
+
throw new ArcGISRequestError(message, code, response, url, options);
|
322
|
+
}
|
323
|
+
// error from ArcGIS Online or an ArcGIS Portal or server instance.
|
324
|
+
if (response.error) {
|
325
|
+
var _a = response.error, message = _a.message, code = _a.code, messageCode = _a.messageCode;
|
326
|
+
var errorCode = messageCode || code || "UNKNOWN_ERROR_CODE";
|
327
|
+
if (code === 498 ||
|
328
|
+
code === 499 ||
|
329
|
+
messageCode === "GWM_0003" ||
|
330
|
+
(code === 400 && message === "Unable to generate token.")) {
|
331
|
+
if (originalAuthError) {
|
332
|
+
throw originalAuthError;
|
333
|
+
}
|
334
|
+
else {
|
335
|
+
throw new ArcGISAuthError(message, errorCode, response, url, options);
|
336
|
+
}
|
337
|
+
}
|
338
|
+
throw new ArcGISRequestError(message, errorCode, response, url, options);
|
339
|
+
}
|
340
|
+
// error from a status check
|
341
|
+
if (response.status === "failed" || response.status === "failure") {
|
342
|
+
var message = void 0;
|
343
|
+
var code = "UNKNOWN_ERROR_CODE";
|
344
|
+
try {
|
345
|
+
message = JSON.parse(response.statusMessage).message;
|
346
|
+
code = JSON.parse(response.statusMessage).code;
|
347
|
+
}
|
348
|
+
catch (e) {
|
349
|
+
message = response.statusMessage || response.message;
|
350
|
+
}
|
351
|
+
throw new ArcGISRequestError(message, code, response, url, options);
|
352
|
+
}
|
353
|
+
return response;
|
354
|
+
}
|
355
|
+
/**
|
356
|
+
* ```js
|
357
|
+
* import { request } from '@esri/arcgis-rest-request';
|
358
|
+
* //
|
359
|
+
* request('https://www.arcgis.com/sharing/rest')
|
360
|
+
* .then(response) // response.currentVersion === 5.2
|
361
|
+
* //
|
362
|
+
* request('https://www.arcgis.com/sharing/rest', {
|
363
|
+
* httpMethod: "GET"
|
364
|
+
* })
|
365
|
+
* //
|
366
|
+
* request('https://www.arcgis.com/sharing/rest/search', {
|
367
|
+
* params: { q: 'parks' }
|
368
|
+
* })
|
369
|
+
* .then(response) // response.total => 78379
|
370
|
+
* ```
|
371
|
+
* Generic method for making HTTP requests to ArcGIS REST API endpoints.
|
372
|
+
*
|
373
|
+
* @param url - The URL of the ArcGIS REST API endpoint.
|
374
|
+
* @param requestOptions - Options for the request, including parameters relevant to the endpoint.
|
375
|
+
* @returns A Promise that will resolve with the data from the response.
|
376
|
+
*/
|
377
|
+
function request(url, requestOptions) {
|
378
|
+
if (requestOptions === void 0) { requestOptions = { params: { f: "json" } }; }
|
379
|
+
var options = __assign$1(__assign$1(__assign$1({ httpMethod: "POST" }, DEFAULT_ARCGIS_REQUEST_OPTIONS), requestOptions), {
|
380
|
+
params: __assign$1(__assign$1({}, DEFAULT_ARCGIS_REQUEST_OPTIONS.params), requestOptions.params),
|
381
|
+
headers: __assign$1(__assign$1({}, DEFAULT_ARCGIS_REQUEST_OPTIONS.headers), requestOptions.headers),
|
382
|
+
});
|
383
|
+
var missingGlobals = [];
|
384
|
+
var recommendedPackages = [];
|
385
|
+
// don't check for a global fetch if a custom implementation was passed through
|
386
|
+
if (!options.fetch && typeof fetch !== "undefined") {
|
387
|
+
options.fetch = fetch.bind(Function("return this")());
|
388
|
+
}
|
389
|
+
else {
|
390
|
+
missingGlobals.push("`fetch`");
|
391
|
+
recommendedPackages.push("`node-fetch`");
|
392
|
+
}
|
393
|
+
if (typeof Promise === "undefined") {
|
394
|
+
missingGlobals.push("`Promise`");
|
395
|
+
recommendedPackages.push("`es6-promise`");
|
396
|
+
}
|
397
|
+
if (typeof FormData === "undefined") {
|
398
|
+
missingGlobals.push("`FormData`");
|
399
|
+
recommendedPackages.push("`isomorphic-form-data`");
|
400
|
+
}
|
401
|
+
if (!options.fetch ||
|
402
|
+
typeof Promise === "undefined" ||
|
403
|
+
typeof FormData === "undefined") {
|
404
|
+
throw new Error("`arcgis-rest-request` requires a `fetch` implementation and global variables for `Promise` and `FormData` to be present in the global scope. You are missing " + missingGlobals.join(", ") + ". We recommend installing the " + recommendedPackages.join(", ") + " modules at the root of your application to add these to the global scope. See https://bit.ly/2KNwWaJ for more info.");
|
405
|
+
}
|
406
|
+
var httpMethod = options.httpMethod, authentication = options.authentication, rawResponse = options.rawResponse;
|
407
|
+
var params = __assign$1({ f: "json" }, options.params);
|
408
|
+
var originalAuthError = null;
|
409
|
+
var fetchOptions = {
|
410
|
+
method: httpMethod,
|
411
|
+
/* ensures behavior mimics XMLHttpRequest.
|
412
|
+
needed to support sending IWA cookies */
|
413
|
+
credentials: options.credentials || "same-origin",
|
414
|
+
};
|
415
|
+
// the /oauth2/platformSelf route will add X-Esri-Auth-Client-Id header
|
416
|
+
// and that request needs to send cookies cross domain
|
417
|
+
// so we need to set the credentials to "include"
|
418
|
+
if (options.headers &&
|
419
|
+
options.headers["X-Esri-Auth-Client-Id"] &&
|
420
|
+
url.indexOf("/oauth2/platformSelf") > -1) {
|
421
|
+
fetchOptions.credentials = "include";
|
422
|
+
}
|
423
|
+
return (authentication
|
424
|
+
? authentication.getToken(url, { fetch: options.fetch }).catch(function (err) {
|
425
|
+
/**
|
426
|
+
* append original request url and requestOptions
|
427
|
+
* to the error thrown by getToken()
|
428
|
+
* to assist with retrying
|
429
|
+
*/
|
430
|
+
err.url = url;
|
431
|
+
err.options = options;
|
432
|
+
/**
|
433
|
+
* if an attempt is made to talk to an unfederated server
|
434
|
+
* first try the request anonymously. if a 'token required'
|
435
|
+
* error is thrown, throw the UNFEDERATED error then.
|
436
|
+
*/
|
437
|
+
originalAuthError = err;
|
438
|
+
return Promise.resolve("");
|
439
|
+
})
|
440
|
+
: Promise.resolve(""))
|
441
|
+
.then(function (token) {
|
442
|
+
if (token.length) {
|
443
|
+
params.token = token;
|
444
|
+
}
|
445
|
+
if (authentication && authentication.getDomainCredentials) {
|
446
|
+
fetchOptions.credentials = authentication.getDomainCredentials(url);
|
447
|
+
}
|
448
|
+
// Custom headers to add to request. IRequestOptions.headers with merge over requestHeaders.
|
449
|
+
var requestHeaders = {};
|
450
|
+
if (fetchOptions.method === "GET") {
|
451
|
+
// Prevents token from being passed in query params when hideToken option is used.
|
452
|
+
/* istanbul ignore if - window is always defined in a browser. Test case is covered by Jasmine in node test */
|
453
|
+
if (params.token &&
|
454
|
+
options.hideToken &&
|
455
|
+
// Sharing API does not support preflight check required by modern browsers https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
|
456
|
+
typeof window === "undefined") {
|
457
|
+
requestHeaders["X-Esri-Authorization"] = "Bearer " + params.token;
|
458
|
+
delete params.token;
|
459
|
+
}
|
460
|
+
// encode the parameters into the query string
|
461
|
+
var queryParams = encodeQueryString(params);
|
462
|
+
// dont append a '?' unless parameters are actually present
|
463
|
+
var urlWithQueryString = queryParams === "" ? url : url + "?" + encodeQueryString(params);
|
464
|
+
if (
|
465
|
+
// This would exceed the maximum length for URLs specified by the consumer and requires POST
|
466
|
+
(options.maxUrlLength &&
|
467
|
+
urlWithQueryString.length > options.maxUrlLength) ||
|
468
|
+
// Or if the customer requires the token to be hidden and it has not already been hidden in the header (for browsers)
|
469
|
+
(params.token && options.hideToken)) {
|
470
|
+
// the consumer specified a maximum length for URLs
|
471
|
+
// and this would exceed it, so use post instead
|
472
|
+
fetchOptions.method = "POST";
|
473
|
+
// If the token was already added as a Auth header, add the token back to body with other params instead of header
|
474
|
+
if (token.length && options.hideToken) {
|
475
|
+
params.token = token;
|
476
|
+
// Remove existing header that was added before url query length was checked
|
477
|
+
delete requestHeaders["X-Esri-Authorization"];
|
478
|
+
}
|
479
|
+
}
|
480
|
+
else {
|
481
|
+
// just use GET
|
482
|
+
url = urlWithQueryString;
|
483
|
+
}
|
484
|
+
}
|
485
|
+
/* updateResources currently requires FormData even when the input parameters dont warrant it.
|
486
|
+
https://developers.arcgis.com/rest/users-groups-and-items/update-resources.htm
|
487
|
+
see https://github.com/Esri/arcgis-rest-js/pull/500 for more info. */
|
488
|
+
var forceFormData = new RegExp("/items/.+/updateResources").test(url);
|
489
|
+
if (fetchOptions.method === "POST") {
|
490
|
+
fetchOptions.body = encodeFormData(params, forceFormData);
|
491
|
+
}
|
492
|
+
// Mixin headers from request options
|
493
|
+
fetchOptions.headers = __assign$1(__assign$1({}, requestHeaders), options.headers);
|
494
|
+
/* istanbul ignore next - karma reports coverage on browser tests only */
|
495
|
+
if (typeof window === "undefined" && !fetchOptions.headers.referer) {
|
496
|
+
fetchOptions.headers.referer = NODEJS_DEFAULT_REFERER_HEADER;
|
497
|
+
}
|
498
|
+
/* istanbul ignore else blob responses are difficult to make cross platform we will just have to trust the isomorphic fetch will do its job */
|
499
|
+
if (!requiresFormData(params) && !forceFormData) {
|
500
|
+
fetchOptions.headers["Content-Type"] =
|
501
|
+
"application/x-www-form-urlencoded";
|
502
|
+
}
|
503
|
+
return options.fetch(url, fetchOptions);
|
504
|
+
})
|
505
|
+
.then(function (response) {
|
506
|
+
if (!response.ok) {
|
507
|
+
// server responded w/ an actual error (404, 500, etc)
|
508
|
+
var status_1 = response.status, statusText = response.statusText;
|
509
|
+
throw new ArcGISRequestError(statusText, "HTTP " + status_1, response, url, options);
|
510
|
+
}
|
511
|
+
if (rawResponse) {
|
512
|
+
return response;
|
513
|
+
}
|
514
|
+
switch (params.f) {
|
515
|
+
case "json":
|
516
|
+
return response.json();
|
517
|
+
case "geojson":
|
518
|
+
return response.json();
|
519
|
+
case "html":
|
520
|
+
return response.text();
|
521
|
+
case "text":
|
522
|
+
return response.text();
|
523
|
+
/* istanbul ignore next blob responses are difficult to make cross platform we will just have to trust that isomorphic fetch will do its job */
|
524
|
+
default:
|
525
|
+
return response.blob();
|
526
|
+
}
|
527
|
+
})
|
528
|
+
.then(function (data) {
|
529
|
+
if ((params.f === "json" || params.f === "geojson") && !rawResponse) {
|
530
|
+
var response = checkForErrors(data, url, params, options, originalAuthError);
|
531
|
+
if (originalAuthError) {
|
532
|
+
/* If the request was made to an unfederated service that
|
533
|
+
didn't require authentication, add the base url and a dummy token
|
534
|
+
to the list of trusted servers to avoid another federation check
|
535
|
+
in the event of a repeat request */
|
536
|
+
var truncatedUrl = url
|
537
|
+
.toLowerCase()
|
538
|
+
.split(/\/rest(\/admin)?\/services\//)[0];
|
539
|
+
options.authentication.federatedServers[truncatedUrl] = {
|
540
|
+
token: [],
|
541
|
+
// default to 24 hours
|
542
|
+
expires: new Date(Date.now() + 86400 * 1000),
|
543
|
+
};
|
544
|
+
originalAuthError = null;
|
545
|
+
}
|
546
|
+
return response;
|
547
|
+
}
|
548
|
+
else {
|
549
|
+
return data;
|
550
|
+
}
|
551
|
+
});
|
552
|
+
}
|
553
|
+
|
554
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
555
|
+
* Apache-2.0 */
|
556
|
+
/**
|
557
|
+
* Helper method to ensure that user supplied urls don't include whitespace or a trailing slash.
|
558
|
+
*/
|
559
|
+
function cleanUrl(url) {
|
560
|
+
// Guard so we don't try to trim something that's not a string
|
561
|
+
if (typeof url !== "string") {
|
562
|
+
return url;
|
563
|
+
}
|
564
|
+
// trim leading and trailing spaces, but not spaces inside the url
|
565
|
+
url = url.trim();
|
566
|
+
// remove the trailing slash to the url if one was included
|
567
|
+
if (url[url.length - 1] === "/") {
|
568
|
+
url = url.slice(0, -1);
|
569
|
+
}
|
570
|
+
return url;
|
571
|
+
}
|
572
|
+
|
573
|
+
/** @license
|
574
|
+
* Copyright 2018 Esri
|
575
|
+
*
|
576
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
577
|
+
* you may not use this file except in compliance with the License.
|
578
|
+
* You may obtain a copy of the License at
|
579
|
+
*
|
580
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
581
|
+
*
|
582
|
+
* Unless required by applicable law or agreed to in writing, software
|
583
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
584
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
585
|
+
* See the License for the specific language governing permissions and
|
586
|
+
* limitations under the License.
|
587
|
+
*/
|
588
|
+
//#endregion ---------------------------------------------------------------------------------------------------------//
|
589
|
+
const SolutionTemplateFormatVersion = 1;
|
590
|
+
//#region Enums ------------------------------------------------------------------------------------------------------//
|
591
|
+
/**
|
592
|
+
* Flags for storing an item's binary resources.
|
593
|
+
*/
|
594
|
+
exports.EFileType = void 0;
|
595
|
+
(function (EFileType) {
|
596
|
+
EFileType[EFileType["Data"] = 0] = "Data";
|
597
|
+
EFileType[EFileType["Info"] = 1] = "Info";
|
598
|
+
EFileType[EFileType["Metadata"] = 2] = "Metadata";
|
599
|
+
EFileType[EFileType["Resource"] = 3] = "Resource";
|
600
|
+
EFileType[EFileType["Thumbnail"] = 4] = "Thumbnail";
|
601
|
+
})(exports.EFileType || (exports.EFileType = {}));
|
602
|
+
/**
|
603
|
+
* Text versions of flags for storing an item's binary resources.
|
604
|
+
*/
|
605
|
+
var SFileType;
|
606
|
+
(function (SFileType) {
|
607
|
+
SFileType[SFileType["Data"] = 0] = "Data";
|
608
|
+
SFileType[SFileType["Info"] = 1] = "Info";
|
609
|
+
SFileType[SFileType["Metadata"] = 2] = "Metadata";
|
610
|
+
SFileType[SFileType["Resource"] = 3] = "Resource";
|
611
|
+
SFileType[SFileType["Thumbnail"] = 4] = "Thumbnail";
|
612
|
+
})(SFileType || (SFileType = {}));
|
613
|
+
/**
|
614
|
+
* Flags for reporting the status of creating or deploying an item.
|
615
|
+
*/
|
616
|
+
var EItemProgressStatus;
|
617
|
+
(function (EItemProgressStatus) {
|
618
|
+
EItemProgressStatus[EItemProgressStatus["Started"] = 0] = "Started";
|
619
|
+
EItemProgressStatus[EItemProgressStatus["Created"] = 1] = "Created";
|
620
|
+
EItemProgressStatus[EItemProgressStatus["Cancelled"] = 2] = "Cancelled";
|
621
|
+
EItemProgressStatus[EItemProgressStatus["Finished"] = 3] = "Finished";
|
622
|
+
EItemProgressStatus[EItemProgressStatus["Ignored"] = 4] = "Ignored";
|
623
|
+
EItemProgressStatus[EItemProgressStatus["Failed"] = 5] = "Failed";
|
624
|
+
EItemProgressStatus[EItemProgressStatus["Unknown"] = 6] = "Unknown";
|
625
|
+
})(EItemProgressStatus || (EItemProgressStatus = {}));
|
626
|
+
//#endregion ---------------------------------------------------------------------------------------------------------//
|
627
|
+
|
628
|
+
/* Copyright (c) 2018-2019 Environmental Systems Research Institute, Inc.
|
629
|
+
* Apache-2.0 */
|
630
|
+
/**
|
631
|
+
* Returns an array with arrays of the given size.
|
632
|
+
*
|
633
|
+
* @param arr Array to split
|
634
|
+
* @param size Size of every group
|
635
|
+
*/
|
636
|
+
function chunkArray(arr, size) {
|
637
|
+
const results = [];
|
638
|
+
let index = 0;
|
639
|
+
while (index < arr.length) {
|
640
|
+
results.push(arr.slice(index, index + size));
|
641
|
+
index += size;
|
642
|
+
}
|
643
|
+
return results;
|
644
|
+
}
|
645
|
+
|
646
|
+
/*! *****************************************************************************
|
647
|
+
Copyright (c) Microsoft Corporation.
|
648
|
+
|
649
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
650
|
+
purpose with or without fee is hereby granted.
|
651
|
+
|
652
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
653
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
654
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
655
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
656
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
657
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
658
|
+
PERFORMANCE OF THIS SOFTWARE.
|
659
|
+
***************************************************************************** */
|
660
|
+
|
661
|
+
var __assign = function() {
|
662
|
+
__assign = Object.assign || function __assign(t) {
|
663
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
664
|
+
s = arguments[i];
|
665
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
666
|
+
}
|
667
|
+
return t;
|
668
|
+
};
|
669
|
+
return __assign.apply(this, arguments);
|
670
|
+
};
|
671
|
+
|
672
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
673
|
+
* Apache-2.0 */
|
674
|
+
/**
|
675
|
+
* Helper that returns the appropriate portal url for a given request. `requestOptions.portal` is given
|
676
|
+
* precedence over `authentication.portal`. If neither `portal` nor `authentication` is present,
|
677
|
+
* `www.arcgis.com/sharing/rest` is returned.
|
678
|
+
*
|
679
|
+
* @param requestOptions - Request options that may have authentication manager
|
680
|
+
* @returns Portal url to be used in API requests
|
681
|
+
*/
|
682
|
+
function getPortalUrl(requestOptions) {
|
683
|
+
if (requestOptions === void 0) { requestOptions = {}; }
|
684
|
+
// use portal in options if specified
|
685
|
+
if (requestOptions.portal) {
|
686
|
+
return cleanUrl(requestOptions.portal);
|
687
|
+
}
|
688
|
+
// if auth was passed, use that portal
|
689
|
+
if (requestOptions.authentication) {
|
690
|
+
// the portal url is already scrubbed in the auth package
|
691
|
+
return requestOptions.authentication.portal;
|
692
|
+
}
|
693
|
+
// default to arcgis.com
|
694
|
+
return "https://www.arcgis.com/sharing/rest";
|
695
|
+
}
|
696
|
+
|
697
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
698
|
+
* Apache-2.0 */
|
699
|
+
/**
|
700
|
+
* Serialize an item and its data into a json format accepted by the Portal API for create and update operations
|
701
|
+
*
|
702
|
+
* @param item Item to be serialized
|
703
|
+
* @returns a formatted json object to be sent to Portal
|
704
|
+
*/
|
705
|
+
function serializeItem(item) {
|
706
|
+
// create a clone so we're not messing with the original
|
707
|
+
var clone = JSON.parse(JSON.stringify(item));
|
708
|
+
// binary data needs POSTed as a `file`
|
709
|
+
// JSON object literals should be passed as `text`.
|
710
|
+
if (clone.data) {
|
711
|
+
(typeof Blob !== "undefined" && item.data instanceof Blob) ||
|
712
|
+
// Node.js doesn't implement Blob
|
713
|
+
item.data.constructor.name === "ReadStream"
|
714
|
+
? (clone.file = item.data)
|
715
|
+
: (clone.text = item.data);
|
716
|
+
delete clone.data;
|
717
|
+
}
|
718
|
+
return clone;
|
719
|
+
}
|
720
|
+
/**
|
721
|
+
* `requestOptions.owner` is given priority, `requestOptions.item.owner` will be checked next. If neither are present, `authentication.getUserName()` will be used instead.
|
722
|
+
*/
|
723
|
+
function determineOwner(requestOptions) {
|
724
|
+
if (requestOptions.owner) {
|
725
|
+
return Promise.resolve(requestOptions.owner);
|
726
|
+
}
|
727
|
+
else if (requestOptions.item && requestOptions.item.owner) {
|
728
|
+
return Promise.resolve(requestOptions.item.owner);
|
729
|
+
}
|
730
|
+
else if (requestOptions.authentication &&
|
731
|
+
requestOptions.authentication.getUsername) {
|
732
|
+
return requestOptions.authentication.getUsername();
|
733
|
+
}
|
734
|
+
else {
|
735
|
+
return Promise.reject(new Error("Could not determine the owner of this item. Pass the `owner`, `item.owner`, or `authentication` option."));
|
736
|
+
}
|
737
|
+
}
|
738
|
+
/**
|
739
|
+
* checks if the extent is a valid BBox (2 element array of coordinate pair arrays)
|
740
|
+
* @param extent
|
741
|
+
* @returns
|
742
|
+
*/
|
743
|
+
function isBBox(extent) {
|
744
|
+
return (Array.isArray(extent) &&
|
745
|
+
Array.isArray(extent[0]) &&
|
746
|
+
Array.isArray(extent[1]));
|
747
|
+
}
|
748
|
+
/**
|
749
|
+
* Given a Bbox, convert it to a string. Some api endpoints expect a string
|
750
|
+
*
|
751
|
+
* @param {BBox} extent
|
752
|
+
* @return {*} {string}
|
753
|
+
*/
|
754
|
+
function bboxToString(extent) {
|
755
|
+
return extent.join(",");
|
756
|
+
}
|
757
|
+
|
758
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
759
|
+
* Apache-2.0 */
|
760
|
+
/**
|
761
|
+
* ```js
|
762
|
+
* import { updateItem } from "@esri/arcgis-rest-portal";
|
763
|
+
* //
|
764
|
+
* updateItem({
|
765
|
+
* item: {
|
766
|
+
* id: "3ef",
|
767
|
+
* description: "A three hour tour"
|
768
|
+
* },
|
769
|
+
* authentication
|
770
|
+
* })
|
771
|
+
* .then(response)
|
772
|
+
* ```
|
773
|
+
* Update an Item. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/update-item.htm) for more information.
|
774
|
+
*
|
775
|
+
* @param requestOptions - Options for the request.
|
776
|
+
* @returns A Promise that updates an item.
|
777
|
+
*/
|
778
|
+
function updateItem$1(requestOptions) {
|
779
|
+
return determineOwner(requestOptions).then(function (owner) {
|
780
|
+
var url = requestOptions.folderId
|
781
|
+
? getPortalUrl(requestOptions) + "/content/users/" + owner + "/" + requestOptions.folderId + "/items/" + requestOptions.item.id + "/update"
|
782
|
+
: getPortalUrl(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.item.id + "/update";
|
783
|
+
// serialize the item into something Portal will accept
|
784
|
+
requestOptions.params = __assign(__assign({}, requestOptions.params), serializeItem(requestOptions.item));
|
785
|
+
// convert extent, if present, into a string from bbox
|
786
|
+
// processParams was previously doing this sort of work,
|
787
|
+
// however now we need to let array of arrays through
|
788
|
+
// Thus for extents we need to move this logic here
|
789
|
+
if (requestOptions.params.extent && isBBox(requestOptions.params.extent)) {
|
790
|
+
requestOptions.params.extent = bboxToString(requestOptions.params.extent);
|
791
|
+
}
|
792
|
+
return request(url, requestOptions);
|
793
|
+
});
|
794
|
+
}
|
795
|
+
/**
|
796
|
+
* ```js
|
797
|
+
* import { updateItemResource } from "@esri/arcgis-rest-portal";
|
798
|
+
* //
|
799
|
+
* updateItemResource({
|
800
|
+
* id: '3ef',
|
801
|
+
* resource: file,
|
802
|
+
* name: 'bigkahuna.jpg',
|
803
|
+
* authentication
|
804
|
+
* })
|
805
|
+
* .then(response)
|
806
|
+
* ```
|
807
|
+
* Update a resource associated with an item. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/update-resources.htm) for more information.
|
808
|
+
*
|
809
|
+
* @param requestOptions - Options for the request
|
810
|
+
* @returns A Promise that updates an item resource.
|
811
|
+
*/
|
812
|
+
function updateItemResource(requestOptions) {
|
813
|
+
return determineOwner(requestOptions).then(function (owner) {
|
814
|
+
var url = getPortalUrl(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.id + "/updateResources";
|
815
|
+
// mix in user supplied params
|
816
|
+
requestOptions.params = __assign({ file: requestOptions.resource, fileName: requestOptions.name, resourcesPrefix: requestOptions.prefix, text: requestOptions.content }, requestOptions.params);
|
817
|
+
// only override the access specified previously if 'private' is passed explicitly
|
818
|
+
if (typeof requestOptions.private !== "undefined") {
|
819
|
+
requestOptions.params.access = requestOptions.private
|
820
|
+
? "private"
|
821
|
+
: "inherit";
|
822
|
+
}
|
823
|
+
return request(url, requestOptions);
|
824
|
+
});
|
825
|
+
}
|
826
|
+
|
827
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
828
|
+
* Apache-2.0 */
|
829
|
+
/**
|
830
|
+
* ```js
|
831
|
+
* import { addItemResource } from "@esri/arcgis-rest-portal";
|
832
|
+
* //
|
833
|
+
* // Add a file resource
|
834
|
+
* addItemResource({
|
835
|
+
* id: '3ef',
|
836
|
+
* resource: file,
|
837
|
+
* name: 'bigkahuna.jpg',
|
838
|
+
* authentication
|
839
|
+
* })
|
840
|
+
* .then(response)
|
841
|
+
* //
|
842
|
+
* // Add a text resource
|
843
|
+
* addItemResource({
|
844
|
+
* id: '4fg',
|
845
|
+
* content: "Text content",
|
846
|
+
* name: 'bigkahuna.txt',
|
847
|
+
* authentication
|
848
|
+
* })
|
849
|
+
* .then(response)
|
850
|
+
* ```
|
851
|
+
* Add a resource associated with an item. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/add-resources.htm) for more information.
|
852
|
+
*
|
853
|
+
* @param requestOptions - Options for the request
|
854
|
+
* @returns A Promise to add item resources.
|
855
|
+
*/
|
856
|
+
function addItemResource(requestOptions) {
|
857
|
+
return determineOwner(requestOptions).then(function (owner) {
|
858
|
+
var url = getPortalUrl(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.id + "/addResources";
|
859
|
+
requestOptions.params = __assign({ file: requestOptions.resource, fileName: requestOptions.name, resourcesPrefix: requestOptions.prefix, text: requestOptions.content, access: requestOptions.private ? "private" : "inherit" }, requestOptions.params);
|
860
|
+
return request(url, requestOptions);
|
861
|
+
});
|
862
|
+
}
|
863
|
+
|
864
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
865
|
+
* Apache-2.0 */
|
866
|
+
/**
|
867
|
+
* Remove a resource associated with an item
|
868
|
+
*
|
869
|
+
* @param requestOptions - Options for the request
|
870
|
+
* @returns A Promise that deletes an item resource.
|
871
|
+
*/
|
872
|
+
function removeItemResource(requestOptions) {
|
873
|
+
return determineOwner(requestOptions).then(function (owner) {
|
874
|
+
var url = getPortalUrl(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.id + "/removeResources";
|
875
|
+
// mix in user supplied params
|
876
|
+
requestOptions.params = __assign(__assign({}, requestOptions.params), { resource: requestOptions.resource });
|
877
|
+
// only override the deleteAll param specified previously if it is passed explicitly
|
878
|
+
if (typeof requestOptions.deleteAll !== "undefined") {
|
879
|
+
requestOptions.params.deleteAll = requestOptions.deleteAll;
|
880
|
+
}
|
881
|
+
return request(url, requestOptions);
|
882
|
+
});
|
883
|
+
}
|
884
|
+
|
885
|
+
var jszip_min = _commonjsHelpers.createCommonjsModule(function (module, exports) {
|
886
|
+
/*!
|
887
|
+
|
888
|
+
JSZip v3.10.1 - A JavaScript class for generating and reading zip files
|
889
|
+
<http://stuartk.com/jszip>
|
890
|
+
|
891
|
+
(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
|
892
|
+
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
|
893
|
+
|
894
|
+
JSZip uses the library pako released under the MIT license :
|
895
|
+
https://github.com/nodeca/pako/blob/main/LICENSE
|
896
|
+
*/
|
897
|
+
|
898
|
+
!function(e){module.exports=e();}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t="function"==typeof _commonjsHelpers.commonjsRequire&&_commonjsHelpers.commonjsRequire;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h);}return o[r].exports}for(var l="function"==typeof _commonjsHelpers.commonjsRequire&&_commonjsHelpers.commonjsRequire,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){var d=e("./utils"),c=e("./support"),p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c="string"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join("")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u="data:";if(e.substr(0,u.length)===u)throw new Error("Invalid base64 input, it looks like a data url.");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error("Invalid base64 input, bad content length.");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l};},{"./support":30,"./utils":32}],2:[function(e,t,r){var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i;}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o;},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate");},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){var n=e("./utils");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e;}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return -1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return -1^e}(0|t,e,e.length,0):0};},{"./utils":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null;},{}],6:[function(e,t,r){var n=null;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n};},{lie:37}],7:[function(e,t,r){var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function h(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={};}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1);},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0);},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null;},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta});};},r.compressWorker=function(e){return new h("Deflate",e)},r.uncompressWorker=function(){return new h("Inflate",{})};},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){function A(e,t){var r,n="";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo("string",s(h.name)),c=I.transformTo("string",O.utf8encode(h.name)),d=h.comment,p=I.transformTo("string",s(d)),m=I.transformTo("string",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b="",v="",y="",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),"UNIX"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+="up"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+="uc"+A(y.length,2)+y);var E="";return E+="\n\0",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+"\0\0\0\0"+A(z,4)+A(n,4)+f+b+p}}var I=e("../utils"),i=e("../stream/GenericWorker"),O=e("../utf8"),B=e("../crc32"),R=e("../signature");function s(e,t,r,n){i.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[];}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}));},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}});}else this.accumulate=!0;},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null;},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo("string",i(n));return R.CENTRAL_DIRECTORY_END+"\0\0\0\0"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}});},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume();},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on("data",function(e){t.processChunk(e);}),e.on("end",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end();}),e.on("error",function(e){t.error(e);}),this},s.prototype.resume=function(){return !!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return !1;for(var r=0;r<t.length;r++)try{t[r].error(e);}catch(e){}return !0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock();},t.exports=s;},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(e,t,r){var u=e("../compressions"),n=e("./ZipFileWorker");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+" is not a valid compression method !");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo("file",{name:e,dir:i,date:s,comment:t.comment||"",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o);}),o.entriesCount=h;}catch(e){o.error(e);}return o};},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,r){function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var e=new n;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e};}(n.prototype=e("./object")).loadAsync=e("./load"),n.support=e("./support"),n.defaults=e("./defaults"),n.version="3.10.1",n.loadAsync=function(e,t){return (new n).loadAsync(e,t)},n.external=e("./external"),t.exports=n;},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,r){var u=e("./utils"),i=e("./external"),n=e("./utf8"),s=e("./zipEntries"),a=e("./stream/Crc32Probe"),l=e("./nodejsUtils");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on("error",function(e){t(e);}).on("end",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error("Corrupted zip : CRC32 mismatch")):e();}).resume();})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):u.prepareContent("the loaded zip file",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s);}return t.zipComment.length&&(h.comment=t.zipComment),h})};},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(e,t,r){var n=e("../utils"),i=e("../stream/GenericWorker");function s(e,t){i.call(this,"Nodejs stream input adapter for "+e),this._upstreamEnded=!1,this._bindStream(t);}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on("data",function(e){t.push({data:e,meta:{percent:0}});}).on("error",function(e){t.isPaused?this.generatedError=e:t.error(e);}).on("end",function(){t.isPaused?t._upstreamEnded=!0:t.end();});},s.prototype.pause=function(){return !!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return !!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s;},{"../stream/GenericWorker":28,"../utils":32}],13:[function(e,t,r){var i=e("readable-stream").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on("data",function(e,t){n.push(e)||n._helper.pause(),r&&r(t);}).on("error",function(e){n.emit("error",e);}).on("end",function(){n.push(null);});}e("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume();},t.exports=n;},{"../utils":32,"readable-stream":16}],14:[function(e,t,r){t.exports={isNode:"undefined"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if("number"==typeof e)throw new Error('The "data" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&"function"==typeof e.on&&"function"==typeof e.pause&&"function"==typeof e.resume}};},{}],15:[function(e,t,r){function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),"string"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a="string"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t="",s.compression="STORE",i="string");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h;}var i=e("./utf8"),u=e("./utils"),l=e("./stream/GenericWorker"),a=e("./stream/StreamHelper"),f=e("./defaults"),c=e("./compressedObject"),d=e("./zipObject"),o=e("./generate"),p=e("./nodejsUtils"),m=e("./nodejs/NodejsStreamInputAdapter"),_=function(e){"/"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf("/");return 0<t?e.substring(0,t):""},g=function(e){return "/"!==e.slice(-1)&&(e+="/"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return "[object RegExp]"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n);},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t);}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return !t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||("/"!==r.slice(-1)&&(r+="/"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),"binarystring"===r.type&&(r.type="string"),!r.type)throw new Error("No output type specified.");u.checkSupport(r.type),"darwin"!==r.platform&&"freebsd"!==r.platform&&"linux"!==r.platform&&"sunos"!==r.platform||(r.platform="UNIX"),"win32"===r.platform&&(r.platform="DOS");var n=r.comment||this.comment||"";t=o.generateWorker(this,r,n);}catch(e){(t=new l("error")).error(e);}return new a(t,r.type||"string",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return (e=e||{}).type||(e.type="nodebuffer"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n;},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(e,t,r){t.exports=e("stream");},{stream:void 0}],17:[function(e,t,r){var n=e("./DataReader");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t];}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return -1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return [];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i;},{"../utils":32,"./DataReader":18}],18:[function(e,t,r){var n=e("../utils");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0;}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e);},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")},setIndex:function(e){this.checkIndex(e),this.index=e;},skip:function(e){this.setIndex(this.index+e);},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i;},{"../utils":32}],19:[function(e,t,r){var n=e("./Uint8ArrayReader");function i(e){n.call(this,e);}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i;},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){var n=e("./DataReader");function i(e){n.call(this,e);}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i;},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){var n=e("./ArrayReader");function i(e){n.call(this,e);}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i;},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),h=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new h(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)};},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b";},{}],24:[function(e,t,r){var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e;}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta});},t.exports=s;},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0);}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e);},t.exports=s;},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0);}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length;}i.prototype.processChunk.call(this,e);},t.exports=s;},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat();},function(e){t.error(e);});}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null;},s.prototype.resume=function(){return !!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0));},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return !1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t);}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s;},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null;}n.prototype={push:function(e){this.emit("data",e);},end:function(){if(this.isFinished)return !1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0;}catch(e){this.emit("error",e);}return !0},error:function(e){return !this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[];},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t);},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on("data",function(e){t.processChunk(e);}),e.on("end",function(){t.end();}),e.on("error",function(e){t.error(e);}),this},pause:function(){return !this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return !1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e);},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e]);},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock();},toString:function(){var e="Worker "+this.name;return this.previous?this.previous+" -> "+e:e}},t.exports=n;},{}],29:[function(e,t,r){var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),u=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter");}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on("data",function(e,t){n.push(e),o&&o(t);}).on("error",function(e){n=[],r(e);}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case"string":return t.join("");case"array":return Array.prototype.concat.apply([],t);case"uint8array":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case"nodebuffer":return Buffer.concat(t);default:throw new Error("concat : unsupported type '"+e+"'")}}(i,n),a);t(e);}catch(e){r(e);}n=[];}).resume();})}function f(e,t,r){var n=t;switch(t){case"blob":case"arraybuffer":n="uint8array";break;case"base64":n="string";}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock();}catch(e){this._worker=new s("error"),this._worker.error(e);}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return "data"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta);}):this._worker.on(e,function(){h.delay(t,arguments,r);}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new o(this,{objectMode:"nodebuffer"!==this._outputType},e)}},t.exports=f;},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(e,t,r){if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,r.nodebuffer="undefined"!=typeof Buffer,r.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)r.blob=!1;else {var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:"application/zip"}).size;}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob("application/zip").size;}catch(e){r.blob=!1;}}}try{r.nodestream=!!e("readable-stream").Readable;}catch(e){r.nodestream=!1;}},{"readable-stream":16}],31:[function(e,t,s){for(var o=e("./utils"),h=e("./support"),r=e("./nodejsUtils"),n=e("./stream/GenericWorker"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,"utf-8 decode"),this.leftOver=null;}function l(){n.call(this,"utf-8 encode");}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,"utf-8"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else {for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n);}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length);}else t=this.leftOver.concat(t);this.leftOver=null;}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta});},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null);},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta});},s.Utf8EncodeWorker=l;},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){var o=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),u=e("./external");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e("setimmediate"),a.newBlob=function(t,r){a.checkSupport("blob");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error("Bug : can't construct the Blob.")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)"array"===t||"nodebuffer"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join("")},stringifyByChar:function(e){for(var t="",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return !1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return !1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if("uint8array"===r?n=i.applyCanBeUsed.uint8array:"nodebuffer"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2);}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||"",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split("/"),r=[],n=0;n<t.length;n++){var i=t[n];"."===i||""===i&&0!==n&&n!==t.length-1||(".."===i?r.pop():r.push(i));}return r.join("/")},a.getTypeOf=function(e){return "string"==typeof e?"string":"[object Array]"===Object.prototype.toString.call(e)?"array":o.nodebuffer&&r.isBuffer(e)?"nodebuffer":o.uint8array&&e instanceof Uint8Array?"uint8array":o.arraybuffer&&e instanceof ArrayBuffer?"arraybuffer":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+" is not supported by this platform")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n="";for(r=0;r<(e||"").length;r++)n+="\\x"+((t=e.charCodeAt(r))<16?"0":"")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[]);});},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r;},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(n)))&&"undefined"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result);},e.onerror=function(e){r(e.target.error);},e.readAsArrayBuffer(n);}):n}).then(function(e){var t=a.getTypeOf(e);return t?("arraybuffer"===t?e=a.transformTo("uint8array",e):"string"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error("Can't read the data of '"+r+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})};},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(e,t,r){var n=e("./reader/readerFor"),i=e("./utils"),s=e("./signature"),a=e("./zipEntry"),o=e("./support");function h(e){this.files=[],this.loadOptions=e;}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+i.pretty(t)+", expected "+i.pretty(e)+")")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?"uint8array":"array",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r);},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r};},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes();},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw !this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html"):new Error("Corrupted zip: can't find end of central directory");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral();}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error("Corrupted zip: missing "+Math.abs(n)+" bytes.")},prepareReader:function(e){this.reader=n(e);},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles();}},t.exports=h;},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(e,t,r){var n=e("./reader/readerFor"),s=e("./utils"),i=e("./compressedObject"),a=e("./crc32"),o=e("./utf8"),h=e("./compressions"),u=e("./support");function l(e,t){this.options=e,this.loadOptions=t;}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error("Corrupted zip : compression "+s.pretty(this.compressionMethod)+" unknown (inner file : "+s.transformTo("string",this.fileName)+")");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize));},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength);},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0);},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4));}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i);},handleUTF8:function(){var e=u.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else {var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else {var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r);}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else {var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i);}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l;},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(e,t,r){function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions};}var s=e("./stream/StreamHelper"),i=e("./stream/DataWorker"),a=e("./utf8"),o=e("./compressedObject"),h=e("./stream/GenericWorker");n.prototype={internalStream:function(e){var t=null,r="string";try{if(!e)throw new Error("No output type specified.");var n="string"===(r=e.toLowerCase())||"text"===r;"binarystring"!==r&&"text"!==r||(r="string"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker));}catch(e){(t=new h("error")).error(e);}return new s(t,r,"")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||"nodebuffer").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],l=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n;},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(e,l,t){(function(t){var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode("");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2;};}else if(t.setImmediate||void 0===t.MessageChannel)r="document"in t&&"onreadystatechange"in t.document.createElement("script")?function(){var e=t.document.createElement("script");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null;},t.document.documentElement.appendChild(e);}:function(){setTimeout(u,0);};else {var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0);};}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length;}n=!1;}l.exports=function(e){1!==h.push(e)||n||r();};}).call(this,"undefined"!=typeof _commonjsHelpers.commonjsGlobal?_commonjsHelpers.commonjsGlobal:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});},{}],37:[function(e,t,r){var i=e("immediate");function u(){}var l={},s=["REJECTED"],a=["FULFILLED"],n=["PENDING"];function o(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e);}function h(e,t,r){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected);}function f(t,r,n){i(function(){var e;try{e=r(n);}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError("Cannot resolve promise with itself")):l.resolve(t,e);});}function c(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments);}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e));}function i(e){r||(r=!0,l.resolve(t,e));}var s=p(function(){e(i,n);});"error"===s.status&&n(s.value);}function p(e,t){var r={};try{r.value=e(t),r.status="success";}catch(e){r.status="error",r.value=e;}return r}(t.exports=o).prototype.finally=function(t){if("function"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if("function"!=typeof e&&this.state===a||"function"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e);},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e);},h.prototype.callRejected=function(e){l.reject(this.promise,e);},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e);},l.resolve=function(e,t){var r=p(c,t);if("error"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else {e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t);}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s));},function(e){i||(i=!0,l.reject(o,e));});}},o.race=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e));},function(e){n||(n=!0,l.reject(s,e));});var a;return s};},{immediate:36}],38:[function(e,t,r){var n={};(0, e("./lib/utils/common").assign)(n,e("./lib/deflate"),e("./lib/inflate"),e("./lib/zlib/constants")),t.exports=n;},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(e,t,r){var a=e("./zlib/deflate"),o=e("./utils/common"),h=e("./utils/strings"),i=e("./zlib/messages"),s=e("./zlib/zstream"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:""},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n="string"==typeof t.dictionary?h.string2buf(t.dictionary):"[object ArrayBuffer]"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0;}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return !1;n=t===~~t?t:!0===t?4:0,"string"==typeof e?i.input=h.string2buf(e):"[object ArrayBuffer]"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||("string"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)));}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e);},p.prototype.onEnd=function(e){e===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg;},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return (t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return (t=t||{}).gzip=!0,n(e,t)};},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(e,t,r){var c=e("./zlib/inflate"),d=e("./utils/common"),p=e("./utils/strings"),m=e("./zlib/constants"),n=e("./zlib/messages"),i=e("./zlib/zstream"),s=e("./zlib/gzheader"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header);}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return !1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,"string"==typeof e?h.input=p.binstring2buf(e):"[object ArrayBuffer]"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o="string"==typeof l?p.string2buf(l):"[object ArrayBuffer]"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||("string"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0);}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e);},a.prototype.onEnd=function(e){e===m.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg;},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return (t=t||{}).raw=!0,o(e,t)},r.ungzip=o;},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(e,t,r){var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n]);}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s];},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s];},flattenChunks:function(e){return [].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s));},r.setTyped(n);},{}],42:[function(e,t,r){var h=e("./common"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0]);}catch(e){i=!1;}try{String.fromCharCode.apply(null,new Uint8Array(1));}catch(e){s=!1;}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r="",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else {for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i);}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t};},{"./common":41}],43:[function(e,t,r){t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521;}return i|s<<16|0};},{}],44:[function(e,t,r){t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};},{}],45:[function(e,t,r){var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e;}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return -1^e};},{}],46:[function(e,t,r){var h,c=e("../utils/common"),u=e("./trees"),d=e("./adler32"),p=e("./crc32"),n=e("./messages"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return (e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0;}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0));}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm);}function U(e,t){e.pending_buf[e.pending++]=t;}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t;}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a];}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f;}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++;}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--;}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i;}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0;}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0;}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return (e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else {var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1;}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73);}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s);}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91);}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s);}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103);}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead);}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r);}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo="pako deflate (from Nodeca project)";},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(e,t,r){t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1;};},{}],48:[function(e,t,r){t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else {if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg="invalid literal/length code",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg="invalid distance code",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg="invalid distance too far back",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C;}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C;}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C;}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]));}else {for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]));}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p;};},{}],49:[function(e,t,r){var I=e("../utils/common"),O=e("./adler32"),B=e("./crc32"),R=e("./inffast"),T=e("./inftrees"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return (e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0;}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1;}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5;}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){e.msg="unknown compression method",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(r.flags=u,8!=(255&r.flags)){e.msg="unknown compression method",r.mode=30;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0;}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(u!==(65535&r.check)){e.msg="header crc mismatch",r.mode=30;break}l=u=0;}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30;}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if((65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3;}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else {if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(u>>>=_,l-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2;}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3;}else {for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7;}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;d--;)r.lens[r.have++]=k;}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}u>>>=v,l-=v,r.back+=v;}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra;}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}u>>>=v,l-=v,r.back+=v;}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra;}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window;}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8;}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg="incorrect data check",r.mode=30;break}l=u=0;}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8;}if(u!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=30;break}l=u=0;}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return -4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo="pako inflate (from Nodeca project)";},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(e,t,r){var D=e("../utils/common"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return -1;if(0<z&&(0===e||1!==w))return -1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]];}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0;}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0};},{"../utils/common":41}],51:[function(e,t,r){t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};},{}],52:[function(e,t,r){var i=e("../utils/common"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0;}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length;}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t;}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255;}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r);}function L(e,t,r){P(e,r[2*t],r[2*t+1]);}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o));}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0;}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0;}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n;}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t);}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2;}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--);}}(e,t),Z(s,u,e.bl_count);}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4));}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4);}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r;}(e,t,r,!0);}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p);}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e);},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1);}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e);},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8);}(e);};},{"../utils/common":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0;};},{}],54:[function(e,t,r){(function(e){!function(r,n){if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e);});}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1;},r.postMessage("","*"),r.onmessage=t,e}}()?(a="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",d,!1):r.attachEvent("onmessage",d),function(e){r.postMessage(a+e,"*");}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data);},function(e){t.port2.postMessage(e);}):l&&"onreadystatechange"in l.createElement("script")?(s=l.documentElement,function(e){var t=l.createElement("script");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null;},s.appendChild(t);}):function(e){setTimeout(c,0,e);},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f;}function f(e){delete h[e];}function c(e){if(u)setTimeout(c,0,e);else {var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r);}}(t);}finally{f(e),u=!1;}}}}function d(e){e.source===r&&"string"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length));}}("undefined"==typeof self?void 0===e?this:e:self);}).call(this,"undefined"!=typeof _commonjsHelpers.commonjsGlobal?_commonjsHelpers.commonjsGlobal:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});},{}]},{},[10])(10)});
|
899
|
+
});
|
900
|
+
|
901
|
+
/*!
|
902
|
+
* @esri/arcgis-html-sanitizer - v3.0.1 - Tue Nov 15 2022 09:46:54 GMT-0800 (Pacific Standard Time)
|
903
|
+
* Copyright (c) 2022 - Environmental Systems Research Institute, Inc.
|
904
|
+
* Apache-2.0
|
905
|
+
*
|
906
|
+
* js-xss
|
907
|
+
* Copyright (c) 2012-2018 Zongmin Lei(雷宗民) <leizongmin@gmail.com>
|
908
|
+
* http://ucdok.com
|
909
|
+
* MIT License, see https://github.com/leizongmin/js-xss/blob/master/LICENSE for details
|
910
|
+
*/
|
911
|
+
|
912
|
+
var lib$1 = {exports: {}};
|
913
|
+
|
914
|
+
var _default$1 = {};
|
915
|
+
|
916
|
+
var lib = {exports: {}};
|
917
|
+
|
918
|
+
var _default = {};
|
919
|
+
|
920
|
+
/**
|
921
|
+
* cssfilter
|
922
|
+
*
|
923
|
+
* @author 老雷<leizongmin@gmail.com>
|
924
|
+
*/
|
925
|
+
|
926
|
+
function getDefaultWhiteList$1 () {
|
927
|
+
// 白名单值说明:
|
928
|
+
// true: 允许该属性
|
929
|
+
// Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许
|
930
|
+
// RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许
|
931
|
+
// 除上面列出的值外均表示不允许
|
932
|
+
var whiteList = {};
|
933
|
+
|
934
|
+
whiteList['align-content'] = false; // default: auto
|
935
|
+
whiteList['align-items'] = false; // default: auto
|
936
|
+
whiteList['align-self'] = false; // default: auto
|
937
|
+
whiteList['alignment-adjust'] = false; // default: auto
|
938
|
+
whiteList['alignment-baseline'] = false; // default: baseline
|
939
|
+
whiteList['all'] = false; // default: depending on individual properties
|
940
|
+
whiteList['anchor-point'] = false; // default: none
|
941
|
+
whiteList['animation'] = false; // default: depending on individual properties
|
942
|
+
whiteList['animation-delay'] = false; // default: 0
|
943
|
+
whiteList['animation-direction'] = false; // default: normal
|
944
|
+
whiteList['animation-duration'] = false; // default: 0
|
945
|
+
whiteList['animation-fill-mode'] = false; // default: none
|
946
|
+
whiteList['animation-iteration-count'] = false; // default: 1
|
947
|
+
whiteList['animation-name'] = false; // default: none
|
948
|
+
whiteList['animation-play-state'] = false; // default: running
|
949
|
+
whiteList['animation-timing-function'] = false; // default: ease
|
950
|
+
whiteList['azimuth'] = false; // default: center
|
951
|
+
whiteList['backface-visibility'] = false; // default: visible
|
952
|
+
whiteList['background'] = true; // default: depending on individual properties
|
953
|
+
whiteList['background-attachment'] = true; // default: scroll
|
954
|
+
whiteList['background-clip'] = true; // default: border-box
|
955
|
+
whiteList['background-color'] = true; // default: transparent
|
956
|
+
whiteList['background-image'] = true; // default: none
|
957
|
+
whiteList['background-origin'] = true; // default: padding-box
|
958
|
+
whiteList['background-position'] = true; // default: 0% 0%
|
959
|
+
whiteList['background-repeat'] = true; // default: repeat
|
960
|
+
whiteList['background-size'] = true; // default: auto
|
961
|
+
whiteList['baseline-shift'] = false; // default: baseline
|
962
|
+
whiteList['binding'] = false; // default: none
|
963
|
+
whiteList['bleed'] = false; // default: 6pt
|
964
|
+
whiteList['bookmark-label'] = false; // default: content()
|
965
|
+
whiteList['bookmark-level'] = false; // default: none
|
966
|
+
whiteList['bookmark-state'] = false; // default: open
|
967
|
+
whiteList['border'] = true; // default: depending on individual properties
|
968
|
+
whiteList['border-bottom'] = true; // default: depending on individual properties
|
969
|
+
whiteList['border-bottom-color'] = true; // default: current color
|
970
|
+
whiteList['border-bottom-left-radius'] = true; // default: 0
|
971
|
+
whiteList['border-bottom-right-radius'] = true; // default: 0
|
972
|
+
whiteList['border-bottom-style'] = true; // default: none
|
973
|
+
whiteList['border-bottom-width'] = true; // default: medium
|
974
|
+
whiteList['border-collapse'] = true; // default: separate
|
975
|
+
whiteList['border-color'] = true; // default: depending on individual properties
|
976
|
+
whiteList['border-image'] = true; // default: none
|
977
|
+
whiteList['border-image-outset'] = true; // default: 0
|
978
|
+
whiteList['border-image-repeat'] = true; // default: stretch
|
979
|
+
whiteList['border-image-slice'] = true; // default: 100%
|
980
|
+
whiteList['border-image-source'] = true; // default: none
|
981
|
+
whiteList['border-image-width'] = true; // default: 1
|
982
|
+
whiteList['border-left'] = true; // default: depending on individual properties
|
983
|
+
whiteList['border-left-color'] = true; // default: current color
|
984
|
+
whiteList['border-left-style'] = true; // default: none
|
985
|
+
whiteList['border-left-width'] = true; // default: medium
|
986
|
+
whiteList['border-radius'] = true; // default: 0
|
987
|
+
whiteList['border-right'] = true; // default: depending on individual properties
|
988
|
+
whiteList['border-right-color'] = true; // default: current color
|
989
|
+
whiteList['border-right-style'] = true; // default: none
|
990
|
+
whiteList['border-right-width'] = true; // default: medium
|
991
|
+
whiteList['border-spacing'] = true; // default: 0
|
992
|
+
whiteList['border-style'] = true; // default: depending on individual properties
|
993
|
+
whiteList['border-top'] = true; // default: depending on individual properties
|
994
|
+
whiteList['border-top-color'] = true; // default: current color
|
995
|
+
whiteList['border-top-left-radius'] = true; // default: 0
|
996
|
+
whiteList['border-top-right-radius'] = true; // default: 0
|
997
|
+
whiteList['border-top-style'] = true; // default: none
|
998
|
+
whiteList['border-top-width'] = true; // default: medium
|
999
|
+
whiteList['border-width'] = true; // default: depending on individual properties
|
1000
|
+
whiteList['bottom'] = false; // default: auto
|
1001
|
+
whiteList['box-decoration-break'] = true; // default: slice
|
1002
|
+
whiteList['box-shadow'] = true; // default: none
|
1003
|
+
whiteList['box-sizing'] = true; // default: content-box
|
1004
|
+
whiteList['box-snap'] = true; // default: none
|
1005
|
+
whiteList['box-suppress'] = true; // default: show
|
1006
|
+
whiteList['break-after'] = true; // default: auto
|
1007
|
+
whiteList['break-before'] = true; // default: auto
|
1008
|
+
whiteList['break-inside'] = true; // default: auto
|
1009
|
+
whiteList['caption-side'] = false; // default: top
|
1010
|
+
whiteList['chains'] = false; // default: none
|
1011
|
+
whiteList['clear'] = true; // default: none
|
1012
|
+
whiteList['clip'] = false; // default: auto
|
1013
|
+
whiteList['clip-path'] = false; // default: none
|
1014
|
+
whiteList['clip-rule'] = false; // default: nonzero
|
1015
|
+
whiteList['color'] = true; // default: implementation dependent
|
1016
|
+
whiteList['color-interpolation-filters'] = true; // default: auto
|
1017
|
+
whiteList['column-count'] = false; // default: auto
|
1018
|
+
whiteList['column-fill'] = false; // default: balance
|
1019
|
+
whiteList['column-gap'] = false; // default: normal
|
1020
|
+
whiteList['column-rule'] = false; // default: depending on individual properties
|
1021
|
+
whiteList['column-rule-color'] = false; // default: current color
|
1022
|
+
whiteList['column-rule-style'] = false; // default: medium
|
1023
|
+
whiteList['column-rule-width'] = false; // default: medium
|
1024
|
+
whiteList['column-span'] = false; // default: none
|
1025
|
+
whiteList['column-width'] = false; // default: auto
|
1026
|
+
whiteList['columns'] = false; // default: depending on individual properties
|
1027
|
+
whiteList['contain'] = false; // default: none
|
1028
|
+
whiteList['content'] = false; // default: normal
|
1029
|
+
whiteList['counter-increment'] = false; // default: none
|
1030
|
+
whiteList['counter-reset'] = false; // default: none
|
1031
|
+
whiteList['counter-set'] = false; // default: none
|
1032
|
+
whiteList['crop'] = false; // default: auto
|
1033
|
+
whiteList['cue'] = false; // default: depending on individual properties
|
1034
|
+
whiteList['cue-after'] = false; // default: none
|
1035
|
+
whiteList['cue-before'] = false; // default: none
|
1036
|
+
whiteList['cursor'] = false; // default: auto
|
1037
|
+
whiteList['direction'] = false; // default: ltr
|
1038
|
+
whiteList['display'] = true; // default: depending on individual properties
|
1039
|
+
whiteList['display-inside'] = true; // default: auto
|
1040
|
+
whiteList['display-list'] = true; // default: none
|
1041
|
+
whiteList['display-outside'] = true; // default: inline-level
|
1042
|
+
whiteList['dominant-baseline'] = false; // default: auto
|
1043
|
+
whiteList['elevation'] = false; // default: level
|
1044
|
+
whiteList['empty-cells'] = false; // default: show
|
1045
|
+
whiteList['filter'] = false; // default: none
|
1046
|
+
whiteList['flex'] = false; // default: depending on individual properties
|
1047
|
+
whiteList['flex-basis'] = false; // default: auto
|
1048
|
+
whiteList['flex-direction'] = false; // default: row
|
1049
|
+
whiteList['flex-flow'] = false; // default: depending on individual properties
|
1050
|
+
whiteList['flex-grow'] = false; // default: 0
|
1051
|
+
whiteList['flex-shrink'] = false; // default: 1
|
1052
|
+
whiteList['flex-wrap'] = false; // default: nowrap
|
1053
|
+
whiteList['float'] = false; // default: none
|
1054
|
+
whiteList['float-offset'] = false; // default: 0 0
|
1055
|
+
whiteList['flood-color'] = false; // default: black
|
1056
|
+
whiteList['flood-opacity'] = false; // default: 1
|
1057
|
+
whiteList['flow-from'] = false; // default: none
|
1058
|
+
whiteList['flow-into'] = false; // default: none
|
1059
|
+
whiteList['font'] = true; // default: depending on individual properties
|
1060
|
+
whiteList['font-family'] = true; // default: implementation dependent
|
1061
|
+
whiteList['font-feature-settings'] = true; // default: normal
|
1062
|
+
whiteList['font-kerning'] = true; // default: auto
|
1063
|
+
whiteList['font-language-override'] = true; // default: normal
|
1064
|
+
whiteList['font-size'] = true; // default: medium
|
1065
|
+
whiteList['font-size-adjust'] = true; // default: none
|
1066
|
+
whiteList['font-stretch'] = true; // default: normal
|
1067
|
+
whiteList['font-style'] = true; // default: normal
|
1068
|
+
whiteList['font-synthesis'] = true; // default: weight style
|
1069
|
+
whiteList['font-variant'] = true; // default: normal
|
1070
|
+
whiteList['font-variant-alternates'] = true; // default: normal
|
1071
|
+
whiteList['font-variant-caps'] = true; // default: normal
|
1072
|
+
whiteList['font-variant-east-asian'] = true; // default: normal
|
1073
|
+
whiteList['font-variant-ligatures'] = true; // default: normal
|
1074
|
+
whiteList['font-variant-numeric'] = true; // default: normal
|
1075
|
+
whiteList['font-variant-position'] = true; // default: normal
|
1076
|
+
whiteList['font-weight'] = true; // default: normal
|
1077
|
+
whiteList['grid'] = false; // default: depending on individual properties
|
1078
|
+
whiteList['grid-area'] = false; // default: depending on individual properties
|
1079
|
+
whiteList['grid-auto-columns'] = false; // default: auto
|
1080
|
+
whiteList['grid-auto-flow'] = false; // default: none
|
1081
|
+
whiteList['grid-auto-rows'] = false; // default: auto
|
1082
|
+
whiteList['grid-column'] = false; // default: depending on individual properties
|
1083
|
+
whiteList['grid-column-end'] = false; // default: auto
|
1084
|
+
whiteList['grid-column-start'] = false; // default: auto
|
1085
|
+
whiteList['grid-row'] = false; // default: depending on individual properties
|
1086
|
+
whiteList['grid-row-end'] = false; // default: auto
|
1087
|
+
whiteList['grid-row-start'] = false; // default: auto
|
1088
|
+
whiteList['grid-template'] = false; // default: depending on individual properties
|
1089
|
+
whiteList['grid-template-areas'] = false; // default: none
|
1090
|
+
whiteList['grid-template-columns'] = false; // default: none
|
1091
|
+
whiteList['grid-template-rows'] = false; // default: none
|
1092
|
+
whiteList['hanging-punctuation'] = false; // default: none
|
1093
|
+
whiteList['height'] = true; // default: auto
|
1094
|
+
whiteList['hyphens'] = false; // default: manual
|
1095
|
+
whiteList['icon'] = false; // default: auto
|
1096
|
+
whiteList['image-orientation'] = false; // default: auto
|
1097
|
+
whiteList['image-resolution'] = false; // default: normal
|
1098
|
+
whiteList['ime-mode'] = false; // default: auto
|
1099
|
+
whiteList['initial-letters'] = false; // default: normal
|
1100
|
+
whiteList['inline-box-align'] = false; // default: last
|
1101
|
+
whiteList['justify-content'] = false; // default: auto
|
1102
|
+
whiteList['justify-items'] = false; // default: auto
|
1103
|
+
whiteList['justify-self'] = false; // default: auto
|
1104
|
+
whiteList['left'] = false; // default: auto
|
1105
|
+
whiteList['letter-spacing'] = true; // default: normal
|
1106
|
+
whiteList['lighting-color'] = true; // default: white
|
1107
|
+
whiteList['line-box-contain'] = false; // default: block inline replaced
|
1108
|
+
whiteList['line-break'] = false; // default: auto
|
1109
|
+
whiteList['line-grid'] = false; // default: match-parent
|
1110
|
+
whiteList['line-height'] = false; // default: normal
|
1111
|
+
whiteList['line-snap'] = false; // default: none
|
1112
|
+
whiteList['line-stacking'] = false; // default: depending on individual properties
|
1113
|
+
whiteList['line-stacking-ruby'] = false; // default: exclude-ruby
|
1114
|
+
whiteList['line-stacking-shift'] = false; // default: consider-shifts
|
1115
|
+
whiteList['line-stacking-strategy'] = false; // default: inline-line-height
|
1116
|
+
whiteList['list-style'] = true; // default: depending on individual properties
|
1117
|
+
whiteList['list-style-image'] = true; // default: none
|
1118
|
+
whiteList['list-style-position'] = true; // default: outside
|
1119
|
+
whiteList['list-style-type'] = true; // default: disc
|
1120
|
+
whiteList['margin'] = true; // default: depending on individual properties
|
1121
|
+
whiteList['margin-bottom'] = true; // default: 0
|
1122
|
+
whiteList['margin-left'] = true; // default: 0
|
1123
|
+
whiteList['margin-right'] = true; // default: 0
|
1124
|
+
whiteList['margin-top'] = true; // default: 0
|
1125
|
+
whiteList['marker-offset'] = false; // default: auto
|
1126
|
+
whiteList['marker-side'] = false; // default: list-item
|
1127
|
+
whiteList['marks'] = false; // default: none
|
1128
|
+
whiteList['mask'] = false; // default: border-box
|
1129
|
+
whiteList['mask-box'] = false; // default: see individual properties
|
1130
|
+
whiteList['mask-box-outset'] = false; // default: 0
|
1131
|
+
whiteList['mask-box-repeat'] = false; // default: stretch
|
1132
|
+
whiteList['mask-box-slice'] = false; // default: 0 fill
|
1133
|
+
whiteList['mask-box-source'] = false; // default: none
|
1134
|
+
whiteList['mask-box-width'] = false; // default: auto
|
1135
|
+
whiteList['mask-clip'] = false; // default: border-box
|
1136
|
+
whiteList['mask-image'] = false; // default: none
|
1137
|
+
whiteList['mask-origin'] = false; // default: border-box
|
1138
|
+
whiteList['mask-position'] = false; // default: center
|
1139
|
+
whiteList['mask-repeat'] = false; // default: no-repeat
|
1140
|
+
whiteList['mask-size'] = false; // default: border-box
|
1141
|
+
whiteList['mask-source-type'] = false; // default: auto
|
1142
|
+
whiteList['mask-type'] = false; // default: luminance
|
1143
|
+
whiteList['max-height'] = true; // default: none
|
1144
|
+
whiteList['max-lines'] = false; // default: none
|
1145
|
+
whiteList['max-width'] = true; // default: none
|
1146
|
+
whiteList['min-height'] = true; // default: 0
|
1147
|
+
whiteList['min-width'] = true; // default: 0
|
1148
|
+
whiteList['move-to'] = false; // default: normal
|
1149
|
+
whiteList['nav-down'] = false; // default: auto
|
1150
|
+
whiteList['nav-index'] = false; // default: auto
|
1151
|
+
whiteList['nav-left'] = false; // default: auto
|
1152
|
+
whiteList['nav-right'] = false; // default: auto
|
1153
|
+
whiteList['nav-up'] = false; // default: auto
|
1154
|
+
whiteList['object-fit'] = false; // default: fill
|
1155
|
+
whiteList['object-position'] = false; // default: 50% 50%
|
1156
|
+
whiteList['opacity'] = false; // default: 1
|
1157
|
+
whiteList['order'] = false; // default: 0
|
1158
|
+
whiteList['orphans'] = false; // default: 2
|
1159
|
+
whiteList['outline'] = false; // default: depending on individual properties
|
1160
|
+
whiteList['outline-color'] = false; // default: invert
|
1161
|
+
whiteList['outline-offset'] = false; // default: 0
|
1162
|
+
whiteList['outline-style'] = false; // default: none
|
1163
|
+
whiteList['outline-width'] = false; // default: medium
|
1164
|
+
whiteList['overflow'] = false; // default: depending on individual properties
|
1165
|
+
whiteList['overflow-wrap'] = false; // default: normal
|
1166
|
+
whiteList['overflow-x'] = false; // default: visible
|
1167
|
+
whiteList['overflow-y'] = false; // default: visible
|
1168
|
+
whiteList['padding'] = true; // default: depending on individual properties
|
1169
|
+
whiteList['padding-bottom'] = true; // default: 0
|
1170
|
+
whiteList['padding-left'] = true; // default: 0
|
1171
|
+
whiteList['padding-right'] = true; // default: 0
|
1172
|
+
whiteList['padding-top'] = true; // default: 0
|
1173
|
+
whiteList['page'] = false; // default: auto
|
1174
|
+
whiteList['page-break-after'] = false; // default: auto
|
1175
|
+
whiteList['page-break-before'] = false; // default: auto
|
1176
|
+
whiteList['page-break-inside'] = false; // default: auto
|
1177
|
+
whiteList['page-policy'] = false; // default: start
|
1178
|
+
whiteList['pause'] = false; // default: implementation dependent
|
1179
|
+
whiteList['pause-after'] = false; // default: implementation dependent
|
1180
|
+
whiteList['pause-before'] = false; // default: implementation dependent
|
1181
|
+
whiteList['perspective'] = false; // default: none
|
1182
|
+
whiteList['perspective-origin'] = false; // default: 50% 50%
|
1183
|
+
whiteList['pitch'] = false; // default: medium
|
1184
|
+
whiteList['pitch-range'] = false; // default: 50
|
1185
|
+
whiteList['play-during'] = false; // default: auto
|
1186
|
+
whiteList['position'] = false; // default: static
|
1187
|
+
whiteList['presentation-level'] = false; // default: 0
|
1188
|
+
whiteList['quotes'] = false; // default: text
|
1189
|
+
whiteList['region-fragment'] = false; // default: auto
|
1190
|
+
whiteList['resize'] = false; // default: none
|
1191
|
+
whiteList['rest'] = false; // default: depending on individual properties
|
1192
|
+
whiteList['rest-after'] = false; // default: none
|
1193
|
+
whiteList['rest-before'] = false; // default: none
|
1194
|
+
whiteList['richness'] = false; // default: 50
|
1195
|
+
whiteList['right'] = false; // default: auto
|
1196
|
+
whiteList['rotation'] = false; // default: 0
|
1197
|
+
whiteList['rotation-point'] = false; // default: 50% 50%
|
1198
|
+
whiteList['ruby-align'] = false; // default: auto
|
1199
|
+
whiteList['ruby-merge'] = false; // default: separate
|
1200
|
+
whiteList['ruby-position'] = false; // default: before
|
1201
|
+
whiteList['shape-image-threshold'] = false; // default: 0.0
|
1202
|
+
whiteList['shape-outside'] = false; // default: none
|
1203
|
+
whiteList['shape-margin'] = false; // default: 0
|
1204
|
+
whiteList['size'] = false; // default: auto
|
1205
|
+
whiteList['speak'] = false; // default: auto
|
1206
|
+
whiteList['speak-as'] = false; // default: normal
|
1207
|
+
whiteList['speak-header'] = false; // default: once
|
1208
|
+
whiteList['speak-numeral'] = false; // default: continuous
|
1209
|
+
whiteList['speak-punctuation'] = false; // default: none
|
1210
|
+
whiteList['speech-rate'] = false; // default: medium
|
1211
|
+
whiteList['stress'] = false; // default: 50
|
1212
|
+
whiteList['string-set'] = false; // default: none
|
1213
|
+
whiteList['tab-size'] = false; // default: 8
|
1214
|
+
whiteList['table-layout'] = false; // default: auto
|
1215
|
+
whiteList['text-align'] = true; // default: start
|
1216
|
+
whiteList['text-align-last'] = true; // default: auto
|
1217
|
+
whiteList['text-combine-upright'] = true; // default: none
|
1218
|
+
whiteList['text-decoration'] = true; // default: none
|
1219
|
+
whiteList['text-decoration-color'] = true; // default: currentColor
|
1220
|
+
whiteList['text-decoration-line'] = true; // default: none
|
1221
|
+
whiteList['text-decoration-skip'] = true; // default: objects
|
1222
|
+
whiteList['text-decoration-style'] = true; // default: solid
|
1223
|
+
whiteList['text-emphasis'] = true; // default: depending on individual properties
|
1224
|
+
whiteList['text-emphasis-color'] = true; // default: currentColor
|
1225
|
+
whiteList['text-emphasis-position'] = true; // default: over right
|
1226
|
+
whiteList['text-emphasis-style'] = true; // default: none
|
1227
|
+
whiteList['text-height'] = true; // default: auto
|
1228
|
+
whiteList['text-indent'] = true; // default: 0
|
1229
|
+
whiteList['text-justify'] = true; // default: auto
|
1230
|
+
whiteList['text-orientation'] = true; // default: mixed
|
1231
|
+
whiteList['text-overflow'] = true; // default: clip
|
1232
|
+
whiteList['text-shadow'] = true; // default: none
|
1233
|
+
whiteList['text-space-collapse'] = true; // default: collapse
|
1234
|
+
whiteList['text-transform'] = true; // default: none
|
1235
|
+
whiteList['text-underline-position'] = true; // default: auto
|
1236
|
+
whiteList['text-wrap'] = true; // default: normal
|
1237
|
+
whiteList['top'] = false; // default: auto
|
1238
|
+
whiteList['transform'] = false; // default: none
|
1239
|
+
whiteList['transform-origin'] = false; // default: 50% 50% 0
|
1240
|
+
whiteList['transform-style'] = false; // default: flat
|
1241
|
+
whiteList['transition'] = false; // default: depending on individual properties
|
1242
|
+
whiteList['transition-delay'] = false; // default: 0s
|
1243
|
+
whiteList['transition-duration'] = false; // default: 0s
|
1244
|
+
whiteList['transition-property'] = false; // default: all
|
1245
|
+
whiteList['transition-timing-function'] = false; // default: ease
|
1246
|
+
whiteList['unicode-bidi'] = false; // default: normal
|
1247
|
+
whiteList['vertical-align'] = false; // default: baseline
|
1248
|
+
whiteList['visibility'] = false; // default: visible
|
1249
|
+
whiteList['voice-balance'] = false; // default: center
|
1250
|
+
whiteList['voice-duration'] = false; // default: auto
|
1251
|
+
whiteList['voice-family'] = false; // default: implementation dependent
|
1252
|
+
whiteList['voice-pitch'] = false; // default: medium
|
1253
|
+
whiteList['voice-range'] = false; // default: medium
|
1254
|
+
whiteList['voice-rate'] = false; // default: normal
|
1255
|
+
whiteList['voice-stress'] = false; // default: normal
|
1256
|
+
whiteList['voice-volume'] = false; // default: medium
|
1257
|
+
whiteList['volume'] = false; // default: medium
|
1258
|
+
whiteList['white-space'] = false; // default: normal
|
1259
|
+
whiteList['widows'] = false; // default: 2
|
1260
|
+
whiteList['width'] = true; // default: auto
|
1261
|
+
whiteList['will-change'] = false; // default: auto
|
1262
|
+
whiteList['word-break'] = true; // default: normal
|
1263
|
+
whiteList['word-spacing'] = true; // default: normal
|
1264
|
+
whiteList['word-wrap'] = true; // default: normal
|
1265
|
+
whiteList['wrap-flow'] = false; // default: auto
|
1266
|
+
whiteList['wrap-through'] = false; // default: wrap
|
1267
|
+
whiteList['writing-mode'] = false; // default: horizontal-tb
|
1268
|
+
whiteList['z-index'] = false; // default: auto
|
1269
|
+
|
1270
|
+
return whiteList;
|
1271
|
+
}
|
1272
|
+
|
1273
|
+
|
1274
|
+
/**
|
1275
|
+
* 匹配到白名单上的一个属性时
|
1276
|
+
*
|
1277
|
+
* @param {String} name
|
1278
|
+
* @param {String} value
|
1279
|
+
* @param {Object} options
|
1280
|
+
* @return {String}
|
1281
|
+
*/
|
1282
|
+
function onAttr (name, value, options) {
|
1283
|
+
// do nothing
|
1284
|
+
}
|
1285
|
+
|
1286
|
+
/**
|
1287
|
+
* 匹配到不在白名单上的一个属性时
|
1288
|
+
*
|
1289
|
+
* @param {String} name
|
1290
|
+
* @param {String} value
|
1291
|
+
* @param {Object} options
|
1292
|
+
* @return {String}
|
1293
|
+
*/
|
1294
|
+
function onIgnoreAttr (name, value, options) {
|
1295
|
+
// do nothing
|
1296
|
+
}
|
1297
|
+
|
1298
|
+
var REGEXP_URL_JAVASCRIPT = /javascript\s*\:/img;
|
1299
|
+
|
1300
|
+
/**
|
1301
|
+
* 过滤属性值
|
1302
|
+
*
|
1303
|
+
* @param {String} name
|
1304
|
+
* @param {String} value
|
1305
|
+
* @return {String}
|
1306
|
+
*/
|
1307
|
+
function safeAttrValue$1(name, value) {
|
1308
|
+
if (REGEXP_URL_JAVASCRIPT.test(value)) return '';
|
1309
|
+
return value;
|
1310
|
+
}
|
1311
|
+
|
1312
|
+
|
1313
|
+
_default.whiteList = getDefaultWhiteList$1();
|
1314
|
+
_default.getDefaultWhiteList = getDefaultWhiteList$1;
|
1315
|
+
_default.onAttr = onAttr;
|
1316
|
+
_default.onIgnoreAttr = onIgnoreAttr;
|
1317
|
+
_default.safeAttrValue = safeAttrValue$1;
|
1318
|
+
|
1319
|
+
var util$1 = {
|
1320
|
+
indexOf: function (arr, item) {
|
1321
|
+
var i, j;
|
1322
|
+
if (Array.prototype.indexOf) {
|
1323
|
+
return arr.indexOf(item);
|
1324
|
+
}
|
1325
|
+
for (i = 0, j = arr.length; i < j; i++) {
|
1326
|
+
if (arr[i] === item) {
|
1327
|
+
return i;
|
1328
|
+
}
|
1329
|
+
}
|
1330
|
+
return -1;
|
1331
|
+
},
|
1332
|
+
forEach: function (arr, fn, scope) {
|
1333
|
+
var i, j;
|
1334
|
+
if (Array.prototype.forEach) {
|
1335
|
+
return arr.forEach(fn, scope);
|
1336
|
+
}
|
1337
|
+
for (i = 0, j = arr.length; i < j; i++) {
|
1338
|
+
fn.call(scope, arr[i], i, arr);
|
1339
|
+
}
|
1340
|
+
},
|
1341
|
+
trim: function (str) {
|
1342
|
+
if (String.prototype.trim) {
|
1343
|
+
return str.trim();
|
1344
|
+
}
|
1345
|
+
return str.replace(/(^\s*)|(\s*$)/g, '');
|
1346
|
+
},
|
1347
|
+
trimRight: function (str) {
|
1348
|
+
if (String.prototype.trimRight) {
|
1349
|
+
return str.trimRight();
|
1350
|
+
}
|
1351
|
+
return str.replace(/(\s*$)/g, '');
|
1352
|
+
}
|
1353
|
+
};
|
1354
|
+
|
1355
|
+
/**
|
1356
|
+
* cssfilter
|
1357
|
+
*
|
1358
|
+
* @author 老雷<leizongmin@gmail.com>
|
1359
|
+
*/
|
1360
|
+
|
1361
|
+
var _$3 = util$1;
|
1362
|
+
|
1363
|
+
|
1364
|
+
/**
|
1365
|
+
* 解析style
|
1366
|
+
*
|
1367
|
+
* @param {String} css
|
1368
|
+
* @param {Function} onAttr 处理属性的函数
|
1369
|
+
* 参数格式: function (sourcePosition, position, name, value, source)
|
1370
|
+
* @return {String}
|
1371
|
+
*/
|
1372
|
+
function parseStyle$1 (css, onAttr) {
|
1373
|
+
css = _$3.trimRight(css);
|
1374
|
+
if (css[css.length - 1] !== ';') css += ';';
|
1375
|
+
var cssLength = css.length;
|
1376
|
+
var isParenthesisOpen = false;
|
1377
|
+
var lastPos = 0;
|
1378
|
+
var i = 0;
|
1379
|
+
var retCSS = '';
|
1380
|
+
|
1381
|
+
function addNewAttr () {
|
1382
|
+
// 如果没有正常的闭合圆括号,则直接忽略当前属性
|
1383
|
+
if (!isParenthesisOpen) {
|
1384
|
+
var source = _$3.trim(css.slice(lastPos, i));
|
1385
|
+
var j = source.indexOf(':');
|
1386
|
+
if (j !== -1) {
|
1387
|
+
var name = _$3.trim(source.slice(0, j));
|
1388
|
+
var value = _$3.trim(source.slice(j + 1));
|
1389
|
+
// 必须有属性名称
|
1390
|
+
if (name) {
|
1391
|
+
var ret = onAttr(lastPos, retCSS.length, name, value, source);
|
1392
|
+
if (ret) retCSS += ret + '; ';
|
1393
|
+
}
|
1394
|
+
}
|
1395
|
+
}
|
1396
|
+
lastPos = i + 1;
|
1397
|
+
}
|
1398
|
+
|
1399
|
+
for (; i < cssLength; i++) {
|
1400
|
+
var c = css[i];
|
1401
|
+
if (c === '/' && css[i + 1] === '*') {
|
1402
|
+
// 备注开始
|
1403
|
+
var j = css.indexOf('*/', i + 2);
|
1404
|
+
// 如果没有正常的备注结束,则后面的部分全部跳过
|
1405
|
+
if (j === -1) break;
|
1406
|
+
// 直接将当前位置调到备注结尾,并且初始化状态
|
1407
|
+
i = j + 1;
|
1408
|
+
lastPos = i + 1;
|
1409
|
+
isParenthesisOpen = false;
|
1410
|
+
} else if (c === '(') {
|
1411
|
+
isParenthesisOpen = true;
|
1412
|
+
} else if (c === ')') {
|
1413
|
+
isParenthesisOpen = false;
|
1414
|
+
} else if (c === ';') {
|
1415
|
+
if (isParenthesisOpen) ; else {
|
1416
|
+
addNewAttr();
|
1417
|
+
}
|
1418
|
+
} else if (c === '\n') {
|
1419
|
+
addNewAttr();
|
1420
|
+
}
|
1421
|
+
}
|
1422
|
+
|
1423
|
+
return _$3.trim(retCSS);
|
1424
|
+
}
|
1425
|
+
|
1426
|
+
var parser$2 = parseStyle$1;
|
1427
|
+
|
1428
|
+
/**
|
1429
|
+
* cssfilter
|
1430
|
+
*
|
1431
|
+
* @author 老雷<leizongmin@gmail.com>
|
1432
|
+
*/
|
1433
|
+
|
1434
|
+
var DEFAULT$1 = _default;
|
1435
|
+
var parseStyle = parser$2;
|
1436
|
+
|
1437
|
+
|
1438
|
+
/**
|
1439
|
+
* 返回值是否为空
|
1440
|
+
*
|
1441
|
+
* @param {Object} obj
|
1442
|
+
* @return {Boolean}
|
1443
|
+
*/
|
1444
|
+
function isNull$1 (obj) {
|
1445
|
+
return (obj === undefined || obj === null);
|
1446
|
+
}
|
1447
|
+
|
1448
|
+
/**
|
1449
|
+
* 浅拷贝对象
|
1450
|
+
*
|
1451
|
+
* @param {Object} obj
|
1452
|
+
* @return {Object}
|
1453
|
+
*/
|
1454
|
+
function shallowCopyObject$1 (obj) {
|
1455
|
+
var ret = {};
|
1456
|
+
for (var i in obj) {
|
1457
|
+
ret[i] = obj[i];
|
1458
|
+
}
|
1459
|
+
return ret;
|
1460
|
+
}
|
1461
|
+
|
1462
|
+
/**
|
1463
|
+
* 创建CSS过滤器
|
1464
|
+
*
|
1465
|
+
* @param {Object} options
|
1466
|
+
* - {Object} whiteList
|
1467
|
+
* - {Function} onAttr
|
1468
|
+
* - {Function} onIgnoreAttr
|
1469
|
+
* - {Function} safeAttrValue
|
1470
|
+
*/
|
1471
|
+
function FilterCSS$2 (options) {
|
1472
|
+
options = shallowCopyObject$1(options || {});
|
1473
|
+
options.whiteList = options.whiteList || DEFAULT$1.whiteList;
|
1474
|
+
options.onAttr = options.onAttr || DEFAULT$1.onAttr;
|
1475
|
+
options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT$1.onIgnoreAttr;
|
1476
|
+
options.safeAttrValue = options.safeAttrValue || DEFAULT$1.safeAttrValue;
|
1477
|
+
this.options = options;
|
1478
|
+
}
|
1479
|
+
|
1480
|
+
FilterCSS$2.prototype.process = function (css) {
|
1481
|
+
// 兼容各种奇葩输入
|
1482
|
+
css = css || '';
|
1483
|
+
css = css.toString();
|
1484
|
+
if (!css) return '';
|
1485
|
+
|
1486
|
+
var me = this;
|
1487
|
+
var options = me.options;
|
1488
|
+
var whiteList = options.whiteList;
|
1489
|
+
var onAttr = options.onAttr;
|
1490
|
+
var onIgnoreAttr = options.onIgnoreAttr;
|
1491
|
+
var safeAttrValue = options.safeAttrValue;
|
1492
|
+
|
1493
|
+
var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {
|
1494
|
+
|
1495
|
+
var check = whiteList[name];
|
1496
|
+
var isWhite = false;
|
1497
|
+
if (check === true) isWhite = check;
|
1498
|
+
else if (typeof check === 'function') isWhite = check(value);
|
1499
|
+
else if (check instanceof RegExp) isWhite = check.test(value);
|
1500
|
+
if (isWhite !== true) isWhite = false;
|
1501
|
+
|
1502
|
+
// 如果过滤后 value 为空则直接忽略
|
1503
|
+
value = safeAttrValue(name, value);
|
1504
|
+
if (!value) return;
|
1505
|
+
|
1506
|
+
var opts = {
|
1507
|
+
position: position,
|
1508
|
+
sourcePosition: sourcePosition,
|
1509
|
+
source: source,
|
1510
|
+
isWhite: isWhite
|
1511
|
+
};
|
1512
|
+
|
1513
|
+
if (isWhite) {
|
1514
|
+
|
1515
|
+
var ret = onAttr(name, value, opts);
|
1516
|
+
if (isNull$1(ret)) {
|
1517
|
+
return name + ':' + value;
|
1518
|
+
} else {
|
1519
|
+
return ret;
|
1520
|
+
}
|
1521
|
+
|
1522
|
+
} else {
|
1523
|
+
|
1524
|
+
var ret = onIgnoreAttr(name, value, opts);
|
1525
|
+
if (!isNull$1(ret)) {
|
1526
|
+
return ret;
|
1527
|
+
}
|
1528
|
+
|
1529
|
+
}
|
1530
|
+
});
|
1531
|
+
|
1532
|
+
return retCSS;
|
1533
|
+
};
|
1534
|
+
|
1535
|
+
|
1536
|
+
var css = FilterCSS$2;
|
1537
|
+
|
1538
|
+
/**
|
1539
|
+
* cssfilter
|
1540
|
+
*
|
1541
|
+
* @author 老雷<leizongmin@gmail.com>
|
1542
|
+
*/
|
1543
|
+
|
1544
|
+
(function (module, exports) {
|
1545
|
+
var DEFAULT = _default;
|
1546
|
+
var FilterCSS = css;
|
1547
|
+
|
1548
|
+
|
1549
|
+
/**
|
1550
|
+
* XSS过滤
|
1551
|
+
*
|
1552
|
+
* @param {String} css 要过滤的CSS代码
|
1553
|
+
* @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr
|
1554
|
+
* @return {String}
|
1555
|
+
*/
|
1556
|
+
function filterCSS (html, options) {
|
1557
|
+
var xss = new FilterCSS(options);
|
1558
|
+
return xss.process(html);
|
1559
|
+
}
|
1560
|
+
|
1561
|
+
|
1562
|
+
// 输出
|
1563
|
+
exports = module.exports = filterCSS;
|
1564
|
+
exports.FilterCSS = FilterCSS;
|
1565
|
+
for (var i in DEFAULT) exports[i] = DEFAULT[i];
|
1566
|
+
} (lib, lib.exports));
|
1567
|
+
|
1568
|
+
var util = {
|
1569
|
+
indexOf: function (arr, item) {
|
1570
|
+
var i, j;
|
1571
|
+
if (Array.prototype.indexOf) {
|
1572
|
+
return arr.indexOf(item);
|
1573
|
+
}
|
1574
|
+
for (i = 0, j = arr.length; i < j; i++) {
|
1575
|
+
if (arr[i] === item) {
|
1576
|
+
return i;
|
1577
|
+
}
|
1578
|
+
}
|
1579
|
+
return -1;
|
1580
|
+
},
|
1581
|
+
forEach: function (arr, fn, scope) {
|
1582
|
+
var i, j;
|
1583
|
+
if (Array.prototype.forEach) {
|
1584
|
+
return arr.forEach(fn, scope);
|
1585
|
+
}
|
1586
|
+
for (i = 0, j = arr.length; i < j; i++) {
|
1587
|
+
fn.call(scope, arr[i], i, arr);
|
1588
|
+
}
|
1589
|
+
},
|
1590
|
+
trim: function (str) {
|
1591
|
+
if (String.prototype.trim) {
|
1592
|
+
return str.trim();
|
1593
|
+
}
|
1594
|
+
return str.replace(/(^\s*)|(\s*$)/g, "");
|
1595
|
+
},
|
1596
|
+
spaceIndex: function (str) {
|
1597
|
+
var reg = /\s|\n|\t/;
|
1598
|
+
var match = reg.exec(str);
|
1599
|
+
return match ? match.index : -1;
|
1600
|
+
},
|
1601
|
+
};
|
1602
|
+
|
1603
|
+
/**
|
1604
|
+
* default settings
|
1605
|
+
*
|
1606
|
+
* @author Zongmin Lei<leizongmin@gmail.com>
|
1607
|
+
*/
|
1608
|
+
|
1609
|
+
var FilterCSS$1 = lib.exports.FilterCSS;
|
1610
|
+
var getDefaultCSSWhiteList = lib.exports.getDefaultWhiteList;
|
1611
|
+
var _$2 = util;
|
1612
|
+
|
1613
|
+
function getDefaultWhiteList() {
|
1614
|
+
return {
|
1615
|
+
a: ["target", "href", "title"],
|
1616
|
+
abbr: ["title"],
|
1617
|
+
address: [],
|
1618
|
+
area: ["shape", "coords", "href", "alt"],
|
1619
|
+
article: [],
|
1620
|
+
aside: [],
|
1621
|
+
audio: [
|
1622
|
+
"autoplay",
|
1623
|
+
"controls",
|
1624
|
+
"crossorigin",
|
1625
|
+
"loop",
|
1626
|
+
"muted",
|
1627
|
+
"preload",
|
1628
|
+
"src",
|
1629
|
+
],
|
1630
|
+
b: [],
|
1631
|
+
bdi: ["dir"],
|
1632
|
+
bdo: ["dir"],
|
1633
|
+
big: [],
|
1634
|
+
blockquote: ["cite"],
|
1635
|
+
br: [],
|
1636
|
+
caption: [],
|
1637
|
+
center: [],
|
1638
|
+
cite: [],
|
1639
|
+
code: [],
|
1640
|
+
col: ["align", "valign", "span", "width"],
|
1641
|
+
colgroup: ["align", "valign", "span", "width"],
|
1642
|
+
dd: [],
|
1643
|
+
del: ["datetime"],
|
1644
|
+
details: ["open"],
|
1645
|
+
div: [],
|
1646
|
+
dl: [],
|
1647
|
+
dt: [],
|
1648
|
+
em: [],
|
1649
|
+
figcaption: [],
|
1650
|
+
figure: [],
|
1651
|
+
font: ["color", "size", "face"],
|
1652
|
+
footer: [],
|
1653
|
+
h1: [],
|
1654
|
+
h2: [],
|
1655
|
+
h3: [],
|
1656
|
+
h4: [],
|
1657
|
+
h5: [],
|
1658
|
+
h6: [],
|
1659
|
+
header: [],
|
1660
|
+
hr: [],
|
1661
|
+
i: [],
|
1662
|
+
img: ["src", "alt", "title", "width", "height"],
|
1663
|
+
ins: ["datetime"],
|
1664
|
+
li: [],
|
1665
|
+
mark: [],
|
1666
|
+
nav: [],
|
1667
|
+
ol: [],
|
1668
|
+
p: [],
|
1669
|
+
pre: [],
|
1670
|
+
s: [],
|
1671
|
+
section: [],
|
1672
|
+
small: [],
|
1673
|
+
span: [],
|
1674
|
+
sub: [],
|
1675
|
+
summary: [],
|
1676
|
+
sup: [],
|
1677
|
+
strong: [],
|
1678
|
+
strike: [],
|
1679
|
+
table: ["width", "border", "align", "valign"],
|
1680
|
+
tbody: ["align", "valign"],
|
1681
|
+
td: ["width", "rowspan", "colspan", "align", "valign"],
|
1682
|
+
tfoot: ["align", "valign"],
|
1683
|
+
th: ["width", "rowspan", "colspan", "align", "valign"],
|
1684
|
+
thead: ["align", "valign"],
|
1685
|
+
tr: ["rowspan", "align", "valign"],
|
1686
|
+
tt: [],
|
1687
|
+
u: [],
|
1688
|
+
ul: [],
|
1689
|
+
video: [
|
1690
|
+
"autoplay",
|
1691
|
+
"controls",
|
1692
|
+
"crossorigin",
|
1693
|
+
"loop",
|
1694
|
+
"muted",
|
1695
|
+
"playsinline",
|
1696
|
+
"poster",
|
1697
|
+
"preload",
|
1698
|
+
"src",
|
1699
|
+
"height",
|
1700
|
+
"width",
|
1701
|
+
],
|
1702
|
+
};
|
1703
|
+
}
|
1704
|
+
|
1705
|
+
var defaultCSSFilter = new FilterCSS$1();
|
1706
|
+
|
1707
|
+
/**
|
1708
|
+
* default onTag function
|
1709
|
+
*
|
1710
|
+
* @param {String} tag
|
1711
|
+
* @param {String} html
|
1712
|
+
* @param {Object} options
|
1713
|
+
* @return {String}
|
1714
|
+
*/
|
1715
|
+
function onTag(tag, html, options) {
|
1716
|
+
// do nothing
|
1717
|
+
}
|
1718
|
+
|
1719
|
+
/**
|
1720
|
+
* default onIgnoreTag function
|
1721
|
+
*
|
1722
|
+
* @param {String} tag
|
1723
|
+
* @param {String} html
|
1724
|
+
* @param {Object} options
|
1725
|
+
* @return {String}
|
1726
|
+
*/
|
1727
|
+
function onIgnoreTag(tag, html, options) {
|
1728
|
+
// do nothing
|
1729
|
+
}
|
1730
|
+
|
1731
|
+
/**
|
1732
|
+
* default onTagAttr function
|
1733
|
+
*
|
1734
|
+
* @param {String} tag
|
1735
|
+
* @param {String} name
|
1736
|
+
* @param {String} value
|
1737
|
+
* @return {String}
|
1738
|
+
*/
|
1739
|
+
function onTagAttr(tag, name, value) {
|
1740
|
+
// do nothing
|
1741
|
+
}
|
1742
|
+
|
1743
|
+
/**
|
1744
|
+
* default onIgnoreTagAttr function
|
1745
|
+
*
|
1746
|
+
* @param {String} tag
|
1747
|
+
* @param {String} name
|
1748
|
+
* @param {String} value
|
1749
|
+
* @return {String}
|
1750
|
+
*/
|
1751
|
+
function onIgnoreTagAttr(tag, name, value) {
|
1752
|
+
// do nothing
|
1753
|
+
}
|
1754
|
+
|
1755
|
+
/**
|
1756
|
+
* default escapeHtml function
|
1757
|
+
*
|
1758
|
+
* @param {String} html
|
1759
|
+
*/
|
1760
|
+
function escapeHtml(html) {
|
1761
|
+
return html.replace(REGEXP_LT, "<").replace(REGEXP_GT, ">");
|
1762
|
+
}
|
1763
|
+
|
1764
|
+
/**
|
1765
|
+
* default safeAttrValue function
|
1766
|
+
*
|
1767
|
+
* @param {String} tag
|
1768
|
+
* @param {String} name
|
1769
|
+
* @param {String} value
|
1770
|
+
* @param {Object} cssFilter
|
1771
|
+
* @return {String}
|
1772
|
+
*/
|
1773
|
+
function safeAttrValue(tag, name, value, cssFilter) {
|
1774
|
+
// unescape attribute value firstly
|
1775
|
+
value = friendlyAttrValue(value);
|
1776
|
+
|
1777
|
+
if (name === "href" || name === "src") {
|
1778
|
+
// filter `href` and `src` attribute
|
1779
|
+
// only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`
|
1780
|
+
value = _$2.trim(value);
|
1781
|
+
if (value === "#") return "#";
|
1782
|
+
if (
|
1783
|
+
!(
|
1784
|
+
value.substr(0, 7) === "http://" ||
|
1785
|
+
value.substr(0, 8) === "https://" ||
|
1786
|
+
value.substr(0, 7) === "mailto:" ||
|
1787
|
+
value.substr(0, 4) === "tel:" ||
|
1788
|
+
value.substr(0, 11) === "data:image/" ||
|
1789
|
+
value.substr(0, 6) === "ftp://" ||
|
1790
|
+
value.substr(0, 2) === "./" ||
|
1791
|
+
value.substr(0, 3) === "../" ||
|
1792
|
+
value[0] === "#" ||
|
1793
|
+
value[0] === "/"
|
1794
|
+
)
|
1795
|
+
) {
|
1796
|
+
return "";
|
1797
|
+
}
|
1798
|
+
} else if (name === "background") {
|
1799
|
+
// filter `background` attribute (maybe no use)
|
1800
|
+
// `javascript:`
|
1801
|
+
REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
|
1802
|
+
if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {
|
1803
|
+
return "";
|
1804
|
+
}
|
1805
|
+
} else if (name === "style") {
|
1806
|
+
// `expression()`
|
1807
|
+
REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;
|
1808
|
+
if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {
|
1809
|
+
return "";
|
1810
|
+
}
|
1811
|
+
// `url()`
|
1812
|
+
REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;
|
1813
|
+
if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {
|
1814
|
+
REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
|
1815
|
+
if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {
|
1816
|
+
return "";
|
1817
|
+
}
|
1818
|
+
}
|
1819
|
+
if (cssFilter !== false) {
|
1820
|
+
cssFilter = cssFilter || defaultCSSFilter;
|
1821
|
+
value = cssFilter.process(value);
|
1822
|
+
}
|
1823
|
+
}
|
1824
|
+
|
1825
|
+
// escape `<>"` before returns
|
1826
|
+
value = escapeAttrValue(value);
|
1827
|
+
return value;
|
1828
|
+
}
|
1829
|
+
|
1830
|
+
// RegExp list
|
1831
|
+
var REGEXP_LT = /</g;
|
1832
|
+
var REGEXP_GT = />/g;
|
1833
|
+
var REGEXP_QUOTE = /"/g;
|
1834
|
+
var REGEXP_QUOTE_2 = /"/g;
|
1835
|
+
var REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;
|
1836
|
+
var REGEXP_ATTR_VALUE_COLON = /:?/gim;
|
1837
|
+
var REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;
|
1838
|
+
// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\/\*|\*\//gm;
|
1839
|
+
var REGEXP_DEFAULT_ON_TAG_ATTR_4 =
|
1840
|
+
/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi;
|
1841
|
+
// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:/gi;
|
1842
|
+
// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:\s*image\//gi;
|
1843
|
+
var REGEXP_DEFAULT_ON_TAG_ATTR_7 =
|
1844
|
+
/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;
|
1845
|
+
var REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\s*r\s*l\s*\(.*/gi;
|
1846
|
+
|
1847
|
+
/**
|
1848
|
+
* escape double quote
|
1849
|
+
*
|
1850
|
+
* @param {String} str
|
1851
|
+
* @return {String} str
|
1852
|
+
*/
|
1853
|
+
function escapeQuote(str) {
|
1854
|
+
return str.replace(REGEXP_QUOTE, """);
|
1855
|
+
}
|
1856
|
+
|
1857
|
+
/**
|
1858
|
+
* unescape double quote
|
1859
|
+
*
|
1860
|
+
* @param {String} str
|
1861
|
+
* @return {String} str
|
1862
|
+
*/
|
1863
|
+
function unescapeQuote(str) {
|
1864
|
+
return str.replace(REGEXP_QUOTE_2, '"');
|
1865
|
+
}
|
1866
|
+
|
1867
|
+
/**
|
1868
|
+
* escape html entities
|
1869
|
+
*
|
1870
|
+
* @param {String} str
|
1871
|
+
* @return {String}
|
1872
|
+
*/
|
1873
|
+
function escapeHtmlEntities(str) {
|
1874
|
+
return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {
|
1875
|
+
return code[0] === "x" || code[0] === "X"
|
1876
|
+
? String.fromCharCode(parseInt(code.substr(1), 16))
|
1877
|
+
: String.fromCharCode(parseInt(code, 10));
|
1878
|
+
});
|
1879
|
+
}
|
1880
|
+
|
1881
|
+
/**
|
1882
|
+
* escape html5 new danger entities
|
1883
|
+
*
|
1884
|
+
* @param {String} str
|
1885
|
+
* @return {String}
|
1886
|
+
*/
|
1887
|
+
function escapeDangerHtml5Entities(str) {
|
1888
|
+
return str
|
1889
|
+
.replace(REGEXP_ATTR_VALUE_COLON, ":")
|
1890
|
+
.replace(REGEXP_ATTR_VALUE_NEWLINE, " ");
|
1891
|
+
}
|
1892
|
+
|
1893
|
+
/**
|
1894
|
+
* clear nonprintable characters
|
1895
|
+
*
|
1896
|
+
* @param {String} str
|
1897
|
+
* @return {String}
|
1898
|
+
*/
|
1899
|
+
function clearNonPrintableCharacter(str) {
|
1900
|
+
var str2 = "";
|
1901
|
+
for (var i = 0, len = str.length; i < len; i++) {
|
1902
|
+
str2 += str.charCodeAt(i) < 32 ? " " : str.charAt(i);
|
1903
|
+
}
|
1904
|
+
return _$2.trim(str2);
|
1905
|
+
}
|
1906
|
+
|
1907
|
+
/**
|
1908
|
+
* get friendly attribute value
|
1909
|
+
*
|
1910
|
+
* @param {String} str
|
1911
|
+
* @return {String}
|
1912
|
+
*/
|
1913
|
+
function friendlyAttrValue(str) {
|
1914
|
+
str = unescapeQuote(str);
|
1915
|
+
str = escapeHtmlEntities(str);
|
1916
|
+
str = escapeDangerHtml5Entities(str);
|
1917
|
+
str = clearNonPrintableCharacter(str);
|
1918
|
+
return str;
|
1919
|
+
}
|
1920
|
+
|
1921
|
+
/**
|
1922
|
+
* unescape attribute value
|
1923
|
+
*
|
1924
|
+
* @param {String} str
|
1925
|
+
* @return {String}
|
1926
|
+
*/
|
1927
|
+
function escapeAttrValue(str) {
|
1928
|
+
str = escapeQuote(str);
|
1929
|
+
str = escapeHtml(str);
|
1930
|
+
return str;
|
1931
|
+
}
|
1932
|
+
|
1933
|
+
/**
|
1934
|
+
* `onIgnoreTag` function for removing all the tags that are not in whitelist
|
1935
|
+
*/
|
1936
|
+
function onIgnoreTagStripAll() {
|
1937
|
+
return "";
|
1938
|
+
}
|
1939
|
+
|
1940
|
+
/**
|
1941
|
+
* remove tag body
|
1942
|
+
* specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)
|
1943
|
+
*
|
1944
|
+
* @param {array} tags
|
1945
|
+
* @param {function} next
|
1946
|
+
*/
|
1947
|
+
function StripTagBody(tags, next) {
|
1948
|
+
if (typeof next !== "function") {
|
1949
|
+
next = function () {};
|
1950
|
+
}
|
1951
|
+
|
1952
|
+
var isRemoveAllTag = !Array.isArray(tags);
|
1953
|
+
function isRemoveTag(tag) {
|
1954
|
+
if (isRemoveAllTag) return true;
|
1955
|
+
return _$2.indexOf(tags, tag) !== -1;
|
1956
|
+
}
|
1957
|
+
|
1958
|
+
var removeList = [];
|
1959
|
+
var posStart = false;
|
1960
|
+
|
1961
|
+
return {
|
1962
|
+
onIgnoreTag: function (tag, html, options) {
|
1963
|
+
if (isRemoveTag(tag)) {
|
1964
|
+
if (options.isClosing) {
|
1965
|
+
var ret = "[/removed]";
|
1966
|
+
var end = options.position + ret.length;
|
1967
|
+
removeList.push([
|
1968
|
+
posStart !== false ? posStart : options.position,
|
1969
|
+
end,
|
1970
|
+
]);
|
1971
|
+
posStart = false;
|
1972
|
+
return ret;
|
1973
|
+
} else {
|
1974
|
+
if (!posStart) {
|
1975
|
+
posStart = options.position;
|
1976
|
+
}
|
1977
|
+
return "[removed]";
|
1978
|
+
}
|
1979
|
+
} else {
|
1980
|
+
return next(tag, html, options);
|
1981
|
+
}
|
1982
|
+
},
|
1983
|
+
remove: function (html) {
|
1984
|
+
var rethtml = "";
|
1985
|
+
var lastPos = 0;
|
1986
|
+
_$2.forEach(removeList, function (pos) {
|
1987
|
+
rethtml += html.slice(lastPos, pos[0]);
|
1988
|
+
lastPos = pos[1];
|
1989
|
+
});
|
1990
|
+
rethtml += html.slice(lastPos);
|
1991
|
+
return rethtml;
|
1992
|
+
},
|
1993
|
+
};
|
1994
|
+
}
|
1995
|
+
|
1996
|
+
/**
|
1997
|
+
* remove html comments
|
1998
|
+
*
|
1999
|
+
* @param {String} html
|
2000
|
+
* @return {String}
|
2001
|
+
*/
|
2002
|
+
function stripCommentTag(html) {
|
2003
|
+
var retHtml = "";
|
2004
|
+
var lastPos = 0;
|
2005
|
+
while (lastPos < html.length) {
|
2006
|
+
var i = html.indexOf("<!--", lastPos);
|
2007
|
+
if (i === -1) {
|
2008
|
+
retHtml += html.slice(lastPos);
|
2009
|
+
break;
|
2010
|
+
}
|
2011
|
+
retHtml += html.slice(lastPos, i);
|
2012
|
+
var j = html.indexOf("-->", i);
|
2013
|
+
if (j === -1) {
|
2014
|
+
break;
|
2015
|
+
}
|
2016
|
+
lastPos = j + 3;
|
2017
|
+
}
|
2018
|
+
return retHtml;
|
2019
|
+
}
|
2020
|
+
|
2021
|
+
/**
|
2022
|
+
* remove invisible characters
|
2023
|
+
*
|
2024
|
+
* @param {String} html
|
2025
|
+
* @return {String}
|
2026
|
+
*/
|
2027
|
+
function stripBlankChar(html) {
|
2028
|
+
var chars = html.split("");
|
2029
|
+
chars = chars.filter(function (char) {
|
2030
|
+
var c = char.charCodeAt(0);
|
2031
|
+
if (c === 127) return false;
|
2032
|
+
if (c <= 31) {
|
2033
|
+
if (c === 10 || c === 13) return true;
|
2034
|
+
return false;
|
2035
|
+
}
|
2036
|
+
return true;
|
2037
|
+
});
|
2038
|
+
return chars.join("");
|
2039
|
+
}
|
2040
|
+
|
2041
|
+
_default$1.whiteList = getDefaultWhiteList();
|
2042
|
+
_default$1.getDefaultWhiteList = getDefaultWhiteList;
|
2043
|
+
_default$1.onTag = onTag;
|
2044
|
+
_default$1.onIgnoreTag = onIgnoreTag;
|
2045
|
+
_default$1.onTagAttr = onTagAttr;
|
2046
|
+
_default$1.onIgnoreTagAttr = onIgnoreTagAttr;
|
2047
|
+
_default$1.safeAttrValue = safeAttrValue;
|
2048
|
+
_default$1.escapeHtml = escapeHtml;
|
2049
|
+
_default$1.escapeQuote = escapeQuote;
|
2050
|
+
_default$1.unescapeQuote = unescapeQuote;
|
2051
|
+
_default$1.escapeHtmlEntities = escapeHtmlEntities;
|
2052
|
+
_default$1.escapeDangerHtml5Entities = escapeDangerHtml5Entities;
|
2053
|
+
_default$1.clearNonPrintableCharacter = clearNonPrintableCharacter;
|
2054
|
+
_default$1.friendlyAttrValue = friendlyAttrValue;
|
2055
|
+
_default$1.escapeAttrValue = escapeAttrValue;
|
2056
|
+
_default$1.onIgnoreTagStripAll = onIgnoreTagStripAll;
|
2057
|
+
_default$1.StripTagBody = StripTagBody;
|
2058
|
+
_default$1.stripCommentTag = stripCommentTag;
|
2059
|
+
_default$1.stripBlankChar = stripBlankChar;
|
2060
|
+
_default$1.cssFilter = defaultCSSFilter;
|
2061
|
+
_default$1.getDefaultCSSWhiteList = getDefaultCSSWhiteList;
|
2062
|
+
|
2063
|
+
var parser$1 = {};
|
2064
|
+
|
2065
|
+
/**
|
2066
|
+
* Simple HTML Parser
|
2067
|
+
*
|
2068
|
+
* @author Zongmin Lei<leizongmin@gmail.com>
|
2069
|
+
*/
|
2070
|
+
|
2071
|
+
var _$1 = util;
|
2072
|
+
|
2073
|
+
/**
|
2074
|
+
* get tag name
|
2075
|
+
*
|
2076
|
+
* @param {String} html e.g. '<a hef="#">'
|
2077
|
+
* @return {String}
|
2078
|
+
*/
|
2079
|
+
function getTagName(html) {
|
2080
|
+
var i = _$1.spaceIndex(html);
|
2081
|
+
var tagName;
|
2082
|
+
if (i === -1) {
|
2083
|
+
tagName = html.slice(1, -1);
|
2084
|
+
} else {
|
2085
|
+
tagName = html.slice(1, i + 1);
|
2086
|
+
}
|
2087
|
+
tagName = _$1.trim(tagName).toLowerCase();
|
2088
|
+
if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1);
|
2089
|
+
if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1);
|
2090
|
+
return tagName;
|
2091
|
+
}
|
2092
|
+
|
2093
|
+
/**
|
2094
|
+
* is close tag?
|
2095
|
+
*
|
2096
|
+
* @param {String} html 如:'<a hef="#">'
|
2097
|
+
* @return {Boolean}
|
2098
|
+
*/
|
2099
|
+
function isClosing(html) {
|
2100
|
+
return html.slice(0, 2) === "</";
|
2101
|
+
}
|
2102
|
+
|
2103
|
+
/**
|
2104
|
+
* parse input html and returns processed html
|
2105
|
+
*
|
2106
|
+
* @param {String} html
|
2107
|
+
* @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)
|
2108
|
+
* @param {Function} escapeHtml
|
2109
|
+
* @return {String}
|
2110
|
+
*/
|
2111
|
+
function parseTag$1(html, onTag, escapeHtml) {
|
2112
|
+
|
2113
|
+
var rethtml = "";
|
2114
|
+
var lastPos = 0;
|
2115
|
+
var tagStart = false;
|
2116
|
+
var quoteStart = false;
|
2117
|
+
var currentPos = 0;
|
2118
|
+
var len = html.length;
|
2119
|
+
var currentTagName = "";
|
2120
|
+
var currentHtml = "";
|
2121
|
+
|
2122
|
+
chariterator: for (currentPos = 0; currentPos < len; currentPos++) {
|
2123
|
+
var c = html.charAt(currentPos);
|
2124
|
+
if (tagStart === false) {
|
2125
|
+
if (c === "<") {
|
2126
|
+
tagStart = currentPos;
|
2127
|
+
continue;
|
2128
|
+
}
|
2129
|
+
} else {
|
2130
|
+
if (quoteStart === false) {
|
2131
|
+
if (c === "<") {
|
2132
|
+
rethtml += escapeHtml(html.slice(lastPos, currentPos));
|
2133
|
+
tagStart = currentPos;
|
2134
|
+
lastPos = currentPos;
|
2135
|
+
continue;
|
2136
|
+
}
|
2137
|
+
if (c === ">") {
|
2138
|
+
rethtml += escapeHtml(html.slice(lastPos, tagStart));
|
2139
|
+
currentHtml = html.slice(tagStart, currentPos + 1);
|
2140
|
+
currentTagName = getTagName(currentHtml);
|
2141
|
+
rethtml += onTag(
|
2142
|
+
tagStart,
|
2143
|
+
rethtml.length,
|
2144
|
+
currentTagName,
|
2145
|
+
currentHtml,
|
2146
|
+
isClosing(currentHtml)
|
2147
|
+
);
|
2148
|
+
lastPos = currentPos + 1;
|
2149
|
+
tagStart = false;
|
2150
|
+
continue;
|
2151
|
+
}
|
2152
|
+
if (c === '"' || c === "'") {
|
2153
|
+
var i = 1;
|
2154
|
+
var ic = html.charAt(currentPos - i);
|
2155
|
+
|
2156
|
+
while (ic.trim() === "" || ic === "=") {
|
2157
|
+
if (ic === "=") {
|
2158
|
+
quoteStart = c;
|
2159
|
+
continue chariterator;
|
2160
|
+
}
|
2161
|
+
ic = html.charAt(currentPos - ++i);
|
2162
|
+
}
|
2163
|
+
}
|
2164
|
+
} else {
|
2165
|
+
if (c === quoteStart) {
|
2166
|
+
quoteStart = false;
|
2167
|
+
continue;
|
2168
|
+
}
|
2169
|
+
}
|
2170
|
+
}
|
2171
|
+
}
|
2172
|
+
if (lastPos < html.length) {
|
2173
|
+
rethtml += escapeHtml(html.substr(lastPos));
|
2174
|
+
}
|
2175
|
+
|
2176
|
+
return rethtml;
|
2177
|
+
}
|
2178
|
+
|
2179
|
+
var REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\_:.-]/gim;
|
2180
|
+
|
2181
|
+
/**
|
2182
|
+
* parse input attributes and returns processed attributes
|
2183
|
+
*
|
2184
|
+
* @param {String} html e.g. `href="#" target="_blank"`
|
2185
|
+
* @param {Function} onAttr e.g. `function (name, value)`
|
2186
|
+
* @return {String}
|
2187
|
+
*/
|
2188
|
+
function parseAttr$1(html, onAttr) {
|
2189
|
+
|
2190
|
+
var lastPos = 0;
|
2191
|
+
var lastMarkPos = 0;
|
2192
|
+
var retAttrs = [];
|
2193
|
+
var tmpName = false;
|
2194
|
+
var len = html.length;
|
2195
|
+
|
2196
|
+
function addAttr(name, value) {
|
2197
|
+
name = _$1.trim(name);
|
2198
|
+
name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase();
|
2199
|
+
if (name.length < 1) return;
|
2200
|
+
var ret = onAttr(name, value || "");
|
2201
|
+
if (ret) retAttrs.push(ret);
|
2202
|
+
}
|
2203
|
+
|
2204
|
+
// 逐个分析字符
|
2205
|
+
for (var i = 0; i < len; i++) {
|
2206
|
+
var c = html.charAt(i);
|
2207
|
+
var v, j;
|
2208
|
+
if (tmpName === false && c === "=") {
|
2209
|
+
tmpName = html.slice(lastPos, i);
|
2210
|
+
lastPos = i + 1;
|
2211
|
+
lastMarkPos = html.charAt(lastPos) === '"' || html.charAt(lastPos) === "'" ? lastPos : findNextQuotationMark(html, i + 1);
|
2212
|
+
continue;
|
2213
|
+
}
|
2214
|
+
if (tmpName !== false) {
|
2215
|
+
if (
|
2216
|
+
i === lastMarkPos
|
2217
|
+
) {
|
2218
|
+
j = html.indexOf(c, i + 1);
|
2219
|
+
if (j === -1) {
|
2220
|
+
break;
|
2221
|
+
} else {
|
2222
|
+
v = _$1.trim(html.slice(lastMarkPos + 1, j));
|
2223
|
+
addAttr(tmpName, v);
|
2224
|
+
tmpName = false;
|
2225
|
+
i = j;
|
2226
|
+
lastPos = i + 1;
|
2227
|
+
continue;
|
2228
|
+
}
|
2229
|
+
}
|
2230
|
+
}
|
2231
|
+
if (/\s|\n|\t/.test(c)) {
|
2232
|
+
html = html.replace(/\s|\n|\t/g, " ");
|
2233
|
+
if (tmpName === false) {
|
2234
|
+
j = findNextEqual(html, i);
|
2235
|
+
if (j === -1) {
|
2236
|
+
v = _$1.trim(html.slice(lastPos, i));
|
2237
|
+
addAttr(v);
|
2238
|
+
tmpName = false;
|
2239
|
+
lastPos = i + 1;
|
2240
|
+
continue;
|
2241
|
+
} else {
|
2242
|
+
i = j - 1;
|
2243
|
+
continue;
|
2244
|
+
}
|
2245
|
+
} else {
|
2246
|
+
j = findBeforeEqual(html, i - 1);
|
2247
|
+
if (j === -1) {
|
2248
|
+
v = _$1.trim(html.slice(lastPos, i));
|
2249
|
+
v = stripQuoteWrap(v);
|
2250
|
+
addAttr(tmpName, v);
|
2251
|
+
tmpName = false;
|
2252
|
+
lastPos = i + 1;
|
2253
|
+
continue;
|
2254
|
+
} else {
|
2255
|
+
continue;
|
2256
|
+
}
|
2257
|
+
}
|
2258
|
+
}
|
2259
|
+
}
|
2260
|
+
|
2261
|
+
if (lastPos < html.length) {
|
2262
|
+
if (tmpName === false) {
|
2263
|
+
addAttr(html.slice(lastPos));
|
2264
|
+
} else {
|
2265
|
+
addAttr(tmpName, stripQuoteWrap(_$1.trim(html.slice(lastPos))));
|
2266
|
+
}
|
2267
|
+
}
|
2268
|
+
|
2269
|
+
return _$1.trim(retAttrs.join(" "));
|
2270
|
+
}
|
2271
|
+
|
2272
|
+
function findNextEqual(str, i) {
|
2273
|
+
for (; i < str.length; i++) {
|
2274
|
+
var c = str[i];
|
2275
|
+
if (c === " ") continue;
|
2276
|
+
if (c === "=") return i;
|
2277
|
+
return -1;
|
2278
|
+
}
|
2279
|
+
}
|
2280
|
+
|
2281
|
+
function findNextQuotationMark(str, i) {
|
2282
|
+
for (; i < str.length; i++) {
|
2283
|
+
var c = str[i];
|
2284
|
+
if (c === " ") continue;
|
2285
|
+
if (c === "'" || c === '"') return i;
|
2286
|
+
return -1;
|
2287
|
+
}
|
2288
|
+
}
|
2289
|
+
|
2290
|
+
function findBeforeEqual(str, i) {
|
2291
|
+
for (; i > 0; i--) {
|
2292
|
+
var c = str[i];
|
2293
|
+
if (c === " ") continue;
|
2294
|
+
if (c === "=") return i;
|
2295
|
+
return -1;
|
2296
|
+
}
|
2297
|
+
}
|
2298
|
+
|
2299
|
+
function isQuoteWrapString(text) {
|
2300
|
+
if (
|
2301
|
+
(text[0] === '"' && text[text.length - 1] === '"') ||
|
2302
|
+
(text[0] === "'" && text[text.length - 1] === "'")
|
2303
|
+
) {
|
2304
|
+
return true;
|
2305
|
+
} else {
|
2306
|
+
return false;
|
2307
|
+
}
|
2308
|
+
}
|
2309
|
+
|
2310
|
+
function stripQuoteWrap(text) {
|
2311
|
+
if (isQuoteWrapString(text)) {
|
2312
|
+
return text.substr(1, text.length - 2);
|
2313
|
+
} else {
|
2314
|
+
return text;
|
2315
|
+
}
|
2316
|
+
}
|
2317
|
+
|
2318
|
+
parser$1.parseTag = parseTag$1;
|
2319
|
+
parser$1.parseAttr = parseAttr$1;
|
2320
|
+
|
2321
|
+
/**
|
2322
|
+
* filter xss
|
2323
|
+
*
|
2324
|
+
* @author Zongmin Lei<leizongmin@gmail.com>
|
2325
|
+
*/
|
2326
|
+
|
2327
|
+
var FilterCSS = lib.exports.FilterCSS;
|
2328
|
+
var DEFAULT = _default$1;
|
2329
|
+
var parser = parser$1;
|
2330
|
+
var parseTag = parser.parseTag;
|
2331
|
+
var parseAttr = parser.parseAttr;
|
2332
|
+
var _ = util;
|
2333
|
+
|
2334
|
+
/**
|
2335
|
+
* returns `true` if the input value is `undefined` or `null`
|
2336
|
+
*
|
2337
|
+
* @param {Object} obj
|
2338
|
+
* @return {Boolean}
|
2339
|
+
*/
|
2340
|
+
function isNull(obj) {
|
2341
|
+
return obj === undefined || obj === null;
|
2342
|
+
}
|
2343
|
+
|
2344
|
+
/**
|
2345
|
+
* get attributes for a tag
|
2346
|
+
*
|
2347
|
+
* @param {String} html
|
2348
|
+
* @return {Object}
|
2349
|
+
* - {String} html
|
2350
|
+
* - {Boolean} closing
|
2351
|
+
*/
|
2352
|
+
function getAttrs(html) {
|
2353
|
+
var i = _.spaceIndex(html);
|
2354
|
+
if (i === -1) {
|
2355
|
+
return {
|
2356
|
+
html: "",
|
2357
|
+
closing: html[html.length - 2] === "/",
|
2358
|
+
};
|
2359
|
+
}
|
2360
|
+
html = _.trim(html.slice(i + 1, -1));
|
2361
|
+
var isClosing = html[html.length - 1] === "/";
|
2362
|
+
if (isClosing) html = _.trim(html.slice(0, -1));
|
2363
|
+
return {
|
2364
|
+
html: html,
|
2365
|
+
closing: isClosing,
|
2366
|
+
};
|
2367
|
+
}
|
2368
|
+
|
2369
|
+
/**
|
2370
|
+
* shallow copy
|
2371
|
+
*
|
2372
|
+
* @param {Object} obj
|
2373
|
+
* @return {Object}
|
2374
|
+
*/
|
2375
|
+
function shallowCopyObject(obj) {
|
2376
|
+
var ret = {};
|
2377
|
+
for (var i in obj) {
|
2378
|
+
ret[i] = obj[i];
|
2379
|
+
}
|
2380
|
+
return ret;
|
2381
|
+
}
|
2382
|
+
|
2383
|
+
function keysToLowerCase(obj) {
|
2384
|
+
var ret = {};
|
2385
|
+
for (var i in obj) {
|
2386
|
+
if (Array.isArray(obj[i])) {
|
2387
|
+
ret[i.toLowerCase()] = obj[i].map(function (item) {
|
2388
|
+
return item.toLowerCase();
|
2389
|
+
});
|
2390
|
+
} else {
|
2391
|
+
ret[i.toLowerCase()] = obj[i];
|
2392
|
+
}
|
2393
|
+
}
|
2394
|
+
return ret;
|
2395
|
+
}
|
2396
|
+
|
2397
|
+
/**
|
2398
|
+
* FilterXSS class
|
2399
|
+
*
|
2400
|
+
* @param {Object} options
|
2401
|
+
* whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,
|
2402
|
+
* onIgnoreTagAttr, safeAttrValue, escapeHtml
|
2403
|
+
* stripIgnoreTagBody, allowCommentTag, stripBlankChar
|
2404
|
+
* css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`
|
2405
|
+
*/
|
2406
|
+
function FilterXSS(options) {
|
2407
|
+
options = shallowCopyObject(options || {});
|
2408
|
+
|
2409
|
+
if (options.stripIgnoreTag) {
|
2410
|
+
if (options.onIgnoreTag) {
|
2411
|
+
console.error(
|
2412
|
+
'Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'
|
2413
|
+
);
|
2414
|
+
}
|
2415
|
+
options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;
|
2416
|
+
}
|
2417
|
+
if (options.whiteList || options.allowList) {
|
2418
|
+
options.whiteList = keysToLowerCase(options.whiteList || options.allowList);
|
2419
|
+
} else {
|
2420
|
+
options.whiteList = DEFAULT.whiteList;
|
2421
|
+
}
|
2422
|
+
|
2423
|
+
options.onTag = options.onTag || DEFAULT.onTag;
|
2424
|
+
options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;
|
2425
|
+
options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;
|
2426
|
+
options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;
|
2427
|
+
options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;
|
2428
|
+
options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;
|
2429
|
+
this.options = options;
|
2430
|
+
|
2431
|
+
if (options.css === false) {
|
2432
|
+
this.cssFilter = false;
|
2433
|
+
} else {
|
2434
|
+
options.css = options.css || {};
|
2435
|
+
this.cssFilter = new FilterCSS(options.css);
|
2436
|
+
}
|
2437
|
+
}
|
2438
|
+
|
2439
|
+
/**
|
2440
|
+
* start process and returns result
|
2441
|
+
*
|
2442
|
+
* @param {String} html
|
2443
|
+
* @return {String}
|
2444
|
+
*/
|
2445
|
+
FilterXSS.prototype.process = function (html) {
|
2446
|
+
// compatible with the input
|
2447
|
+
html = html || "";
|
2448
|
+
html = html.toString();
|
2449
|
+
if (!html) return "";
|
2450
|
+
|
2451
|
+
var me = this;
|
2452
|
+
var options = me.options;
|
2453
|
+
var whiteList = options.whiteList;
|
2454
|
+
var onTag = options.onTag;
|
2455
|
+
var onIgnoreTag = options.onIgnoreTag;
|
2456
|
+
var onTagAttr = options.onTagAttr;
|
2457
|
+
var onIgnoreTagAttr = options.onIgnoreTagAttr;
|
2458
|
+
var safeAttrValue = options.safeAttrValue;
|
2459
|
+
var escapeHtml = options.escapeHtml;
|
2460
|
+
var cssFilter = me.cssFilter;
|
2461
|
+
|
2462
|
+
// remove invisible characters
|
2463
|
+
if (options.stripBlankChar) {
|
2464
|
+
html = DEFAULT.stripBlankChar(html);
|
2465
|
+
}
|
2466
|
+
|
2467
|
+
// remove html comments
|
2468
|
+
if (!options.allowCommentTag) {
|
2469
|
+
html = DEFAULT.stripCommentTag(html);
|
2470
|
+
}
|
2471
|
+
|
2472
|
+
// if enable stripIgnoreTagBody
|
2473
|
+
var stripIgnoreTagBody = false;
|
2474
|
+
if (options.stripIgnoreTagBody) {
|
2475
|
+
stripIgnoreTagBody = DEFAULT.StripTagBody(
|
2476
|
+
options.stripIgnoreTagBody,
|
2477
|
+
onIgnoreTag
|
2478
|
+
);
|
2479
|
+
onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;
|
2480
|
+
}
|
2481
|
+
|
2482
|
+
var retHtml = parseTag(
|
2483
|
+
html,
|
2484
|
+
function (sourcePosition, position, tag, html, isClosing) {
|
2485
|
+
var info = {
|
2486
|
+
sourcePosition: sourcePosition,
|
2487
|
+
position: position,
|
2488
|
+
isClosing: isClosing,
|
2489
|
+
isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),
|
2490
|
+
};
|
2491
|
+
|
2492
|
+
// call `onTag()`
|
2493
|
+
var ret = onTag(tag, html, info);
|
2494
|
+
if (!isNull(ret)) return ret;
|
2495
|
+
|
2496
|
+
if (info.isWhite) {
|
2497
|
+
if (info.isClosing) {
|
2498
|
+
return "</" + tag + ">";
|
2499
|
+
}
|
2500
|
+
|
2501
|
+
var attrs = getAttrs(html);
|
2502
|
+
var whiteAttrList = whiteList[tag];
|
2503
|
+
var attrsHtml = parseAttr(attrs.html, function (name, value) {
|
2504
|
+
// call `onTagAttr()`
|
2505
|
+
var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;
|
2506
|
+
var ret = onTagAttr(tag, name, value, isWhiteAttr);
|
2507
|
+
if (!isNull(ret)) return ret;
|
2508
|
+
|
2509
|
+
if (isWhiteAttr) {
|
2510
|
+
// call `safeAttrValue()`
|
2511
|
+
value = safeAttrValue(tag, name, value, cssFilter);
|
2512
|
+
if (value) {
|
2513
|
+
return name + '="' + value + '"';
|
2514
|
+
} else {
|
2515
|
+
return name;
|
2516
|
+
}
|
2517
|
+
} else {
|
2518
|
+
// call `onIgnoreTagAttr()`
|
2519
|
+
ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);
|
2520
|
+
if (!isNull(ret)) return ret;
|
2521
|
+
return;
|
2522
|
+
}
|
2523
|
+
});
|
2524
|
+
|
2525
|
+
// build new tag html
|
2526
|
+
html = "<" + tag;
|
2527
|
+
if (attrsHtml) html += " " + attrsHtml;
|
2528
|
+
if (attrs.closing) html += " /";
|
2529
|
+
html += ">";
|
2530
|
+
return html;
|
2531
|
+
} else {
|
2532
|
+
// call `onIgnoreTag()`
|
2533
|
+
ret = onIgnoreTag(tag, html, info);
|
2534
|
+
if (!isNull(ret)) return ret;
|
2535
|
+
return escapeHtml(html);
|
2536
|
+
}
|
2537
|
+
},
|
2538
|
+
escapeHtml
|
2539
|
+
);
|
2540
|
+
|
2541
|
+
// if enable stripIgnoreTagBody
|
2542
|
+
if (stripIgnoreTagBody) {
|
2543
|
+
retHtml = stripIgnoreTagBody.remove(retHtml);
|
2544
|
+
}
|
2545
|
+
|
2546
|
+
return retHtml;
|
2547
|
+
};
|
2548
|
+
|
2549
|
+
var xss = FilterXSS;
|
2550
|
+
|
2551
|
+
/**
|
2552
|
+
* xss
|
2553
|
+
*
|
2554
|
+
* @author Zongmin Lei<leizongmin@gmail.com>
|
2555
|
+
*/
|
2556
|
+
|
2557
|
+
(function (module, exports) {
|
2558
|
+
var DEFAULT = _default$1;
|
2559
|
+
var parser = parser$1;
|
2560
|
+
var FilterXSS = xss;
|
2561
|
+
|
2562
|
+
/**
|
2563
|
+
* filter xss function
|
2564
|
+
*
|
2565
|
+
* @param {String} html
|
2566
|
+
* @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }
|
2567
|
+
* @return {String}
|
2568
|
+
*/
|
2569
|
+
function filterXSS(html, options) {
|
2570
|
+
var xss = new FilterXSS(options);
|
2571
|
+
return xss.process(html);
|
2572
|
+
}
|
2573
|
+
|
2574
|
+
exports = module.exports = filterXSS;
|
2575
|
+
exports.filterXSS = filterXSS;
|
2576
|
+
exports.FilterXSS = FilterXSS;
|
2577
|
+
|
2578
|
+
(function () {
|
2579
|
+
for (var i in DEFAULT) {
|
2580
|
+
exports[i] = DEFAULT[i];
|
2581
|
+
}
|
2582
|
+
for (var j in parser) {
|
2583
|
+
exports[j] = parser[j];
|
2584
|
+
}
|
2585
|
+
})();
|
2586
|
+
|
2587
|
+
// using `xss` on the WebWorker, output `filterXSS` to the globals
|
2588
|
+
function isWorkerEnv() {
|
2589
|
+
return (
|
2590
|
+
typeof self !== "undefined" &&
|
2591
|
+
typeof DedicatedWorkerGlobalScope !== "undefined" &&
|
2592
|
+
self instanceof DedicatedWorkerGlobalScope
|
2593
|
+
);
|
2594
|
+
}
|
2595
|
+
if (isWorkerEnv()) {
|
2596
|
+
self.filterXSS = module.exports;
|
2597
|
+
}
|
2598
|
+
} (lib$1, lib$1.exports));
|
2599
|
+
|
2600
|
+
/** @license
|
2601
|
+
* Copyright 2020 Esri
|
2602
|
+
*
|
2603
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
2604
|
+
* you may not use this file except in compliance with the License.
|
2605
|
+
* You may obtain a copy of the License at
|
2606
|
+
*
|
2607
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
2608
|
+
*
|
2609
|
+
* Unless required by applicable law or agreed to in writing, software
|
2610
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
2611
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
2612
|
+
* See the License for the specific language governing permissions and
|
2613
|
+
* limitations under the License.
|
2614
|
+
*/
|
2615
|
+
/**
|
2616
|
+
* Supplies the File constructor for Microsoft Legacy Edge.
|
2617
|
+
*
|
2618
|
+
* @param fileBits Contents for file
|
2619
|
+
* @param fileName Name for file
|
2620
|
+
* @param options Bucket of options, euch as `type` for the MIME type; defaults to empty string for `type`
|
2621
|
+
* @returns File or, for Microsoft Legacy Edge, Blob
|
2622
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/File/File
|
2623
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob
|
2624
|
+
*/
|
2625
|
+
function new_File(fileBits, fileName, options) {
|
2626
|
+
let file;
|
2627
|
+
try {
|
2628
|
+
// Modern browser
|
2629
|
+
file = new File(fileBits, fileName, options);
|
2630
|
+
}
|
2631
|
+
catch (error) {
|
2632
|
+
// Microsoft Legacy Edge
|
2633
|
+
/* istanbul ignore next */
|
2634
|
+
file = (function () {
|
2635
|
+
if (typeof options === "undefined") {
|
2636
|
+
// Microsoft Legacy Edge fails in karma if options is not defined
|
2637
|
+
options = {
|
2638
|
+
type: ""
|
2639
|
+
};
|
2640
|
+
}
|
2641
|
+
const blob = new Blob(fileBits, options);
|
2642
|
+
blob.lastModified = new Date();
|
2643
|
+
blob.name = fileName;
|
2644
|
+
return blob;
|
2645
|
+
})();
|
2646
|
+
}
|
2647
|
+
return file;
|
2648
|
+
}
|
2649
|
+
|
2650
|
+
/** @license
|
2651
|
+
* Copyright 2018 Esri
|
2652
|
+
*
|
2653
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
2654
|
+
* you may not use this file except in compliance with the License.
|
2655
|
+
* You may obtain a copy of the License at
|
2656
|
+
*
|
2657
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
2658
|
+
*
|
2659
|
+
* Unless required by applicable law or agreed to in writing, software
|
2660
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
2661
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
2662
|
+
* See the License for the specific language governing permissions and
|
2663
|
+
* limitations under the License.
|
2664
|
+
*/
|
2665
|
+
/**
|
2666
|
+
* Extracts JSON from a Blob.
|
2667
|
+
*
|
2668
|
+
* @param blob Blob to use as source
|
2669
|
+
* @returns A promise that will resolve with JSON or null
|
2670
|
+
*/
|
2671
|
+
function blobToJson(blob) {
|
2672
|
+
return new Promise(resolve => {
|
2673
|
+
blobToText(blob).then(blobContents => {
|
2674
|
+
try {
|
2675
|
+
resolve(JSON.parse(blobContents));
|
2676
|
+
}
|
2677
|
+
catch (err) {
|
2678
|
+
resolve(null);
|
2679
|
+
}
|
2680
|
+
}, () => resolve(null));
|
2681
|
+
});
|
2682
|
+
}
|
2683
|
+
/**
|
2684
|
+
* Converts a Blob to a File.
|
2685
|
+
*
|
2686
|
+
* @param blob Blob to use as source
|
2687
|
+
* @param filename Name to use for file
|
2688
|
+
* @param mimeType MIME type to override blob's MIME type
|
2689
|
+
* @returns File created out of Blob and filename
|
2690
|
+
*/
|
2691
|
+
function blobToFile(blob, filename, mimeType) {
|
2692
|
+
return blob
|
2693
|
+
? new_File([blob], filename ? filename : "", {
|
2694
|
+
type: mimeType || blob.type
|
2695
|
+
})
|
2696
|
+
: null;
|
2697
|
+
}
|
2698
|
+
/**
|
2699
|
+
* Extracts text from a Blob.
|
2700
|
+
*
|
2701
|
+
* @param blob Blob to use as source
|
2702
|
+
* @returns A promise that will resolve with text read from blob
|
2703
|
+
*/
|
2704
|
+
function blobToText(blob) {
|
2705
|
+
return new Promise(resolve => {
|
2706
|
+
const reader = new FileReader();
|
2707
|
+
reader.onload = function (evt) {
|
2708
|
+
// Disable needed because Node requires cast
|
2709
|
+
// tslint:disable-next-line: no-unnecessary-type-assertion
|
2710
|
+
const blobContents = evt.target.result;
|
2711
|
+
resolve(blobContents ? blobContents : ""); // not handling ArrayContents variant
|
2712
|
+
};
|
2713
|
+
reader.readAsText(blob);
|
2714
|
+
});
|
2715
|
+
}
|
2716
|
+
/**
|
2717
|
+
* Checks that a URL path ends with a slash.
|
2718
|
+
*
|
2719
|
+
* @param url URL to check
|
2720
|
+
* @returns URL, appended with slash if missing
|
2721
|
+
*/
|
2722
|
+
function checkUrlPathTermination(url) {
|
2723
|
+
return url ? (url.endsWith("/") ? url : url + "/") : url;
|
2724
|
+
}
|
2725
|
+
/**
|
2726
|
+
* Gets a property out of a deeply nested object.
|
2727
|
+
* Does not handle anything but nested object graph
|
2728
|
+
*
|
2729
|
+
* @param obj Object to retrieve value from
|
2730
|
+
* @param path Path into an object, e.g., "data.values.webmap", where "data" is a top-level property
|
2731
|
+
* in obj
|
2732
|
+
* @returns Value at end of path
|
2733
|
+
*/
|
2734
|
+
function getProp(obj, path) {
|
2735
|
+
return path.split(".").reduce(function (prev, curr) {
|
2736
|
+
/* istanbul ignore next no need to test undefined scenario */
|
2737
|
+
return prev ? prev[curr] : undefined;
|
2738
|
+
}, obj);
|
2739
|
+
}
|
2740
|
+
/**
|
2741
|
+
* Sets a deeply nested property of an object.
|
2742
|
+
* Creates the full path if it does not exist.
|
2743
|
+
*
|
2744
|
+
* @param obj Object to set value of
|
2745
|
+
* @param path Path into an object, e.g., "data.values.webmap", where "data" is a top-level property in obj
|
2746
|
+
* @param value The value to set at the end of the path
|
2747
|
+
*/
|
2748
|
+
function setCreateProp(obj, path, value) {
|
2749
|
+
const pathParts = path.split(".");
|
2750
|
+
pathParts.reduce((a, b, c) => {
|
2751
|
+
if (c === pathParts.length - 1) {
|
2752
|
+
a[b] = value;
|
2753
|
+
return value;
|
2754
|
+
}
|
2755
|
+
else {
|
2756
|
+
if (!a[b]) {
|
2757
|
+
a[b] = {};
|
2758
|
+
}
|
2759
|
+
return a[b];
|
2760
|
+
}
|
2761
|
+
}, obj);
|
2762
|
+
}
|
2763
|
+
|
2764
|
+
/**
|
2765
|
+
* Gets a Blob from a web site.
|
2766
|
+
*
|
2767
|
+
* @param url Address of Blob
|
2768
|
+
* @param authentication Credentials for the request
|
2769
|
+
* @param requestOptions - Options for the request, including parameters relevant to the endpoint.
|
2770
|
+
* @returns Promise that will resolve with Blob or an AGO-style JSON failure response
|
2771
|
+
*/
|
2772
|
+
function getBlob(url, authentication, requestOptions = {}) {
|
2773
|
+
if (!url) {
|
2774
|
+
return Promise.reject("Url must be provided");
|
2775
|
+
}
|
2776
|
+
const blobRequestOptions = {
|
2777
|
+
authentication: authentication,
|
2778
|
+
rawResponse: true,
|
2779
|
+
...requestOptions
|
2780
|
+
};
|
2781
|
+
return request(url, blobRequestOptions).then(response => {
|
2782
|
+
return response.blob();
|
2783
|
+
});
|
2784
|
+
}
|
2785
|
+
|
2786
|
+
/** @license
|
2787
|
+
* Copyright 2018 Esri
|
2788
|
+
*
|
2789
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
2790
|
+
* you may not use this file except in compliance with the License.
|
2791
|
+
* You may obtain a copy of the License at
|
2792
|
+
*
|
2793
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
2794
|
+
*
|
2795
|
+
* Unless required by applicable law or agreed to in writing, software
|
2796
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
2797
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
2798
|
+
* See the License for the specific language governing permissions and
|
2799
|
+
* limitations under the License.
|
2800
|
+
*/
|
2801
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
2802
|
+
const ZIP_FILE_HEADER_SIGNATURE = "PK";
|
2803
|
+
/**
|
2804
|
+
* Gets a Blob from a web site and casts it as a file using the supplied name.
|
2805
|
+
*
|
2806
|
+
* @param url Address of Blob
|
2807
|
+
* @param filename Name to use for file
|
2808
|
+
* @param authentication Credentials for the request
|
2809
|
+
* @returns Promise that will resolve with a File, undefined if the Blob is null, or an AGO-style JSON failure response
|
2810
|
+
*/
|
2811
|
+
function getBlobAsFile(url, filename, authentication, ignoreErrors = [], mimeType) {
|
2812
|
+
return new Promise((resolve, reject) => {
|
2813
|
+
// Get the blob from the URL
|
2814
|
+
getBlobCheckForError(url, authentication, ignoreErrors).then(blob => !blob ? resolve(null) : resolve(blobToFile(blob, filename, mimeType)), reject);
|
2815
|
+
});
|
2816
|
+
}
|
2817
|
+
/**
|
2818
|
+
* Gets a Blob from a web site and checks for a JSON error packet in the Blob.
|
2819
|
+
*
|
2820
|
+
* @param url Address of Blob
|
2821
|
+
* @param authentication Credentials for the request
|
2822
|
+
* @param ignoreErrors List of HTTP error codes that should be ignored
|
2823
|
+
* @returns Promise that will resolve with Blob or an AGO-REST JSON failure response
|
2824
|
+
*/
|
2825
|
+
function getBlobCheckForError(url, authentication, ignoreErrors = []) {
|
2826
|
+
return new Promise((resolve, reject) => {
|
2827
|
+
// Get the blob from the URL
|
2828
|
+
getBlob(url, authentication).then(blob => {
|
2829
|
+
// Reclassify text/plain blobs as needed
|
2830
|
+
_fixTextBlobType(blob).then(adjustedBlob => {
|
2831
|
+
if (adjustedBlob.type === "application/json") {
|
2832
|
+
// Blob may be an error
|
2833
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
2834
|
+
blobToJson(adjustedBlob).then((json) => {
|
2835
|
+
// Check for valid JSON with an error
|
2836
|
+
if (json?.error) {
|
2837
|
+
const code = json.error.code;
|
2838
|
+
if (code !== undefined && ignoreErrors.indexOf(code) >= 0) {
|
2839
|
+
resolve(null); // Error, but ignored
|
2840
|
+
}
|
2841
|
+
else {
|
2842
|
+
reject(json); // Other error; fail with error
|
2843
|
+
}
|
2844
|
+
}
|
2845
|
+
else {
|
2846
|
+
resolve(adjustedBlob);
|
2847
|
+
}
|
2848
|
+
});
|
2849
|
+
}
|
2850
|
+
else {
|
2851
|
+
resolve(adjustedBlob);
|
2852
|
+
}
|
2853
|
+
}, reject);
|
2854
|
+
}, reject);
|
2855
|
+
});
|
2856
|
+
}
|
2857
|
+
/**
|
2858
|
+
* Gets the data information of an AGO item in its JSON form.
|
2859
|
+
*
|
2860
|
+
* @param itemId Id of an item whose data information is sought
|
2861
|
+
* @param filename Name to use for file
|
2862
|
+
* @param authentication Credentials for the request to AGO
|
2863
|
+
* @returns Promise that will resolve with JSON, or an AGO-style JSON failure response
|
2864
|
+
*/
|
2865
|
+
function getItemDataAsJson(itemId, authentication) {
|
2866
|
+
return new Promise(resolve => {
|
2867
|
+
getItemDataBlob(itemId, authentication).then(blob => resolve(blobToJson(blob)), () => resolve(null));
|
2868
|
+
});
|
2869
|
+
}
|
2870
|
+
/**
|
2871
|
+
* Gets the data information of an AGO item in its raw (Blob) form.
|
2872
|
+
*
|
2873
|
+
* @param itemId Id of an item whose data information is sought
|
2874
|
+
* @param authentication Credentials for the request to AGO
|
2875
|
+
* @returns A promise that will resolve with the data Blob or null if the item doesn't have a data section
|
2876
|
+
*/
|
2877
|
+
function getItemDataBlob(itemId, authentication) {
|
2878
|
+
return new Promise(resolve => {
|
2879
|
+
const url = getItemDataBlobUrl(itemId, authentication);
|
2880
|
+
getBlobCheckForError(url, authentication, [400, 500]).then(blob => resolve(_fixTextBlobType(blob)), () => resolve(null));
|
2881
|
+
});
|
2882
|
+
}
|
2883
|
+
/**
|
2884
|
+
* Gets the URL to the data information of an AGO item in its raw (Blob) form.
|
2885
|
+
*
|
2886
|
+
* @param itemId Id of an item whose data information is sought
|
2887
|
+
* @param authentication Credentials for the request to AGO
|
2888
|
+
* @returns URL string
|
2889
|
+
*/
|
2890
|
+
function getItemDataBlobUrl(itemId, authentication) {
|
2891
|
+
return `${getPortalSharingUrlFromAuth(authentication)}/content/items/${itemId}/data`;
|
2892
|
+
}
|
2893
|
+
/**
|
2894
|
+
* Extracts the portal sharing url from a supplied authentication.
|
2895
|
+
*
|
2896
|
+
* @param authentication Credentials for the request to AGO
|
2897
|
+
* @returns Portal sharing url to be used in API requests, defaulting to `https://www.arcgis.com/sharing/rest`
|
2898
|
+
*/
|
2899
|
+
function getPortalSharingUrlFromAuth(authentication) {
|
2900
|
+
// If auth was passed, use that portal
|
2901
|
+
return getProp(authentication, "portal") || "https://www.arcgis.com/sharing/rest";
|
2902
|
+
}
|
2903
|
+
function getThumbnailFile(url, filename, authentication) {
|
2904
|
+
return new Promise(resolve => {
|
2905
|
+
getBlobAsFile(url, filename, authentication, [500]).then(resolve, () => resolve(null));
|
2906
|
+
});
|
2907
|
+
}
|
2908
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
2909
|
+
/**
|
2910
|
+
* Fixes the types of Blobs incorrectly typed as text/plain.
|
2911
|
+
*
|
2912
|
+
* @param blob Blob to check
|
2913
|
+
* @returns Promise resolving to original Blob, unless it's originally typed as text/plain but is
|
2914
|
+
* really JSON, ZIP, or XML
|
2915
|
+
* @private
|
2916
|
+
*/
|
2917
|
+
function _fixTextBlobType(blob) {
|
2918
|
+
return new Promise((resolve, reject) => {
|
2919
|
+
if (blob &&
|
2920
|
+
blob.size > 0 &&
|
2921
|
+
(blob.type.startsWith("text/plain") ||
|
2922
|
+
blob.type.startsWith("application/json"))) {
|
2923
|
+
blobToText(blob).then(blobText => {
|
2924
|
+
// Convertible to JSON?
|
2925
|
+
try {
|
2926
|
+
JSON.parse(blobText);
|
2927
|
+
// Yes; reclassify as JSON
|
2928
|
+
resolve(new Blob([blob], { type: "application/json" }));
|
2929
|
+
}
|
2930
|
+
catch (ignored) {
|
2931
|
+
// Nope; test for ZIP file
|
2932
|
+
if (blobText.length > 4 &&
|
2933
|
+
blobText.substr(0, 4) === ZIP_FILE_HEADER_SIGNATURE) {
|
2934
|
+
// Yes; reclassify as ZIP
|
2935
|
+
resolve(new Blob([blob], { type: "application/zip" }));
|
2936
|
+
}
|
2937
|
+
else if (blobText.startsWith("<")) {
|
2938
|
+
// Reclassify as XML; since the blob started out as text/plain, it's more likely that is
|
2939
|
+
// meant to be human-readable, so we'll use text/xml instead of application/xml
|
2940
|
+
resolve(new Blob([blob], { type: "text/xml" }));
|
2941
|
+
}
|
2942
|
+
else {
|
2943
|
+
// Leave as text
|
2944
|
+
resolve(blob);
|
2945
|
+
}
|
2946
|
+
}
|
2947
|
+
},
|
2948
|
+
// Faulty blob
|
2949
|
+
reject);
|
2950
|
+
}
|
2951
|
+
else {
|
2952
|
+
// Empty or not typed as plain text, so simply return
|
2953
|
+
if (blob) {
|
2954
|
+
resolve(blob);
|
2955
|
+
}
|
2956
|
+
else {
|
2957
|
+
reject();
|
2958
|
+
}
|
2959
|
+
}
|
2960
|
+
});
|
2961
|
+
}
|
2962
|
+
|
2963
|
+
/** @license
|
2964
|
+
* Copyright 2018 Esri
|
2965
|
+
*
|
2966
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
2967
|
+
* you may not use this file except in compliance with the License.
|
2968
|
+
* You may obtain a copy of the License at
|
2969
|
+
*
|
2970
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
2971
|
+
*
|
2972
|
+
* Unless required by applicable law or agreed to in writing, software
|
2973
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
2974
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
2975
|
+
* See the License for the specific language governing permissions and
|
2976
|
+
* limitations under the License.
|
2977
|
+
*/
|
2978
|
+
/**
|
2979
|
+
* Updates an item.
|
2980
|
+
*
|
2981
|
+
* @param itemInfo The base info of an item; note that this content will be serialized, which doesn't work
|
2982
|
+
* for binary content
|
2983
|
+
* @param authentication Credentials for request
|
2984
|
+
* @param folderId Item's folder
|
2985
|
+
* @param additionalParams Updates that are put under the `params` property, which is not serialized
|
2986
|
+
* @return
|
2987
|
+
*/
|
2988
|
+
function updateItem(itemInfo, authentication, folderId, additionalParams) {
|
2989
|
+
return new Promise((resolve, reject) => {
|
2990
|
+
const updateOptions = {
|
2991
|
+
item: itemInfo,
|
2992
|
+
folderId: folderId,
|
2993
|
+
authentication: authentication,
|
2994
|
+
params: {
|
2995
|
+
...(additionalParams ?? {})
|
2996
|
+
}
|
2997
|
+
};
|
2998
|
+
updateItem$1(updateOptions).then(response => (response.success ? resolve(response) : reject(response)), err => reject(err));
|
2999
|
+
});
|
3000
|
+
}
|
3001
|
+
|
3002
|
+
/** @license
|
3003
|
+
* Copyright 2018 Esri
|
3004
|
+
*
|
3005
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3006
|
+
* you may not use this file except in compliance with the License.
|
3007
|
+
* You may obtain a copy of the License at
|
3008
|
+
*
|
3009
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3010
|
+
*
|
3011
|
+
* Unless required by applicable law or agreed to in writing, software
|
3012
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3013
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3014
|
+
* See the License for the specific language governing permissions and
|
3015
|
+
* limitations under the License.
|
3016
|
+
*/
|
3017
|
+
/**
|
3018
|
+
* A visit flag used in the topological sort algorithm.
|
3019
|
+
*
|
3020
|
+
* @private
|
3021
|
+
*/
|
3022
|
+
var ESortVisitState;
|
3023
|
+
(function (ESortVisitState) {
|
3024
|
+
/** not yet visited */
|
3025
|
+
ESortVisitState[ESortVisitState["NotYetVisited"] = 0] = "NotYetVisited";
|
3026
|
+
/** visited, in progress */
|
3027
|
+
ESortVisitState[ESortVisitState["InProgress"] = 1] = "InProgress";
|
3028
|
+
/** finished */
|
3029
|
+
ESortVisitState[ESortVisitState["Finished"] = 2] = "Finished"; // BLACK
|
3030
|
+
})(ESortVisitState || (ESortVisitState = {}));
|
3031
|
+
|
3032
|
+
/** @license
|
3033
|
+
* Copyright 2020 Esri
|
3034
|
+
*
|
3035
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3036
|
+
* you may not use this file except in compliance with the License.
|
3037
|
+
* You may obtain a copy of the License at
|
3038
|
+
*
|
3039
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3040
|
+
*
|
3041
|
+
* Unless required by applicable law or agreed to in writing, software
|
3042
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3043
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3044
|
+
* See the License for the specific language governing permissions and
|
3045
|
+
* limitations under the License.
|
3046
|
+
*/
|
3047
|
+
/**
|
3048
|
+
* Denotes type information for a SolutionResource
|
3049
|
+
*/
|
3050
|
+
var SolutionResourceType;
|
3051
|
+
(function (SolutionResourceType) {
|
3052
|
+
SolutionResourceType[SolutionResourceType["thumbnail"] = 0] = "thumbnail";
|
3053
|
+
SolutionResourceType[SolutionResourceType["metadata"] = 1] = "metadata";
|
3054
|
+
SolutionResourceType[SolutionResourceType["resource"] = 2] = "resource";
|
3055
|
+
SolutionResourceType[SolutionResourceType["data"] = 3] = "data";
|
3056
|
+
SolutionResourceType[SolutionResourceType["fakezip"] = 4] = "fakezip";
|
3057
|
+
SolutionResourceType[SolutionResourceType["info"] = 5] = "info";
|
3058
|
+
})(SolutionResourceType || (SolutionResourceType = {}));
|
3059
|
+
|
3060
|
+
/** @license
|
3061
|
+
* Copyright 2020 Esri
|
3062
|
+
*
|
3063
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3064
|
+
* you may not use this file except in compliance with the License.
|
3065
|
+
* You may obtain a copy of the License at
|
3066
|
+
*
|
3067
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3068
|
+
*
|
3069
|
+
* Unless required by applicable law or agreed to in writing, software
|
3070
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3071
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3072
|
+
* See the License for the specific language governing permissions and
|
3073
|
+
* limitations under the License.
|
3074
|
+
*/
|
3075
|
+
/**
|
3076
|
+
* Extracts an item's resource folder and filename from the filename used to store a copy in a storage item.
|
3077
|
+
*
|
3078
|
+
* @param storageResourceFilename Filename used to store the resource, metadata, or thumbnail of an item
|
3079
|
+
* @param storageVersion Version of the Solution template
|
3080
|
+
* @returns Folder and filename for storing information in an item, as well as the type (resource, metadata,
|
3081
|
+
* or thumbnail) of the information; the folder property is only meaningful for the resource type
|
3082
|
+
* @see generateResourceStorageFilename
|
3083
|
+
* @see generateMetadataStorageFilename
|
3084
|
+
* @see generateThumbnailStorageFilename
|
3085
|
+
* @see convertItemResourceToStorageResource
|
3086
|
+
*/
|
3087
|
+
function convertStorageResourceToItemResource(storageResourceFilename, storageVersion = 0) {
|
3088
|
+
const nameParts = storageResourceFilename.split("/");
|
3089
|
+
let filename = nameParts.pop();
|
3090
|
+
let folder = "";
|
3091
|
+
const firstPrefixPart = nameParts.shift(); // undefined if there's no folder
|
3092
|
+
// Handle special "folders"
|
3093
|
+
let type = exports.EFileType.Resource;
|
3094
|
+
if (firstPrefixPart) {
|
3095
|
+
if (firstPrefixPart.endsWith("_info_thumbnail")) {
|
3096
|
+
type = exports.EFileType.Thumbnail;
|
3097
|
+
}
|
3098
|
+
else if (firstPrefixPart.endsWith("_info_metadata")) {
|
3099
|
+
type = exports.EFileType.Metadata;
|
3100
|
+
filename = "metadata.xml";
|
3101
|
+
}
|
3102
|
+
else if (firstPrefixPart.endsWith("_info_data")) {
|
3103
|
+
type = exports.EFileType.Data;
|
3104
|
+
}
|
3105
|
+
else if (firstPrefixPart.endsWith("_info_dataz")) {
|
3106
|
+
filename = filename.replace(/\.zip$/, "");
|
3107
|
+
type = exports.EFileType.Data;
|
3108
|
+
// Otherwise, strip off item id
|
3109
|
+
}
|
3110
|
+
else if (storageVersion < 1) {
|
3111
|
+
// Version 0
|
3112
|
+
const folderStart = firstPrefixPart.indexOf("_");
|
3113
|
+
if (folderStart > 0) {
|
3114
|
+
folder = firstPrefixPart.substr(folderStart + 1);
|
3115
|
+
}
|
3116
|
+
}
|
3117
|
+
else {
|
3118
|
+
// Version ≥ 1
|
3119
|
+
folder = nameParts.join("/"); // folder is optional, in which case this will be ""
|
3120
|
+
}
|
3121
|
+
}
|
3122
|
+
return { type, folder, filename };
|
3123
|
+
}
|
3124
|
+
|
3125
|
+
/** @license
|
3126
|
+
* Copyright 2021 Esri
|
3127
|
+
*
|
3128
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3129
|
+
* you may not use this file except in compliance with the License.
|
3130
|
+
* You may obtain a copy of the License at
|
3131
|
+
*
|
3132
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3133
|
+
*
|
3134
|
+
* Unless required by applicable law or agreed to in writing, software
|
3135
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3136
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3137
|
+
* See the License for the specific language governing permissions and
|
3138
|
+
* limitations under the License.
|
3139
|
+
*/
|
3140
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
3141
|
+
/**
|
3142
|
+
* Generates IAssociatedFileCopyResults object.
|
3143
|
+
*
|
3144
|
+
* @param fileInfo Info about item that was to be copied
|
3145
|
+
* @param fetchedFromSource Status of fetching item from source
|
3146
|
+
* @param copiedToDestination Status of copying item to destination
|
3147
|
+
* @returns IAssociatedFileCopyResults object
|
3148
|
+
*/
|
3149
|
+
function createCopyResults(fileInfo, fetchedFromSource, copiedToDestination) {
|
3150
|
+
return {
|
3151
|
+
...fileInfo,
|
3152
|
+
fetchedFromSource,
|
3153
|
+
copiedToDestination
|
3154
|
+
};
|
3155
|
+
}
|
3156
|
+
|
3157
|
+
/** @license
|
3158
|
+
* Copyright 2021 Esri
|
3159
|
+
*
|
3160
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3161
|
+
* you may not use this file except in compliance with the License.
|
3162
|
+
* You may obtain a copy of the License at
|
3163
|
+
*
|
3164
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3165
|
+
*
|
3166
|
+
* Unless required by applicable law or agreed to in writing, software
|
3167
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3168
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3169
|
+
* See the License for the specific language governing permissions and
|
3170
|
+
* limitations under the License.
|
3171
|
+
*/
|
3172
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
3173
|
+
/**
|
3174
|
+
* Copies a resource into a zipfile.
|
3175
|
+
*
|
3176
|
+
* @param file Information about the source and destination of the file such as its URL, folder, filename
|
3177
|
+
* @param zipInfo Information about a zipfile such as its name and its zip object
|
3178
|
+
* @returns The result of the copy
|
3179
|
+
*/
|
3180
|
+
function copyResourceIntoZip(file, zipInfo) {
|
3181
|
+
// Add it to the zip
|
3182
|
+
if (file.folder) {
|
3183
|
+
zipInfo.zip
|
3184
|
+
.folder(file.folder)
|
3185
|
+
.file(file.filename, file.file, { binary: true });
|
3186
|
+
}
|
3187
|
+
else {
|
3188
|
+
zipInfo.zip.file(file.filename, file.file, { binary: true });
|
3189
|
+
}
|
3190
|
+
zipInfo.filelist.push(file);
|
3191
|
+
return createCopyResults(file, true);
|
3192
|
+
}
|
3193
|
+
|
3194
|
+
/** @license
|
3195
|
+
* Copyright 2021 Esri
|
3196
|
+
*
|
3197
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3198
|
+
* you may not use this file except in compliance with the License.
|
3199
|
+
* You may obtain a copy of the License at
|
3200
|
+
*
|
3201
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3202
|
+
*
|
3203
|
+
* Unless required by applicable law or agreed to in writing, software
|
3204
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3205
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3206
|
+
* See the License for the specific language governing permissions and
|
3207
|
+
* limitations under the License.
|
3208
|
+
*/
|
3209
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
3210
|
+
/**
|
3211
|
+
* Copies a zipfile into an AGO item.
|
3212
|
+
*
|
3213
|
+
* @param zipInfo Information about a zipfile such as its name and its zip object
|
3214
|
+
* @param destinationItemId Id of item to receive copy of resource/metadata/thumbnail
|
3215
|
+
* @param destinationAuthentication Credentials for the request to the storage
|
3216
|
+
* @returns A promise which resolves to the result of the copy
|
3217
|
+
*/
|
3218
|
+
function copyZipIntoItem(zipInfo, destinationItemId, destinationAuthentication) {
|
3219
|
+
return new Promise(resolve => {
|
3220
|
+
zipInfo.zip
|
3221
|
+
.generateAsync({ type: "blob" })
|
3222
|
+
.then((content) => {
|
3223
|
+
return blobToFile(content, zipInfo.filename, "application/zip");
|
3224
|
+
})
|
3225
|
+
.then((zipfile) => {
|
3226
|
+
const addResourceOptions = {
|
3227
|
+
id: destinationItemId,
|
3228
|
+
resource: zipfile,
|
3229
|
+
authentication: destinationAuthentication,
|
3230
|
+
params: {
|
3231
|
+
archive: true
|
3232
|
+
}
|
3233
|
+
};
|
3234
|
+
return addItemResource(addResourceOptions);
|
3235
|
+
})
|
3236
|
+
.then(() => resolve(createCopyResults(zipInfo, true, true)), () => resolve(createCopyResults(zipInfo, true, false)) // unable to add resource
|
3237
|
+
);
|
3238
|
+
});
|
3239
|
+
}
|
3240
|
+
|
3241
|
+
/** @license
|
3242
|
+
* Copyright 2021 Esri
|
3243
|
+
*
|
3244
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3245
|
+
* you may not use this file except in compliance with the License.
|
3246
|
+
* You may obtain a copy of the License at
|
3247
|
+
*
|
3248
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3249
|
+
*
|
3250
|
+
* Unless required by applicable law or agreed to in writing, software
|
3251
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3252
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3253
|
+
* See the License for the specific language governing permissions and
|
3254
|
+
* limitations under the License.
|
3255
|
+
*/
|
3256
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
3257
|
+
/**
|
3258
|
+
* Copies the files for storing the resources, metadata, and thumbnail of an item or group to a storage item
|
3259
|
+
* with a specified path by collecting files into zip files.
|
3260
|
+
*
|
3261
|
+
* @param files List of item files' URLs and folder/filenames for storing the files
|
3262
|
+
* @param destinationItemId Id of item to receive copy of resource/metadata/thumbnail
|
3263
|
+
* @param destinationAuthentication Credentials for the request to the storage
|
3264
|
+
* @param filesPerZip Number of files to include per zip file; AGO limits zips to 50 files
|
3265
|
+
* @returns A promise which resolves to a list of the result of the copies
|
3266
|
+
*/
|
3267
|
+
function copyFilesAsResources(files, destinationItemId, destinationAuthentication, filesPerZip = 40) {
|
3268
|
+
return new Promise(resolve => {
|
3269
|
+
let awaitAllItems = [];
|
3270
|
+
const zipInfos = [];
|
3271
|
+
if (files.length > 0) {
|
3272
|
+
// Bundle the resources into chunked zip updates because AGO tends to have problems with
|
3273
|
+
// many updates in a row to the same item: it claims success despite randomly failing.
|
3274
|
+
// Note that AGO imposes a limit of 50 files per zip, so we break the list of resource
|
3275
|
+
// file info into chunks below this threshold and start a zip for each
|
3276
|
+
// https://developers.arcgis.com/rest/users-groups-and-items/add-resources.htm
|
3277
|
+
const chunkedResourceFiles = chunkArray(files, filesPerZip);
|
3278
|
+
chunkedResourceFiles.forEach((chunk, index) => {
|
3279
|
+
// Create a zip for this chunk
|
3280
|
+
const zipInfo = {
|
3281
|
+
filename: `resources${index}.zip`,
|
3282
|
+
zip: new jszip_min(),
|
3283
|
+
filelist: []
|
3284
|
+
};
|
3285
|
+
awaitAllItems = awaitAllItems.concat(chunk.map(file => copyResourceIntoZip(file, zipInfo)));
|
3286
|
+
zipInfos.push(zipInfo);
|
3287
|
+
});
|
3288
|
+
}
|
3289
|
+
if (awaitAllItems.length > 0) {
|
3290
|
+
// Wait until the Resource zip file(s) are prepared
|
3291
|
+
void Promise.all(awaitAllItems).then((results) => {
|
3292
|
+
// We have three types of results:
|
3293
|
+
// | fetchedFromSource | copiedToDestination | interpretation | |
|
3294
|
+
// +-------------------+---------------------+------------------------------------------------+
|
3295
|
+
// | false | * | could not fetch file from source |
|
3296
|
+
// | true | true | file has been fetched and sent to AGO |
|
3297
|
+
// | true | undefined | file has been fetched and will be sent via zip |
|
3298
|
+
// Filter out copiedToDestination===undefined; we'll get their status when we send their zip
|
3299
|
+
results = results.filter((result) => !(result.fetchedFromSource &&
|
3300
|
+
typeof result.copiedToDestination === "undefined"));
|
3301
|
+
// Now send the resources to AGO
|
3302
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
3303
|
+
_copyAssociatedFileZips(zipInfos, destinationItemId, destinationAuthentication).then((zipResults) => {
|
3304
|
+
resolve(results.concat(zipResults));
|
3305
|
+
});
|
3306
|
+
});
|
3307
|
+
}
|
3308
|
+
else {
|
3309
|
+
// No data, metadata, or resources to send; we're done
|
3310
|
+
resolve([]);
|
3311
|
+
}
|
3312
|
+
});
|
3313
|
+
}
|
3314
|
+
/**
|
3315
|
+
* Copies one or more zipfiles to a storage item.
|
3316
|
+
*
|
3317
|
+
* @param zipInfos List of zip files containing files to store
|
3318
|
+
* @param destinationItemId Id of item to receive copy of resource/metadata/thumbnail
|
3319
|
+
* @param destinationAuthentication Credentials for the request to the storage
|
3320
|
+
* @returns A promise which resolves to a list of the result of the copies
|
3321
|
+
* @private
|
3322
|
+
*/
|
3323
|
+
function _copyAssociatedFileZips(zipInfos, destinationItemId, destinationAuthentication) {
|
3324
|
+
return new Promise(resolve => {
|
3325
|
+
const results = [];
|
3326
|
+
// Filter out empty zips, which can happen when none of the files in the chunk going into a zip
|
3327
|
+
// can be fetched; e.g., the only file is metadata.xml, and the source item doesn't have metadata
|
3328
|
+
const nonEmptyZipInfos = zipInfos.filter((zipInfo) => Object.keys(zipInfo.zip.files).length > 0);
|
3329
|
+
if (nonEmptyZipInfos.length > 0) {
|
3330
|
+
// Send the zip(s) to AGO
|
3331
|
+
void _sendZipsSeriallyToItem(nonEmptyZipInfos, destinationItemId, destinationAuthentication).then((zipResults) => {
|
3332
|
+
resolve(zipResults);
|
3333
|
+
});
|
3334
|
+
}
|
3335
|
+
else {
|
3336
|
+
// No resources to send; we're done
|
3337
|
+
resolve(results);
|
3338
|
+
}
|
3339
|
+
});
|
3340
|
+
}
|
3341
|
+
/**
|
3342
|
+
* Copies one or more zipfiles to a storage item in a serial fashion, waiting a bit between sends.
|
3343
|
+
*
|
3344
|
+
* @param zipInfos List of zip files containing files to store
|
3345
|
+
* @param destinationItemId Id of item to receive copy of resource/metadata/thumbnail
|
3346
|
+
* @param destinationAuthentication Credentials for the request to the storage
|
3347
|
+
* @returns A promise which resolves to a list of the result of the copies
|
3348
|
+
*/
|
3349
|
+
function _sendZipsSeriallyToItem(zipInfos, destinationItemId, destinationAuthentication) {
|
3350
|
+
return new Promise(resolve => {
|
3351
|
+
let allResults = [];
|
3352
|
+
// Remove zip from bottom of list
|
3353
|
+
const zipInfoToSend = zipInfos.pop();
|
3354
|
+
// Send predecessors in list
|
3355
|
+
let sendOthersPromise = Promise.resolve([]);
|
3356
|
+
if (zipInfos.length > 0) {
|
3357
|
+
sendOthersPromise = _sendZipsSeriallyToItem(zipInfos, destinationItemId, destinationAuthentication);
|
3358
|
+
}
|
3359
|
+
void sendOthersPromise
|
3360
|
+
.then((response) => {
|
3361
|
+
allResults = response;
|
3362
|
+
// Stall a little to give AGO time to catch up
|
3363
|
+
return new Promise(resolveSleep => {
|
3364
|
+
setTimeout(() => resolveSleep(), 1000);
|
3365
|
+
});
|
3366
|
+
})
|
3367
|
+
.then(() => {
|
3368
|
+
// Now send the zip removed from bottom of the input list
|
3369
|
+
return copyZipIntoItem(zipInfoToSend, destinationItemId, destinationAuthentication);
|
3370
|
+
})
|
3371
|
+
.then((zipResult) => {
|
3372
|
+
// Save the result of copying this zip as a status for each of the files that it contains
|
3373
|
+
zipResult.filelist.forEach((fileInfo) => {
|
3374
|
+
allResults.push(createCopyResults(fileInfo, true, zipResult.copiedToDestination));
|
3375
|
+
});
|
3376
|
+
resolve(allResults);
|
3377
|
+
});
|
3378
|
+
});
|
3379
|
+
}
|
3380
|
+
|
3381
|
+
/** @license
|
3382
|
+
* Copyright 2018 Esri
|
3383
|
+
*
|
3384
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3385
|
+
* you may not use this file except in compliance with the License.
|
3386
|
+
* You may obtain a copy of the License at
|
3387
|
+
*
|
3388
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3389
|
+
*
|
3390
|
+
* Unless required by applicable law or agreed to in writing, software
|
3391
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3392
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3393
|
+
* See the License for the specific language governing permissions and
|
3394
|
+
* limitations under the License.
|
3395
|
+
*/
|
3396
|
+
/**
|
3397
|
+
* Copies the files for storing the resources, metadata, and thumbnail of an item or group to a storage item
|
3398
|
+
* with a specified path.
|
3399
|
+
*
|
3400
|
+
* @param files List of item files and paths for storing the files
|
3401
|
+
* @param storageItemId Id of item to receive copy of resource/metadata
|
3402
|
+
* @param storageAuthentication Credentials for the request to the storage
|
3403
|
+
* @returns A promise which resolves to a list of the filenames under which the resource/metadata are stored
|
3404
|
+
*/
|
3405
|
+
function copyFilesToStorageItem(files, storageItemId, storageAuthentication) {
|
3406
|
+
return new Promise(resolve => {
|
3407
|
+
// tslint:disable-next-line: no-floating-promises
|
3408
|
+
void copyFilesAsResources(files, storageItemId, storageAuthentication).then((results) => {
|
3409
|
+
resolve(results
|
3410
|
+
// Filter out failures
|
3411
|
+
.filter((result) => result.fetchedFromSource && result.copiedToDestination)
|
3412
|
+
// Return folder and filename in storage item's resources
|
3413
|
+
.map((result) => result.folder + "/" + result.filename));
|
3414
|
+
});
|
3415
|
+
});
|
3416
|
+
}
|
3417
|
+
/**
|
3418
|
+
* Generates the URL for reading an item's resource given the filename of the resource.
|
3419
|
+
*
|
3420
|
+
* @param sourcePortalSharingUrl Server/sharing
|
3421
|
+
* @param itemId Id of item
|
3422
|
+
* @param sourceResourceFilename Either filename or folder/filename to resource
|
3423
|
+
* @returns URL string
|
3424
|
+
*/
|
3425
|
+
function generateSourceResourceUrl(sourcePortalSharingUrl, itemId, sourceResourceFilename) {
|
3426
|
+
return (checkUrlPathTermination(sourcePortalSharingUrl) +
|
3427
|
+
"content/items/" +
|
3428
|
+
itemId +
|
3429
|
+
"/resources/" +
|
3430
|
+
sourceResourceFilename);
|
3431
|
+
}
|
3432
|
+
/**
|
3433
|
+
* Generates a list of full URLs and folder/filename combinations used to store the resources, metadata,
|
3434
|
+
* and thumbnail of an item.
|
3435
|
+
*
|
3436
|
+
* @param portalSharingUrl Server/sharing
|
3437
|
+
* @param storageItemId Id of storage item
|
3438
|
+
* @param resourceFilenames List of resource filenames for an item, e.g., ["file1", "myFolder/file2"]
|
3439
|
+
* @param storageVersion Version of the Solution template
|
3440
|
+
* @returns List of item files' URLs and folder/filenames for storing the files
|
3441
|
+
*/
|
3442
|
+
function generateStorageFilePaths(portalSharingUrl, storageItemId, resourceFilenames = [], storageVersion = 0) {
|
3443
|
+
return resourceFilenames.map(resourceFilename => {
|
3444
|
+
return {
|
3445
|
+
url: generateSourceResourceUrl(portalSharingUrl, storageItemId, resourceFilename),
|
3446
|
+
...convertStorageResourceToItemResource(resourceFilename, storageVersion)
|
3447
|
+
};
|
3448
|
+
});
|
3449
|
+
}
|
3450
|
+
function isSupportedFileType(filename) {
|
3451
|
+
// Supported file formats are: .json, .xml, .txt, .png, .pbf, .zip, .jpeg, .jpg, .gif, .bmp, .gz, .svg,
|
3452
|
+
// .svgz, .geodatabase (https://developers.arcgis.com/rest/users-groups-and-items/add-resources.htm)
|
3453
|
+
const filenameExtension = filename.match(/\.([a-z]+)$/i);
|
3454
|
+
const supportedExtensions = "|.json|.xml|.txt|.png|.pbf|.zip|.jpeg|.jpg|.gif|.bmp|.gz|.svg|.svgz|.geodatabase|";
|
3455
|
+
return (!!filenameExtension &&
|
3456
|
+
supportedExtensions.indexOf("|" + filenameExtension[0] + "|") >= 0);
|
3457
|
+
}
|
3458
|
+
/**
|
3459
|
+
* Gets the thumbnail of an item or group.
|
3460
|
+
*
|
3461
|
+
* @param authentication Credentials for the request to the storage
|
3462
|
+
* @param filePaths List of item files' URLs and folder/filenames for storing the files
|
3463
|
+
* @returns A promise which resolves to a boolean indicating if the copies were successful
|
3464
|
+
*/
|
3465
|
+
function getThumbnailFromStorageItem(authentication, filePaths) {
|
3466
|
+
let thumbnailUrl;
|
3467
|
+
let thumbnailFilename;
|
3468
|
+
filePaths.forEach(path => {
|
3469
|
+
if (path.type === exports.EFileType.Thumbnail) {
|
3470
|
+
thumbnailUrl = path.url;
|
3471
|
+
thumbnailFilename = path.filename;
|
3472
|
+
}
|
3473
|
+
});
|
3474
|
+
if (!thumbnailUrl) {
|
3475
|
+
return Promise.resolve(null);
|
3476
|
+
}
|
3477
|
+
return getThumbnailFile(thumbnailUrl, thumbnailFilename, authentication);
|
3478
|
+
}
|
3479
|
+
/**
|
3480
|
+
* Removes the item's resource that matches the filename with new content
|
3481
|
+
*
|
3482
|
+
* @param itemId Id of the item to remove
|
3483
|
+
* @param filename Name of the resource file to remove
|
3484
|
+
* @param authentication Credentials for the request to the storage
|
3485
|
+
* @returns A promise which resolves with a success true/false response
|
3486
|
+
*/
|
3487
|
+
function removeItemResourceFile(itemId, filename, authentication) {
|
3488
|
+
return removeItemResource({
|
3489
|
+
id: itemId,
|
3490
|
+
resource: filename,
|
3491
|
+
authentication: authentication
|
3492
|
+
});
|
3493
|
+
}
|
3494
|
+
/**
|
3495
|
+
* Updates the item's resource that matches the filename with new content
|
3496
|
+
*
|
3497
|
+
* @param itemId Id of the item to update
|
3498
|
+
* @param filename Name of the resource file to update; prefix optional (e.g., a/b/file.txt)
|
3499
|
+
* @param resource The new content to update the resource with
|
3500
|
+
* @param authentication Credentials for the request to the storage
|
3501
|
+
* @returns A promise which resolves with a success true/false response
|
3502
|
+
*/
|
3503
|
+
function updateItemResourceFile(itemId, filename, resource, authentication) {
|
3504
|
+
// Prefix has to be specified separately
|
3505
|
+
const prefixedFilenameParts = filename.split("/");
|
3506
|
+
const prefix = prefixedFilenameParts.length > 1 ? prefixedFilenameParts.slice(0, prefixedFilenameParts.length - 1).join("/") : undefined;
|
3507
|
+
const suffix = prefixedFilenameParts[prefixedFilenameParts.length - 1];
|
3508
|
+
return updateItemResource({
|
3509
|
+
id: itemId,
|
3510
|
+
prefix: prefix,
|
3511
|
+
name: suffix,
|
3512
|
+
resource,
|
3513
|
+
authentication: authentication
|
3514
|
+
});
|
3515
|
+
}
|
3516
|
+
|
3517
|
+
/** @license
|
3518
|
+
* Copyright 2022 Esri
|
3519
|
+
*
|
3520
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
3521
|
+
* you may not use this file except in compliance with the License.
|
3522
|
+
* You may obtain a copy of the License at
|
3523
|
+
*
|
3524
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
3525
|
+
*
|
3526
|
+
* Unless required by applicable law or agreed to in writing, software
|
3527
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
3528
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
3529
|
+
* See the License for the specific language governing permissions and
|
3530
|
+
* limitations under the License.
|
3531
|
+
*/
|
3532
|
+
const EmptySolutionStore = {
|
3533
|
+
solutionItemId: "",
|
3534
|
+
defaultWkid: undefined,
|
3535
|
+
solutionData: { metadata: {}, templates: [] },
|
3536
|
+
templateEdits: {},
|
3537
|
+
featureServices: [],
|
3538
|
+
spatialReferenceInfo: {
|
3539
|
+
enabled: false,
|
3540
|
+
services: {},
|
3541
|
+
spatialReference: undefined
|
3542
|
+
}
|
3543
|
+
};
|
3544
|
+
class SolutionStore {
|
3545
|
+
/**
|
3546
|
+
* Creates singleton instance when accessed; default export from module.
|
3547
|
+
*
|
3548
|
+
* @returns Static instance of the class
|
3549
|
+
*/
|
3550
|
+
static get Store() {
|
3551
|
+
return this._instance || (this._instance = new this());
|
3552
|
+
}
|
3553
|
+
/**
|
3554
|
+
* Creates an empty store.
|
3555
|
+
*
|
3556
|
+
* @protected
|
3557
|
+
*/
|
3558
|
+
constructor() {
|
3559
|
+
this._hasChanges = false;
|
3560
|
+
this._store = index.createStore(Object.assign({}, EmptySolutionStore));
|
3561
|
+
}
|
3562
|
+
/**
|
3563
|
+
* Returns the stored information of an item.
|
3564
|
+
*
|
3565
|
+
* @param itemId Id of item to fetch
|
3566
|
+
*
|
3567
|
+
* @returns Item information or `undefined` if not found
|
3568
|
+
*/
|
3569
|
+
getItemInfo(itemId) {
|
3570
|
+
const templates = this._store.get("solutionData").templates;
|
3571
|
+
let template;
|
3572
|
+
templates.some((t) => {
|
3573
|
+
if (itemId == t.itemId) {
|
3574
|
+
template = t;
|
3575
|
+
return true;
|
3576
|
+
}
|
3577
|
+
return false;
|
3578
|
+
});
|
3579
|
+
return template;
|
3580
|
+
}
|
3581
|
+
/**
|
3582
|
+
* Returns a top-level store property: solutionItemId, defaultWkid, etc.
|
3583
|
+
*
|
3584
|
+
* @param propName Name of property
|
3585
|
+
*
|
3586
|
+
* @returns Value of property
|
3587
|
+
*/
|
3588
|
+
getStoreInfo(propName) {
|
3589
|
+
return this._store.get(propName);
|
3590
|
+
}
|
3591
|
+
/**
|
3592
|
+
* Loads a Solution into the store from AGO.
|
3593
|
+
*
|
3594
|
+
* @param solutionItemId Id of the solution represented in the store
|
3595
|
+
* @param authentication Credentials for fetching information to be loaded into the store
|
3596
|
+
*
|
3597
|
+
* @returns Promise that resolves when task is done
|
3598
|
+
*/
|
3599
|
+
async loadSolution(solutionItemId, authentication) {
|
3600
|
+
this._authentication = authentication;
|
3601
|
+
const solutionData = await getItemDataAsJson(solutionItemId, authentication);
|
3602
|
+
if (solutionData) {
|
3603
|
+
const defaultWkid = getProp(solutionData, "params.wkid.default");
|
3604
|
+
await this._prepareSolutionItemsForEditing(solutionItemId, solutionData.templates, authentication);
|
3605
|
+
const featureServices = this._getFeatureServices(solutionData.templates);
|
3606
|
+
const spatialReferenceInfo = this._getSpatialReferenceInfo(featureServices, defaultWkid);
|
3607
|
+
this._store.set("solutionItemId", solutionItemId);
|
3608
|
+
this._store.set("defaultWkid", defaultWkid);
|
3609
|
+
this._store.set("solutionData", solutionData);
|
3610
|
+
this._store.set("featureServices", featureServices);
|
3611
|
+
this._store.set("spatialReferenceInfo", spatialReferenceInfo);
|
3612
|
+
}
|
3613
|
+
this._flagStoreHasChanges(false);
|
3614
|
+
}
|
3615
|
+
/**
|
3616
|
+
* Queues the replacement of the thumbnail associated with a template item in the store.
|
3617
|
+
*
|
3618
|
+
* @param itemEdit Details of the template to modify, containing the new thumbnail in the `thumbnail`
|
3619
|
+
* property
|
3620
|
+
*/
|
3621
|
+
replaceItemThumbnail(itemEdit) {
|
3622
|
+
// Flag the current thumbnail and any replacements for removal
|
3623
|
+
itemEdit.resourceFilePaths.forEach((path) => {
|
3624
|
+
if (path.type === exports.EFileType.Thumbnail) {
|
3625
|
+
if (path.updateType === interfaces.EUpdateType.None) {
|
3626
|
+
// Existing thumbnail not yet flagged for removal
|
3627
|
+
path.updateType = interfaces.EUpdateType.Remove;
|
3628
|
+
}
|
3629
|
+
else if (path.updateType === interfaces.EUpdateType.Add || path.updateType === interfaces.EUpdateType.Update) {
|
3630
|
+
// An earlier replacement
|
3631
|
+
path.updateType = interfaces.EUpdateType.Obsolete;
|
3632
|
+
}
|
3633
|
+
}
|
3634
|
+
});
|
3635
|
+
// Remove any replacements already queued
|
3636
|
+
itemEdit.resourceFilePaths =
|
3637
|
+
itemEdit.resourceFilePaths.filter((path) => path.updateType != interfaces.EUpdateType.Obsolete);
|
3638
|
+
// Add the new thumbnail to the store item
|
3639
|
+
itemEdit.resourceFilePaths.push({
|
3640
|
+
blob: itemEdit.thumbnail,
|
3641
|
+
filename: itemEdit.thumbnail.name,
|
3642
|
+
type: exports.EFileType.Thumbnail,
|
3643
|
+
updateType: interfaces.EUpdateType.Add
|
3644
|
+
});
|
3645
|
+
// Update the store
|
3646
|
+
this.setItemInfo(itemEdit);
|
3647
|
+
}
|
3648
|
+
/**
|
3649
|
+
* Writes a Solution into AGO from the store. Must use `loadSolution` to continue with solution.
|
3650
|
+
*
|
3651
|
+
* @returns Promise that resolves when task is done
|
3652
|
+
*/
|
3653
|
+
async saveSolution() {
|
3654
|
+
// Update the templates in the original solution item data
|
3655
|
+
const solutionItemId = this._store.get("solutionItemId");
|
3656
|
+
const solutionData = this._store.get("solutionData");
|
3657
|
+
const spatialReferenceInfo = this._store.get("spatialReferenceInfo");
|
3658
|
+
await this._prepareSolutionItemsForStorage(solutionItemId, solutionData.templates, this._authentication);
|
3659
|
+
const updatedDefaultWkid = this._setSpatialReferenceInfo(spatialReferenceInfo, solutionData.templates);
|
3660
|
+
if (updatedDefaultWkid) {
|
3661
|
+
setCreateProp(solutionData, "params.wkid", {
|
3662
|
+
"label": "Spatial Reference",
|
3663
|
+
"default": updatedDefaultWkid,
|
3664
|
+
"valueType": "spatialReference",
|
3665
|
+
"attributes": {
|
3666
|
+
"required": "true"
|
3667
|
+
}
|
3668
|
+
});
|
3669
|
+
}
|
3670
|
+
else {
|
3671
|
+
setCreateProp(solutionData, "params.wkid", {});
|
3672
|
+
}
|
3673
|
+
const itemInfo = {
|
3674
|
+
id: solutionItemId,
|
3675
|
+
text: solutionData
|
3676
|
+
};
|
3677
|
+
await updateItem(itemInfo, this._authentication);
|
3678
|
+
}
|
3679
|
+
/**
|
3680
|
+
* Stores information for item.
|
3681
|
+
*
|
3682
|
+
* @param itemEdit Item information
|
3683
|
+
*/
|
3684
|
+
setItemInfo(itemEdit) {
|
3685
|
+
const solutionData = this._store.get("solutionData");
|
3686
|
+
const templates = solutionData.templates;
|
3687
|
+
templates.some((t) => {
|
3688
|
+
if (itemEdit.itemId == t.itemId) {
|
3689
|
+
t = itemEdit;
|
3690
|
+
this._store.set("solutionData", solutionData);
|
3691
|
+
this._flagStoreHasChanges(true);
|
3692
|
+
return true;
|
3693
|
+
}
|
3694
|
+
return false;
|
3695
|
+
});
|
3696
|
+
}
|
3697
|
+
/**
|
3698
|
+
* Sets a top-level store property: solutionItemId, defaultWkid, etc.
|
3699
|
+
*
|
3700
|
+
* @param propName Name of property
|
3701
|
+
* @param value Value of property
|
3702
|
+
*/
|
3703
|
+
setStoreInfo(propName, value) {
|
3704
|
+
this._store.set(propName, value);
|
3705
|
+
this._flagStoreHasChanges(true);
|
3706
|
+
}
|
3707
|
+
//------------------------------------------------------------------------------------------------------------------//
|
3708
|
+
/** Provides access to protected methods for unit testing.
|
3709
|
+
*
|
3710
|
+
* @param methodName Name of protected method to run
|
3711
|
+
* @param arg1 First argument to forward to method, e.g., for "_prepareSolutionItemsForEditing", `solutionItemId`
|
3712
|
+
* @param arg2 Second argument to forward to method, e.g., for "_prepareSolutionItemsForEditing", `templates`
|
3713
|
+
* @param arg3 Third argument to forward to method, e.g., for "_prepareSolutionItemsForEditing", `authentication`
|
3714
|
+
*
|
3715
|
+
* @returns
|
3716
|
+
*/
|
3717
|
+
_testAccess(methodName, arg1, arg2, arg3) {
|
3718
|
+
switch (methodName) {
|
3719
|
+
case "_emptyTheStore":
|
3720
|
+
this._emptyTheStore();
|
3721
|
+
break;
|
3722
|
+
case "_getFeatureServices":
|
3723
|
+
return this._getFeatureServices(arg1);
|
3724
|
+
case "_getItemsSharedWithThisGroup":
|
3725
|
+
return this._getItemsSharedWithThisGroup(arg1, arg2);
|
3726
|
+
case "_getResourceFilePaths":
|
3727
|
+
return this._getResourceFilePaths(arg1, arg2, arg3);
|
3728
|
+
case "_getResourceStorageName":
|
3729
|
+
return this._getResourceStorageName(arg1, arg2);
|
3730
|
+
case "_getSpatialReferenceInfo":
|
3731
|
+
return this._getSpatialReferenceInfo(arg1, arg2);
|
3732
|
+
case "_prepareSolutionItemsForEditing":
|
3733
|
+
return this._prepareSolutionItemsForEditing(arg1, arg2, arg3);
|
3734
|
+
case "_prepareSolutionItemsForStorage":
|
3735
|
+
return this._prepareSolutionItemsForStorage(arg1, arg2, arg3);
|
3736
|
+
case "_setSpatialReferenceInfo":
|
3737
|
+
return this._setSpatialReferenceInfo(arg1, arg2);
|
3738
|
+
case "_splitFilename":
|
3739
|
+
return this._splitFilename(arg1);
|
3740
|
+
}
|
3741
|
+
return null;
|
3742
|
+
}
|
3743
|
+
/**
|
3744
|
+
* Returns the store to the empty state.
|
3745
|
+
*
|
3746
|
+
* @protected
|
3747
|
+
*/
|
3748
|
+
_emptyTheStore() {
|
3749
|
+
this._store.set("solutionItemId", EmptySolutionStore.solutionItemId);
|
3750
|
+
this._store.set("defaultWkid", EmptySolutionStore.defaultWkid);
|
3751
|
+
this._store.set("solutionData", EmptySolutionStore.solutionData);
|
3752
|
+
this._store.set("templateEdits", EmptySolutionStore.templateEdits);
|
3753
|
+
this._store.set("featureServices", EmptySolutionStore.featureServices);
|
3754
|
+
this._store.set("spatialReferenceInfo", EmptySolutionStore.spatialReferenceInfo);
|
3755
|
+
}
|
3756
|
+
/**
|
3757
|
+
* Sets the store's flag indicating if it has changes and dispatches an event when
|
3758
|
+
* the flag value changes.
|
3759
|
+
*
|
3760
|
+
* @param flagHasChanges Current state of change in the store; if it doesn't match the value saved in this
|
3761
|
+
* object, an event is dispatched with the new value and the saved value is updated
|
3762
|
+
*
|
3763
|
+
* @protected
|
3764
|
+
*/
|
3765
|
+
_flagStoreHasChanges(flagHasChanges) {
|
3766
|
+
// Event for notifying if the store has changes or not
|
3767
|
+
if (this._hasChanges !== flagHasChanges) {
|
3768
|
+
window.dispatchEvent(new CustomEvent("solutionStoreHasChanges", {
|
3769
|
+
detail: flagHasChanges,
|
3770
|
+
bubbles: true,
|
3771
|
+
cancelable: false,
|
3772
|
+
composed: true
|
3773
|
+
}));
|
3774
|
+
}
|
3775
|
+
this._hasChanges = flagHasChanges;
|
3776
|
+
}
|
3777
|
+
/**
|
3778
|
+
* Gets a list of Feature Services that are not views.
|
3779
|
+
*
|
3780
|
+
* @param templates A list of item templates from the solution
|
3781
|
+
*
|
3782
|
+
* @returns a list of feature services
|
3783
|
+
*
|
3784
|
+
* @protected
|
3785
|
+
*/
|
3786
|
+
_getCustomizableFeatureServices(templates) {
|
3787
|
+
return templates.reduce((prev, cur) => {
|
3788
|
+
if (cur.type === "Feature Service" && cur.item.typeKeywords.indexOf("View Service") < 0) {
|
3789
|
+
prev.push(cur);
|
3790
|
+
}
|
3791
|
+
return prev;
|
3792
|
+
}, []);
|
3793
|
+
}
|
3794
|
+
/**
|
3795
|
+
* Gets a list of Feature Services that are not views along with an enabled property that indicates
|
3796
|
+
* if the service currently uses a spatial reference variable.
|
3797
|
+
*
|
3798
|
+
* @param templates A list of item templates from the solution
|
3799
|
+
*
|
3800
|
+
* @returns a list of feature service names and an enabled property to indicate
|
3801
|
+
* if they currently use a spatial reference variable.
|
3802
|
+
*
|
3803
|
+
* @protected
|
3804
|
+
*/
|
3805
|
+
_getFeatureServices(templates) {
|
3806
|
+
const customizeableFeatureServices = this._getCustomizableFeatureServices(templates);
|
3807
|
+
return customizeableFeatureServices.map((fs) => {
|
3808
|
+
const name = fs.item.title || fs.item.name;
|
3809
|
+
const wkid = getProp(fs, "properties.service.spatialReference.wkid");
|
3810
|
+
return { name, enabled: wkid.toString().startsWith("{{params.wkid||") };
|
3811
|
+
});
|
3812
|
+
}
|
3813
|
+
/**
|
3814
|
+
* Capture the key item details for a given group template
|
3815
|
+
*
|
3816
|
+
* @param template one of the templates from the current solution
|
3817
|
+
* @param templates full list of templates
|
3818
|
+
*
|
3819
|
+
* @returns a list of IItemShare objects
|
3820
|
+
*
|
3821
|
+
* @protected
|
3822
|
+
*/
|
3823
|
+
_getItemsSharedWithThisGroup(template, templates) {
|
3824
|
+
return templates.reduce((prev, cur) => {
|
3825
|
+
if (cur.itemId !== template.itemId && cur.type !== "Group") {
|
3826
|
+
prev.push({
|
3827
|
+
id: cur.itemId,
|
3828
|
+
title: cur.item.name || cur.item.title,
|
3829
|
+
isShared: (cur.groups || []).indexOf(template.itemId) > -1,
|
3830
|
+
shareItem: (cur.groups || []).indexOf(template.itemId) > -1,
|
3831
|
+
type: cur.type,
|
3832
|
+
typeKeywords: cur.item.typeKeywords
|
3833
|
+
});
|
3834
|
+
}
|
3835
|
+
return prev;
|
3836
|
+
}, []);
|
3837
|
+
}
|
3838
|
+
/**
|
3839
|
+
* Generate storage file paths from the solution template
|
3840
|
+
*
|
3841
|
+
* @param solutionId the id of the current solution
|
3842
|
+
* @param template the current template from the solution
|
3843
|
+
* @param portal Portal where file is to be found
|
3844
|
+
*
|
3845
|
+
* @returns a list of resource file infos
|
3846
|
+
*
|
3847
|
+
* @protected
|
3848
|
+
*/
|
3849
|
+
_getResourceFilePaths(solutionId, template, portal) {
|
3850
|
+
const resourceFilePaths = generateStorageFilePaths(portal, solutionId, template.resources, SolutionTemplateFormatVersion);
|
3851
|
+
return resourceFilePaths.map((fp) => {
|
3852
|
+
fp.updateType = interfaces.EUpdateType.None;
|
3853
|
+
return fp;
|
3854
|
+
});
|
3855
|
+
}
|
3856
|
+
/**
|
3857
|
+
* Generates a resource name from a storage file path.
|
3858
|
+
*
|
3859
|
+
* @param templateItemId The id of the template item whose resource this is; used as a prefix in the resource name
|
3860
|
+
* @param resourcePath Resource file infos
|
3861
|
+
*
|
3862
|
+
* @returns The resource name to use when attaching a resource to the item.
|
3863
|
+
*
|
3864
|
+
* @protected
|
3865
|
+
*/
|
3866
|
+
_getResourceStorageName(templateItemId, resourcePath) {
|
3867
|
+
/* Converts
|
3868
|
+
{
|
3869
|
+
"url": "https://myorg.maps.arcgis.com/sharing/rest/content/items/ca924c6db7d247b9a31fa30532fb5913/resources/79036430a6274e17ae915d0278b8569c_info_metadata/metadata.xml",
|
3870
|
+
"type": 2,
|
3871
|
+
"folder": "",
|
3872
|
+
"filename": "metadata.xml",
|
3873
|
+
"updateType": 3
|
3874
|
+
}
|
3875
|
+
to
|
3876
|
+
ca924c6db7d247b9a31fa30532fb5913_info_metadata/metadata.xml
|
3877
|
+
*/
|
3878
|
+
let prefix = templateItemId;
|
3879
|
+
switch (resourcePath.type) {
|
3880
|
+
case exports.EFileType.Data:
|
3881
|
+
prefix = `${prefix}_info_data`;
|
3882
|
+
break;
|
3883
|
+
case exports.EFileType.Info:
|
3884
|
+
prefix = `${prefix}_info`;
|
3885
|
+
break;
|
3886
|
+
case exports.EFileType.Metadata:
|
3887
|
+
prefix = `${prefix}_info_metadata`;
|
3888
|
+
break;
|
3889
|
+
case exports.EFileType.Resource:
|
3890
|
+
break;
|
3891
|
+
case exports.EFileType.Thumbnail:
|
3892
|
+
prefix = `${prefix}_info_thumbnail`;
|
3893
|
+
break;
|
3894
|
+
}
|
3895
|
+
let filenameToUse = resourcePath.filename;
|
3896
|
+
if (resourcePath.type == exports.EFileType.Data && filenameToUse && !isSupportedFileType(filenameToUse)) {
|
3897
|
+
filenameToUse = filenameToUse + ".zip";
|
3898
|
+
prefix += "z";
|
3899
|
+
}
|
3900
|
+
const filename = resourcePath.folder ? resourcePath.folder + "/" + filenameToUse : filenameToUse;
|
3901
|
+
return prefix + "/" + filename;
|
3902
|
+
}
|
3903
|
+
/**
|
3904
|
+
* Extracts basic spatial reference information that is used to determine if a custom spatial reference parameter will
|
3905
|
+
* be exposed while deploying this solution and if so what feature services will support it and what will the default wkid be
|
3906
|
+
*
|
3907
|
+
* @param services a list of objects with service name and enabled property (indicates if they currently use a spatial reference var)
|
3908
|
+
* @param data the data object of a solution item
|
3909
|
+
*
|
3910
|
+
* @returns an object that stores if a custom spatial reference parameter is enabled/disabled,
|
3911
|
+
* a list of services and if they are enabled/disabled, and the default wkid
|
3912
|
+
*
|
3913
|
+
* @protected
|
3914
|
+
*/
|
3915
|
+
_getSpatialReferenceInfo(services, defaultWkid) {
|
3916
|
+
const defaultServices = {};
|
3917
|
+
services.forEach(service => {
|
3918
|
+
defaultServices[service.name] = service.enabled;
|
3919
|
+
});
|
3920
|
+
return {
|
3921
|
+
enabled: defaultWkid !== undefined,
|
3922
|
+
services: defaultServices,
|
3923
|
+
spatialReference: defaultWkid ? defaultWkid : undefined
|
3924
|
+
};
|
3925
|
+
}
|
3926
|
+
/**
|
3927
|
+
* Create and store template items for the editor.
|
3928
|
+
*
|
3929
|
+
* @param solutionItemId Id of the solution represented in the store
|
3930
|
+
* @param templates A list of item templates from the solution
|
3931
|
+
* @param authentication Credentials for fetching information to be loaded into the store
|
3932
|
+
*
|
3933
|
+
* @returns a promise that resolves when the templates are ready
|
3934
|
+
*
|
3935
|
+
* @protected
|
3936
|
+
*/
|
3937
|
+
async _prepareSolutionItemsForEditing(solutionItemId, templates, authentication) {
|
3938
|
+
const thumbnailPromises = [];
|
3939
|
+
// Augment the template with paths to resources and group information, if relevant
|
3940
|
+
templates.forEach((t) => {
|
3941
|
+
t.resourceFilePaths = this._getResourceFilePaths(solutionItemId, t, authentication.portal);
|
3942
|
+
thumbnailPromises.push(t.resourceFilePaths.length > 0 ?
|
3943
|
+
getThumbnailFromStorageItem(authentication, t.resourceFilePaths) :
|
3944
|
+
Promise.resolve());
|
3945
|
+
t.groupDetails = t.type === "Group" ? this._getItemsSharedWithThisGroup(t, templates) : [];
|
3946
|
+
});
|
3947
|
+
// Augment the template with its thumbnail file
|
3948
|
+
const thumbnails = await Promise.all(thumbnailPromises);
|
3949
|
+
templates.forEach((t, i) => {
|
3950
|
+
t.thumbnail = thumbnails[i] ? thumbnails[i] : undefined;
|
3951
|
+
});
|
3952
|
+
return Promise.resolve();
|
3953
|
+
}
|
3954
|
+
/**
|
3955
|
+
* Prepares template items for sending to AGO by updating the resources held by the solution item.
|
3956
|
+
*
|
3957
|
+
* @param solutionItemId Id of the solution represented in the store
|
3958
|
+
* @param templates A list of item templates from the solution
|
3959
|
+
* @param authentication Credentials for fetching information to be loaded into the store
|
3960
|
+
*
|
3961
|
+
* @returns a promise that resolves when the templates are ready
|
3962
|
+
*
|
3963
|
+
* @protected
|
3964
|
+
*/
|
3965
|
+
async _prepareSolutionItemsForStorage(solutionItemId, templates, authentication) {
|
3966
|
+
const resourceAdds = [];
|
3967
|
+
// Update the resources and remove the augmentation from a template
|
3968
|
+
const pendingTasks = [];
|
3969
|
+
templates.forEach((t) => {
|
3970
|
+
// Run through the resourceFilePaths for the item seeking modifications to be made to the solution item's
|
3971
|
+
// collection of resources; queue them for batching
|
3972
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
3973
|
+
t.resourceFilePaths.forEach(async (path) => {
|
3974
|
+
const storageName = this._getResourceStorageName(t.itemId, path);
|
3975
|
+
switch (path.updateType) {
|
3976
|
+
case interfaces.EUpdateType.Add:
|
3977
|
+
const { prefix, suffix } = this._splitFilename(storageName);
|
3978
|
+
t.resources.push(storageName);
|
3979
|
+
resourceAdds.push({
|
3980
|
+
itemId: t.itemId,
|
3981
|
+
file: path.blob,
|
3982
|
+
folder: prefix,
|
3983
|
+
filename: suffix
|
3984
|
+
});
|
3985
|
+
break;
|
3986
|
+
case interfaces.EUpdateType.Update:
|
3987
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
3988
|
+
pendingTasks.push(new Promise(async (resolve) => {
|
3989
|
+
try {
|
3990
|
+
await updateItemResourceFile(solutionItemId, storageName, path.blob, authentication);
|
3991
|
+
}
|
3992
|
+
catch (err) {
|
3993
|
+
console.log("Unable to update " + storageName + " for item " + t.itemId + ": " + JSON.stringify(err));
|
3994
|
+
}
|
3995
|
+
resolve();
|
3996
|
+
}));
|
3997
|
+
break;
|
3998
|
+
case interfaces.EUpdateType.Remove:
|
3999
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
4000
|
+
pendingTasks.push(new Promise(async (resolve) => {
|
4001
|
+
try {
|
4002
|
+
await removeItemResourceFile(solutionItemId, storageName, authentication);
|
4003
|
+
t.resources = t.resources.filter((path) => path !== storageName);
|
4004
|
+
}
|
4005
|
+
catch (err) {
|
4006
|
+
console.log("Unable to remove " + storageName + " for item " + t.itemId + ": " + JSON.stringify(err));
|
4007
|
+
}
|
4008
|
+
resolve();
|
4009
|
+
}));
|
4010
|
+
break;
|
4011
|
+
}
|
4012
|
+
return Promise.resolve();
|
4013
|
+
});
|
4014
|
+
delete t.resourceFilePaths;
|
4015
|
+
delete t.thumbnail;
|
4016
|
+
delete t.groupDetails;
|
4017
|
+
});
|
4018
|
+
// Update the resources
|
4019
|
+
return Promise.all(pendingTasks)
|
4020
|
+
.then(async () => {
|
4021
|
+
if (resourceAdds.length > 0) {
|
4022
|
+
await copyFilesToStorageItem(resourceAdds, solutionItemId, authentication);
|
4023
|
+
}
|
4024
|
+
return Promise.resolve();
|
4025
|
+
});
|
4026
|
+
}
|
4027
|
+
/**
|
4028
|
+
* Stores basic spatial reference information that is used to determine if a custom spatial reference parameter will
|
4029
|
+
* be exposed while deploying this solution and if so what feature services will support it and what will the default wkid be
|
4030
|
+
*
|
4031
|
+
* @param spatialReferenceInfo The configuration settings for a custom spatial reference
|
4032
|
+
* @param templates The templates in the current solution, which will be updated in place if
|
4033
|
+
* `spatialReferenceInfo.enabled` is true
|
4034
|
+
*
|
4035
|
+
* @returns The new default wkid
|
4036
|
+
*
|
4037
|
+
* @protected
|
4038
|
+
*/
|
4039
|
+
_setSpatialReferenceInfo(spatialReferenceInfo, templates) {
|
4040
|
+
const customizingPrefix = "{{params.wkid||";
|
4041
|
+
const customizeableFeatureServices = this._getCustomizableFeatureServices(templates);
|
4042
|
+
if (spatialReferenceInfo.enabled) {
|
4043
|
+
// Enable or disable this feature in each service
|
4044
|
+
customizeableFeatureServices.forEach((fs) => {
|
4045
|
+
const name = fs.item.title || fs.item.name;
|
4046
|
+
let wkid;
|
4047
|
+
if (spatialReferenceInfo.services[name]) { // enabled
|
4048
|
+
wkid = `{{params.wkid||${spatialReferenceInfo.spatialReference}}}`;
|
4049
|
+
setCreateProp(fs, "properties.service.spatialReference.wkid", wkid);
|
4050
|
+
}
|
4051
|
+
else { // disabled
|
4052
|
+
wkid = getProp(fs, "properties.service.spatialReference.wkid");
|
4053
|
+
// Remove customizing prefix if present
|
4054
|
+
if (wkid.toString().startsWith(customizingPrefix)) {
|
4055
|
+
wkid = wkid.toString().substring(customizingPrefix.length, wkid.length - 2);
|
4056
|
+
setCreateProp(fs, "properties.service.spatialReference.wkid", wkid);
|
4057
|
+
}
|
4058
|
+
}
|
4059
|
+
});
|
4060
|
+
return spatialReferenceInfo.spatialReference;
|
4061
|
+
}
|
4062
|
+
else {
|
4063
|
+
// Disable this feature in each service
|
4064
|
+
customizeableFeatureServices.forEach((fs) => {
|
4065
|
+
const wkid = getProp(fs, "properties.service.spatialReference.wkid");
|
4066
|
+
// Remove customizing prefix if present
|
4067
|
+
if (wkid.toString().startsWith(customizingPrefix)) {
|
4068
|
+
setCreateProp(fs, "properties.service.spatialReference.wkid", wkid.toString().substring(customizingPrefix.length, wkid.length - 2));
|
4069
|
+
}
|
4070
|
+
});
|
4071
|
+
return undefined;
|
4072
|
+
}
|
4073
|
+
}
|
4074
|
+
/**
|
4075
|
+
* Splits a pathed filename into a last term and a prefix; e.g., "a/b/c" returns "c" with a prefix of "a/b".
|
4076
|
+
*
|
4077
|
+
* @param filename Filename with optional path
|
4078
|
+
*
|
4079
|
+
* @returns An object consisting of a `prefix` (undefined if `filename` does not contain a path) and a `suffix`--the
|
4080
|
+
* filename at the end of a path
|
4081
|
+
*
|
4082
|
+
* @protected
|
4083
|
+
*/
|
4084
|
+
_splitFilename(filename) {
|
4085
|
+
const filenameParts = filename.split("/");
|
4086
|
+
return {
|
4087
|
+
prefix: filenameParts.length > 1 ? filenameParts.slice(0, filenameParts.length - 1).join("/") : undefined,
|
4088
|
+
suffix: filenameParts[filenameParts.length - 1]
|
4089
|
+
};
|
4090
|
+
}
|
4091
|
+
}
|
4092
|
+
const state = SolutionStore.Store;
|
4093
|
+
|
4094
|
+
exports.ArcGISAuthError = ArcGISAuthError;
|
4095
|
+
exports.NODEJS_DEFAULT_REFERER_HEADER = NODEJS_DEFAULT_REFERER_HEADER;
|
4096
|
+
exports.cleanUrl = cleanUrl;
|
4097
|
+
exports.encodeQueryString = encodeQueryString;
|
4098
|
+
exports.getProp = getProp;
|
4099
|
+
exports.request = request;
|
4100
|
+
exports.state = state;
|