impeditmaiores 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/.prettierignore +2 -0
- package/.travis.yml +35 -0
- package/.vscode/launch.json +24 -0
- package/.vscode/settings.json +3 -0
- package/codecov.yml +7 -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 +152 -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 +182 -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 +81 -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 +413 -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 +182 -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 +182 -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 +89 -0
- package/demos/jsapi-integration/package-lock.json +184 -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 +152 -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 +224 -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 +60 -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 +2225 -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 +4614 -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 +11342 -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 +3870 -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/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 +41 -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 +93 -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 +87 -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/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/karma.conf.js +106 -0
- package/lerna.json +8 -0
- package/notes/README.md +68 -0
- package/package.json +87 -0
- package/packages/arcgis-rest-auth/README.md +71 -0
- package/packages/arcgis-rest-auth/package-lock.json +11 -0
- package/packages/arcgis-rest-auth/package.json +69 -0
- package/packages/arcgis-rest-auth/src/ApplicationSession.ts +122 -0
- package/packages/arcgis-rest-auth/src/UserSession.ts +1206 -0
- package/packages/arcgis-rest-auth/src/app-tokens.ts +91 -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 +9 -0
- package/packages/arcgis-rest-auth/src/validate-app-access.ts +68 -0
- package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
- package/packages/arcgis-rest-auth/test/UserSession.test.ts +1807 -0
- package/packages/arcgis-rest-auth/test/app-tokens.test.ts +91 -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-feature-layer/README.md +77 -0
- package/packages/arcgis-rest-feature-layer/package-lock.json +11 -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 +90 -0
- package/packages/arcgis-rest-feature-layer/src/decodeValues.ts +124 -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/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 +79 -0
- package/packages/arcgis-rest-feature-layer/src/index.ts +31 -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 +56 -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 +195 -0
- package/packages/arcgis-rest-feature-layer/test/decodeValues.test.ts +67 -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/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-lock.json +11 -0
- package/packages/arcgis-rest-geocoding/package.json +64 -0
- package/packages/arcgis-rest-geocoding/src/bulk.ts +104 -0
- package/packages/arcgis-rest-geocoding/src/geocode.ts +133 -0
- package/packages/arcgis-rest-geocoding/src/helpers.ts +54 -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 +249 -0
- package/packages/arcgis-rest-geocoding/test/helpers.test.ts +85 -0
- package/packages/arcgis-rest-geocoding/test/mocks/responses.ts +637 -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-lock.json +11 -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 +66 -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 +275 -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 +135 -0
- package/packages/arcgis-rest-portal/src/items/search.ts +25 -0
- package/packages/arcgis-rest-portal/src/items/update.ts +184 -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/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 +319 -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 +374 -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 +27 -0
- package/packages/arcgis-rest-portal/src/util/get-portal.ts +52 -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 +12 -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 +149 -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 +399 -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 +238 -0
- package/packages/arcgis-rest-portal/test/items/search.test.ts +272 -0
- package/packages/arcgis-rest-portal/test/items/update.test.ts +554 -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 +142 -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 +1325 -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-lock.json +11 -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 +413 -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 +21 -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 +49 -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 +108 -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 +571 -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-lock.json +11 -0
- package/packages/arcgis-rest-routing/package.json +63 -0
- package/packages/arcgis-rest-routing/src/helpers.ts +16 -0
- package/packages/arcgis-rest-routing/src/index.ts +11 -0
- package/packages/arcgis-rest-routing/src/solveRoute.ts +124 -0
- package/packages/arcgis-rest-routing/test/mocks/responses.ts +825 -0
- package/packages/arcgis-rest-routing/test/solveRoute.test.ts +509 -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-lock.json +11 -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/index.ts +11 -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/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 +6 -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 +39 -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 +114 -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 +1367 -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/tslint.json +16 -0
- package/umd-base-profile.js +81 -0
- package/umd-production-profile.js +13 -0
@@ -0,0 +1,262 @@
|
|
1
|
+
const path = require("path");
|
2
|
+
const fs = require("fs");
|
3
|
+
const { inspect } = require("util");
|
4
|
+
const _ = require("lodash");
|
5
|
+
|
6
|
+
const IS_DEV = process.env.ENV !== "prod";
|
7
|
+
|
8
|
+
module.exports = function(acetate) {
|
9
|
+
/**
|
10
|
+
* Load SRI hashes.
|
11
|
+
*/
|
12
|
+
let srihashes;
|
13
|
+
fs.readFile("docs/src/srihashes.json", (err, data) => {
|
14
|
+
srihashes = err
|
15
|
+
? {
|
16
|
+
packages: {}
|
17
|
+
}
|
18
|
+
: JSON.parse(data);
|
19
|
+
});
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Load all .html and markdown pages in the `src` folder, assigning them a
|
23
|
+
* default layout.
|
24
|
+
*/
|
25
|
+
acetate.load("**/*.+(html|md)", {
|
26
|
+
basePath: "arcgis-rest-js",
|
27
|
+
metadata: {
|
28
|
+
layout: "_layout:main"
|
29
|
+
}
|
30
|
+
});
|
31
|
+
|
32
|
+
acetate.metadata("**/*", {
|
33
|
+
isDev: IS_DEV
|
34
|
+
});
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Add a different layout for guides. Add an array of `titleSegments` to go
|
38
|
+
* inbetween the page title and the "Esri REST JS" title suffix.
|
39
|
+
*/
|
40
|
+
acetate.metadata("guides/**/*", {
|
41
|
+
layout: "guides/_layout:content",
|
42
|
+
titleSegments: ["Guide"]
|
43
|
+
});
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Now we need to make a new query called `guides` that will be used to render
|
47
|
+
* the guide navigation.
|
48
|
+
*/
|
49
|
+
acetate.query(
|
50
|
+
/**
|
51
|
+
* results will be accessible as `queries.guides` in templates
|
52
|
+
*/
|
53
|
+
"guides",
|
54
|
+
/**
|
55
|
+
* start by getting all markdown pages in the `guides` folder
|
56
|
+
*/
|
57
|
+
"guides/**/*.md",
|
58
|
+
/**
|
59
|
+
* Now map over each page extracting values from it into a new array.
|
60
|
+
*/
|
61
|
+
page => {
|
62
|
+
return {
|
63
|
+
title: page.navTitle || page.title,
|
64
|
+
order: page.order,
|
65
|
+
group: page.group,
|
66
|
+
url: page.url
|
67
|
+
};
|
68
|
+
},
|
69
|
+
/**
|
70
|
+
* Now reduce our array from the previous step sorting the items into sections
|
71
|
+
* based on their `group` property.
|
72
|
+
*/
|
73
|
+
(sections, item) => {
|
74
|
+
if (!item.group) {
|
75
|
+
return sections;
|
76
|
+
}
|
77
|
+
|
78
|
+
// does this items `section` already have a `section` in `sections`?
|
79
|
+
const idx = _.findIndex(sections, section => section.id === item.group);
|
80
|
+
|
81
|
+
if (idx >= 0) {
|
82
|
+
// if it does push this item into it.
|
83
|
+
sections[idx].items.push(item);
|
84
|
+
} else {
|
85
|
+
// if it does not push a new `section` into `sections`.
|
86
|
+
sections.push({
|
87
|
+
name: _.startCase(item.group.replace(/\d-/, "")),
|
88
|
+
id: item.group,
|
89
|
+
items: [item]
|
90
|
+
});
|
91
|
+
}
|
92
|
+
|
93
|
+
/**
|
94
|
+
* sort our sections by their `id` (which starts with a number) an sort
|
95
|
+
* each sections items by their `order` property
|
96
|
+
*/
|
97
|
+
return _(sections)
|
98
|
+
.sortBy("id")
|
99
|
+
.map(section => {
|
100
|
+
section.items = _.sortBy(section.items, "order");
|
101
|
+
return section;
|
102
|
+
})
|
103
|
+
.value();
|
104
|
+
},
|
105
|
+
/**
|
106
|
+
* The initial value for the above reduce function.
|
107
|
+
*/
|
108
|
+
[]
|
109
|
+
);
|
110
|
+
|
111
|
+
/**
|
112
|
+
* Load the typedoc.json file as a page in Acetate. This makes the watcher
|
113
|
+
* start looking for changes and we can listen for the events later.
|
114
|
+
*/
|
115
|
+
acetate.load("typedoc.json", {
|
116
|
+
basePath: "arcgis-rest-js",
|
117
|
+
metadata: {
|
118
|
+
layout: false,
|
119
|
+
prettyUrl: false
|
120
|
+
}
|
121
|
+
});
|
122
|
+
|
123
|
+
/**
|
124
|
+
* Use Acetates generate helper to generate a page for each `declaration`
|
125
|
+
* and `package` in the typedoc.json and generate the search index file
|
126
|
+
*/
|
127
|
+
acetate.generate((createPage, callback) => {
|
128
|
+
fs.readFile(
|
129
|
+
path.join(acetate.root, "src", "typedoc.json"),
|
130
|
+
(e, contents) => {
|
131
|
+
const typedoc = JSON.parse(contents.toString());
|
132
|
+
|
133
|
+
const declarationPages = typedoc.declarations.map(declaration => {
|
134
|
+
return createPage.fromTemplate(
|
135
|
+
declaration.src,
|
136
|
+
path.join(acetate.sourceDir, "api", "_declaration.html"),
|
137
|
+
Object.assign({}, declaration, {
|
138
|
+
layout: "api/_layout:content"
|
139
|
+
})
|
140
|
+
);
|
141
|
+
});
|
142
|
+
|
143
|
+
const packagePages = typedoc.packages.map(package => {
|
144
|
+
return createPage.fromTemplate(
|
145
|
+
package.src,
|
146
|
+
path.join(acetate.sourceDir, "api", "_package.html"),
|
147
|
+
Object.assign({}, package, {
|
148
|
+
layout: "api/_layout:content"
|
149
|
+
})
|
150
|
+
);
|
151
|
+
});
|
152
|
+
|
153
|
+
const searchIndex = createPage.fromTemplateString(
|
154
|
+
"arcgis-rest-js/js/index.js",
|
155
|
+
`const ESRI_REST_API_REF_INDEX = ${JSON.stringify(
|
156
|
+
typedoc.quickSearchIndex
|
157
|
+
)}`,
|
158
|
+
path.join(acetate.sourceDir, "js", "index.js"),
|
159
|
+
{ layout: false, prettyUrl: false }
|
160
|
+
);
|
161
|
+
|
162
|
+
// once all the pages have been generated provide them to Acetate.
|
163
|
+
Promise.all(declarationPages.concat(packagePages)).then(pages => {
|
164
|
+
callback(null, pages.concat(searchIndex));
|
165
|
+
});
|
166
|
+
}
|
167
|
+
);
|
168
|
+
});
|
169
|
+
|
170
|
+
/**
|
171
|
+
* Also register typedoc.json as a global data object called `typedoc`.
|
172
|
+
*/
|
173
|
+
acetate.data("typedoc", "typedoc.json");
|
174
|
+
|
175
|
+
/**
|
176
|
+
* Register some tools for working with the typedoc output.
|
177
|
+
*/
|
178
|
+
acetate.global("API_TOOLS", {
|
179
|
+
findById: function(typedoc, id) {
|
180
|
+
return typedoc.index[id];
|
181
|
+
},
|
182
|
+
findByName: function(typedoc, name) {
|
183
|
+
return typedoc.declarations.find(c => c.name === name);
|
184
|
+
},
|
185
|
+
findChildById: function(id, children) {
|
186
|
+
return children.find(c => c.id === id);
|
187
|
+
}
|
188
|
+
});
|
189
|
+
|
190
|
+
acetate.filter("findPackage", (typedoc, name) => {
|
191
|
+
return typedoc.packages.find(p => p.pkg.name === name).pkg;
|
192
|
+
});
|
193
|
+
|
194
|
+
/**
|
195
|
+
* Listen for changes, if we see a change in typedoc.json we know we need to
|
196
|
+
* regenerate all the dymanically generated pages so reload this config file.
|
197
|
+
*/
|
198
|
+
acetate.on("watcher:change", page => {
|
199
|
+
if (page.src === "typedoc.json") {
|
200
|
+
acetate.reloadConfig();
|
201
|
+
}
|
202
|
+
});
|
203
|
+
|
204
|
+
/**
|
205
|
+
* Template helper for safely inspecting objects with circular references.
|
206
|
+
*/
|
207
|
+
acetate.filter("inspect", function(obj) {
|
208
|
+
return inspect(obj, { depth: 3 });
|
209
|
+
});
|
210
|
+
|
211
|
+
// without the '.js' on the end, for the benefit of the AMD sample
|
212
|
+
acetate.helper("cdnUrl", function(context, package) {
|
213
|
+
return `https://unpkg.com/${
|
214
|
+
package.name
|
215
|
+
}@${package.version}/dist/umd/${package.name.replace("@esri/arcgis-rest-", "")}.umd`;
|
216
|
+
});
|
217
|
+
|
218
|
+
// <code> friendly script tag string
|
219
|
+
acetate.helper("scriptTag", function(context, package) {
|
220
|
+
return acetate.nunjucks.renderString(
|
221
|
+
`{% highlight "html" %}<script src="https://unpkg.com/${package.name}@${
|
222
|
+
package.version
|
223
|
+
}/dist/umd/${package.name.replace(
|
224
|
+
"@esri/arcgis-rest-",
|
225
|
+
""
|
226
|
+
)}.umd.min.js"></script>{% endhighlight %}`
|
227
|
+
);
|
228
|
+
});
|
229
|
+
|
230
|
+
// CDN with SRI only if hash exists
|
231
|
+
acetate.helper("scriptTagSRI", function(context, package) {
|
232
|
+
const hash = srihashes.packages[package.name];
|
233
|
+
if (hash) {
|
234
|
+
return acetate.nunjucks.renderString(`
|
235
|
+
{%highlight "html" %}
|
236
|
+
<script src="https://unpkg.com/${package.name}@${
|
237
|
+
package.version
|
238
|
+
}/dist/umd/${package.name.replace(
|
239
|
+
"@esri/arcgis-rest-",
|
240
|
+
""
|
241
|
+
)}.umd.min.js" integrity="${hash}" crossorigin="anonymous"></script>{% endhighlight %}`);
|
242
|
+
} else {
|
243
|
+
return "";
|
244
|
+
}
|
245
|
+
});
|
246
|
+
|
247
|
+
acetate.helper("npmInstallCmd", function(context, package) {
|
248
|
+
const peers = package.peerDependencies
|
249
|
+
? Object.keys(package.peerDependencies).map(
|
250
|
+
pkg => `${pkg}@${package.peerDependencies[pkg]} `
|
251
|
+
)
|
252
|
+
: [];
|
253
|
+
return `npm install ${package.name} ${peers.join(" ")}`;
|
254
|
+
});
|
255
|
+
|
256
|
+
acetate.filter("stripThisFromParams", function(params) {
|
257
|
+
if (!params || !params.length) {
|
258
|
+
return [];
|
259
|
+
}
|
260
|
+
return params.filter(p => p.name !== "this");
|
261
|
+
});
|
262
|
+
};
|
@@ -0,0 +1,434 @@
|
|
1
|
+
const spawn = require("cross-spawn");
|
2
|
+
const { join } = require("path");
|
3
|
+
const { readFile, writeFile } = require("fs");
|
4
|
+
const _ = require("lodash");
|
5
|
+
const OUTPUT = join(process.cwd(), "docs", "src", `typedoc.json`);
|
6
|
+
const { prettyifyUrl } = require("acetate/lib/utils.js");
|
7
|
+
const slug = require("slug");
|
8
|
+
const minimatch = require("minimatch");
|
9
|
+
const cheerio = require("cheerio");
|
10
|
+
const MarkdownIt = require("markdown-it");
|
11
|
+
const md = new MarkdownIt();
|
12
|
+
|
13
|
+
(function generateTypeDoc() {
|
14
|
+
return new Promise((resolve, reject) => {
|
15
|
+
const typedoc = spawn(
|
16
|
+
"typedoc",
|
17
|
+
[
|
18
|
+
"-json",
|
19
|
+
OUTPUT,
|
20
|
+
"--exclude",
|
21
|
+
"**/*test.ts",
|
22
|
+
"--ignoreCompilerErrors",
|
23
|
+
"--module",
|
24
|
+
"common",
|
25
|
+
"--tsconfig",
|
26
|
+
"./tsconfig.json",
|
27
|
+
"--excludePrivate"
|
28
|
+
],
|
29
|
+
{
|
30
|
+
stdio: "inherit"
|
31
|
+
}
|
32
|
+
);
|
33
|
+
|
34
|
+
typedoc.on("close", code => {
|
35
|
+
if (code !== 0) {
|
36
|
+
reject(code);
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
|
40
|
+
readFile(OUTPUT, (error, content) => {
|
41
|
+
if (error) {
|
42
|
+
reject(error);
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
|
46
|
+
resolve(JSON.parse(content.toString()));
|
47
|
+
});
|
48
|
+
});
|
49
|
+
})
|
50
|
+
.then(json => {
|
51
|
+
/**
|
52
|
+
* `json.children` will be a list of all TypeScript files in our project.
|
53
|
+
* We dont care about the files, we just need all their children so we reduce
|
54
|
+
* to a single list of everything in the entire project.
|
55
|
+
*/
|
56
|
+
return json.children.reduce(
|
57
|
+
(allChildren, fileChildren) => allChildren.concat(fileChildren),
|
58
|
+
[]
|
59
|
+
);
|
60
|
+
})
|
61
|
+
.then(children => {
|
62
|
+
/**
|
63
|
+
* We dont want TypeScript files that have been symlinked into `node_modules`
|
64
|
+
* folders by Lerna so ignore any child whose source file has `node_modules`
|
65
|
+
* in its `fileName`
|
66
|
+
*/
|
67
|
+
return children.filter(
|
68
|
+
c => !minimatch(c.sources[0].fileName, "**/node_modules/**")
|
69
|
+
);
|
70
|
+
})
|
71
|
+
.then(children => {
|
72
|
+
/**
|
73
|
+
* We now only want children that are actual source files, not tests, so
|
74
|
+
* filter out all children without `src` in their path.
|
75
|
+
*/
|
76
|
+
return children.filter(c =>
|
77
|
+
minimatch(c.sources[0].fileName, "**/src/**/*.ts")
|
78
|
+
);
|
79
|
+
})
|
80
|
+
.then(children => {
|
81
|
+
/**
|
82
|
+
* Some children might be empty so there is nothing to document in them.
|
83
|
+
* For example most `index.ts` files don't have anything besides `import`
|
84
|
+
* or `export` so we can safely filter these children out.
|
85
|
+
*/
|
86
|
+
return children.filter(c => !!c.children);
|
87
|
+
})
|
88
|
+
.then(children => {
|
89
|
+
/**
|
90
|
+
* The `name` of each child is wrapped in extra quote marks remove these
|
91
|
+
* quote marks and add `.ts` back to the end of the `name`,
|
92
|
+
*/
|
93
|
+
return children.map(child => {
|
94
|
+
child.name = child.name.replace(/\"/g, "") + ".ts";
|
95
|
+
return child;
|
96
|
+
});
|
97
|
+
})
|
98
|
+
.then(children => {
|
99
|
+
/**
|
100
|
+
* Now determine which `package` each of our children belongs to based on
|
101
|
+
* its name.
|
102
|
+
*/
|
103
|
+
return children.map(child => {
|
104
|
+
child.name = _.first(child.name.split("/"));
|
105
|
+
child.package = child.name;
|
106
|
+
return child;
|
107
|
+
});
|
108
|
+
})
|
109
|
+
.then(children => {
|
110
|
+
/**
|
111
|
+
* `children` is currently a list of all TypeScript source files in
|
112
|
+
* `packages`. `children.children` is an array of all declarations in that
|
113
|
+
* source file. We need to concat all `children.children` arrays together
|
114
|
+
* into a giant array of all declarations in all packages.
|
115
|
+
*/
|
116
|
+
return children.reduce((allChildren, child) => {
|
117
|
+
if (!child.children) {
|
118
|
+
console.log(child);
|
119
|
+
return allChildren;
|
120
|
+
}
|
121
|
+
return allChildren.concat(
|
122
|
+
child.children.map(c => {
|
123
|
+
c.package = child.package;
|
124
|
+
return c;
|
125
|
+
})
|
126
|
+
);
|
127
|
+
}, []);
|
128
|
+
})
|
129
|
+
.then(declarations => {
|
130
|
+
/**
|
131
|
+
* Next we remove all children that are not exported out of their files.
|
132
|
+
*/
|
133
|
+
return declarations.filter(
|
134
|
+
declaration => declaration.flags && declaration.flags.isExported
|
135
|
+
);
|
136
|
+
})
|
137
|
+
.then(declarations => {
|
138
|
+
const blacklist = [
|
139
|
+
"genericSearch",
|
140
|
+
"appendCustomParams",
|
141
|
+
"requiresFormData",
|
142
|
+
"processParams",
|
143
|
+
"encodeParam",
|
144
|
+
"encodeQueryString",
|
145
|
+
"encodeFormData",
|
146
|
+
"warn",
|
147
|
+
"cleanUrl",
|
148
|
+
"checkForErrors",
|
149
|
+
"determineOwner",
|
150
|
+
"isItemOwner",
|
151
|
+
"isOrgAdmin"
|
152
|
+
];
|
153
|
+
/**
|
154
|
+
* Next we remove any declarations we want to blacklist from the API ref
|
155
|
+
*/
|
156
|
+
return declarations.filter(
|
157
|
+
declaration => !blacklist.includes(declaration.name)
|
158
|
+
);
|
159
|
+
})
|
160
|
+
.then(declarations => {
|
161
|
+
/**
|
162
|
+
* Now that we have a list of all declarations across the entire project
|
163
|
+
* we can begin to generate additional information about each declaration.
|
164
|
+
* For example we can now determine the `src` of the page that will
|
165
|
+
* be generated for this declaration. Each `declaration` will also have
|
166
|
+
* `children` which we can generate and define an `icon` property for. These
|
167
|
+
* additional properties, `src`, `pageUrl`, `icon` and `children` are then
|
168
|
+
* merged into the `declaration`. This also adds a `title`, `description`
|
169
|
+
* and `titleSegments` to each page which are used in the template for SEO.
|
170
|
+
*/
|
171
|
+
return declarations.map(declaration => {
|
172
|
+
const abbreviatedPackageName = declaration.package.replace(
|
173
|
+
"arcgis-rest-",
|
174
|
+
""
|
175
|
+
);
|
176
|
+
const src = `arcgis-rest-js/api/${abbreviatedPackageName}/${
|
177
|
+
declaration.name
|
178
|
+
}.html`;
|
179
|
+
let children;
|
180
|
+
|
181
|
+
if (declaration.children) {
|
182
|
+
children = declaration.children.map(child => {
|
183
|
+
child.icon = `tsd-kind-${slug(
|
184
|
+
child.kindString
|
185
|
+
).toLowerCase()} tsd-parent-kind-${slug(
|
186
|
+
declaration.kindString
|
187
|
+
).toLowerCase()}`;
|
188
|
+
|
189
|
+
if (child.flags.isPrivate) {
|
190
|
+
child.icon += ` tsd-is-private`;
|
191
|
+
}
|
192
|
+
|
193
|
+
if (child.flags.isProtected) {
|
194
|
+
child.icon += ` tsd-is-protected`;
|
195
|
+
}
|
196
|
+
|
197
|
+
if (child.flags.isStatic) {
|
198
|
+
child.icon += ` tsd-is-static`;
|
199
|
+
}
|
200
|
+
|
201
|
+
if (child.signatures) {
|
202
|
+
child.signatures = child.signatures.map(sig => {
|
203
|
+
sig.icon = child.icon;
|
204
|
+
return sig;
|
205
|
+
});
|
206
|
+
}
|
207
|
+
|
208
|
+
return child;
|
209
|
+
});
|
210
|
+
}
|
211
|
+
|
212
|
+
declaration.title = declaration.name;
|
213
|
+
declaration.titleSegments = ["API Reference"];
|
214
|
+
declaration.description =
|
215
|
+
declaration.comment && declaration.comment.shortText
|
216
|
+
? cheerio
|
217
|
+
.load(md.render(declaration.comment.shortText))
|
218
|
+
.text()
|
219
|
+
.replace("\n", "")
|
220
|
+
: "API Reference documentation for ${child.name}, part of ${declaration.package}.";
|
221
|
+
|
222
|
+
return Object.assign(declaration, {
|
223
|
+
src,
|
224
|
+
pageUrl: prettyifyUrl(src),
|
225
|
+
icon: `tsd-kind-${slug(declaration.kindString).toLowerCase()}`,
|
226
|
+
children
|
227
|
+
});
|
228
|
+
});
|
229
|
+
})
|
230
|
+
.then(declarations => {
|
231
|
+
/**
|
232
|
+
* We now have a list of `declarations` that will be used to generate the
|
233
|
+
* individual API reference pages, but we still need to generate a landing
|
234
|
+
* page for each `package`. Return a new object with our `declarations` and
|
235
|
+
* a new property `packages` which is an array of every `package` with a
|
236
|
+
* page `src`, a `pageUrl`, an `icon` and a list of `declarations`. This
|
237
|
+
* also adds a `title`, `description` and `titleSegments` to each page
|
238
|
+
* which are used in the template for SEO.
|
239
|
+
*/
|
240
|
+
return {
|
241
|
+
declarations,
|
242
|
+
packages: _(declarations)
|
243
|
+
.map(d => d.package)
|
244
|
+
.uniq()
|
245
|
+
.reduce((packages, package) => {
|
246
|
+
const abbreviatedPackageName = package.replace("arcgis-rest-", "");
|
247
|
+
const src = `arcgis-rest-js/api/${abbreviatedPackageName}.html`;
|
248
|
+
const pkg = require(`${process.cwd()}/packages/${package}/package.json`);
|
249
|
+
|
250
|
+
packages.push({
|
251
|
+
package,
|
252
|
+
pkg,
|
253
|
+
title: package,
|
254
|
+
description: pkg.description,
|
255
|
+
titleSegments: ["API Reference"],
|
256
|
+
name: package,
|
257
|
+
declarations: declarations
|
258
|
+
.filter(d => d.package === package)
|
259
|
+
.sort((da, db) => {
|
260
|
+
const types = [
|
261
|
+
"Class",
|
262
|
+
"Function",
|
263
|
+
"Object literal",
|
264
|
+
"Variable",
|
265
|
+
"Enumeration",
|
266
|
+
"Type alias",
|
267
|
+
"Interface"
|
268
|
+
];
|
269
|
+
|
270
|
+
const aIndex = types.findIndex(t => da.kindString === t);
|
271
|
+
const bIndex = types.findIndex(t => db.kindString === t);
|
272
|
+
|
273
|
+
if (aIndex > bIndex) {
|
274
|
+
return 1;
|
275
|
+
} else if (aIndex < bIndex) {
|
276
|
+
return -1;
|
277
|
+
} else {
|
278
|
+
return 0;
|
279
|
+
}
|
280
|
+
}),
|
281
|
+
icon: "tsd-kind-module",
|
282
|
+
src,
|
283
|
+
pageUrl: prettyifyUrl(src)
|
284
|
+
});
|
285
|
+
return packages;
|
286
|
+
}, [])
|
287
|
+
};
|
288
|
+
})
|
289
|
+
.then(api => {
|
290
|
+
/**
|
291
|
+
* Since we generated the TypeDoc for the entire project at once each
|
292
|
+
* `declaration` has a unique numerical `id` property. We occasionally
|
293
|
+
* need to lookup a declaration by its `id` so we can prebuild an index of
|
294
|
+
* them here.
|
295
|
+
*/
|
296
|
+
api.index = api.declarations.reduce((index, declaration) => {
|
297
|
+
index[declaration.id] = declaration;
|
298
|
+
return index;
|
299
|
+
}, {});
|
300
|
+
|
301
|
+
return api;
|
302
|
+
})
|
303
|
+
.then(api => {
|
304
|
+
/**
|
305
|
+
* In order to power the API reference quick search we can build an array
|
306
|
+
* of all declarations and child items
|
307
|
+
*/
|
308
|
+
api.quickSearchIndex = api.declarations.reduce(
|
309
|
+
(quickSearchIndex, declaration) => {
|
310
|
+
if (declaration.children) {
|
311
|
+
quickSearchIndex = quickSearchIndex.concat(
|
312
|
+
declaration.children.map(child => {
|
313
|
+
return {
|
314
|
+
title: `${declaration.name}.${child.name}`,
|
315
|
+
url: `${declaration.pageUrl}#${child.name}`,
|
316
|
+
icon: child.icon
|
317
|
+
};
|
318
|
+
})
|
319
|
+
);
|
320
|
+
}
|
321
|
+
|
322
|
+
return quickSearchIndex.concat([
|
323
|
+
{
|
324
|
+
title: declaration.name,
|
325
|
+
url: declaration.pageUrl,
|
326
|
+
icon: declaration.icon
|
327
|
+
}
|
328
|
+
]);
|
329
|
+
},
|
330
|
+
[]
|
331
|
+
);
|
332
|
+
|
333
|
+
return api;
|
334
|
+
})
|
335
|
+
.then(api => {
|
336
|
+
/**
|
337
|
+
* Next we can sort the children of each declaration to sort by required/optional/inherited
|
338
|
+
*/
|
339
|
+
api.declarations = api.declarations.map(declaration => {
|
340
|
+
if (declaration.children) {
|
341
|
+
declaration.children.sort((ca, cb) => {
|
342
|
+
const aIndex = rankChild(ca);
|
343
|
+
const bIndex = rankChild(cb);
|
344
|
+
|
345
|
+
if (aIndex > bIndex) {
|
346
|
+
return 1; // sort a below b
|
347
|
+
} else if (aIndex < bIndex) {
|
348
|
+
return -1; // sort a above b
|
349
|
+
} else {
|
350
|
+
return 0;
|
351
|
+
}
|
352
|
+
return 0;
|
353
|
+
});
|
354
|
+
}
|
355
|
+
|
356
|
+
if (declaration.groups) {
|
357
|
+
declaration.groups.forEach(group => {
|
358
|
+
if (group.children) {
|
359
|
+
group.children.sort((ca, cb) => {
|
360
|
+
const childA = declaration.children.find(c => c.id === ca);
|
361
|
+
const childB = declaration.children.find(c => c.id === cb);
|
362
|
+
|
363
|
+
const aIndex = rankChild(childA);
|
364
|
+
const bIndex = rankChild(childB);
|
365
|
+
|
366
|
+
if (aIndex > bIndex) {
|
367
|
+
return 1;
|
368
|
+
} else if (aIndex < bIndex) {
|
369
|
+
return -1;
|
370
|
+
} else {
|
371
|
+
return 0;
|
372
|
+
}
|
373
|
+
return 0;
|
374
|
+
});
|
375
|
+
}
|
376
|
+
});
|
377
|
+
}
|
378
|
+
|
379
|
+
return declaration;
|
380
|
+
});
|
381
|
+
|
382
|
+
return api;
|
383
|
+
})
|
384
|
+
.then(api => {
|
385
|
+
/**
|
386
|
+
* Our final object looks like this:
|
387
|
+
*
|
388
|
+
* {
|
389
|
+
* packages: [Array of packages.],
|
390
|
+
* declarations: [Array of each exported declaration accross all source files.]
|
391
|
+
* index: { Object mapping each declaration.id as a key with the declaration as its value}
|
392
|
+
* }
|
393
|
+
*
|
394
|
+
* We now export this to the Acetate source directory.
|
395
|
+
*/
|
396
|
+
return new Promise((resolve, reject) => {
|
397
|
+
writeFile(OUTPUT, JSON.stringify(api, null, 2), e => {
|
398
|
+
if (e) {
|
399
|
+
reject(e);
|
400
|
+
return;
|
401
|
+
}
|
402
|
+
|
403
|
+
resolve(api);
|
404
|
+
});
|
405
|
+
});
|
406
|
+
})
|
407
|
+
.catch(e => {
|
408
|
+
console.error(e);
|
409
|
+
});
|
410
|
+
})();
|
411
|
+
|
412
|
+
function rankChild(child) {
|
413
|
+
const { isPrivate, isPublic, isOptional, isStatic } = child
|
414
|
+
? child.flags
|
415
|
+
: {};
|
416
|
+
|
417
|
+
const isInherited = child.inheritedFrom ? true : false;
|
418
|
+
|
419
|
+
let score = 0;
|
420
|
+
|
421
|
+
if (isPrivate) {
|
422
|
+
score += 30;
|
423
|
+
}
|
424
|
+
if (isStatic) {
|
425
|
+
score -= 15;
|
426
|
+
}
|
427
|
+
if (!isInherited) {
|
428
|
+
score -= 5;
|
429
|
+
}
|
430
|
+
if (!isOptional) {
|
431
|
+
score -= 15;
|
432
|
+
}
|
433
|
+
return score;
|
434
|
+
}
|