sintfacilis 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.env.example +2 -0
- package/.eslintrc.js +20 -0
- package/.github/workflows/deploy-docs.yml +27 -0
- package/.github/workflows/pre-release-tests.yml +45 -0
- package/.github/workflows/pull-request-tests.yml +45 -0
- package/.prettierignore +2 -0
- package/.prettierrc +19 -0
- package/.vscode/launch.json +24 -0
- package/.vscode/settings.json +3 -0
- package/codecov.yml +7 -0
- package/demos/.eslintrc.js +13 -0
- package/demos/ago-node-cli/README.md +29 -0
- package/demos/ago-node-cli/ago.js +33 -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 +35 -0
- package/demos/ago-node-cli/package-lock.json +430 -0
- package/demos/ago-node-cli/package.json +30 -0
- package/demos/attachments/README.md +5 -0
- package/demos/attachments/index.html +165 -0
- package/demos/attachments/package-lock.json +543 -0
- package/demos/attachments/package.json +18 -0
- package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
- package/demos/batch-geocoder-node/README.md +15 -0
- package/demos/batch-geocoder-node/batch-geocode.js +115 -0
- package/demos/batch-geocoder-node/config-template.js +18 -0
- package/demos/batch-geocoder-node/package-lock.json +336 -0
- package/demos/batch-geocoder-node/package.json +37 -0
- package/demos/express/README.md +15 -0
- package/demos/express/config.json.template +3 -0
- package/demos/express/package-lock.json +1008 -0
- package/demos/express/package.json +18 -0
- package/demos/express/server.js +33 -0
- package/demos/feature-service-browser/README.md +6 -0
- package/demos/feature-service-browser/index.html +122 -0
- package/demos/feature-service-browser/package-lock.json +543 -0
- package/demos/feature-service-browser/package.json +18 -0
- package/demos/geocoder-browser/README.md +10 -0
- package/demos/geocoder-browser/config.js.template +1 -0
- package/demos/geocoder-browser/index.html +131 -0
- package/demos/geocoder-browser/package-lock.json +610 -0
- package/demos/geocoder-browser/package.json +19 -0
- package/demos/geocoder-browser/post-sign-in.html +25 -0
- package/demos/jsapi-integration/README.md +25 -0
- package/demos/jsapi-integration/config.js +6 -0
- package/demos/jsapi-integration/index.html +93 -0
- package/demos/jsapi-integration/package-lock.json +247 -0
- package/demos/jsapi-integration/package.json +19 -0
- package/demos/node-cli-item-management/README.md +10 -0
- package/demos/node-cli-item-management/index.js +238 -0
- package/demos/node-cli-item-management/package-lock.json +432 -0
- package/demos/node-cli-item-management/package.json +27 -0
- package/demos/node-cli-item-management/screenshot.png +0 -0
- package/demos/oauth2-browser/README.md +14 -0
- package/demos/oauth2-browser/authenticate.html +30 -0
- package/demos/oauth2-browser/config.js.template +6 -0
- package/demos/oauth2-browser/index.html +211 -0
- package/demos/oauth2-browser/logo.svg +4 -0
- package/demos/oauth2-browser/package-lock.json +474 -0
- package/demos/oauth2-browser/package.json +18 -0
- package/demos/oauth2-browser/style.css +36 -0
- package/demos/oauth2-browser-retry/README.md +25 -0
- package/demos/oauth2-browser-retry/authenticate.html +22 -0
- package/demos/oauth2-browser-retry/index.html +116 -0
- package/demos/oauth2-browser-retry/logo.svg +4 -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-lock.json +227 -0
- package/demos/stream-response-to-file/package.json +33 -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-lock.json +5646 -0
- package/demos/tree-shaking-rollup/package.json +25 -0
- package/demos/tree-shaking-rollup/rollup.config.js +17 -0
- package/demos/tree-shaking-rollup/src/index.js +8 -0
- package/demos/tree-shaking-webpack/README.md +8 -0
- package/demos/tree-shaking-webpack/index.html +11 -0
- package/demos/tree-shaking-webpack/package-lock.json +11455 -0
- package/demos/tree-shaking-webpack/package.json +24 -0
- package/demos/tree-shaking-webpack/src/index.js +10 -0
- package/demos/tree-shaking-webpack/webpack.config.js +27 -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-lock.json +28044 -0
- package/demos/vue/package.json +33 -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 +305 -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 +123 -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-lock.json +9622 -0
- package/demos/webmap-checker-sapper/package.json +50 -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 +101 -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 +53 -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 +104 -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/docs/src/srihashes.json +12 -0
- package/jasmine.json +7 -0
- package/jasmine.live.json +7 -0
- package/karma.conf.js +107 -0
- package/lerna.json +8 -0
- package/notes/README.md +68 -0
- package/package.json +141 -0
- package/packages/arcgis-rest-auth/README.md +71 -0
- package/packages/arcgis-rest-auth/package.json +69 -0
- package/packages/arcgis-rest-auth/post-message-auth-spec.md +70 -0
- package/packages/arcgis-rest-auth/src/ApiKey.ts +41 -0
- package/packages/arcgis-rest-auth/src/ApplicationSession.ts +122 -0
- package/packages/arcgis-rest-auth/src/UserSession.ts +1355 -0
- package/packages/arcgis-rest-auth/src/app-tokens.ts +131 -0
- package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
- package/packages/arcgis-rest-auth/src/federation-utils.ts +85 -0
- package/packages/arcgis-rest-auth/src/fetch-token.ts +50 -0
- package/packages/arcgis-rest-auth/src/generate-token.ts +35 -0
- package/packages/arcgis-rest-auth/src/index.ts +13 -0
- package/packages/arcgis-rest-auth/src/validate-app-access.ts +68 -0
- package/packages/arcgis-rest-auth/test/ApiKey.test.ts +35 -0
- package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
- package/packages/arcgis-rest-auth/test/UserSession.test.ts +2377 -0
- package/packages/arcgis-rest-auth/test/app-tokens.test.ts +95 -0
- package/packages/arcgis-rest-auth/test/federation-utils.test.ts +323 -0
- package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
- package/packages/arcgis-rest-auth/test/generateToken.test.ts +102 -0
- package/packages/arcgis-rest-auth/test/utils.ts +14 -0
- package/packages/arcgis-rest-auth/test/validate-app-access.test.ts +46 -0
- package/packages/arcgis-rest-auth/tsconfig.json +6 -0
- package/packages/arcgis-rest-demographics/README.md +75 -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 +166 -0
- package/packages/arcgis-rest-demographics/src/getAvailableGeographyLevels.ts +88 -0
- package/packages/arcgis-rest-demographics/src/getGeography.ts +152 -0
- package/packages/arcgis-rest-demographics/src/helpers.ts +28 -0
- package/packages/arcgis-rest-demographics/src/index.ts +8 -0
- package/packages/arcgis-rest-demographics/src/queryDemographicData.ts +106 -0
- package/packages/arcgis-rest-demographics/test/getAvailableCountries.test.ts +92 -0
- package/packages/arcgis-rest-demographics/test/getAvailableDataCollections.test.ts +115 -0
- package/packages/arcgis-rest-demographics/test/getAvailableGeographyLevels.test.ts +72 -0
- package/packages/arcgis-rest-demographics/test/getGeography.test.ts +141 -0
- package/packages/arcgis-rest-demographics/test/mocks/responses.ts +4 -0
- package/packages/arcgis-rest-demographics/test/queryDemographicData.test.live.ts +42 -0
- package/packages/arcgis-rest-demographics/test/queryDemographicData.test.ts +113 -0
- package/packages/arcgis-rest-demographics/tsconfig.json +6 -0
- package/packages/arcgis-rest-feature-layer/README.md +77 -0
- package/packages/arcgis-rest-feature-layer/package.json +64 -0
- package/packages/arcgis-rest-feature-layer/src/add.ts +56 -0
- package/packages/arcgis-rest-feature-layer/src/addAttachment.ts +53 -0
- package/packages/arcgis-rest-feature-layer/src/applyEdits.ts +95 -0
- package/packages/arcgis-rest-feature-layer/src/decodeValues.ts +122 -0
- package/packages/arcgis-rest-feature-layer/src/delete.ts +61 -0
- package/packages/arcgis-rest-feature-layer/src/deleteAttachments.ts +52 -0
- package/packages/arcgis-rest-feature-layer/src/getAllLayersAndTables.ts +30 -0
- package/packages/arcgis-rest-feature-layer/src/getAttachments.ts +55 -0
- package/packages/arcgis-rest-feature-layer/src/getLayer.ts +24 -0
- package/packages/arcgis-rest-feature-layer/src/getService.ts +26 -0
- package/packages/arcgis-rest-feature-layer/src/helpers.ts +97 -0
- package/packages/arcgis-rest-feature-layer/src/index.ts +32 -0
- package/packages/arcgis-rest-feature-layer/src/query.ts +204 -0
- package/packages/arcgis-rest-feature-layer/src/queryRelated.ts +89 -0
- package/packages/arcgis-rest-feature-layer/src/update.ts +60 -0
- package/packages/arcgis-rest-feature-layer/src/updateAttachment.ts +59 -0
- package/packages/arcgis-rest-feature-layer/test/attachments.test.ts +200 -0
- package/packages/arcgis-rest-feature-layer/test/crud.test.ts +197 -0
- package/packages/arcgis-rest-feature-layer/test/decodeValues.test.ts +67 -0
- package/packages/arcgis-rest-feature-layer/test/getAllLayersAndTables.test.ts +28 -0
- package/packages/arcgis-rest-feature-layer/test/getLayer.test.ts +31 -0
- package/packages/arcgis-rest-feature-layer/test/getService.test.ts +31 -0
- package/packages/arcgis-rest-feature-layer/test/helpers.test.ts +25 -0
- package/packages/arcgis-rest-feature-layer/test/mocks/allLayersAndTablesResponse.ts +906 -0
- package/packages/arcgis-rest-feature-layer/test/mocks/cvdQueryResponse.ts +225 -0
- package/packages/arcgis-rest-feature-layer/test/mocks/feature.ts +302 -0
- package/packages/arcgis-rest-feature-layer/test/mocks/fields.ts +779 -0
- package/packages/arcgis-rest-feature-layer/test/mocks/foo.txt +1 -0
- package/packages/arcgis-rest-feature-layer/test/mocks/service.ts +398 -0
- package/packages/arcgis-rest-feature-layer/test/query.test.ts +167 -0
- package/packages/arcgis-rest-feature-layer/tsconfig.json +6 -0
- package/packages/arcgis-rest-geocoding/README.md +86 -0
- package/packages/arcgis-rest-geocoding/package.json +66 -0
- package/packages/arcgis-rest-geocoding/src/bulk.ts +104 -0
- package/packages/arcgis-rest-geocoding/src/geocode.ts +166 -0
- package/packages/arcgis-rest-geocoding/src/helpers.ts +56 -0
- package/packages/arcgis-rest-geocoding/src/index.ts +15 -0
- package/packages/arcgis-rest-geocoding/src/reverse.ts +84 -0
- package/packages/arcgis-rest-geocoding/src/suggest.ts +45 -0
- package/packages/arcgis-rest-geocoding/test/bulk.test.ts +194 -0
- package/packages/arcgis-rest-geocoding/test/geocode.test.ts +253 -0
- package/packages/arcgis-rest-geocoding/test/helpers.test.ts +85 -0
- package/packages/arcgis-rest-geocoding/test/mocks/responses.ts +591 -0
- package/packages/arcgis-rest-geocoding/test/reverse.test.ts +126 -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/README.md +73 -0
- package/packages/arcgis-rest-portal/package.json +64 -0
- package/packages/arcgis-rest-portal/src/groups/add-users.ts +140 -0
- package/packages/arcgis-rest-portal/src/groups/create.ts +43 -0
- package/packages/arcgis-rest-portal/src/groups/get.ts +184 -0
- package/packages/arcgis-rest-portal/src/groups/helpers.ts +14 -0
- package/packages/arcgis-rest-portal/src/groups/invite-users.ts +127 -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 +76 -0
- package/packages/arcgis-rest-portal/src/groups/remove.ts +32 -0
- package/packages/arcgis-rest-portal/src/groups/search.ts +47 -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/index.ts +69 -0
- package/packages/arcgis-rest-portal/src/items/add.ts +138 -0
- package/packages/arcgis-rest-portal/src/items/content.ts +67 -0
- package/packages/arcgis-rest-portal/src/items/create.ts +150 -0
- package/packages/arcgis-rest-portal/src/items/export.ts +80 -0
- package/packages/arcgis-rest-portal/src/items/get.ts +437 -0
- package/packages/arcgis-rest-portal/src/items/helpers.ts +292 -0
- package/packages/arcgis-rest-portal/src/items/protect.ts +41 -0
- package/packages/arcgis-rest-portal/src/items/reassign.ts +61 -0
- package/packages/arcgis-rest-portal/src/items/remove.ts +141 -0
- package/packages/arcgis-rest-portal/src/items/search.ts +25 -0
- package/packages/arcgis-rest-portal/src/items/update.ts +185 -0
- package/packages/arcgis-rest-portal/src/items/upload.ts +125 -0
- package/packages/arcgis-rest-portal/src/orgs/notification.ts +131 -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 +30 -0
- package/packages/arcgis-rest-portal/src/sharing/access.ts +84 -0
- package/packages/arcgis-rest-portal/src/sharing/helpers.ts +81 -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 +336 -0
- package/packages/arcgis-rest-portal/src/sharing/unshare-item-with-group.ts +105 -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 +58 -0
- package/packages/arcgis-rest-portal/src/users/invitation.ts +156 -0
- package/packages/arcgis-rest-portal/src/users/notification.ts +68 -0
- package/packages/arcgis-rest-portal/src/users/search-users.ts +37 -0
- package/packages/arcgis-rest-portal/src/users/update.ts +66 -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 +99 -0
- package/packages/arcgis-rest-portal/src/util/get-portal-settings.ts +45 -0
- package/packages/arcgis-rest-portal/src/util/get-portal-url.ts +28 -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 +42 -0
- package/packages/arcgis-rest-portal/test/groups/add-users.test.ts +239 -0
- package/packages/arcgis-rest-portal/test/groups/crud.test.ts +180 -0
- package/packages/arcgis-rest-portal/test/groups/get.test.ts +176 -0
- package/packages/arcgis-rest-portal/test/groups/invite-users.test.ts +146 -0
- package/packages/arcgis-rest-portal/test/groups/join.test.ts +72 -0
- package/packages/arcgis-rest-portal/test/groups/notification.test.ts +112 -0
- package/packages/arcgis-rest-portal/test/groups/protect.test.ts +72 -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 +62 -0
- package/packages/arcgis-rest-portal/test/items/add.test.ts +323 -0
- package/packages/arcgis-rest-portal/test/items/content.test.ts +156 -0
- package/packages/arcgis-rest-portal/test/items/create.test.ts +400 -0
- package/packages/arcgis-rest-portal/test/items/export.test.ts +122 -0
- package/packages/arcgis-rest-portal/test/items/get.test.ts +583 -0
- package/packages/arcgis-rest-portal/test/items/helpers.test.ts +60 -0
- package/packages/arcgis-rest-portal/test/items/protect.test.ts +122 -0
- package/packages/arcgis-rest-portal/test/items/reassign.test.ts +131 -0
- package/packages/arcgis-rest-portal/test/items/remove.test.ts +261 -0
- package/packages/arcgis-rest-portal/test/items/search.test.ts +275 -0
- package/packages/arcgis-rest-portal/test/items/update.test.ts +556 -0
- package/packages/arcgis-rest-portal/test/items/upload.test.ts +282 -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 +144 -0
- package/packages/arcgis-rest-portal/test/services/get-unique-service-name.test.ts +59 -0
- package/packages/arcgis-rest-portal/test/services/is-service-name-available.test.ts +46 -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 +127 -0
- package/packages/arcgis-rest-portal/test/users/notification.test.ts +77 -0
- package/packages/arcgis-rest-portal/test/users/search.test.ts +42 -0
- package/packages/arcgis-rest-portal/test/users/update.test.ts +151 -0
- package/packages/arcgis-rest-portal/test/util/SearchQueryBuilder.test.ts +340 -0
- package/packages/arcgis-rest-portal/test/util/array.test.ts +30 -0
- package/packages/arcgis-rest-portal/test/util/get-portal-settings.test.ts +68 -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 +148 -0
- package/packages/arcgis-rest-portal/test/util/scrub-control-chars.test.ts +22 -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 +60 -0
- package/packages/arcgis-rest-request/src/index.ts +25 -0
- package/packages/arcgis-rest-request/src/request.ts +433 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -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 +54 -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 +49 -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 +38 -0
- package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +35 -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/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 +621 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +191 -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 +133 -0
- package/packages/arcgis-rest-request/test/utils/encode-query-string.test.ts +18 -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 +133 -0
- package/packages/arcgis-rest-request/tsconfig.json +4 -0
- package/packages/arcgis-rest-routing/README.md +75 -0
- package/packages/arcgis-rest-routing/package.json +65 -0
- package/packages/arcgis-rest-routing/src/closestFacility.ts +225 -0
- package/packages/arcgis-rest-routing/src/helpers.ts +104 -0
- package/packages/arcgis-rest-routing/src/index.ts +14 -0
- package/packages/arcgis-rest-routing/src/originDestinationMatrix.ts +223 -0
- package/packages/arcgis-rest-routing/src/serviceArea.ts +173 -0
- package/packages/arcgis-rest-routing/src/solveRoute.ts +180 -0
- package/packages/arcgis-rest-routing/test/closestFacility.test.ts +683 -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 +677 -0
- package/packages/arcgis-rest-routing/tsconfig.json +6 -0
- package/packages/arcgis-rest-service-admin/README.md +73 -0
- package/packages/arcgis-rest-service-admin/package.json +65 -0
- package/packages/arcgis-rest-service-admin/src/addTo.ts +70 -0
- package/packages/arcgis-rest-service-admin/src/create.ts +189 -0
- package/packages/arcgis-rest-service-admin/src/get-service-admin-info.ts +34 -0
- package/packages/arcgis-rest-service-admin/src/get-view-sources.ts +20 -0
- package/packages/arcgis-rest-service-admin/src/index.ts +14 -0
- package/packages/arcgis-rest-service-admin/src/update.ts +50 -0
- package/packages/arcgis-rest-service-admin/test/addTo.test.ts +350 -0
- package/packages/arcgis-rest-service-admin/test/create.test.ts +294 -0
- package/packages/arcgis-rest-service-admin/test/get-service-admin-info.test.ts +37 -0
- package/packages/arcgis-rest-service-admin/test/get-view-sources.test.ts +40 -0
- package/packages/arcgis-rest-service-admin/test/mocks/layerDefinition.ts +79 -0
- package/packages/arcgis-rest-service-admin/test/mocks/service.ts +81 -0
- package/packages/arcgis-rest-service-admin/test/update.test.ts +115 -0
- package/packages/arcgis-rest-service-admin/tsconfig.json +5 -0
- package/packages/arcgis-rest-types/README.md +66 -0
- package/packages/arcgis-rest-types/package.json +54 -0
- package/packages/arcgis-rest-types/src/feature.ts +42 -0
- package/packages/arcgis-rest-types/src/geometry.ts +272 -0
- package/packages/arcgis-rest-types/src/group.ts +72 -0
- package/packages/arcgis-rest-types/src/index.ts +9 -0
- package/packages/arcgis-rest-types/src/item.ts +81 -0
- package/packages/arcgis-rest-types/src/service.ts +156 -0
- package/packages/arcgis-rest-types/src/statisticDefinition.ts +33 -0
- package/packages/arcgis-rest-types/src/symbol.ts +170 -0
- package/packages/arcgis-rest-types/src/user.ts +49 -0
- package/packages/arcgis-rest-types/src/webmap.ts +1405 -0
- package/packages/arcgis-rest-types/tsconfig.json +10 -0
- package/support/changelog.js +393 -0
- package/support/deploy-doc-site.js +16 -0
- package/support/dev.sh +6 -0
- package/support/publish.sh +47 -0
- package/support/test-helpers.js +9 -0
- package/tsconfig.json +63 -0
- package/umd-base-profile.js +81 -0
- package/umd-production-profile.js +13 -0
package/notes/README.md
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# Testing
|
2
|
+
|
3
|
+
* Use `npm test` as normal to run all tests.
|
4
|
+
* `npm test` will run `lerna run test` which will in turn will execute `npm test` in each package if it exists with the root of the package as the `process.cwd()`
|
5
|
+
* Browser based tests are setup to run with Karma as a test runner as Jasmine as the testing framework. There is a common config that all packages can use in the root folder called `karma.conf.js`.
|
6
|
+
* Node tests use the `jasmine` CLI tool. Each package will require a `jasmine.json` to tell jasmine where the test files are for that package. The `jasmine.json` should register the `support/register-tsnode.js` helper so TypeScript files are compiled before the tests execute.
|
7
|
+
* Currently the Node tests take quite awhile. I think this is becuase the `ignore` param isn't being respected and thus the entirety of `node_modules` get processed by TypeScript. This needs to happen in order to make `lodash-es` work.
|
8
|
+
|
9
|
+
# Build
|
10
|
+
|
11
|
+
The build system currently builds for 3 seperate targets:
|
12
|
+
|
13
|
+
* Common JS bundle for Node.js
|
14
|
+
* A UMD bundle for CommonJS, AMD and a global variable for browsers
|
15
|
+
* ES5 files in the ES2015 module syntax for use with Rollup and Webpack 2.
|
16
|
+
|
17
|
+
Like with tests running `npm run build` will run `lerna run build` which will run `npm run build` in each package. Currently `npm run build:node` and `npm run build:umd` both use the shared rollup configurations in `rollup.config.*.js`. `npm run build:esm` uses a `tsconfig.json` file in the root of hte repo that extends the base `tsconfig.json` file. This `tsconfig.json` tells the Typescript compiler where to out the output files and generated `.d.ts` type declarations.
|
18
|
+
|
19
|
+
These 4 outputs (2, rollup builds, ES2015 modules and type declarations) are referenced by their respective fields in `package.json`:
|
20
|
+
|
21
|
+
```js
|
22
|
+
{
|
23
|
+
// ...
|
24
|
+
|
25
|
+
"main": "dist/node/bundle.cjs.js",
|
26
|
+
"browser": "dist/browser/bundle.umd.js",
|
27
|
+
"module": "dist/esm/index.js",
|
28
|
+
"js:next": "dist/esm/index.js",
|
29
|
+
"types": "dist/types/index.d.ts",
|
30
|
+
|
31
|
+
// ...
|
32
|
+
}
|
33
|
+
```
|
34
|
+
|
35
|
+
Currently we are bundling Node in order to use `lodash-es` as a utility library which needs to be bundled in.
|
36
|
+
|
37
|
+
The ES2015 build also has the references to `form-data` and `url-search-params` removed. Rollup handles ignoring these in the UMD and CJS builds but TypeScript is not a bundler so these needed to be removed some other way. If we run into issues with sourcemaps this replacement process might need to be replaced by a custom script with [`magic-string`](https://github.com/Rich-Harris/magic-string).
|
38
|
+
|
39
|
+
# Support files
|
40
|
+
|
41
|
+
There are several general support files needed for various operations of the Typescript compiler to prevent errors:
|
42
|
+
|
43
|
+
* `support/json.d.ts` - make the typescript compiler happy when you `import` JSON files `import * as sharingRestInfo from './mocks/sharing-rest-info.json';`
|
44
|
+
* `support/lodash-es.d.ts` - currently `@types/lodash-es` has issues https://github.com/DefinitelyTyped/DefinitelyTyped/issues/15227 so this is an alternate typings file
|
45
|
+
* `register-tsnode.js` - enables on-the-fly compilation of Typescript in Node.js, used by the Jasmine tests
|
46
|
+
* `url-search-params.d.ts` - typings for the `url-search-params` module which is used to emulate `URLSearchParams` in Node.js
|
47
|
+
|
48
|
+
# Doc system
|
49
|
+
|
50
|
+
[Typedoc](https://github.com/TypeStrong/typedoc) leaves much to be desired figuring out how TypeDoc is organizing the source files is next to impossible and there is almost no doc. It does appear to be usable since project like Dojo 2 and Maquette use it however figuring out how to generate the docs in a struture that looks good is pretty beyond me after looking at it for a few hours.
|
51
|
+
|
52
|
+
A potentially better option might be to just use JSDoc and work from the compiled ES2015 source. I will look into this later.
|
53
|
+
|
54
|
+
# Release system
|
55
|
+
|
56
|
+
This has moved to [RELEASE.md](../RELEASE.md).
|
57
|
+
|
58
|
+
# Potential improvements
|
59
|
+
|
60
|
+
* Finding a decent alternative to `lodash/defaults` without broken typings would be ideal. This forces all kinds of weirdness on us.
|
61
|
+
* Figure out why the Node tests take so long (might be becuase of hacks needed for `lodash-es`) `lerna run test:node`
|
62
|
+
* Since we are importing `lodash-es` we need to use `karma-typescript-es6-transform` to transform the ES2015 module syntax into CommonJS. We should look into if this is necessary at all (i.e. replace `lodash-es`) or think about replacing it with https://github.com/jlmakes/karma-rollup-preprocessor.
|
63
|
+
|
64
|
+
# Thoughts
|
65
|
+
|
66
|
+
Basic utility libraries are going to be a problem. Most recommendation are to use something like `import defaults = require('lodash/defaults')` because you are importing a common JS module. However if you use this syntax you cannot have Typescript compile ES2015 modules which is goal for us. Not every library publishes itself as ES2015 modules.
|
67
|
+
|
68
|
+
We need to make a call on what we bundle into the library (`Promise`, `fetch`) ect... Do we ask people to bring their own polyfills or do we bundle them ourselves for simplicity. If we want to do both it will likely complicate the builds a great deal.
|
package/package.json
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
{
|
2
|
+
"name": "sintfacilis",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"description": "Compact, modular JavaScript wrappers for the ArcGIS REST API that run in Node.js and modern browsers.",
|
5
|
+
"license": "Apache-2.0",
|
6
|
+
"type": "module",
|
7
|
+
"engines": {
|
8
|
+
"npm": ">=7.0.0",
|
9
|
+
"node": ">=12.20.0"
|
10
|
+
},
|
11
|
+
"eslintIgnore": [
|
12
|
+
"packages/**/test",
|
13
|
+
"packages/**/dist"
|
14
|
+
],
|
15
|
+
"lint-staged": {
|
16
|
+
"**/*/package.json": [
|
17
|
+
"prettier-package-json --write",
|
18
|
+
"git add"
|
19
|
+
],
|
20
|
+
"*.ts": [
|
21
|
+
"prettier --write --parser typescript --tab-width 2 --use-tabs false",
|
22
|
+
"eslint",
|
23
|
+
"git add"
|
24
|
+
]
|
25
|
+
},
|
26
|
+
"husky": {
|
27
|
+
"hooks": {
|
28
|
+
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
|
29
|
+
"pre-commit": "npm run precommit"
|
30
|
+
}
|
31
|
+
},
|
32
|
+
"devDependencies": {
|
33
|
+
"@commitlint/cli": "^11.0.0",
|
34
|
+
"@commitlint/config-conventional": "^11.0.0",
|
35
|
+
"@commitlint/config-lerna-scopes": "^11.0.0",
|
36
|
+
"@commitlint/prompt": "^11.0.0",
|
37
|
+
"@rollup/plugin-node-resolve": "^13.0.4",
|
38
|
+
"@semantic-release/changelog": "^6.0.1",
|
39
|
+
"@semantic-release/git": "^10.0.1",
|
40
|
+
"@semantic-release/npm": "^8.0.0",
|
41
|
+
"@skypack/package-check": "^0.2.2",
|
42
|
+
"@types/fetch-mock": "^6.0.6",
|
43
|
+
"@types/jasmine": "^2.8.2",
|
44
|
+
"@types/node": "^12.20.4",
|
45
|
+
"@typescript-eslint/eslint-plugin": "^4.4.0",
|
46
|
+
"@typescript-eslint/parser": "^4.31.0",
|
47
|
+
"acetate": "^2.0.8",
|
48
|
+
"acetate-cli": "^1.0.1",
|
49
|
+
"browser-sync": "^2.27.5",
|
50
|
+
"cheerio": "^1.0.0-rc.3",
|
51
|
+
"concurrently": "^3.5.1",
|
52
|
+
"cpx": "^1.5.0",
|
53
|
+
"cross-spawn": "^5.1.0",
|
54
|
+
"date-fns": "^1.29.0",
|
55
|
+
"dotenv": "^8.2.0",
|
56
|
+
"eslint": "^7.11.0",
|
57
|
+
"eslint-config-prettier": "^6.12.0",
|
58
|
+
"eslint-import-resolver-typescript": "^2.4.0",
|
59
|
+
"eslint-plugin-import": "^2.24.2",
|
60
|
+
"fetch-mock": "^5.13.1",
|
61
|
+
"gh-pages": "^1.1.0",
|
62
|
+
"gh-release": "^3.4.0",
|
63
|
+
"glob": "^7.1.7",
|
64
|
+
"globby": "^12.0.2",
|
65
|
+
"husky": "^4.3.0",
|
66
|
+
"jasmine": "^3.9.0",
|
67
|
+
"jasmine-core": "^3.9.0",
|
68
|
+
"karma": "^5.2.2",
|
69
|
+
"karma-chrome-launcher": "^3.1.0",
|
70
|
+
"karma-firefox-launcher": "^2.1.1",
|
71
|
+
"karma-jasmine": "^4.0.1",
|
72
|
+
"karma-jasmine-diff-reporter": "^2.0.0",
|
73
|
+
"karma-safari-launcher": "^1.0.0",
|
74
|
+
"karma-typescript": "^5.5.0",
|
75
|
+
"karma-typescript-es6-transform": "^5.5.0",
|
76
|
+
"lint-staged": "^4.3.0",
|
77
|
+
"minimatch": "^3.0.4",
|
78
|
+
"multi-semantic-release": "^2.11.0",
|
79
|
+
"npm-run-all": "^4.1.5",
|
80
|
+
"onchange": "^3.3.0",
|
81
|
+
"prettier": "^2.3.1",
|
82
|
+
"prettier-package-json": "^2.6.0",
|
83
|
+
"resolve": "^1.5.0",
|
84
|
+
"rimraf": "^2.6.2",
|
85
|
+
"rollup": "^2.56.3",
|
86
|
+
"rollup-plugin-filesize": "^9.0.2",
|
87
|
+
"rollup-plugin-terser": "^7.0.2",
|
88
|
+
"rollup-plugin-typescript": "^1.0.1",
|
89
|
+
"sass": "^1.41.0",
|
90
|
+
"shelljs": "^0.7.8",
|
91
|
+
"slug": "^0.9.1",
|
92
|
+
"sri-toolbox": "0.2.0",
|
93
|
+
"trash-cli": "^4.0.0",
|
94
|
+
"ts-node": "^10.3.1",
|
95
|
+
"typedoc": "^0.21.0",
|
96
|
+
"typescript": "^4.0.0",
|
97
|
+
"ultra-runner": "^3.10.5"
|
98
|
+
},
|
99
|
+
"repository": {
|
100
|
+
"type": "git",
|
101
|
+
"url": "https://github.com/EribertoLang/sintfacilis.git"
|
102
|
+
},
|
103
|
+
"workspaces": [
|
104
|
+
"packages/arcgis-rest-request",
|
105
|
+
"packages/arcgis-rest-auth",
|
106
|
+
"packages/arcgis-rest-demographics",
|
107
|
+
"packages/arcgis-rest-feature-service",
|
108
|
+
"packages/arcgis-rest-geocoding",
|
109
|
+
"packages/arcgis-rest-portal",
|
110
|
+
"packages/arcgis-rest-routing",
|
111
|
+
"packages/arcgis-rest-fetch",
|
112
|
+
"packages/arcgis-rest-form-data",
|
113
|
+
"./demos/*"
|
114
|
+
],
|
115
|
+
"volta": {
|
116
|
+
"node": "16.13.0",
|
117
|
+
"npm": "8.1.2"
|
118
|
+
},
|
119
|
+
"release": {
|
120
|
+
"branches": [
|
121
|
+
"master",
|
122
|
+
{
|
123
|
+
"name": "beta",
|
124
|
+
"prerelease": true
|
125
|
+
}
|
126
|
+
],
|
127
|
+
"tagFormat": "${name}@${version}",
|
128
|
+
"plugins": [
|
129
|
+
"@semantic-release/commit-analyzer",
|
130
|
+
"@semantic-release/release-notes-generator",
|
131
|
+
"@semantic-release/changelog",
|
132
|
+
"@semantic-release/npm",
|
133
|
+
"@semantic-release/git"
|
134
|
+
]
|
135
|
+
},
|
136
|
+
"author": "AlannaDuBuque",
|
137
|
+
"bugs": {
|
138
|
+
"url": "https://github.com/EribertoLang/sintfacilis.git/issues"
|
139
|
+
},
|
140
|
+
"homepage": "https://github.com/EribertoLang/sintfacilis.git"
|
141
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
[![npm version][npm-img]][npm-url]
|
2
|
+
[![build status][travis-img]][travis-url]
|
3
|
+
[![gzip bundle size][gzip-image]][npm-url]
|
4
|
+
[![Coverage Status][coverage-img]][coverage-url]
|
5
|
+
[![apache licensed](https://img.shields.io/badge/license-Apache-green.svg?style=flat-square)](https://raw.githubusercontent.com/Esri/arcgis-rest-js/master/LICENSE)
|
6
|
+
|
7
|
+
[npm-img]: https://img.shields.io/npm/v/@esri/arcgis-rest-auth.svg?style=flat-square
|
8
|
+
[npm-url]: https://www.npmjs.com/package/@esri/arcgis-rest-auth
|
9
|
+
[travis-img]: https://img.shields.io/travis/Esri/arcgis-rest-js/master.svg?style=flat-square
|
10
|
+
[travis-url]: https://travis-ci.org/Esri/arcgis-rest-js
|
11
|
+
[gzip-image]: https://img.badgesize.io/https://unpkg.com/@esri/arcgis-rest-auth/dist/umd/auth.umd.min.js?compression=gzip
|
12
|
+
[coverage-img]: https://codecov.io/gh/Esri/arcgis-rest-js/branch/master/graph/badge.svg
|
13
|
+
[coverage-url]: https://codecov.io/gh/Esri/arcgis-rest-js
|
14
|
+
|
15
|
+
# @esri/arcgis-rest-auth
|
16
|
+
|
17
|
+
> Authentication helpers for [`@esri/arcgis-rest-*`](https://github.com/Esri/arcgis-rest-js).
|
18
|
+
|
19
|
+
### Example
|
20
|
+
|
21
|
+
```bash
|
22
|
+
npm install @esri/arcgis-rest-request
|
23
|
+
npm install @esri/arcgis-rest-auth
|
24
|
+
```
|
25
|
+
|
26
|
+
```js
|
27
|
+
import { UserSession } from '@esri/arcgis-rest-auth';
|
28
|
+
|
29
|
+
const session = new UserSession({
|
30
|
+
username: "casey",
|
31
|
+
password: "123456"
|
32
|
+
});
|
33
|
+
```
|
34
|
+
|
35
|
+
### [API Reference](https://esri.github.io/arcgis-rest-js/api/auth/)
|
36
|
+
|
37
|
+
### Issues
|
38
|
+
|
39
|
+
If something isn't working the way you expected, please take a look at [previously logged issues](https://github.com/Esri/arcgis-rest-js/issues) first. Have you found a new bug? Want to request a new feature? We'd [**love**](https://github.com/Esri/arcgis-rest-js/issues/new) to hear from you.
|
40
|
+
|
41
|
+
If you're looking for help you can also post issues on [GIS Stackexchange](http://gis.stackexchange.com/questions/ask?tags=esri-oss).
|
42
|
+
|
43
|
+
### Versioning
|
44
|
+
|
45
|
+
For transparency into the release cycle and in striving to maintain backward compatibility, @esri/arcgis-rest-js is maintained under Semantic Versioning guidelines and will adhere to these rules whenever possible.
|
46
|
+
|
47
|
+
For more information on SemVer, please visit <http://semver.org/>.
|
48
|
+
|
49
|
+
### Contributing
|
50
|
+
|
51
|
+
Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](CONTRIBUTING.md).
|
52
|
+
|
53
|
+
### [Changelog](https://github.com/Esri/arcgis-rest-js/blob/master/CHANGELOG.md)
|
54
|
+
|
55
|
+
### License
|
56
|
+
|
57
|
+
Copyright © 2017-2019 Esri
|
58
|
+
|
59
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
60
|
+
you may not use this file except in compliance with the License.
|
61
|
+
You may obtain a copy of the License at
|
62
|
+
|
63
|
+
> http://www.apache.org/licenses/LICENSE-2.0
|
64
|
+
|
65
|
+
Unless required by applicable law or agreed to in writing, software
|
66
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
67
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
68
|
+
See the License for the specific language governing permissions and
|
69
|
+
limitations under the License.
|
70
|
+
|
71
|
+
A copy of the license is available in the repository's [LICENSE](../../LICENSE) file.
|
@@ -0,0 +1,69 @@
|
|
1
|
+
{
|
2
|
+
"name": "@esri/arcgis-rest-auth",
|
3
|
+
"version": "3.3.0",
|
4
|
+
"description": "Authentication helpers for @esri/arcgis-rest-js.",
|
5
|
+
"main": "dist/node/index.js",
|
6
|
+
"unpkg": "dist/umd/auth.umd.js",
|
7
|
+
"module": "dist/esm/index.js",
|
8
|
+
"js:next": "dist/esm/index.js",
|
9
|
+
"sideEffects": false,
|
10
|
+
"types": "dist/esm/index.d.ts",
|
11
|
+
"license": "Apache-2.0",
|
12
|
+
"files": [
|
13
|
+
"dist/**"
|
14
|
+
],
|
15
|
+
"dependencies": {
|
16
|
+
"@esri/arcgis-rest-types": "^3.3.0",
|
17
|
+
"tslib": "^1.13.0"
|
18
|
+
},
|
19
|
+
"devDependencies": {
|
20
|
+
"@esri/arcgis-rest-request": "^3.3.0"
|
21
|
+
},
|
22
|
+
"peerDependencies": {
|
23
|
+
"@esri/arcgis-rest-request": "^3.0.0"
|
24
|
+
},
|
25
|
+
"scripts": {
|
26
|
+
"prepare": "npm run build",
|
27
|
+
"prebuild": "rimraf dist",
|
28
|
+
"build": "npm run build:node && npm run build:umd && npm run build:esm",
|
29
|
+
"build:esm": "tsc --module es2015 --outDir ./dist/esm --declaration",
|
30
|
+
"build:umd": "rollup -c ../../umd-base-profile.js && rollup -c ../../umd-production-profile.js",
|
31
|
+
"build:node": "tsc --module commonjs --outDir ./dist/node",
|
32
|
+
"dev:esm": "tsc -w --module es2015 --outDir ./dist/esm --declaration",
|
33
|
+
"dev:umd": "rollup -w -c ../../umd-base-profile.js",
|
34
|
+
"dev:node": "tsc -w --module commonjs --outDir ./dist/node"
|
35
|
+
},
|
36
|
+
"publishConfig": {
|
37
|
+
"access": "public"
|
38
|
+
},
|
39
|
+
"repository": {
|
40
|
+
"type": "git",
|
41
|
+
"url": "git+https://github.com/Esri/arcgis-rest-js.git",
|
42
|
+
"directory": "packages/arcgis-rest-auth"
|
43
|
+
},
|
44
|
+
"contributors": [
|
45
|
+
{
|
46
|
+
"name": "Patrick Arlt",
|
47
|
+
"email": "parlt@esri.com",
|
48
|
+
"url": "http://patrickarlt.com/"
|
49
|
+
}
|
50
|
+
],
|
51
|
+
"bugs": {
|
52
|
+
"url": "https://github.com/Esri/arcgis-rest-js/issues"
|
53
|
+
},
|
54
|
+
"homepage": "https://github.com/Esri/arcgis-rest-js#readme",
|
55
|
+
"keywords": [
|
56
|
+
"typescript",
|
57
|
+
"promise",
|
58
|
+
"fetch",
|
59
|
+
"arcgis",
|
60
|
+
"esri",
|
61
|
+
"ES6"
|
62
|
+
],
|
63
|
+
"esri": {
|
64
|
+
"keyExports": [
|
65
|
+
"UserSession",
|
66
|
+
"ApplicationSession"
|
67
|
+
]
|
68
|
+
}
|
69
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# Post Message Authentication Specification
|
2
|
+
|
3
|
+
The general idea is that the HOST application will only respond when the following conditions are true:
|
4
|
+
|
5
|
+
- the event.origin is a location that the HOST trusts
|
6
|
+
- the message type is `arcgis:auth:requestCredential`
|
7
|
+
|
8
|
+
Under any other conditions, the HOST application will not send any response.
|
9
|
+
|
10
|
+
## Message Types
|
11
|
+
|
12
|
+
Messages send via `postMessage` can be any object, but by convention usually have a `type` property that describes what sort of message it is.
|
13
|
+
|
14
|
+
| Type | Description |
|
15
|
+
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
16
|
+
| `arcgis:auth:requestCredential` | Request credential from host app. Request will be rejected if the `event.origin` is not in the `validOrigins` list |
|
17
|
+
| `arcgis:auth:credential` | Returning the credential in `event.credential` |
|
18
|
+
| `arcgis:auth:error` | Returned if the host declines to send credentials. `event.message` will contain the reason |
|
19
|
+
|
20
|
+
# Message Details
|
21
|
+
|
22
|
+
## `arcgis:auth:requestCredential`
|
23
|
+
|
24
|
+
Sent from an embedded app, to the parent.
|
25
|
+
|
26
|
+
Message Object
|
27
|
+
|
28
|
+
```json
|
29
|
+
{
|
30
|
+
"type": "arcgis:auth:requestCredential"
|
31
|
+
}
|
32
|
+
```
|
33
|
+
|
34
|
+
## `arcgis:auth:credential`
|
35
|
+
|
36
|
+
Send from the host app to the embedded app.
|
37
|
+
|
38
|
+
- Embedded application is responsible for calling `exchangeToken` or `validateAppAccess`
|
39
|
+
|
40
|
+
Message Object
|
41
|
+
|
42
|
+
```json
|
43
|
+
{
|
44
|
+
"type": "arcgis:auth:credential",
|
45
|
+
"credential": {
|
46
|
+
"token": "thetoken",
|
47
|
+
"userId": "jsmith",
|
48
|
+
"server": "https://www.arcgis.com",
|
49
|
+
"ssl": true,
|
50
|
+
"expires": 1599831467093
|
51
|
+
}
|
52
|
+
}
|
53
|
+
```
|
54
|
+
|
55
|
+
## `arcgis:auth:error`
|
56
|
+
|
57
|
+
Sent from an host app, to an embedded app, with an error indicating why.
|
58
|
+
This will only be sent if the HOST app has some issue getting the credential.
|
59
|
+
|
60
|
+
Message Object
|
61
|
+
|
62
|
+
```json
|
63
|
+
{
|
64
|
+
"type": "arcgis:auth:error",
|
65
|
+
"error": {
|
66
|
+
"name": "<error name>",
|
67
|
+
"message": "<reason etc>"
|
68
|
+
}
|
69
|
+
}
|
70
|
+
```
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import {
|
5
|
+
IAuthenticationManager,
|
6
|
+
} from "@esri/arcgis-rest-request";
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Options for the `ApiKey` constructor.
|
10
|
+
*/
|
11
|
+
export interface IApiKeyOptions {
|
12
|
+
key: string;
|
13
|
+
}
|
14
|
+
|
15
|
+
/**
|
16
|
+
* ```js
|
17
|
+
* import { ApiKey } from '@esri/arcgis-rest-auth';
|
18
|
+
* const apiKey = new ApiKey("...");
|
19
|
+
* ```
|
20
|
+
* Used to authenticate with API Keys.
|
21
|
+
*/
|
22
|
+
export class ApiKey implements IAuthenticationManager {
|
23
|
+
|
24
|
+
/**
|
25
|
+
* The current portal the user is authenticated with.
|
26
|
+
*/
|
27
|
+
public readonly portal: string;
|
28
|
+
|
29
|
+
private key: string;
|
30
|
+
|
31
|
+
constructor(options: IApiKeyOptions) {
|
32
|
+
this.key = options.key;
|
33
|
+
}
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Gets a token (the API Key).
|
37
|
+
*/
|
38
|
+
public getToken(url: string) {
|
39
|
+
return Promise.resolve(this.key);
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,122 @@
|
|
1
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import {
|
5
|
+
IAuthenticationManager,
|
6
|
+
ITokenRequestOptions
|
7
|
+
} from "@esri/arcgis-rest-request";
|
8
|
+
import { fetchToken } from "./fetch-token";
|
9
|
+
|
10
|
+
export interface IApplicationSessionOptions {
|
11
|
+
/**
|
12
|
+
* Client ID of your application. Can be obtained by registering an application
|
13
|
+
* on [ArcGIS for Developers](https://developers.arcgis.com/documentation/core-concepts/security-and-authentication/signing-in-arcgis-online-users/#registering-your-application),
|
14
|
+
* [ArcGIS Online](http://doc.arcgis.com/en/arcgis-online/share-maps/add-items.htm#ESRI_SECTION1_0D1B620254F745AE84F394289F8AF44B) or on your instance of ArcGIS Enterprise.
|
15
|
+
*/
|
16
|
+
clientId: string;
|
17
|
+
|
18
|
+
/**
|
19
|
+
* A Client Secret is also obtained by registering an application
|
20
|
+
* on [ArcGIS for Developers](https://developers.arcgis.com/documentation/core-concepts/security-and-authentication/signing-in-arcgis-online-users/#registering-your-application),
|
21
|
+
* [ArcGIS Online](http://doc.arcgis.com/en/arcgis-online/share-maps/add-items.htm#ESRI_SECTION1_0D1B620254F745AE84F394289F8AF44B) or on your instance of ArcGIS Enterprise. Treat it like a password.
|
22
|
+
*/
|
23
|
+
clientSecret: string;
|
24
|
+
|
25
|
+
/**
|
26
|
+
* OAuth 2.0 access token from a previous application session.
|
27
|
+
*/
|
28
|
+
token?: string;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Expiration date for the `token`
|
32
|
+
*/
|
33
|
+
expires?: Date;
|
34
|
+
|
35
|
+
/**
|
36
|
+
* URL of ArcGIS REST base, defaults to "https://www.arcgis.com/sharing/rest"
|
37
|
+
*/
|
38
|
+
portal?: string;
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Duration of requested tokens in minutes. defaults to 7200 (5 days).
|
42
|
+
*/
|
43
|
+
duration?: number;
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* ```js
|
48
|
+
* import { ApplicationSession } from '@esri/arcgis-rest-auth';
|
49
|
+
* const session = new ApplicationSession({
|
50
|
+
* clientId: "abc123",
|
51
|
+
* clientSecret: "sshhhhhh"
|
52
|
+
* })
|
53
|
+
* // visit https://developers.arcgis.com to generate your own clientid and secret
|
54
|
+
* ```
|
55
|
+
* You can use [App Login](/arcgis-rest-js/guides/node/) to access premium content and services in ArcGIS Online.
|
56
|
+
*
|
57
|
+
*/
|
58
|
+
export class ApplicationSession implements IAuthenticationManager {
|
59
|
+
public portal: string;
|
60
|
+
private clientId: string;
|
61
|
+
private clientSecret: string;
|
62
|
+
private token: string;
|
63
|
+
private expires: Date;
|
64
|
+
private duration: number;
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Internal object to keep track of pending token requests. Used to prevent
|
68
|
+
* duplicate token requests.
|
69
|
+
*/
|
70
|
+
private _pendingTokenRequest: Promise<string>;
|
71
|
+
|
72
|
+
constructor(options: IApplicationSessionOptions) {
|
73
|
+
this.clientId = options.clientId;
|
74
|
+
this.clientSecret = options.clientSecret;
|
75
|
+
this.token = options.token;
|
76
|
+
this.expires = options.expires;
|
77
|
+
this.portal = options.portal || "https://www.arcgis.com/sharing/rest";
|
78
|
+
this.duration = options.duration || 7200;
|
79
|
+
}
|
80
|
+
|
81
|
+
// URL is not actually read or passed through.
|
82
|
+
public getToken(
|
83
|
+
url: string,
|
84
|
+
requestOptions?: ITokenRequestOptions
|
85
|
+
): Promise<string> {
|
86
|
+
if (this.token && this.expires && this.expires.getTime() > Date.now()) {
|
87
|
+
return Promise.resolve(this.token);
|
88
|
+
}
|
89
|
+
|
90
|
+
if (this._pendingTokenRequest) {
|
91
|
+
return this._pendingTokenRequest;
|
92
|
+
}
|
93
|
+
|
94
|
+
this._pendingTokenRequest = this.refreshToken(requestOptions);
|
95
|
+
|
96
|
+
return this._pendingTokenRequest;
|
97
|
+
}
|
98
|
+
|
99
|
+
public refreshToken(requestOptions?: ITokenRequestOptions): Promise<string> {
|
100
|
+
const options = {
|
101
|
+
params: {
|
102
|
+
client_id: this.clientId,
|
103
|
+
client_secret: this.clientSecret,
|
104
|
+
grant_type: "client_credentials",
|
105
|
+
expiration: this.duration
|
106
|
+
},
|
107
|
+
...requestOptions
|
108
|
+
};
|
109
|
+
return fetchToken(`${this.portal}/oauth2/token/`, options).then(
|
110
|
+
response => {
|
111
|
+
this._pendingTokenRequest = null;
|
112
|
+
this.token = response.token;
|
113
|
+
this.expires = response.expires;
|
114
|
+
return response.token;
|
115
|
+
}
|
116
|
+
);
|
117
|
+
}
|
118
|
+
|
119
|
+
public refreshSession() {
|
120
|
+
return this.refreshToken().then(() => this);
|
121
|
+
}
|
122
|
+
}
|