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,59 @@
|
|
|
1
|
+
import { HTTPMethods } from "./HTTPMethods.js";
|
|
2
|
+
import { IParams } from "./IParams.js";
|
|
3
|
+
import { IAuthenticationManager } from "./IAuthenticationManager.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Options for the `request()` method.
|
|
7
|
+
*/
|
|
8
|
+
export interface IRequestOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Additional parameters to pass in the request.
|
|
11
|
+
*/
|
|
12
|
+
params?: IParams;
|
|
13
|
+
/**
|
|
14
|
+
* The HTTP method to send the request with.
|
|
15
|
+
*/
|
|
16
|
+
httpMethod?: HTTPMethods;
|
|
17
|
+
/**
|
|
18
|
+
* Return the raw [response](https://developer.mozilla.org/en-US/docs/Web/API/Response)
|
|
19
|
+
*/
|
|
20
|
+
rawResponse?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The instance of {@linkcode ApiKey}, {@linkcode ArcGISIdentityManager} or {@linkcode ApplicationSession} to use to authenticate this request. A token may also be passed directly as a string however using the built in authentication managers is encouraged.
|
|
23
|
+
*/
|
|
24
|
+
authentication?: IAuthenticationManager | string;
|
|
25
|
+
/**
|
|
26
|
+
* Prevents the token from being passed in a URL Query param that is saved in browser history.
|
|
27
|
+
* Instead, the token will be passed in POST request body or through X-Esri-Authorization header.
|
|
28
|
+
* NOTE: This will force POST requests in browsers since auth header is not yet supported by preflight OPTIONS check with CORS.
|
|
29
|
+
*/
|
|
30
|
+
hideToken?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Base url for the portal you want to make the request to. Defaults to authentication.portal if authentication
|
|
33
|
+
* exists, otherwise to 'https://www.arcgis.com/sharing/rest'.
|
|
34
|
+
*/
|
|
35
|
+
portal?: string;
|
|
36
|
+
/**
|
|
37
|
+
* The implementation of `fetch` to use. Defaults to a global `fetch`.
|
|
38
|
+
*/
|
|
39
|
+
// fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
|
|
40
|
+
/**
|
|
41
|
+
* A string indicating whether credentials (cookies) will be sent with the request. Used internally for authentication workflows.
|
|
42
|
+
*/
|
|
43
|
+
credentials?: RequestCredentials;
|
|
44
|
+
/**
|
|
45
|
+
* If the length of a GET request's URL exceeds `maxUrlLength` the request will use POST instead.
|
|
46
|
+
*/
|
|
47
|
+
maxUrlLength?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Additional [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) to pass into the request.
|
|
50
|
+
*/
|
|
51
|
+
headers?: {
|
|
52
|
+
[key: string]: any;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Suppress any ArcGIS REST JS related warnings for this request.
|
|
57
|
+
*/
|
|
58
|
+
suppressWarnings?: boolean;
|
|
59
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { HTTPMethods } from "./HTTPMethods.js";
|
|
2
|
+
import { IGenerateTokenParams } from "./IGenerateTokenParams.js";
|
|
3
|
+
import { IFetchTokenParams } from "./IFetchTokenParams.js";
|
|
4
|
+
|
|
5
|
+
export interface ITokenRequestOptions {
|
|
6
|
+
params?: IGenerateTokenParams | IFetchTokenParams;
|
|
7
|
+
httpMethod?: HTTPMethods;
|
|
8
|
+
fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { IRequestOptions } from "./IRequestOptions.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Helper for methods with lots of first order request options to pass through as request parameters.
|
|
8
|
+
*/
|
|
9
|
+
export function appendCustomParams<T extends IRequestOptions>(
|
|
10
|
+
customOptions: T,
|
|
11
|
+
keys: Array<keyof T>,
|
|
12
|
+
baseOptions?: Partial<T>
|
|
13
|
+
): IRequestOptions {
|
|
14
|
+
const requestOptionsKeys = [
|
|
15
|
+
"params",
|
|
16
|
+
"httpMethod",
|
|
17
|
+
"rawResponse",
|
|
18
|
+
"authentication",
|
|
19
|
+
"portal",
|
|
20
|
+
"fetch",
|
|
21
|
+
"maxUrlLength",
|
|
22
|
+
"headers",
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const options: T = {
|
|
26
|
+
...{ params: {} },
|
|
27
|
+
...baseOptions,
|
|
28
|
+
...customOptions,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// merge all keys in customOptions into options.params
|
|
32
|
+
options.params = keys.reduce((value, key) => {
|
|
33
|
+
if (customOptions[key] || typeof customOptions[key] === "boolean") {
|
|
34
|
+
value[key as any] = customOptions[key];
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}, options.params);
|
|
38
|
+
|
|
39
|
+
// now remove all properties in options that don't exist in IRequestOptions
|
|
40
|
+
return requestOptionsKeys.reduce((value, key) => {
|
|
41
|
+
if ((options as any)[key]) {
|
|
42
|
+
(value as any)[key] = (options as any)[key];
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}, {} as IRequestOptions);
|
|
46
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Helper method to ensure that user supplied urls don't include whitespace or a trailing slash.
|
|
6
|
+
*/
|
|
7
|
+
export function cleanUrl(url: string) {
|
|
8
|
+
// Guard so we don't try to trim something that's not a string
|
|
9
|
+
if (typeof url !== "string") {
|
|
10
|
+
return url;
|
|
11
|
+
}
|
|
12
|
+
// trim leading and trailing spaces, but not spaces inside the url
|
|
13
|
+
url = url.trim();
|
|
14
|
+
|
|
15
|
+
// remove the trailing slash to the url if one was included
|
|
16
|
+
if (url[url.length - 1] === "/") {
|
|
17
|
+
url = url.slice(0, -1);
|
|
18
|
+
}
|
|
19
|
+
return url;
|
|
20
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* Copyright (c) 2017-2020 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
export function decodeParam(param: string): { key: string; value: string } {
|
|
5
|
+
const [key, value] = param.split("=");
|
|
6
|
+
return { key: decodeURIComponent(key), value: decodeURIComponent(value) };
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Decodes the passed query string as an object.
|
|
11
|
+
*
|
|
12
|
+
* @param query A string to be decoded.
|
|
13
|
+
* @returns A decoded query param object.
|
|
14
|
+
*/
|
|
15
|
+
export function decodeQueryString(query: string): { [key: string]: string } {
|
|
16
|
+
return query
|
|
17
|
+
.replace(/^#/, "")
|
|
18
|
+
.split("&")
|
|
19
|
+
.reduce(
|
|
20
|
+
(acc, entry) => {
|
|
21
|
+
const { key, value } = decodeParam(entry);
|
|
22
|
+
acc[key] = value;
|
|
23
|
+
return acc;
|
|
24
|
+
},
|
|
25
|
+
{} as any
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { processParams, requiresFormData } from "./process-params.js";
|
|
5
|
+
import { encodeQueryString } from "./encode-query-string.js";
|
|
6
|
+
import { FormData } from "@esri/arcgis-rest-form-data";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 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
|
|
10
|
+
*
|
|
11
|
+
* @param params An object to be encoded.
|
|
12
|
+
* @returns The complete [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object.
|
|
13
|
+
*/
|
|
14
|
+
export function encodeFormData(
|
|
15
|
+
params: any,
|
|
16
|
+
forceFormData?: boolean
|
|
17
|
+
): FormData | string {
|
|
18
|
+
// see https://github.com/Esri/arcgis-rest-js/issues/499 for more info.
|
|
19
|
+
const useFormData = requiresFormData(params) || forceFormData;
|
|
20
|
+
const newParams = processParams(params);
|
|
21
|
+
if (useFormData) {
|
|
22
|
+
const formData = new FormData();
|
|
23
|
+
|
|
24
|
+
Object.keys(newParams).forEach((key: any) => {
|
|
25
|
+
if (typeof Blob !== "undefined" && newParams[key] instanceof Blob) {
|
|
26
|
+
/* To name the Blob:
|
|
27
|
+
1. look to an alternate request parameter called 'fileName'
|
|
28
|
+
2. see if 'name' has been tacked onto the Blob manually
|
|
29
|
+
3. if all else fails, use the request parameter
|
|
30
|
+
*/
|
|
31
|
+
const filename = newParams["fileName"] || newParams[key].name || key;
|
|
32
|
+
formData.append(key, newParams[key], filename);
|
|
33
|
+
} else {
|
|
34
|
+
formData.append(key, newParams[key]);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return formData;
|
|
38
|
+
} else {
|
|
39
|
+
return encodeQueryString(params);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { processParams } from "./process-params.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Encodes keys and parameters for use in a URL's query string.
|
|
8
|
+
*
|
|
9
|
+
* @param key Parameter's key
|
|
10
|
+
* @param value Parameter's value
|
|
11
|
+
* @returns Query string with key and value pairs separated by "&"
|
|
12
|
+
*/
|
|
13
|
+
export function encodeParam(key: string, value: any): string {
|
|
14
|
+
// For array of arrays, repeat key=value for each element of containing array
|
|
15
|
+
if (Array.isArray(value) && value[0] && Array.isArray(value[0])) {
|
|
16
|
+
return value
|
|
17
|
+
.map((arrayElem: string) => encodeParam(key, arrayElem))
|
|
18
|
+
.join("&");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Encodes the passed object as a query string.
|
|
26
|
+
*
|
|
27
|
+
* @param params An object to be encoded.
|
|
28
|
+
* @returns An encoded query string.
|
|
29
|
+
*/
|
|
30
|
+
export function encodeQueryString(params: any): string {
|
|
31
|
+
const newParams = processParams(params);
|
|
32
|
+
return Object.keys(newParams)
|
|
33
|
+
.map((key: any) => {
|
|
34
|
+
return encodeParam(key, newParams[key]);
|
|
35
|
+
})
|
|
36
|
+
.join("&");
|
|
37
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Checks parameters to see if we should use FormData to send the request
|
|
6
|
+
* @param params The object whose keys will be encoded.
|
|
7
|
+
* @return A boolean indicating if FormData will be required.
|
|
8
|
+
*/
|
|
9
|
+
export function requiresFormData(params: any) {
|
|
10
|
+
return Object.keys(params).some(key => {
|
|
11
|
+
let value = params[key];
|
|
12
|
+
|
|
13
|
+
if (!value) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (value && value.toParam) {
|
|
18
|
+
value = value.toParam();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const type = value.constructor.name;
|
|
22
|
+
|
|
23
|
+
switch (type) {
|
|
24
|
+
case "Array":
|
|
25
|
+
return false;
|
|
26
|
+
case "Object":
|
|
27
|
+
return false;
|
|
28
|
+
case "Date":
|
|
29
|
+
return false;
|
|
30
|
+
case "Function":
|
|
31
|
+
return false;
|
|
32
|
+
case "Boolean":
|
|
33
|
+
return false;
|
|
34
|
+
case "String":
|
|
35
|
+
return false;
|
|
36
|
+
case "Number":
|
|
37
|
+
return false;
|
|
38
|
+
default:
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Converts parameters to the proper representation to send to the ArcGIS REST API.
|
|
46
|
+
* @param params The object whose keys will be encoded.
|
|
47
|
+
* @return A new object with properly encoded values.
|
|
48
|
+
*/
|
|
49
|
+
export function processParams(params: any): any {
|
|
50
|
+
const newParams: any = {};
|
|
51
|
+
|
|
52
|
+
Object.keys(params).forEach(key => {
|
|
53
|
+
let param = params[key];
|
|
54
|
+
|
|
55
|
+
if (param && param.toParam) {
|
|
56
|
+
param = param.toParam();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (
|
|
60
|
+
!param &&
|
|
61
|
+
param !== 0 &&
|
|
62
|
+
typeof param !== "boolean" &&
|
|
63
|
+
typeof param !== "string"
|
|
64
|
+
) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const type = param.constructor.name;
|
|
69
|
+
|
|
70
|
+
let value: any;
|
|
71
|
+
|
|
72
|
+
// properly encodes objects, arrays and dates for arcgis.com and other services.
|
|
73
|
+
// ported from https://github.com/Esri/esri-leaflet/blob/master/src/Request.js#L22-L30
|
|
74
|
+
// also see https://github.com/Esri/arcgis-rest-js/issues/18:
|
|
75
|
+
// null, undefined, function are excluded. If you want to send an empty key you need to send an empty string "".
|
|
76
|
+
switch (type) {
|
|
77
|
+
case "Array":
|
|
78
|
+
// Based on the first element of the array, classify array as an array of arrays, an array of objects
|
|
79
|
+
// to be stringified, or an array of non-objects to be comma-separated
|
|
80
|
+
// eslint-disable-next-line no-case-declarations
|
|
81
|
+
const firstElementType = param[0]?.constructor?.name;
|
|
82
|
+
value =
|
|
83
|
+
firstElementType === "Array" ? param : // pass thru array of arrays
|
|
84
|
+
firstElementType === "Object" ? JSON.stringify(param) : // stringify array of objects
|
|
85
|
+
param.join(","); // join other types of array elements
|
|
86
|
+
break;
|
|
87
|
+
case "Object":
|
|
88
|
+
value = JSON.stringify(param);
|
|
89
|
+
break;
|
|
90
|
+
case "Date":
|
|
91
|
+
value = param.valueOf();
|
|
92
|
+
break;
|
|
93
|
+
case "Function":
|
|
94
|
+
value = null;
|
|
95
|
+
break;
|
|
96
|
+
case "Boolean":
|
|
97
|
+
value = param + "";
|
|
98
|
+
break;
|
|
99
|
+
default:
|
|
100
|
+
value = param;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
if (value || value === 0 || typeof value === "string" || Array.isArray(value)) {
|
|
104
|
+
newParams[key] = value;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
return newParams;
|
|
109
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { IRequestOptions } from "./IRequestOptions.js";
|
|
5
|
+
import { IAuthenticationManager } from "./IAuthenticationManager.js";
|
|
6
|
+
|
|
7
|
+
export type IRetryAuthError = (
|
|
8
|
+
url: string,
|
|
9
|
+
options: IRequestOptions
|
|
10
|
+
) => Promise<IAuthenticationManager>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Method used internally to surface messages to developers.
|
|
6
|
+
*/
|
|
7
|
+
export function warn(message: string) {
|
|
8
|
+
if (console && console.warn) {
|
|
9
|
+
console.warn.apply(console, [message]);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { IRequestOptions } from "../utils/IRequestOptions.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Allows you to wrap individual methods with a default set of request options. This is useful to avoid setting the same option more then once and allows for interacting and setting defaults in a functional manner.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* import { withOptions } from "@esri/arcgis-rest-request";
|
|
8
|
+
* import { queryFeatures } from '@esri/arcgis-rest-feature-service';
|
|
9
|
+
*
|
|
10
|
+
* const queryTrails = withOptions({
|
|
11
|
+
* url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads/FeatureServer/0/"}, queryFeatures);
|
|
12
|
+
*
|
|
13
|
+
* queryTrails({
|
|
14
|
+
* where: "ELEV_FT > 1000"
|
|
15
|
+
* }).then(result);
|
|
16
|
+
*
|
|
17
|
+
* const queryTrailsAsUser = withOptions({
|
|
18
|
+
* authentication: ArcGISIdentityManager
|
|
19
|
+
* }, queryTrails);
|
|
20
|
+
*
|
|
21
|
+
* queryTrailsAsUser({
|
|
22
|
+
* where: "TRL_NAME LIKE '%backbone%'"
|
|
23
|
+
* }).then(result);
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @param defaultOptions The options to pass into to the `func`.
|
|
27
|
+
* @param func Any function that accepts anything extending `IRequestOptions` as its last parameter.
|
|
28
|
+
* @returns A copy of `func` with the `defaultOptions` passed in as defaults.
|
|
29
|
+
*/
|
|
30
|
+
export function withOptions<
|
|
31
|
+
K extends IRequestOptions,
|
|
32
|
+
T extends (...args: any[]) => any
|
|
33
|
+
>(
|
|
34
|
+
defaultOptions: IRequestOptions,
|
|
35
|
+
func: T
|
|
36
|
+
): (...funcArgs: Parameters<T>) => ReturnType<T> {
|
|
37
|
+
return (...args: Parameters<T>): ReturnType<T> => {
|
|
38
|
+
const options: K =
|
|
39
|
+
typeof args[args.length - 1] === "object"
|
|
40
|
+
? {
|
|
41
|
+
...defaultOptions,
|
|
42
|
+
...args.pop()
|
|
43
|
+
}
|
|
44
|
+
: defaultOptions;
|
|
45
|
+
|
|
46
|
+
return func(...[...args, options]);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* Copyright (c) 2018-2020 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { request } from "./request.js";
|
|
5
|
+
import { IRequestOptions } from "./utils/IRequestOptions.js";
|
|
6
|
+
|
|
7
|
+
export interface IAppAccess {
|
|
8
|
+
/**
|
|
9
|
+
* Verifies that the token is valid and the user has access to
|
|
10
|
+
* the specified app (clientId)
|
|
11
|
+
*/
|
|
12
|
+
valid: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Should the app present the current user with a "View Only" mode
|
|
15
|
+
*/
|
|
16
|
+
viewOnlyUserTypeApp: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Validates that the user has access to the application
|
|
21
|
+
* and if they user should be presented a "View Only" mode
|
|
22
|
+
*
|
|
23
|
+
* This is only needed/valid for Esri applications that are "licensed"
|
|
24
|
+
* and shipped in ArcGIS Online or ArcGIS Enterprise. Most custom applications
|
|
25
|
+
* should not need or use this.
|
|
26
|
+
*
|
|
27
|
+
* ```js
|
|
28
|
+
* import { validateAppAccess } from '@esri/arcgis-rest-auth';
|
|
29
|
+
*
|
|
30
|
+
* return validateAppAccess('your-token', 'theClientId')
|
|
31
|
+
* .then((result) => {
|
|
32
|
+
* if (!result.value) {
|
|
33
|
+
* // redirect or show some other ui
|
|
34
|
+
* } else {
|
|
35
|
+
* if (result.viewOnlyUserTypeApp) {
|
|
36
|
+
* // use this to inform your app to show a "View Only" mode
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* })
|
|
40
|
+
* .catch((err) => {
|
|
41
|
+
* // two possible errors
|
|
42
|
+
* // invalid clientId: {"error":{"code":400,"messageCode":"GWM_0007","message":"Invalid request","details":[]}}
|
|
43
|
+
* // invalid token: {"error":{"code":498,"message":"Invalid token.","details":[]}}
|
|
44
|
+
* })
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* Note: This is only usable by Esri applications hosted on *arcgis.com, *esri.com or within
|
|
48
|
+
* an ArcGIS Enterprise installation. Custom applications can not use this.
|
|
49
|
+
*
|
|
50
|
+
* @param token platform token
|
|
51
|
+
* @param clientId application client id
|
|
52
|
+
* @param portal Optional
|
|
53
|
+
*/
|
|
54
|
+
export function validateAppAccess(
|
|
55
|
+
token: string,
|
|
56
|
+
clientId: string,
|
|
57
|
+
portal = "https://www.arcgis.com/sharing/rest"
|
|
58
|
+
): Promise<IAppAccess> {
|
|
59
|
+
const url = `${portal}/oauth2/validateAppAccess`;
|
|
60
|
+
const ro = {
|
|
61
|
+
method: "POST",
|
|
62
|
+
params: {
|
|
63
|
+
f: "json",
|
|
64
|
+
client_id: clientId,
|
|
65
|
+
token
|
|
66
|
+
}
|
|
67
|
+
} as IRequestOptions;
|
|
68
|
+
return request(url, ro);
|
|
69
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { ApiKeyManager } from "../src/index.js";
|
|
5
|
+
import fetchMock from "fetch-mock";
|
|
6
|
+
|
|
7
|
+
describe("ApiKeyManager", () => {
|
|
8
|
+
afterEach(fetchMock.restore);
|
|
9
|
+
|
|
10
|
+
describe(".getToken()", () => {
|
|
11
|
+
it("should return the Api Key", (done) => {
|
|
12
|
+
const session = new ApiKeyManager({
|
|
13
|
+
key: "123456"
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
Promise.all([
|
|
17
|
+
session.getToken("https://www.arcgis.com/sharing/rest/portals/self"),
|
|
18
|
+
session.getToken(
|
|
19
|
+
"https://services1.arcgis.com/MOCK_ORG/arcgis/rest/services/Private_Service/FeatureServer"
|
|
20
|
+
)
|
|
21
|
+
])
|
|
22
|
+
.then(([token1, token2]) => {
|
|
23
|
+
expect(token1).toBe("123456");
|
|
24
|
+
expect(token2).toBe("123456");
|
|
25
|
+
done();
|
|
26
|
+
})
|
|
27
|
+
.catch((e) => {
|
|
28
|
+
fail(e);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
describe(".fromKey()", () => {
|
|
34
|
+
it("should create a new ApiKeyManager", (done) => {
|
|
35
|
+
const session = ApiKeyManager.fromKey("123456");
|
|
36
|
+
|
|
37
|
+
Promise.all([
|
|
38
|
+
session.getToken("https://www.arcgis.com/sharing/rest/portals/self"),
|
|
39
|
+
session.getToken(
|
|
40
|
+
"https://services1.arcgis.com/MOCK_ORG/arcgis/rest/services/Private_Service/FeatureServer"
|
|
41
|
+
)
|
|
42
|
+
])
|
|
43
|
+
.then(([token1, token2]) => {
|
|
44
|
+
expect(token1).toBe("123456");
|
|
45
|
+
expect(token2).toBe("123456");
|
|
46
|
+
done();
|
|
47
|
+
})
|
|
48
|
+
.catch((e) => {
|
|
49
|
+
fail(e);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|