autnam 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +2 -0
- package/.eslintrc.json +37 -0
- package/.github/workflows/deploy-docs.yml +27 -0
- package/.github/workflows/pre-release-tests.yml +49 -0
- package/.github/workflows/pull-request-tests.yml +49 -0
- package/.github/workflows/release.yml +75 -0
- package/.prettierignore +2 -0
- package/.prettierrc +19 -0
- package/.vscode/launch.json +25 -0
- package/.vscode/settings.json +5 -0
- package/codecov.yml +7 -0
- package/commitlint.config.cjs +41 -0
- package/demos/.eslintrc.js +13 -0
- package/demos/ago-node-cli/README.md +30 -0
- package/demos/ago-node-cli/ago.js +31 -0
- package/demos/ago-node-cli/index.js +11 -0
- package/demos/ago-node-cli/lib/item-export-command.js +48 -0
- package/demos/ago-node-cli/lib/item-search-command.js +32 -0
- package/demos/ago-node-cli/package.json +29 -0
- package/demos/attachments-browser/README.md +7 -0
- package/demos/attachments-browser/index.html +165 -0
- package/demos/attachments-browser/package.json +15 -0
- package/demos/attachments-node/README.md +4 -0
- package/demos/attachments-node/image.jpg +0 -0
- package/demos/attachments-node/index.js +89 -0
- package/demos/attachments-node/package.json +19 -0
- package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
- package/demos/batch-geocoder-node/README.md +13 -0
- package/demos/batch-geocoder-node/batch-geocode.js +112 -0
- package/demos/batch-geocoder-node/config-template.js +18 -0
- package/demos/batch-geocoder-node/package.json +34 -0
- package/demos/browser-es-modules/README.md +7 -0
- package/demos/browser-es-modules/index.html +38 -0
- package/demos/browser-es-modules/package.json +15 -0
- package/demos/deno/README.md +1 -0
- package/demos/deno/import_map.json +8 -0
- package/demos/deno/index.js +5 -0
- package/demos/express/README.md +16 -0
- package/demos/express/config.json.template +3 -0
- package/demos/express/package.json +15 -0
- package/demos/express/server.js +37 -0
- package/demos/feature-service-browser/README.md +8 -0
- package/demos/feature-service-browser/index.html +122 -0
- package/demos/feature-service-browser/package.json +15 -0
- package/demos/geocoder-browser/README.md +12 -0
- package/demos/geocoder-browser/authenticate.html +29 -0
- package/demos/geocoder-browser/config.js.template +1 -0
- package/demos/geocoder-browser/index.html +139 -0
- package/demos/geocoder-browser/package.json +15 -0
- package/demos/jsapi-integration/README.md +26 -0
- package/demos/jsapi-integration/authenticate.html +29 -0
- package/demos/jsapi-integration/config.js +6 -0
- package/demos/jsapi-integration/index.html +91 -0
- package/demos/jsapi-integration/package.json +15 -0
- package/demos/node-cli-item-management/README.md +11 -0
- package/demos/node-cli-item-management/index.js +229 -0
- package/demos/node-cli-item-management/package.json +24 -0
- package/demos/node-cli-item-management/screenshot.png +0 -0
- package/demos/node-common-js/README.md +4 -0
- package/demos/node-common-js/index.js +5 -0
- package/demos/node-common-js/package.json +15 -0
- package/demos/node-es-modules/README.md +4 -0
- package/demos/node-es-modules/index.js +5 -0
- package/demos/node-es-modules/package.json +16 -0
- package/demos/oauth2-browser/README.md +17 -0
- package/demos/oauth2-browser/authenticate.html +29 -0
- package/demos/oauth2-browser/config.js.template +6 -0
- package/demos/oauth2-browser/index.html +223 -0
- package/demos/oauth2-browser/logo.svg +4 -0
- package/demos/oauth2-browser/package.json +15 -0
- package/demos/oauth2-browser/style.css +36 -0
- package/demos/oauth2-browser-retry/README.md +32 -0
- package/demos/oauth2-browser-retry/authenticate.html +21 -0
- package/demos/oauth2-browser-retry/index.html +114 -0
- package/demos/oauth2-browser-retry/logo.svg +4 -0
- package/demos/oauth2-browser-retry/package.json +15 -0
- package/demos/parcel/README.md +8 -0
- package/demos/parcel/index.html +16 -0
- package/demos/parcel/index.js +8 -0
- package/demos/parcel/package.json +20 -0
- package/demos/snowpack/README.md +8 -0
- package/demos/snowpack/index.html +16 -0
- package/demos/snowpack/index.js +8 -0
- package/demos/snowpack/package.json +20 -0
- package/demos/snowpack/snowpack.config.js +3 -0
- package/demos/stream-response-to-file/README.md +7 -0
- package/demos/stream-response-to-file/index.js +36 -0
- package/demos/stream-response-to-file/output/.gitkeep +0 -0
- package/demos/stream-response-to-file/package.json +31 -0
- package/demos/tree-shaking-rollup/.babelrc +3 -0
- package/demos/tree-shaking-rollup/README.md +9 -0
- package/demos/tree-shaking-rollup/index.html +11 -0
- package/demos/tree-shaking-rollup/package.json +22 -0
- package/demos/tree-shaking-rollup/rollup.config.js +13 -0
- package/demos/tree-shaking-rollup/src/index.js +8 -0
- package/demos/tree-shaking-webpack/README.md +9 -0
- package/demos/tree-shaking-webpack/index.html +11 -0
- package/demos/tree-shaking-webpack/package.json +26 -0
- package/demos/tree-shaking-webpack/src/index.js +8 -0
- package/demos/tree-shaking-webpack/webpack.config.js +29 -0
- package/demos/vite/README.md +6 -0
- package/demos/vite/favicon.svg +15 -0
- package/demos/vite/index.html +13 -0
- package/demos/vite/main.js +8 -0
- package/demos/vite/package.json +18 -0
- package/demos/vue/.env.example +11 -0
- package/demos/vue/.eslintrc.js +17 -0
- package/demos/vue/.postcssrc.js +5 -0
- package/demos/vue/README.md +17 -0
- package/demos/vue/babel.config.js +3 -0
- package/demos/vue/package.json +35 -0
- package/demos/vue/public/favicon.ico +0 -0
- package/demos/vue/public/index.html +24 -0
- package/demos/vue/src/assets/logo.svg +29 -0
- package/demos/vue/src/components/App.vue +303 -0
- package/demos/vue/src/components/Authenticate.vue +65 -0
- package/demos/vue/src/components/Loader.vue +230 -0
- package/demos/vue/src/main.js +92 -0
- package/demos/webmap-checker-sapper/.env.example +5 -0
- package/demos/webmap-checker-sapper/README.md +124 -0
- package/demos/webmap-checker-sapper/appveyor.yml +18 -0
- package/demos/webmap-checker-sapper/cypress/fixtures/example.json +5 -0
- package/demos/webmap-checker-sapper/cypress/integration/spec.js +19 -0
- package/demos/webmap-checker-sapper/cypress/plugins/index.js +17 -0
- package/demos/webmap-checker-sapper/cypress/support/commands.js +25 -0
- package/demos/webmap-checker-sapper/cypress/support/index.js +20 -0
- package/demos/webmap-checker-sapper/cypress.json +4 -0
- package/demos/webmap-checker-sapper/package.json +47 -0
- package/demos/webmap-checker-sapper/rollup.config.js +87 -0
- package/demos/webmap-checker-sapper/src/client.js +20 -0
- package/demos/webmap-checker-sapper/src/components/LayerStatus.html +108 -0
- package/demos/webmap-checker-sapper/src/components/Nav.html +21 -0
- package/demos/webmap-checker-sapper/src/components/WebMap.html +62 -0
- package/demos/webmap-checker-sapper/src/routes/_error.html +41 -0
- package/demos/webmap-checker-sapper/src/routes/_layout.html +21 -0
- package/demos/webmap-checker-sapper/src/routes/auth/authorize.js +18 -0
- package/demos/webmap-checker-sapper/src/routes/auth/exchange-token.js +20 -0
- package/demos/webmap-checker-sapper/src/routes/auth/post-sign-in.js +24 -0
- package/demos/webmap-checker-sapper/src/routes/auth/sign-out.js +10 -0
- package/demos/webmap-checker-sapper/src/routes/index.html +20 -0
- package/demos/webmap-checker-sapper/src/routes/webmaps/[webmapId].html +83 -0
- package/demos/webmap-checker-sapper/src/routes/webmaps/index.html +59 -0
- package/demos/webmap-checker-sapper/src/server.js +102 -0
- package/demos/webmap-checker-sapper/src/service-worker.js +82 -0
- package/demos/webmap-checker-sapper/src/template.html +33 -0
- package/demos/webmap-checker-sapper/src/userInfoMiddleware.js +21 -0
- package/demos/webmap-checker-sapper/src/utils.js +33 -0
- package/demos/webmap-checker-sapper/static/favicon.png +0 -0
- package/demos/webmap-checker-sapper/static/global.css +36 -0
- package/demos/webmap-checker-sapper/static/manifest.json +20 -0
- package/demos/webmap-checker-sapper/static/svelte-logo-192.png +0 -0
- package/demos/webmap-checker-sapper/static/svelte-logo-512.png +0 -0
- package/docs/.eslintrc.js +12 -0
- package/docs/FAQ.md +48 -0
- package/docs/HISTORY.md +62 -0
- package/docs/acetate.config.js +262 -0
- package/docs/build-typedoc.js +434 -0
- package/docs/generate-srihashes.js +61 -0
- package/docs/package.json +3 -0
- package/docs/src/_layout.html +86 -0
- package/docs/src/api/_declaration.html +600 -0
- package/docs/src/api/_layout.html +204 -0
- package/docs/src/api/_package.html +38 -0
- package/docs/src/api/index.html +16 -0
- package/docs/src/guides/_layout.html +24 -0
- package/docs/src/guides/amd-requirejs-dojo.md +40 -0
- package/docs/src/guides/browser-authentication.md +39 -0
- package/docs/src/guides/bundlers.md +52 -0
- package/docs/src/guides/cli-authentication.md +9 -0
- package/docs/src/guides/client-server-authentication.md +9 -0
- package/docs/src/guides/embedded-apps.md +106 -0
- package/docs/src/guides/from-a-cdn.md +38 -0
- package/docs/src/guides/index.md +59 -0
- package/docs/src/guides/node.md +84 -0
- package/docs/src/guides/package-overview.md +111 -0
- package/docs/src/guides/server-authentication.md +9 -0
- package/docs/src/guides/whats-new-v2-0.md +305 -0
- package/docs/src/img/icons.png +0 -0
- package/docs/src/img/icons@2x.png +0 -0
- package/docs/src/img/oauth-browser.png +0 -0
- package/docs/src/index.html +12 -0
- package/docs/src/js/api-search.js +112 -0
- package/docs/src/js/nav-toggle.js +41 -0
- package/docs/src/sass/_highlight.scss +96 -0
- package/docs/src/sass/_icons.scss +157 -0
- package/docs/src/sass/style.scss +242 -0
- package/jasmine.json +7 -0
- package/jasmine.live.json +7 -0
- package/karma.conf.cjs +128 -0
- package/package.json +87 -0
- package/packages/arcgis-rest-auth/CHANGELOG.md +80 -0
- package/packages/arcgis-rest-auth/README.md +71 -0
- package/packages/arcgis-rest-auth/package.json +66 -0
- package/packages/arcgis-rest-auth/src/index.ts +34 -0
- package/packages/arcgis-rest-auth/tsconfig.json +6 -0
- package/packages/arcgis-rest-demographics/CHANGELOG.md +14 -0
- package/packages/arcgis-rest-demographics/README.md +74 -0
- package/packages/arcgis-rest-demographics/package.json +69 -0
- package/packages/arcgis-rest-demographics/src/getAvailableCountries.ts +113 -0
- package/packages/arcgis-rest-demographics/src/getAvailableDataCollections.ts +161 -0
- package/packages/arcgis-rest-demographics/src/getAvailableGeographyLevels.ts +86 -0
- package/packages/arcgis-rest-demographics/src/getGeography.ts +152 -0
- package/packages/arcgis-rest-demographics/src/helpers.ts +27 -0
- package/packages/arcgis-rest-demographics/src/index.ts +16 -0
- package/packages/arcgis-rest-demographics/src/queryDemographicData.ts +108 -0
- package/packages/arcgis-rest-demographics/test/getAvailableCountries.test.ts +89 -0
- package/packages/arcgis-rest-demographics/test/getAvailableDataCollections.test.ts +114 -0
- package/packages/arcgis-rest-demographics/test/getAvailableGeographyLevels.test.ts +69 -0
- package/packages/arcgis-rest-demographics/test/getGeography.test.ts +150 -0
- package/packages/arcgis-rest-demographics/test/mocks/responses.ts +4 -0
- package/packages/arcgis-rest-demographics/test/queryDemographicData.test.live.ts +50 -0
- package/packages/arcgis-rest-demographics/test/queryDemographicData.test.ts +127 -0
- package/packages/arcgis-rest-demographics/tsconfig.json +6 -0
- package/packages/arcgis-rest-feature-service/CHANGELOG.md +44 -0
- package/packages/arcgis-rest-feature-service/README.md +75 -0
- package/packages/arcgis-rest-feature-service/package.json +70 -0
- package/packages/arcgis-rest-feature-service/src/add.ts +55 -0
- package/packages/arcgis-rest-feature-service/src/addAttachment.ts +53 -0
- package/packages/arcgis-rest-feature-service/src/addToServiceDefinition.ts +74 -0
- package/packages/arcgis-rest-feature-service/src/applyEdits.ts +94 -0
- package/packages/arcgis-rest-feature-service/src/createFeatureService.ts +191 -0
- package/packages/arcgis-rest-feature-service/src/decodeValues.ts +126 -0
- package/packages/arcgis-rest-feature-service/src/delete.ts +62 -0
- package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +52 -0
- package/packages/arcgis-rest-feature-service/src/getAllLayersAndTables.ts +30 -0
- package/packages/arcgis-rest-feature-service/src/getAttachments.ts +55 -0
- package/packages/arcgis-rest-feature-service/src/getLayer.ts +23 -0
- package/packages/arcgis-rest-feature-service/src/getService.ts +25 -0
- package/packages/arcgis-rest-feature-service/src/getServiceAdminInfo.ts +33 -0
- package/packages/arcgis-rest-feature-service/src/getViewSources.ts +19 -0
- package/packages/arcgis-rest-feature-service/src/helpers.ts +768 -0
- package/packages/arcgis-rest-feature-service/src/index.ts +37 -0
- package/packages/arcgis-rest-feature-service/src/query.ts +200 -0
- package/packages/arcgis-rest-feature-service/src/queryRelated.ts +86 -0
- package/packages/arcgis-rest-feature-service/src/update.ts +65 -0
- package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +59 -0
- package/packages/arcgis-rest-feature-service/src/updateServiceDefinition.ts +53 -0
- package/packages/arcgis-rest-feature-service/test/addToServiceDefinition.test.ts +350 -0
- package/packages/arcgis-rest-feature-service/test/attachments.test.ts +188 -0
- package/packages/arcgis-rest-feature-service/test/createFeatureService.test.ts +279 -0
- package/packages/arcgis-rest-feature-service/test/crud.test.ts +196 -0
- package/packages/arcgis-rest-feature-service/test/decodeValues.test.ts +66 -0
- package/packages/arcgis-rest-feature-service/test/getAllLayersAndTables.test.ts +27 -0
- package/packages/arcgis-rest-feature-service/test/getLayer.test.ts +30 -0
- package/packages/arcgis-rest-feature-service/test/getService.test.ts +30 -0
- package/packages/arcgis-rest-feature-service/test/getServiceAdminInfo.test.ts +41 -0
- package/packages/arcgis-rest-feature-service/test/getViewSources.test.ts +45 -0
- package/packages/arcgis-rest-feature-service/test/helpers.test.ts +27 -0
- package/packages/arcgis-rest-feature-service/test/mocks/allLayersAndTablesResponse.ts +950 -0
- package/packages/arcgis-rest-feature-service/test/mocks/cvdQueryResponse.ts +225 -0
- package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +302 -0
- package/packages/arcgis-rest-feature-service/test/mocks/fields.ts +779 -0
- package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
- package/packages/arcgis-rest-feature-service/test/mocks/layerDefinition.ts +80 -0
- package/packages/arcgis-rest-feature-service/test/mocks/service.ts +476 -0
- package/packages/arcgis-rest-feature-service/test/query.test.ts +166 -0
- package/packages/arcgis-rest-feature-service/test/updateServiceDefinition.test.ts +103 -0
- package/packages/arcgis-rest-feature-service/tsconfig.json +9 -0
- package/packages/arcgis-rest-fetch/README.md +17 -0
- package/packages/arcgis-rest-fetch/browser-ponyfill.js +8 -0
- package/packages/arcgis-rest-fetch/browser-ponyfill.mjs +8 -0
- package/packages/arcgis-rest-fetch/index.types.d.ts +8 -0
- package/packages/arcgis-rest-fetch/node-ponyfill.js +10 -0
- package/packages/arcgis-rest-fetch/node-ponyfill.mjs +10 -0
- package/packages/arcgis-rest-fetch/package.json +21 -0
- package/packages/arcgis-rest-form-data/README.md +15 -0
- package/packages/arcgis-rest-form-data/browser-ponyfill.js +5 -0
- package/packages/arcgis-rest-form-data/browser-ponyfill.mjs +3 -0
- package/packages/arcgis-rest-form-data/index.types.d.ts +9 -0
- package/packages/arcgis-rest-form-data/node-ponyfill.js +7 -0
- package/packages/arcgis-rest-form-data/node-ponyfill.mjs +5 -0
- package/packages/arcgis-rest-form-data/package.json +21 -0
- package/packages/arcgis-rest-geocoding/CHANGELOG.md +26 -0
- package/packages/arcgis-rest-geocoding/README.md +85 -0
- package/packages/arcgis-rest-geocoding/package.json +69 -0
- package/packages/arcgis-rest-geocoding/src/bulk.ts +106 -0
- package/packages/arcgis-rest-geocoding/src/geocode.ts +169 -0
- package/packages/arcgis-rest-geocoding/src/helpers.ts +56 -0
- package/packages/arcgis-rest-geocoding/src/index.ts +17 -0
- package/packages/arcgis-rest-geocoding/src/reverse.ts +82 -0
- package/packages/arcgis-rest-geocoding/src/suggest.ts +45 -0
- package/packages/arcgis-rest-geocoding/test/bulk.test.ts +193 -0
- package/packages/arcgis-rest-geocoding/test/geocode.test.ts +254 -0
- package/packages/arcgis-rest-geocoding/test/helpers.test.ts +85 -0
- package/packages/arcgis-rest-geocoding/test/mocks/responses.ts +1031 -0
- package/packages/arcgis-rest-geocoding/test/reverse.test.ts +124 -0
- package/packages/arcgis-rest-geocoding/test/suggest.test.ts +53 -0
- package/packages/arcgis-rest-geocoding/tsconfig.json +6 -0
- package/packages/arcgis-rest-portal/CHANGELOG.md +73 -0
- package/packages/arcgis-rest-portal/README.md +72 -0
- package/packages/arcgis-rest-portal/package.json +68 -0
- package/packages/arcgis-rest-portal/src/groups/add-users.ts +140 -0
- package/packages/arcgis-rest-portal/src/groups/create.ts +42 -0
- package/packages/arcgis-rest-portal/src/groups/get.ts +187 -0
- package/packages/arcgis-rest-portal/src/groups/helpers.ts +14 -0
- package/packages/arcgis-rest-portal/src/groups/invite-users.ts +141 -0
- package/packages/arcgis-rest-portal/src/groups/join.ts +57 -0
- package/packages/arcgis-rest-portal/src/groups/notification.ts +77 -0
- package/packages/arcgis-rest-portal/src/groups/protect.ts +56 -0
- package/packages/arcgis-rest-portal/src/groups/remove-users.ts +84 -0
- package/packages/arcgis-rest-portal/src/groups/remove.ts +32 -0
- package/packages/arcgis-rest-portal/src/groups/search.ts +48 -0
- package/packages/arcgis-rest-portal/src/groups/update-user-membership.ts +63 -0
- package/packages/arcgis-rest-portal/src/groups/update.ts +39 -0
- package/packages/arcgis-rest-portal/src/helpers.ts +83 -0
- package/packages/arcgis-rest-portal/src/index.ts +68 -0
- package/packages/arcgis-rest-portal/src/items/add.ts +145 -0
- package/packages/arcgis-rest-portal/src/items/content.ts +70 -0
- package/packages/arcgis-rest-portal/src/items/create.ts +149 -0
- package/packages/arcgis-rest-portal/src/items/export.ts +92 -0
- package/packages/arcgis-rest-portal/src/items/get.ts +444 -0
- package/packages/arcgis-rest-portal/src/items/helpers.ts +272 -0
- package/packages/arcgis-rest-portal/src/items/protect.ts +41 -0
- package/packages/arcgis-rest-portal/src/items/reassign.ts +59 -0
- package/packages/arcgis-rest-portal/src/items/remove.ts +139 -0
- package/packages/arcgis-rest-portal/src/items/search.ts +25 -0
- package/packages/arcgis-rest-portal/src/items/update.ts +188 -0
- package/packages/arcgis-rest-portal/src/items/upload.ts +124 -0
- package/packages/arcgis-rest-portal/src/orgs/notification.ts +148 -0
- package/packages/arcgis-rest-portal/src/services/get-unique-service-name.ts +35 -0
- package/packages/arcgis-rest-portal/src/services/is-service-name-available.ts +29 -0
- package/packages/arcgis-rest-portal/src/sharing/access.ts +84 -0
- package/packages/arcgis-rest-portal/src/sharing/helpers.ts +80 -0
- package/packages/arcgis-rest-portal/src/sharing/is-item-shared-with-group.ts +42 -0
- package/packages/arcgis-rest-portal/src/sharing/share-item-with-group.ts +335 -0
- package/packages/arcgis-rest-portal/src/sharing/unshare-item-with-group.ts +114 -0
- package/packages/arcgis-rest-portal/src/users/get-user-tags.ts +52 -0
- package/packages/arcgis-rest-portal/src/users/get-user-url.ts +18 -0
- package/packages/arcgis-rest-portal/src/users/get-user.ts +60 -0
- package/packages/arcgis-rest-portal/src/users/invitation.ts +157 -0
- package/packages/arcgis-rest-portal/src/users/notification.ts +67 -0
- package/packages/arcgis-rest-portal/src/users/search-users.ts +35 -0
- package/packages/arcgis-rest-portal/src/users/update.ts +63 -0
- package/packages/arcgis-rest-portal/src/util/SearchQueryBuilder.ts +391 -0
- package/packages/arcgis-rest-portal/src/util/array.ts +16 -0
- package/packages/arcgis-rest-portal/src/util/generic-search.ts +111 -0
- package/packages/arcgis-rest-portal/src/util/get-portal-settings.ts +44 -0
- package/packages/arcgis-rest-portal/src/util/get-portal-url.ts +32 -0
- package/packages/arcgis-rest-portal/src/util/get-portal.ts +53 -0
- package/packages/arcgis-rest-portal/src/util/get-subscription-info.ts +43 -0
- package/packages/arcgis-rest-portal/src/util/scrub-control-chars.ts +13 -0
- package/packages/arcgis-rest-portal/src/util/search.ts +48 -0
- package/packages/arcgis-rest-portal/test/groups/add-users.test.ts +238 -0
- package/packages/arcgis-rest-portal/test/groups/crud.test.ts +183 -0
- package/packages/arcgis-rest-portal/test/groups/get.test.ts +174 -0
- package/packages/arcgis-rest-portal/test/groups/invite-users.test.ts +146 -0
- package/packages/arcgis-rest-portal/test/groups/join.test.ts +71 -0
- package/packages/arcgis-rest-portal/test/groups/notification.test.ts +111 -0
- package/packages/arcgis-rest-portal/test/groups/protect.test.ts +71 -0
- package/packages/arcgis-rest-portal/test/groups/remove-users.test.ts +140 -0
- package/packages/arcgis-rest-portal/test/groups/search.test.ts +151 -0
- package/packages/arcgis-rest-portal/test/groups/update-user-membership.test.ts +64 -0
- package/packages/arcgis-rest-portal/test/items/add.test.ts +320 -0
- package/packages/arcgis-rest-portal/test/items/content.test.ts +161 -0
- package/packages/arcgis-rest-portal/test/items/create.test.ts +404 -0
- package/packages/arcgis-rest-portal/test/items/export.test.ts +115 -0
- package/packages/arcgis-rest-portal/test/items/get.test.ts +606 -0
- package/packages/arcgis-rest-portal/test/items/helpers.test.ts +60 -0
- package/packages/arcgis-rest-portal/test/items/protect.test.ts +120 -0
- package/packages/arcgis-rest-portal/test/items/reassign.test.ts +130 -0
- package/packages/arcgis-rest-portal/test/items/remove.test.ts +259 -0
- package/packages/arcgis-rest-portal/test/items/search.test.ts +274 -0
- package/packages/arcgis-rest-portal/test/items/update.test.ts +549 -0
- package/packages/arcgis-rest-portal/test/items/upload.test.ts +286 -0
- package/packages/arcgis-rest-portal/test/mocks/groups/responses.ts +208 -0
- package/packages/arcgis-rest-portal/test/mocks/items/foo.zip +0 -0
- package/packages/arcgis-rest-portal/test/mocks/items/item.ts +526 -0
- package/packages/arcgis-rest-portal/test/mocks/items/resources.ts +38 -0
- package/packages/arcgis-rest-portal/test/mocks/items/search.ts +121 -0
- package/packages/arcgis-rest-portal/test/mocks/portal/response.ts +126 -0
- package/packages/arcgis-rest-portal/test/mocks/portal/settings-response.ts +56 -0
- package/packages/arcgis-rest-portal/test/mocks/sharing/sharing.ts +18 -0
- package/packages/arcgis-rest-portal/test/mocks/users/invitation.ts +70 -0
- package/packages/arcgis-rest-portal/test/mocks/users/notification.ts +34 -0
- package/packages/arcgis-rest-portal/test/mocks/users/user-search.ts +388 -0
- package/packages/arcgis-rest-portal/test/mocks/users/user-tags.ts +5 -0
- package/packages/arcgis-rest-portal/test/mocks/users/user.ts +174 -0
- package/packages/arcgis-rest-portal/test/orgs/notification.test.ts +142 -0
- package/packages/arcgis-rest-portal/test/services/get-unique-service-name.test.ts +64 -0
- package/packages/arcgis-rest-portal/test/services/is-service-name-available.test.ts +41 -0
- package/packages/arcgis-rest-portal/test/sharing/access.test.ts +162 -0
- package/packages/arcgis-rest-portal/test/sharing/helpers.test.ts +55 -0
- package/packages/arcgis-rest-portal/test/sharing/share-item-with-group.test.ts +1328 -0
- package/packages/arcgis-rest-portal/test/sharing/unshare-item-with-group.test.ts +288 -0
- package/packages/arcgis-rest-portal/test/users/get-user-tags.test.ts +71 -0
- package/packages/arcgis-rest-portal/test/users/get-user-url.test.ts +40 -0
- package/packages/arcgis-rest-portal/test/users/get-user.test.ts +90 -0
- package/packages/arcgis-rest-portal/test/users/invitation.test.ts +126 -0
- package/packages/arcgis-rest-portal/test/users/notification.test.ts +76 -0
- package/packages/arcgis-rest-portal/test/users/search.test.ts +41 -0
- package/packages/arcgis-rest-portal/test/users/update.test.ts +150 -0
- package/packages/arcgis-rest-portal/test/util/SearchQueryBuilder.test.ts +295 -0
- package/packages/arcgis-rest-portal/test/util/array.test.ts +33 -0
- package/packages/arcgis-rest-portal/test/util/get-portal-settings.test.ts +57 -0
- package/packages/arcgis-rest-portal/test/util/get-portal-url.test.ts +37 -0
- package/packages/arcgis-rest-portal/test/util/portal.test.ts +137 -0
- package/packages/arcgis-rest-portal/test/util/scrub-control-chars.test.ts +25 -0
- package/packages/arcgis-rest-portal/tsconfig.json +6 -0
- package/packages/arcgis-rest-request/README.md +72 -0
- package/packages/arcgis-rest-request/package.json +69 -0
- package/packages/arcgis-rest-request/post-message-auth-spec.md +70 -0
- package/packages/arcgis-rest-request/src/ApiKeyManager.ts +60 -0
- package/packages/arcgis-rest-request/src/ApplicationCredentialsManager.ts +141 -0
- package/packages/arcgis-rest-request/src/ArcGISIdentityManager.ts +1470 -0
- package/packages/arcgis-rest-request/src/app-tokens.ts +132 -0
- package/packages/arcgis-rest-request/src/authenticated-request-options.ts +23 -0
- package/packages/arcgis-rest-request/src/federation-utils.ts +88 -0
- package/packages/arcgis-rest-request/src/fetch-token.ts +48 -0
- package/packages/arcgis-rest-request/src/generate-token.ts +32 -0
- package/packages/arcgis-rest-request/src/index.ts +46 -0
- package/packages/arcgis-rest-request/src/request.ts +446 -0
- package/packages/arcgis-rest-request/src/revoke-token.ts +73 -0
- package/packages/arcgis-rest-request/src/types/feature.ts +42 -0
- package/packages/arcgis-rest-request/src/types/geometry.ts +239 -0
- package/packages/arcgis-rest-request/src/types/group.ts +72 -0
- package/packages/arcgis-rest-request/src/types/service.ts +87 -0
- package/packages/arcgis-rest-request/src/types/symbol.ts +21 -0
- package/packages/arcgis-rest-request/src/types/user.ts +49 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +82 -0
- package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
- package/packages/arcgis-rest-request/src/utils/GrantTypes.ts +5 -0
- package/packages/arcgis-rest-request/src/utils/HTTPMethods.ts +6 -0
- package/packages/arcgis-rest-request/src/utils/IAuthenticationManager.ts +22 -0
- package/packages/arcgis-rest-request/src/utils/IFetchTokenParams.ts +11 -0
- package/packages/arcgis-rest-request/src/utils/IGenerateTokenParams.ts +9 -0
- package/packages/arcgis-rest-request/src/utils/IParamBuilder.ts +3 -0
- package/packages/arcgis-rest-request/src/utils/IParams.ts +6 -0
- package/packages/arcgis-rest-request/src/utils/IParamsBuilder.ts +5 -0
- package/packages/arcgis-rest-request/src/utils/IRequestOptions.ts +59 -0
- package/packages/arcgis-rest-request/src/utils/ITokenRequestOptions.ts +9 -0
- package/packages/arcgis-rest-request/src/utils/ResponseFormats.ts +10 -0
- package/packages/arcgis-rest-request/src/utils/append-custom-params.ts +46 -0
- package/packages/arcgis-rest-request/src/utils/clean-url.ts +20 -0
- package/packages/arcgis-rest-request/src/utils/decode-query-string.ts +27 -0
- package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +41 -0
- package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +37 -0
- package/packages/arcgis-rest-request/src/utils/process-params.ts +109 -0
- package/packages/arcgis-rest-request/src/utils/retryAuthError.ts +10 -0
- package/packages/arcgis-rest-request/src/utils/warn.ts +11 -0
- package/packages/arcgis-rest-request/src/utils/with-options.ts +48 -0
- package/packages/arcgis-rest-request/src/validate-app-access.ts +69 -0
- package/packages/arcgis-rest-request/test/ApiKey.test.ts +53 -0
- package/packages/arcgis-rest-request/test/ApplicationSession.test.ts +148 -0
- package/packages/arcgis-rest-request/test/ArcGISIdentityManager.test.ts +2579 -0
- package/packages/arcgis-rest-request/test/app-tokens.test.ts +91 -0
- package/packages/arcgis-rest-request/test/federation-utils.test.ts +323 -0
- package/packages/arcgis-rest-request/test/fetchToken.test.ts +110 -0
- package/packages/arcgis-rest-request/test/generateToken.test.ts +40 -0
- package/packages/arcgis-rest-request/test/mocks/errors.ts +76 -0
- package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
- package/packages/arcgis-rest-request/test/mocks/param-builder.ts +7 -0
- package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
- package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
- package/packages/arcgis-rest-request/test/request.test.ts +563 -0
- package/packages/arcgis-rest-request/test/revoke-token.test.ts +55 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +196 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
- package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
- package/packages/arcgis-rest-request/test/utils/clean-url.test.ts +50 -0
- package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +146 -0
- package/packages/arcgis-rest-request/test/utils/encode-query-string.test.ts +22 -0
- package/packages/arcgis-rest-request/test/utils/process-params.test.ts +205 -0
- package/packages/arcgis-rest-request/test/utils/with-options.test.ts +135 -0
- package/packages/arcgis-rest-request/test/validate-app-access.test.ts +44 -0
- package/packages/arcgis-rest-request/tsconfig.json +4 -0
- package/packages/arcgis-rest-routing/README.md +74 -0
- package/packages/arcgis-rest-routing/package.json +69 -0
- package/packages/arcgis-rest-routing/src/closestFacility.ts +223 -0
- package/packages/arcgis-rest-routing/src/helpers.ts +104 -0
- package/packages/arcgis-rest-routing/src/index.ts +20 -0
- package/packages/arcgis-rest-routing/src/originDestinationMatrix.ts +219 -0
- package/packages/arcgis-rest-routing/src/serviceArea.ts +169 -0
- package/packages/arcgis-rest-routing/src/solveRoute.ts +179 -0
- package/packages/arcgis-rest-routing/test/closestFacility.test.ts +686 -0
- package/packages/arcgis-rest-routing/test/mocks/inputs.ts +132 -0
- package/packages/arcgis-rest-routing/test/mocks/responses.ts +13316 -0
- package/packages/arcgis-rest-routing/test/originDestinationMatrix.test.ts +795 -0
- package/packages/arcgis-rest-routing/test/serviceArea.test.ts +601 -0
- package/packages/arcgis-rest-routing/test/solveRoute.test.ts +681 -0
- package/packages/arcgis-rest-routing/tsconfig.json +6 -0
- package/prettier-package-json.config.cjs +81 -0
- package/rollup.js +152 -0
- package/scripts/create-dist-package-jsons.js +17 -0
- package/scripts/deploy-doc-site.js +16 -0
- package/scripts/generate-sri-hashes.js +52 -0
- package/scripts/get-package-json.js +27 -0
- package/scripts/run-demo-server.js +21 -0
- package/scripts/test-helpers.ts +20 -0
- package/tsconfig.json +62 -0
- package/typedoc.json +14 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { encodeFormData } from "./utils/encode-form-data.js";
|
|
5
|
+
import { encodeQueryString } from "./utils/encode-query-string.js";
|
|
6
|
+
import { requiresFormData } from "./utils/process-params.js";
|
|
7
|
+
import { ArcGISRequestError } from "./utils/ArcGISRequestError.js";
|
|
8
|
+
import { IRequestOptions } from "./utils/IRequestOptions.js";
|
|
9
|
+
import { IParams } from "./utils/IParams.js";
|
|
10
|
+
import { warn } from "./utils/warn.js";
|
|
11
|
+
import { IRetryAuthError } from "./utils/retryAuthError.js";
|
|
12
|
+
import { getFetch } from "@esri/arcgis-rest-fetch";
|
|
13
|
+
import { IAuthenticationManager } from "./index.js";
|
|
14
|
+
|
|
15
|
+
export const NODEJS_DEFAULT_REFERER_HEADER = `@esri/arcgis-rest-js`;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Sets the default options that will be passed in **all requests across all `@esri/arcgis-rest-js` modules**.
|
|
19
|
+
*
|
|
20
|
+
*
|
|
21
|
+
* ```js
|
|
22
|
+
* import { setDefaultRequestOptions } from "@esri/arcgis-rest-request";
|
|
23
|
+
* setDefaultRequestOptions({
|
|
24
|
+
* authentication: ArcGISIdentityManager // all requests will use this session by default
|
|
25
|
+
* })
|
|
26
|
+
* ```
|
|
27
|
+
* You should **never** set a default `authentication` when you are in a server side environment where you may be handling requests for many different authenticated users.
|
|
28
|
+
*
|
|
29
|
+
* @param options The default options to pass with every request. Existing default will be overwritten.
|
|
30
|
+
* @param hideWarnings Silence warnings about setting default `authentication` in shared environments.
|
|
31
|
+
*/
|
|
32
|
+
export function setDefaultRequestOptions(
|
|
33
|
+
options: IRequestOptions,
|
|
34
|
+
hideWarnings?: boolean
|
|
35
|
+
) {
|
|
36
|
+
if (options.authentication && !hideWarnings) {
|
|
37
|
+
warn(
|
|
38
|
+
"You should not set `authentication` as a default in a shared environment such as a web server which will process multiple users requests. You can call `setDefaultRequestOptions` with `true` as a second argument to disable this warning."
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
(globalThis as any).DEFAULT_ARCGIS_REQUEST_OPTIONS = options;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function getDefaultRequestOptions() {
|
|
45
|
+
return (
|
|
46
|
+
(globalThis as any).DEFAULT_ARCGIS_REQUEST_OPTIONS || {
|
|
47
|
+
httpMethod: "POST",
|
|
48
|
+
params: {
|
|
49
|
+
f: "json"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export class ArcGISAuthError extends ArcGISRequestError {
|
|
56
|
+
/**
|
|
57
|
+
* Create a new `ArcGISAuthError` object.
|
|
58
|
+
*
|
|
59
|
+
* @param message - The error message from the API
|
|
60
|
+
* @param code - The error code from the API
|
|
61
|
+
* @param response - The original response from the API that caused the error
|
|
62
|
+
* @param url - The original url of the request
|
|
63
|
+
* @param options - The original options of the request
|
|
64
|
+
*/
|
|
65
|
+
constructor(
|
|
66
|
+
message = "AUTHENTICATION_ERROR",
|
|
67
|
+
code: string | number = "AUTHENTICATION_ERROR_CODE",
|
|
68
|
+
response?: any,
|
|
69
|
+
url?: string,
|
|
70
|
+
options?: IRequestOptions
|
|
71
|
+
) {
|
|
72
|
+
super(message, code, response, url, options);
|
|
73
|
+
this.name = "ArcGISAuthError";
|
|
74
|
+
this.message =
|
|
75
|
+
code === "AUTHENTICATION_ERROR_CODE" ? message : `${code}: ${message}`;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public retry(getSession: IRetryAuthError, retryLimit = 3) {
|
|
79
|
+
let tries = 0;
|
|
80
|
+
|
|
81
|
+
const retryRequest = (resolve: any, reject: any) => {
|
|
82
|
+
getSession(this.url, this.options)
|
|
83
|
+
.then((session) => {
|
|
84
|
+
const newOptions = {
|
|
85
|
+
...this.options,
|
|
86
|
+
...{ authentication: session }
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
tries = tries + 1;
|
|
90
|
+
return request(this.url, newOptions);
|
|
91
|
+
})
|
|
92
|
+
.then((response) => {
|
|
93
|
+
resolve(response);
|
|
94
|
+
})
|
|
95
|
+
.catch((e) => {
|
|
96
|
+
if (e.name === "ArcGISAuthError" && tries < retryLimit) {
|
|
97
|
+
retryRequest(resolve, reject);
|
|
98
|
+
} else if (e.name === "ArcGISAuthError" && tries >= retryLimit) {
|
|
99
|
+
reject(this);
|
|
100
|
+
} else {
|
|
101
|
+
reject(e);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
return new Promise((resolve, reject) => {
|
|
107
|
+
retryRequest(resolve, reject);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 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`.
|
|
114
|
+
*
|
|
115
|
+
* @param data The response JSON to check for errors.
|
|
116
|
+
* @param url The url of the original request
|
|
117
|
+
* @param params The parameters of the original request
|
|
118
|
+
* @param options The options of the original request
|
|
119
|
+
* @returns The data that was passed in the `data` parameter
|
|
120
|
+
*/
|
|
121
|
+
export function checkForErrors(
|
|
122
|
+
response: any,
|
|
123
|
+
url?: string,
|
|
124
|
+
params?: IParams,
|
|
125
|
+
options?: IRequestOptions,
|
|
126
|
+
originalAuthError?: ArcGISAuthError
|
|
127
|
+
): any {
|
|
128
|
+
// this is an error message from billing.arcgis.com backend
|
|
129
|
+
if (response.code >= 400) {
|
|
130
|
+
const { message, code } = response;
|
|
131
|
+
throw new ArcGISRequestError(message, code, response, url, options);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// error from ArcGIS Online or an ArcGIS Portal or server instance.
|
|
135
|
+
if (response.error) {
|
|
136
|
+
const { message, code, messageCode } = response.error;
|
|
137
|
+
const errorCode = messageCode || code || "UNKNOWN_ERROR_CODE";
|
|
138
|
+
|
|
139
|
+
if (
|
|
140
|
+
code === 498 ||
|
|
141
|
+
code === 499 ||
|
|
142
|
+
messageCode === "GWM_0003" ||
|
|
143
|
+
(code === 400 && message === "Unable to generate token.")
|
|
144
|
+
) {
|
|
145
|
+
if (originalAuthError) {
|
|
146
|
+
throw originalAuthError;
|
|
147
|
+
} else {
|
|
148
|
+
throw new ArcGISAuthError(message, errorCode, response, url, options);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
throw new ArcGISRequestError(message, errorCode, response, url, options);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// error from a status check
|
|
156
|
+
if (response.status === "failed" || response.status === "failure") {
|
|
157
|
+
let message: string;
|
|
158
|
+
let code = "UNKNOWN_ERROR_CODE";
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
message = JSON.parse(response.statusMessage).message;
|
|
162
|
+
code = JSON.parse(response.statusMessage).code;
|
|
163
|
+
} catch (e) {
|
|
164
|
+
message = response.statusMessage || response.message;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
throw new ArcGISRequestError(message, code, response, url, options);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return response;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* ```js
|
|
175
|
+
* import { request } from '@esri/arcgis-rest-request';
|
|
176
|
+
* //
|
|
177
|
+
* request('https://www.arcgis.com/sharing/rest')
|
|
178
|
+
* .then(response) // response.currentVersion === 5.2
|
|
179
|
+
* //
|
|
180
|
+
* request('https://www.arcgis.com/sharing/rest', {
|
|
181
|
+
* httpMethod: "GET"
|
|
182
|
+
* })
|
|
183
|
+
* //
|
|
184
|
+
* request('https://www.arcgis.com/sharing/rest/search', {
|
|
185
|
+
* params: { q: 'parks' }
|
|
186
|
+
* })
|
|
187
|
+
* .then(response) // response.total => 78379
|
|
188
|
+
* ```
|
|
189
|
+
* Generic method for making HTTP requests to ArcGIS REST API endpoints.
|
|
190
|
+
*
|
|
191
|
+
* @param url - The URL of the ArcGIS REST API endpoint.
|
|
192
|
+
* @param requestOptions - Options for the request, including parameters relevant to the endpoint.
|
|
193
|
+
* @returns A Promise that will resolve with the data from the response.
|
|
194
|
+
*/
|
|
195
|
+
export function request(
|
|
196
|
+
url: string,
|
|
197
|
+
requestOptions: IRequestOptions = { params: { f: "json" } }
|
|
198
|
+
): Promise<any> {
|
|
199
|
+
const defaults = getDefaultRequestOptions();
|
|
200
|
+
const options: IRequestOptions = {
|
|
201
|
+
...{ httpMethod: "POST" },
|
|
202
|
+
...defaults,
|
|
203
|
+
...requestOptions,
|
|
204
|
+
...{
|
|
205
|
+
params: {
|
|
206
|
+
...defaults.params,
|
|
207
|
+
...requestOptions.params
|
|
208
|
+
},
|
|
209
|
+
headers: {
|
|
210
|
+
...defaults.headers,
|
|
211
|
+
...requestOptions.headers
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const { httpMethod, rawResponse } = options;
|
|
217
|
+
|
|
218
|
+
const params: IParams = {
|
|
219
|
+
...{ f: "json" },
|
|
220
|
+
...options.params
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
let originalAuthError: ArcGISAuthError = null;
|
|
224
|
+
|
|
225
|
+
const fetchOptions: RequestInit = {
|
|
226
|
+
method: httpMethod,
|
|
227
|
+
/* ensures behavior mimics XMLHttpRequest.
|
|
228
|
+
needed to support sending IWA cookies */
|
|
229
|
+
credentials: options.credentials || "same-origin"
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// the /oauth2/platformSelf route will add X-Esri-Auth-Client-Id header
|
|
233
|
+
// and that request needs to send cookies cross domain
|
|
234
|
+
// so we need to set the credentials to "include"
|
|
235
|
+
if (
|
|
236
|
+
options.headers &&
|
|
237
|
+
options.headers["X-Esri-Auth-Client-Id"] &&
|
|
238
|
+
url.indexOf("/oauth2/platformSelf") > -1
|
|
239
|
+
) {
|
|
240
|
+
fetchOptions.credentials = "include";
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
let authentication: IAuthenticationManager;
|
|
244
|
+
|
|
245
|
+
// Check to see if this is a raw token as a string and create a IAuthenticationManager like object for it.
|
|
246
|
+
// Otherwise this just assumes that options.authentication is an IAuthenticationManager.
|
|
247
|
+
if (typeof options.authentication === "string") {
|
|
248
|
+
const rawToken = options.authentication;
|
|
249
|
+
|
|
250
|
+
authentication = {
|
|
251
|
+
portal: "https://www.arcgis.com/sharing/rest",
|
|
252
|
+
getToken: () => {
|
|
253
|
+
return Promise.resolve(rawToken);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
/* istanbul ignore else - we don't need to test NOT warning people */
|
|
258
|
+
if (
|
|
259
|
+
!options.authentication.startsWith("AAPK") && // doesn't look like an API Key
|
|
260
|
+
!options.suppressWarnings && // user doesn't want to suppress warnings for this request
|
|
261
|
+
!(globalThis as any).ARCGIS_REST_JS_SUPPRESS_TOKEN_WARNING // we havn't shown the user this warning yet
|
|
262
|
+
) {
|
|
263
|
+
warn(
|
|
264
|
+
`Using an oAuth 2.0 access token directly in the token option is discouraged. Consider using ArcGISIdentityManager or Application session. See https://esriurl.com/arcgis-rest-js-direct-token-warning for more information.`
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
(globalThis as any).ARCGIS_REST_JS_SUPPRESS_TOKEN_WARNING = true;
|
|
268
|
+
}
|
|
269
|
+
} else {
|
|
270
|
+
authentication = options.authentication;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return (
|
|
274
|
+
authentication
|
|
275
|
+
? authentication.getToken(url).catch((err) => {
|
|
276
|
+
/**
|
|
277
|
+
* append original request url and requestOptions
|
|
278
|
+
* to the error thrown by getToken()
|
|
279
|
+
* to assist with retrying
|
|
280
|
+
*/
|
|
281
|
+
err.url = url;
|
|
282
|
+
err.options = options;
|
|
283
|
+
/**
|
|
284
|
+
* if an attempt is made to talk to an unfederated server
|
|
285
|
+
* first try the request anonymously. if a 'token required'
|
|
286
|
+
* error is thrown, throw the UNFEDERATED error then.
|
|
287
|
+
*/
|
|
288
|
+
originalAuthError = err;
|
|
289
|
+
return Promise.resolve("");
|
|
290
|
+
})
|
|
291
|
+
: Promise.resolve("")
|
|
292
|
+
)
|
|
293
|
+
.then((token) => {
|
|
294
|
+
if (token.length) {
|
|
295
|
+
params.token = token;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (authentication && authentication.getDomainCredentials) {
|
|
299
|
+
fetchOptions.credentials = authentication.getDomainCredentials(url);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Custom headers to add to request. IRequestOptions.headers with merge over requestHeaders.
|
|
303
|
+
const requestHeaders: {
|
|
304
|
+
[key: string]: any;
|
|
305
|
+
} = {};
|
|
306
|
+
|
|
307
|
+
if (fetchOptions.method === "GET") {
|
|
308
|
+
// Prevents token from being passed in query params when hideToken option is used.
|
|
309
|
+
/* istanbul ignore if - window is always defined in a browser. Test case is covered by Jasmine in node test */
|
|
310
|
+
if (
|
|
311
|
+
params.token &&
|
|
312
|
+
options.hideToken &&
|
|
313
|
+
// Sharing API does not support preflight check required by modern browsers https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
|
|
314
|
+
typeof window === "undefined"
|
|
315
|
+
) {
|
|
316
|
+
requestHeaders["X-Esri-Authorization"] = `Bearer ${params.token}`;
|
|
317
|
+
delete params.token;
|
|
318
|
+
}
|
|
319
|
+
// encode the parameters into the query string
|
|
320
|
+
const queryParams = encodeQueryString(params);
|
|
321
|
+
// dont append a '?' unless parameters are actually present
|
|
322
|
+
const urlWithQueryString =
|
|
323
|
+
queryParams === "" ? url : url + "?" + encodeQueryString(params);
|
|
324
|
+
|
|
325
|
+
if (
|
|
326
|
+
// This would exceed the maximum length for URLs specified by the consumer and requires POST
|
|
327
|
+
(options.maxUrlLength &&
|
|
328
|
+
urlWithQueryString.length > options.maxUrlLength) ||
|
|
329
|
+
// Or if the customer requires the token to be hidden and it has not already been hidden in the header (for browsers)
|
|
330
|
+
(params.token && options.hideToken)
|
|
331
|
+
) {
|
|
332
|
+
// the consumer specified a maximum length for URLs
|
|
333
|
+
// and this would exceed it, so use post instead
|
|
334
|
+
fetchOptions.method = "POST";
|
|
335
|
+
|
|
336
|
+
// If the token was already added as a Auth header, add the token back to body with other params instead of header
|
|
337
|
+
if (token.length && options.hideToken) {
|
|
338
|
+
params.token = token;
|
|
339
|
+
// Remove existing header that was added before url query length was checked
|
|
340
|
+
delete requestHeaders["X-Esri-Authorization"];
|
|
341
|
+
}
|
|
342
|
+
} else {
|
|
343
|
+
// just use GET
|
|
344
|
+
url = urlWithQueryString;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/* updateResources currently requires FormData even when the input parameters dont warrant it.
|
|
349
|
+
https://developers.arcgis.com/rest/users-groups-and-items/update-resources.htm
|
|
350
|
+
see https://github.com/Esri/arcgis-rest-js/pull/500 for more info. */
|
|
351
|
+
const forceFormData = new RegExp("/items/.+/updateResources").test(url);
|
|
352
|
+
|
|
353
|
+
if (fetchOptions.method === "POST") {
|
|
354
|
+
fetchOptions.body = encodeFormData(params, forceFormData) as any;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Mixin headers from request options
|
|
358
|
+
fetchOptions.headers = {
|
|
359
|
+
...requestHeaders,
|
|
360
|
+
...options.headers
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
/* istanbul ignore next - karma reports coverage on browser tests only */
|
|
364
|
+
if (typeof window === "undefined" && !fetchOptions.headers.referer) {
|
|
365
|
+
fetchOptions.headers.referer = NODEJS_DEFAULT_REFERER_HEADER;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/* istanbul ignore else blob responses are difficult to make cross platform we will just have to trust the isomorphic fetch will do its job */
|
|
369
|
+
if (!requiresFormData(params) && !forceFormData) {
|
|
370
|
+
fetchOptions.headers["Content-Type"] =
|
|
371
|
+
"application/x-www-form-urlencoded";
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Check for a global fetch first and use it if available. This allows us to use the default
|
|
376
|
+
* configuration of fetch-mock in tests.
|
|
377
|
+
*/
|
|
378
|
+
|
|
379
|
+
/* istanbul ignore next coverage is based on browser code and we don't test for the absence of global fetch so we can skip the else here. */
|
|
380
|
+
return globalThis.fetch
|
|
381
|
+
? globalThis.fetch(url, fetchOptions)
|
|
382
|
+
: getFetch().then(({ fetch }) => {
|
|
383
|
+
return fetch(url, fetchOptions);
|
|
384
|
+
});
|
|
385
|
+
})
|
|
386
|
+
.then((response: any) => {
|
|
387
|
+
if (!response.ok) {
|
|
388
|
+
// server responded w/ an actual error (404, 500, etc)
|
|
389
|
+
const { status, statusText } = response;
|
|
390
|
+
throw new ArcGISRequestError(
|
|
391
|
+
statusText,
|
|
392
|
+
`HTTP ${status}`,
|
|
393
|
+
response,
|
|
394
|
+
url,
|
|
395
|
+
options
|
|
396
|
+
);
|
|
397
|
+
}
|
|
398
|
+
if (rawResponse) {
|
|
399
|
+
return response;
|
|
400
|
+
}
|
|
401
|
+
switch (params.f) {
|
|
402
|
+
case "json":
|
|
403
|
+
return response.json();
|
|
404
|
+
case "geojson":
|
|
405
|
+
return response.json();
|
|
406
|
+
case "html":
|
|
407
|
+
return response.text();
|
|
408
|
+
case "text":
|
|
409
|
+
return response.text();
|
|
410
|
+
/* istanbul ignore next blob responses are difficult to make cross platform we will just have to trust that isomorphic fetch will do its job */
|
|
411
|
+
default:
|
|
412
|
+
return response.blob();
|
|
413
|
+
}
|
|
414
|
+
})
|
|
415
|
+
.then((data) => {
|
|
416
|
+
if ((params.f === "json" || params.f === "geojson") && !rawResponse) {
|
|
417
|
+
const response = checkForErrors(
|
|
418
|
+
data,
|
|
419
|
+
url,
|
|
420
|
+
params,
|
|
421
|
+
options,
|
|
422
|
+
originalAuthError
|
|
423
|
+
);
|
|
424
|
+
|
|
425
|
+
if (originalAuthError) {
|
|
426
|
+
/* If the request was made to an unfederated service that
|
|
427
|
+
didn't require authentication, add the base url and a dummy token
|
|
428
|
+
to the list of trusted servers to avoid another federation check
|
|
429
|
+
in the event of a repeat request */
|
|
430
|
+
const truncatedUrl: string = url
|
|
431
|
+
.toLowerCase()
|
|
432
|
+
.split(/\/rest(\/admin)?\/services\//)[0];
|
|
433
|
+
|
|
434
|
+
(options.authentication as any).federatedServers[truncatedUrl] = {
|
|
435
|
+
token: [],
|
|
436
|
+
// default to 24 hours
|
|
437
|
+
expires: new Date(Date.now() + 86400 * 1000)
|
|
438
|
+
};
|
|
439
|
+
originalAuthError = null;
|
|
440
|
+
}
|
|
441
|
+
return response;
|
|
442
|
+
} else {
|
|
443
|
+
return data;
|
|
444
|
+
}
|
|
445
|
+
});
|
|
446
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IRequestOptions,
|
|
3
|
+
request,
|
|
4
|
+
cleanUrl,
|
|
5
|
+
ArcGISRequestError,
|
|
6
|
+
appendCustomParams
|
|
7
|
+
} from "./index.js";
|
|
8
|
+
|
|
9
|
+
export interface IRevokeTokenOptions extends IRequestOptions {
|
|
10
|
+
/**
|
|
11
|
+
* The token or refresh token to revoke. If a refresh token is passed all access tokens generated with that refresh token are also revoked.
|
|
12
|
+
*/
|
|
13
|
+
token: string;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The portal of the tokens to revoke. Defaults to `https://www.arcgis.com/sharing/rest`.
|
|
17
|
+
*/
|
|
18
|
+
portal?: string;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The client id fo the application that generated the tokens. Applications can only revoke tokens they created.
|
|
22
|
+
*/
|
|
23
|
+
clientId: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface IRevokeTokenResponse {
|
|
27
|
+
/**
|
|
28
|
+
* Indicates if the token was revoked. A success response will also returned for invalid tokens, expired tokens or of an unsupported type of token to prevent leaking information about the provided token.
|
|
29
|
+
*/
|
|
30
|
+
success: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Revokes a token generated via any oAuth 2.0 method. `token` can be either a refresh token OR an access token. If you are using {@linkcode ArcGISIdentityManager} you should use {@linkcode ArcGISIdentityManager.destroy} instead. Cannot revoke API keys or tokens generated by {@linkcode ApplicationSession}.
|
|
35
|
+
*
|
|
36
|
+
* See [`revokeToken`](https://developers.arcgis.com/rest/users-groups-and-items/revoke-token.htm) on the ArcGIS REST API for more details.
|
|
37
|
+
*/
|
|
38
|
+
export function revokeToken(
|
|
39
|
+
requestOptions: IRevokeTokenOptions
|
|
40
|
+
): Promise<IRevokeTokenResponse> {
|
|
41
|
+
const url = `${cleanUrl(
|
|
42
|
+
requestOptions.portal || "https://www.arcgis.com/sharing/rest"
|
|
43
|
+
)}/oauth2/revokeToken/`;
|
|
44
|
+
|
|
45
|
+
const token = requestOptions.token;
|
|
46
|
+
const clientId = requestOptions.clientId;
|
|
47
|
+
|
|
48
|
+
delete requestOptions.portal;
|
|
49
|
+
delete requestOptions.clientId;
|
|
50
|
+
delete requestOptions.token;
|
|
51
|
+
|
|
52
|
+
const options: IRequestOptions = {
|
|
53
|
+
...requestOptions,
|
|
54
|
+
httpMethod: "POST",
|
|
55
|
+
params: {
|
|
56
|
+
client_id: clientId,
|
|
57
|
+
auth_token: token
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return request(url, options).then((response) => {
|
|
62
|
+
if (!response.success) {
|
|
63
|
+
throw new ArcGISRequestError(
|
|
64
|
+
"Unable to revoke token",
|
|
65
|
+
500,
|
|
66
|
+
response,
|
|
67
|
+
url,
|
|
68
|
+
options
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return response;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { GeometryType, IHasZM, ISpatialReference, IGeometry } from "./geometry.js";
|
|
5
|
+
import { IField } from "./service.js";
|
|
6
|
+
import { ISymbol } from "./symbol.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* `IFeatureSet` can also be imported from the following packages:
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* import { IFeatureSet } from "@esri/arcgis-rest-feature-service";
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export interface IFeatureSet extends IHasZM {
|
|
16
|
+
objectIdFieldName?: string; // optional
|
|
17
|
+
globalIdFieldName?: string; // optional
|
|
18
|
+
displayFieldName?: string; // optional
|
|
19
|
+
geometryType?: GeometryType; // for feature layers only
|
|
20
|
+
spatialReference?: ISpatialReference; // for feature layers only.
|
|
21
|
+
fields?: IField[];
|
|
22
|
+
features: IFeature[];
|
|
23
|
+
fieldAliases?: {
|
|
24
|
+
[key: string]: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* a spatial entity and its corresponding properties
|
|
30
|
+
*
|
|
31
|
+
* `IFeature` can also be imported from the following packages:
|
|
32
|
+
*
|
|
33
|
+
* ```js
|
|
34
|
+
* import { IFeature } from "@esri/arcgis-rest-feature-service";
|
|
35
|
+
* import { IFeature } from "@esri/arcgis-rest-routing";
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export interface IFeature {
|
|
39
|
+
geometry?: IGeometry;
|
|
40
|
+
attributes: { [key: string]: any };
|
|
41
|
+
symbol?: ISymbol;
|
|
42
|
+
}
|