@zxncij2390/monorepo3 3.18.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintignore +16 -0
- package/.eslintrc.cjs +150 -0
- package/.github/ISSUE_TEMPLATE/bug-report.yml +178 -0
- package/.github/ISSUE_TEMPLATE/enhancement.yml +99 -0
- package/.github/ISSUE_TEMPLATE/question.yml +72 -0
- package/.github/ISSUE_TEMPLATE.md +39 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +24 -0
- package/.github/workflows/lock.yml +18 -0
- package/.github/workflows/publish-buildsystem.yml +34 -0
- package/.github/workflows/publish-docs.yml +21 -0
- package/.github/workflows/publish.yml +40 -0
- package/.github/workflows/pull_request.yaml +28 -0
- package/.github/workflows/push.yaml +32 -0
- package/.github/workflows/v3-nightly.yml +40 -0
- package/.mocharc.cjs +68 -0
- package/.vscode/launch.json +103 -0
- package/.vscode/settings.json +17 -0
- package/.vscode/tasks.json +124 -0
- package/AUTHORS +13 -0
- package/CHANGELOG.md +33 -0
- package/CODE_OF_CONDUCT.md +6 -0
- package/CONTRIBUTING.md +9 -0
- package/LICENSE +25 -0
- package/README.md +66 -0
- package/buildsystem-config.ts +146 -0
- package/debug/launch/graph.ts +20 -0
- package/debug/launch/main.ts +38 -0
- package/debug/launch/setup.ts +50 -0
- package/debug/launch/sp.ts +21 -0
- package/debug/launch/tsconfig.json +27 -0
- package/debug/serve/main.ts +47 -0
- package/debug/serve/plumbing/local-module-resolver-plugin.ts +68 -0
- package/debug/serve/plumbing/run.ts +24 -0
- package/debug/serve/plumbing/serve.ts +27 -0
- package/debug/serve/plumbing/webpack.config.ts +43 -0
- package/debug/serve/spa.html +12 -0
- package/debug/serve/tsconfig.json +15 -0
- package/debug/spfx/.eslintrc.js +352 -0
- package/debug/spfx/README.md +73 -0
- package/debug/spfx/package-lock.json +57299 -0
- package/debug/spfx/package.json +38 -0
- package/debug/spfx/pnpjs-local-debug-start.js +19 -0
- package/debug/spfx/teams/f4c0e5ff-c402-46b7-8073-8cc506808d06_color.png +0 -0
- package/debug/spfx/teams/f4c0e5ff-c402-46b7-8073-8cc506808d06_outline.png +0 -0
- package/docs/_theme/main.html +5 -0
- package/docs/azidjsclient/index.md +36 -0
- package/docs/concepts/adv-clientside-pages.md +169 -0
- package/docs/concepts/auth-browser.md +42 -0
- package/docs/concepts/auth-nodejs.md +101 -0
- package/docs/concepts/auth-spfx.md +76 -0
- package/docs/concepts/authentication.md +42 -0
- package/docs/concepts/batching-caching.md +77 -0
- package/docs/concepts/batching.md +257 -0
- package/docs/concepts/calling-other-endpoints.md +213 -0
- package/docs/concepts/custom-bundle.md +15 -0
- package/docs/concepts/error-handling.md +245 -0
- package/docs/concepts/invokable.md +7 -0
- package/docs/concepts/nightly-builds.md +19 -0
- package/docs/concepts/project-preset.md +123 -0
- package/docs/concepts/selective-imports.md +106 -0
- package/docs/concepts/typings.md +23 -0
- package/docs/contributing/debug-tests.md +76 -0
- package/docs/contributing/debugging.md +135 -0
- package/docs/contributing/documentation.md +34 -0
- package/docs/contributing/extending-the-library.md +223 -0
- package/docs/contributing/index.md +22 -0
- package/docs/contributing/local-debug-configuration.md +28 -0
- package/docs/contributing/npm-scripts.md +148 -0
- package/docs/contributing/pull-requests.md +27 -0
- package/docs/contributing/settings.md +98 -0
- package/docs/contributing/setup-dev-machine.md +36 -0
- package/docs/core/behavior-recipes.md +199 -0
- package/docs/core/behaviors.md +179 -0
- package/docs/core/moments.md +215 -0
- package/docs/core/observers.md +100 -0
- package/docs/core/storage.md +90 -0
- package/docs/core/timeline.md +190 -0
- package/docs/core/util.md +191 -0
- package/docs/css/extra.css +33 -0
- package/docs/getting-started.md +361 -0
- package/docs/graph/behaviors.md +267 -0
- package/docs/graph/bookings.md +180 -0
- package/docs/graph/calendars.md +270 -0
- package/docs/graph/cloud-communications.md +40 -0
- package/docs/graph/columns.md +125 -0
- package/docs/graph/contacts.md +298 -0
- package/docs/graph/content-types.md +193 -0
- package/docs/graph/directoryobjects.md +106 -0
- package/docs/graph/groups.md +164 -0
- package/docs/graph/insights.md +151 -0
- package/docs/graph/invitations.md +22 -0
- package/docs/graph/items.md +38 -0
- package/docs/graph/lists.md +87 -0
- package/docs/graph/messages.md +20 -0
- package/docs/graph/onedrive.md +614 -0
- package/docs/graph/outlook.md +82 -0
- package/docs/graph/photos.md +71 -0
- package/docs/graph/planner.md +249 -0
- package/docs/graph/search.md +25 -0
- package/docs/graph/shares.md +44 -0
- package/docs/graph/sites.md +47 -0
- package/docs/graph/subscriptions.md +79 -0
- package/docs/graph/teams.md +293 -0
- package/docs/graph/users.md +134 -0
- package/docs/img/ConsoleListenerColors.png +0 -0
- package/docs/img/Logo.png +0 -0
- package/docs/img/PnPJS_FluentAPI.gif +0 -0
- package/docs/img/SPFx-On-Premesis-2016-1.png +0 -0
- package/docs/img/TimelineArchitecture.jpg +0 -0
- package/docs/img/csp_copyccvalue.png +0 -0
- package/docs/img/csp_networktab.png +0 -0
- package/docs/img/office365-header-icon.png +0 -0
- package/docs/img/usage-2020-eoy.png +0 -0
- package/docs/img/usage-2021-eoy.png +0 -0
- package/docs/img/usage-2022-eoy.png +0 -0
- package/docs/index.md +56 -0
- package/docs/logging/index.md +262 -0
- package/docs/msaljsclient/index.md +33 -0
- package/docs/news/2020-year-in-review.md +162 -0
- package/docs/news/2021-year-in-review.md +148 -0
- package/docs/news/2022-year-in-review.md +122 -0
- package/docs/nodejs/behaviors.md +164 -0
- package/docs/nodejs/sp-extensions.md +99 -0
- package/docs/packages.md +53 -0
- package/docs/queryable/behaviors.md +496 -0
- package/docs/queryable/extensions.md +204 -0
- package/docs/queryable/queryable.md +385 -0
- package/docs/sp/alias-parameters.md +76 -0
- package/docs/sp/alm.md +139 -0
- package/docs/sp/attachments.md +157 -0
- package/docs/sp/behaviors.md +142 -0
- package/docs/sp/clientside-pages.md +1048 -0
- package/docs/sp/column-defaults.md +241 -0
- package/docs/sp/comments-likes.md +302 -0
- package/docs/sp/content-types.md +131 -0
- package/docs/sp/context-info.md +67 -0
- package/docs/sp/favorites.md +91 -0
- package/docs/sp/features.md +83 -0
- package/docs/sp/fields.md +668 -0
- package/docs/sp/files.md +559 -0
- package/docs/sp/folders.md +532 -0
- package/docs/sp/forms.md +22 -0
- package/docs/sp/groupSiteManager.md +40 -0
- package/docs/sp/hubsites.md +140 -0
- package/docs/sp/items.md +601 -0
- package/docs/sp/lists.md +572 -0
- package/docs/sp/navigation.md +171 -0
- package/docs/sp/permissions.md +82 -0
- package/docs/sp/profiles.md +407 -0
- package/docs/sp/publishing-sitepageservice.md +16 -0
- package/docs/sp/recycle-bin.md +72 -0
- package/docs/sp/regional-settings.md +108 -0
- package/docs/sp/related-items.md +136 -0
- package/docs/sp/search.md +207 -0
- package/docs/sp/security.md +196 -0
- package/docs/sp/sharing.md +273 -0
- package/docs/sp/site-designs.md +117 -0
- package/docs/sp/site-groups.md +144 -0
- package/docs/sp/site-scripts.md +123 -0
- package/docs/sp/site-users.md +211 -0
- package/docs/sp/sites.md +269 -0
- package/docs/sp/social.md +182 -0
- package/docs/sp/sp-utilities-utility.md +159 -0
- package/docs/sp/subscriptions.md +79 -0
- package/docs/sp/taxonomy.md +470 -0
- package/docs/sp/tenant-properties.md +55 -0
- package/docs/sp/user-custom-actions.md +95 -0
- package/docs/sp/views.md +226 -0
- package/docs/sp/webs.md +947 -0
- package/docs/sp-admin/index.md +139 -0
- package/docs/transition-guide.md +87 -0
- package/docs/v1/404.html +1611 -0
- package/docs/v1/assets/fonts/font-awesome.css +4 -0
- package/docs/v1/assets/fonts/material-icons.css +13 -0
- package/docs/v1/assets/fonts/specimen/FontAwesome.ttf +0 -0
- package/docs/v1/assets/fonts/specimen/FontAwesome.woff +0 -0
- package/docs/v1/assets/fonts/specimen/FontAwesome.woff2 +0 -0
- package/docs/v1/assets/fonts/specimen/MaterialIcons-Regular.ttf +0 -0
- package/docs/v1/assets/fonts/specimen/MaterialIcons-Regular.woff +0 -0
- package/docs/v1/assets/fonts/specimen/MaterialIcons-Regular.woff2 +0 -0
- package/docs/v1/assets/images/favicon.png +0 -0
- package/docs/v1/assets/images/icons/bitbucket.1b09e088.svg +20 -0
- package/docs/v1/assets/images/icons/github.f0b8504a.svg +18 -0
- package/docs/v1/assets/images/icons/gitlab.6dd19c00.svg +38 -0
- package/docs/v1/assets/javascripts/application.583bbe55.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.da.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.de.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.du.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.es.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.fi.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.fr.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.hu.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.it.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.jp.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.multi.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.no.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.pt.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.ro.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.ru.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.stemmer.support.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.sv.js +1 -0
- package/docs/v1/assets/javascripts/lunr/lunr.tr.js +1 -0
- package/docs/v1/assets/javascripts/lunr/tinyseg.js +1 -0
- package/docs/v1/assets/javascripts/modernizr.1aa3b519.js +1 -0
- package/docs/v1/assets/stylesheets/application-palette.22915126.css +1176 -0
- package/docs/v1/assets/stylesheets/application.451f80e5.css +2552 -0
- package/docs/v1/common/docs/adalclient/index.html +1994 -0
- package/docs/v1/common/docs/collections/index.html +1786 -0
- package/docs/v1/common/docs/custom-httpclientimpl/index.html +1798 -0
- package/docs/v1/common/docs/index.html +1787 -0
- package/docs/v1/common/docs/libconfig/index.html +1930 -0
- package/docs/v1/common/docs/netutil/index.html +1860 -0
- package/docs/v1/common/docs/storage/index.html +1850 -0
- package/docs/v1/common/docs/util/index.html +2058 -0
- package/docs/v1/config-store/docs/configuration/index.html +1730 -0
- package/docs/v1/config-store/docs/index.html +1761 -0
- package/docs/v1/config-store/docs/providers/index.html +1782 -0
- package/docs/v1/documentation/SPFx-On-Premesis-2016/index.html +1720 -0
- package/docs/v1/documentation/beta-versions/index.html +1742 -0
- package/docs/v1/documentation/css/extra.css +33 -0
- package/docs/v1/documentation/debugging/index.html +2098 -0
- package/docs/v1/documentation/deployment/index.html +1972 -0
- package/docs/v1/documentation/documentation/index.html +1760 -0
- package/docs/v1/documentation/getting-started/index.html +2280 -0
- package/docs/v1/documentation/getting-started-dev/index.html +1799 -0
- package/docs/v1/documentation/gulp-commands/index.html +2100 -0
- package/docs/v1/documentation/img/Logo.png +0 -0
- package/docs/v1/documentation/img/PnPJS_FluentAPI.gif +0 -0
- package/docs/v1/documentation/img/SPFx-On-Premesis-2016-1.png +0 -0
- package/docs/v1/documentation/img/office365-header-icon.png +0 -0
- package/docs/v1/documentation/img/pnpjs-common-uml.svg +220 -0
- package/docs/v1/documentation/img/pnpjs-config-store-uml.svg +56 -0
- package/docs/v1/documentation/img/pnpjs-graph-uml.svg +602 -0
- package/docs/v1/documentation/img/pnpjs-logging-uml.svg +59 -0
- package/docs/v1/documentation/img/pnpjs-nodejs-uml.svg +85 -0
- package/docs/v1/documentation/img/pnpjs-odata-uml.svg +253 -0
- package/docs/v1/documentation/img/pnpjs-sp-addinhelpers-uml.svg +48 -0
- package/docs/v1/documentation/img/pnpjs-sp-clientsvc-uml.svg +167 -0
- package/docs/v1/documentation/img/pnpjs-sp-taxonomy-uml.svg +458 -0
- package/docs/v1/documentation/img/pnpjs-sp-uml.svg +2833 -0
- package/docs/v1/documentation/package-structure/index.html +1875 -0
- package/docs/v1/documentation/packages/index.html +1741 -0
- package/docs/v1/documentation/polyfill/index.html +1877 -0
- package/docs/v1/documentation/theme/main.html +5 -0
- package/docs/v1/documentation/transition-guide/index.html +1977 -0
- package/docs/v1/graph/docs/contacts/index.html +2080 -0
- package/docs/v1/graph/docs/directoryobjects/index.html +1865 -0
- package/docs/v1/graph/docs/index.html +1858 -0
- package/docs/v1/graph/docs/insights/index.html +1698 -0
- package/docs/v1/graph/docs/invitations/index.html +1742 -0
- package/docs/v1/graph/docs/onedrive/index.html +2086 -0
- package/docs/v1/graph/docs/people/index.html +1664 -0
- package/docs/v1/graph/docs/planner/index.html +2097 -0
- package/docs/v1/graph/docs/security/index.html +1692 -0
- package/docs/v1/graph/docs/sites/index.html +2043 -0
- package/docs/v1/graph/docs/subscriptions/index.html +1835 -0
- package/docs/v1/graph/docs/teams/index.html +2097 -0
- package/docs/v1/index.html +1889 -0
- package/docs/v1/logging/docs/index.html +2045 -0
- package/docs/v1/nodejs/docs/adal-certificate-fetch-client/index.html +1676 -0
- package/docs/v1/nodejs/docs/adal-fetch-client/index.html +1713 -0
- package/docs/v1/nodejs/docs/bearer-token-fetch-client/index.html +1712 -0
- package/docs/v1/nodejs/docs/index.html +1764 -0
- package/docs/v1/nodejs/docs/provider-hosted-app/index.html +1725 -0
- package/docs/v1/nodejs/docs/proxy/index.html +1699 -0
- package/docs/v1/nodejs/docs/sp-fetch-client/index.html +1895 -0
- package/docs/v1/odata/docs/caching/index.html +1988 -0
- package/docs/v1/odata/docs/core/index.html +1829 -0
- package/docs/v1/odata/docs/index.html +1781 -0
- package/docs/v1/odata/docs/odata-batch/index.html +1755 -0
- package/docs/v1/odata/docs/parsers/index.html +1862 -0
- package/docs/v1/odata/docs/pipeline/index.html +1811 -0
- package/docs/v1/odata/docs/queryable/index.html +1967 -0
- package/docs/v1/pnpjs/docs/index.html +1814 -0
- package/docs/v1/search/search_index.json +1 -0
- package/docs/v1/sitemap.xml +428 -0
- package/docs/v1/sitemap.xml.gz +0 -0
- package/docs/v1/sp/docs/alias-parameters/index.html +1830 -0
- package/docs/v1/sp/docs/alm/index.html +1920 -0
- package/docs/v1/sp/docs/attachments/index.html +1998 -0
- package/docs/v1/sp/docs/client-side-pages/index.html +2031 -0
- package/docs/v1/sp/docs/comments-likes/index.html +1958 -0
- package/docs/v1/sp/docs/content-types/index.html +1758 -0
- package/docs/v1/sp/docs/entity-merging/index.html +1838 -0
- package/docs/v1/sp/docs/features/index.html +1824 -0
- package/docs/v1/sp/docs/fields/index.html +2031 -0
- package/docs/v1/sp/docs/files/index.html +2178 -0
- package/docs/v1/sp/docs/index.html +1894 -0
- package/docs/v1/sp/docs/items/index.html +2362 -0
- package/docs/v1/sp/docs/navigation-service/index.html +1791 -0
- package/docs/v1/sp/docs/permissions/index.html +1860 -0
- package/docs/v1/sp/docs/profiles/index.html +1794 -0
- package/docs/v1/sp/docs/related-items/index.html +1886 -0
- package/docs/v1/sp/docs/search/index.html +1830 -0
- package/docs/v1/sp/docs/sharing/index.html +2058 -0
- package/docs/v1/sp/docs/sitedesigns/index.html +1851 -0
- package/docs/v1/sp/docs/sites/index.html +2186 -0
- package/docs/v1/sp/docs/social/index.html +2011 -0
- package/docs/v1/sp/docs/sp-utilities-utility/index.html +2061 -0
- package/docs/v1/sp/docs/tenant-properties/index.html +1795 -0
- package/docs/v1/sp/docs/views/index.html +1869 -0
- package/docs/v1/sp/docs/webs/index.html +1972 -0
- package/docs/v1/sp-addinhelpers/docs/index.html +1771 -0
- package/docs/v1/sp-addinhelpers/docs/sp-request-executor-client/index.html +1760 -0
- package/docs/v1/sp-addinhelpers/docs/sp-rest-addin/index.html +1711 -0
- package/docs/v1/sp-clientsvc/docs/index.html +1736 -0
- package/docs/v1/sp-taxonomy/docs/index.html +1887 -0
- package/docs/v1/sp-taxonomy/docs/labels/index.html +1827 -0
- package/docs/v1/sp-taxonomy/docs/term-groups/index.html +1875 -0
- package/docs/v1/sp-taxonomy/docs/term-sets/index.html +1946 -0
- package/docs/v1/sp-taxonomy/docs/term-stores/index.html +2111 -0
- package/docs/v1/sp-taxonomy/docs/terms/index.html +2036 -0
- package/docs/v1/sp-taxonomy/docs/utilities/index.html +1783 -0
- package/docs/v2/404.html +2108 -0
- package/docs/v2/SPFx-on-premises/index.html +2278 -0
- package/docs/v2/_theme/main.html +5 -0
- package/docs/v2/adaljsclient/adalclient/index.html +15 -0
- package/docs/v2/adaljsclient/index.html +15 -0
- package/docs/v2/assets/images/favicon.png +0 -0
- package/docs/v2/assets/javascripts/bundle.9554a270.min.js +2 -0
- package/docs/v2/assets/javascripts/bundle.9554a270.min.js.map +1 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- package/docs/v2/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- package/docs/v2/assets/javascripts/lunr/tinyseg.min.js +1 -0
- package/docs/v2/assets/javascripts/vendor.77e55a48.min.js +30 -0
- package/docs/v2/assets/javascripts/vendor.77e55a48.min.js.map +1 -0
- package/docs/v2/assets/javascripts/worker/search.4ac00218.min.js +59 -0
- package/docs/v2/assets/javascripts/worker/search.4ac00218.min.js.map +1 -0
- package/docs/v2/assets/stylesheets/main.38780c08.min.css +3 -0
- package/docs/v2/assets/stylesheets/main.38780c08.min.css.map +1 -0
- package/docs/v2/assets/stylesheets/palette.3f72e892.min.css +3 -0
- package/docs/v2/assets/stylesheets/palette.3f72e892.min.css.map +1 -0
- package/docs/v2/authentication/adaljsclient/index.html +2510 -0
- package/docs/v2/authentication/bearertokenclient/index.html +2251 -0
- package/docs/v2/authentication/client-spa/index.html +2206 -0
- package/docs/v2/authentication/client-spfx/index.html +2397 -0
- package/docs/v2/authentication/index.html +2307 -0
- package/docs/v2/authentication/lambdaclient/index.html +2304 -0
- package/docs/v2/authentication/msaljsclient/index.html +2413 -0
- package/docs/v2/authentication/server-nodejs/index.html +2404 -0
- package/docs/v2/authentication/sp-app-registration/index.html +2273 -0
- package/docs/v2/common/collections/index.html +2277 -0
- package/docs/v2/common/custom-httpclientimpl/index.html +2300 -0
- package/docs/v2/common/index.html +2262 -0
- package/docs/v2/common/libconfig/index.html +2413 -0
- package/docs/v2/common/netutil/index.html +2350 -0
- package/docs/v2/common/storage/index.html +2339 -0
- package/docs/v2/common/util/index.html +2638 -0
- package/docs/v2/concepts/configuration/index.html +2685 -0
- package/docs/v2/concepts/custom-bundle/index.html +2279 -0
- package/docs/v2/concepts/error-handling/index.html +2539 -0
- package/docs/v2/concepts/ie11-mode/index.html +2278 -0
- package/docs/v2/concepts/invokable/index.html +2254 -0
- package/docs/v2/concepts/polyfill/index.html +2401 -0
- package/docs/v2/concepts/selective-imports/index.html +2360 -0
- package/docs/v2/concepts/settings/index.html +2551 -0
- package/docs/v2/config-store/configuration/index.html +2226 -0
- package/docs/v2/config-store/index.html +2239 -0
- package/docs/v2/config-store/providers/index.html +2275 -0
- package/docs/v2/contributing/debug-tests/index.html +2323 -0
- package/docs/v2/contributing/debugging/index.html +2514 -0
- package/docs/v2/contributing/documentation/index.html +2291 -0
- package/docs/v2/contributing/extending-the-library/index.html +2521 -0
- package/docs/v2/contributing/index.html +2270 -0
- package/docs/v2/contributing/local-debug-configuration/index.html +2284 -0
- package/docs/v2/contributing/pull-requests/index.html +2261 -0
- package/docs/v2/contributing/setup-dev-machine/index.html +2284 -0
- package/docs/v2/css/extra.css +33 -0
- package/docs/v2/debug-tests/index.html +15 -0
- package/docs/v2/debugging/index.html +15 -0
- package/docs/v2/documentation/index.html +15 -0
- package/docs/v2/getting-started/index.html +2789 -0
- package/docs/v2/getting-started-dev/index.html +15 -0
- package/docs/v2/graph/calendars/index.html +2569 -0
- package/docs/v2/graph/contacts/index.html +2673 -0
- package/docs/v2/graph/directoryobjects/index.html +2402 -0
- package/docs/v2/graph/groups/index.html +2488 -0
- package/docs/v2/graph/index.html +2333 -0
- package/docs/v2/graph/insights/index.html +2478 -0
- package/docs/v2/graph/invitations/index.html +2273 -0
- package/docs/v2/graph/onedrive/index.html +2617 -0
- package/docs/v2/graph/outlook/index.html +2363 -0
- package/docs/v2/graph/photos/index.html +2351 -0
- package/docs/v2/graph/planner/index.html +2628 -0
- package/docs/v2/graph/search/index.html +2264 -0
- package/docs/v2/graph/subscriptions/index.html +2333 -0
- package/docs/v2/graph/teams/index.html +2619 -0
- package/docs/v2/graph/users/index.html +2461 -0
- package/docs/v2/img/ConsoleListenerColors.png +0 -0
- package/docs/v2/img/Logo.png +0 -0
- package/docs/v2/img/PnPJS_FluentAPI.gif +0 -0
- package/docs/v2/img/SPFx-On-Premesis-2016-1.png +0 -0
- package/docs/v2/img/office365-header-icon.png +0 -0
- package/docs/v2/img/usage-2020-eoy.png +0 -0
- package/docs/v2/index.html +2410 -0
- package/docs/v2/logging/index.html +2622 -0
- package/docs/v2/news/2020-year-in-review/index.html +2525 -0
- package/docs/v2/nodejs/adal-fetch-client/index.html +2204 -0
- package/docs/v2/nodejs/bearer-token-fetch-client/index.html +2203 -0
- package/docs/v2/nodejs/index.html +2261 -0
- package/docs/v2/nodejs/provider-hosted-app/index.html +2220 -0
- package/docs/v2/nodejs/proxy/index.html +2238 -0
- package/docs/v2/nodejs/sp-extensions/index.html +2362 -0
- package/docs/v2/nodejs/sp-fetch-client/index.html +2294 -0
- package/docs/v2/nodejs-support/index.html +2398 -0
- package/docs/v2/npm-scripts/index.html +2521 -0
- package/docs/v2/odata/caching/index.html +2465 -0
- package/docs/v2/odata/core/index.html +2322 -0
- package/docs/v2/odata/debug/index.html +2358 -0
- package/docs/v2/odata/extensions/index.html +2581 -0
- package/docs/v2/odata/index.html +2259 -0
- package/docs/v2/odata/odata-batch/index.html +2250 -0
- package/docs/v2/odata/parsers/index.html +2355 -0
- package/docs/v2/odata/pipeline/index.html +2297 -0
- package/docs/v2/odata/queryable/index.html +2455 -0
- package/docs/v2/packages/index.html +2251 -0
- package/docs/v2/pnpjs/index.html +2281 -0
- package/docs/v2/search/search_index.json +1 -0
- package/docs/v2/sitemap.xml +483 -0
- package/docs/v2/sitemap.xml.gz +0 -0
- package/docs/v2/sp/alias-parameters/index.html +2330 -0
- package/docs/v2/sp/alm/index.html +2433 -0
- package/docs/v2/sp/attachments/index.html +2504 -0
- package/docs/v2/sp/clientside-pages/index.html +3477 -0
- package/docs/v2/sp/column-defaults/index.html +2540 -0
- package/docs/v2/sp/comments-likes/index.html +2646 -0
- package/docs/v2/sp/content-types/index.html +2462 -0
- package/docs/v2/sp/custom-irequestclient/index.html +2339 -0
- package/docs/v2/sp/entity-merging/index.html +2325 -0
- package/docs/v2/sp/features/index.html +2440 -0
- package/docs/v2/sp/fields/index.html +3103 -0
- package/docs/v2/sp/files/index.html +2949 -0
- package/docs/v2/sp/folders/index.html +2968 -0
- package/docs/v2/sp/forms/index.html +2289 -0
- package/docs/v2/sp/hubsites/index.html +2485 -0
- package/docs/v2/sp/index.html +2328 -0
- package/docs/v2/sp/items/index.html +2974 -0
- package/docs/v2/sp/lists/index.html +3387 -0
- package/docs/v2/sp/navigation/index.html +2535 -0
- package/docs/v2/sp/permissions/index.html +2338 -0
- package/docs/v2/sp/profiles/index.html +2806 -0
- package/docs/v2/sp/regional-settings/index.html +2394 -0
- package/docs/v2/sp/related-items/index.html +2417 -0
- package/docs/v2/sp/search/index.html +2474 -0
- package/docs/v2/sp/security/index.html +2432 -0
- package/docs/v2/sp/sharing/index.html +2589 -0
- package/docs/v2/sp/site-designs/index.html +2414 -0
- package/docs/v2/sp/site-groups/index.html +2504 -0
- package/docs/v2/sp/site-scripts/index.html +2433 -0
- package/docs/v2/sp/site-users/index.html +2641 -0
- package/docs/v2/sp/sites/index.html +2727 -0
- package/docs/v2/sp/social/index.html +2517 -0
- package/docs/v2/sp/sp-utilities-utility/index.html +2460 -0
- package/docs/v2/sp/subscriptions/index.html +2395 -0
- package/docs/v2/sp/taxonomy/index.html +2565 -0
- package/docs/v2/sp/tenant-properties/index.html +2286 -0
- package/docs/v2/sp/user-custom-actions/index.html +2424 -0
- package/docs/v2/sp/views/index.html +2652 -0
- package/docs/v2/sp/webs/index.html +4190 -0
- package/docs/v2/sp-addinhelpers/index.html +2274 -0
- package/docs/v2/sp-addinhelpers/sp-request-executor-client/index.html +2253 -0
- package/docs/v2/sp-addinhelpers/sp-rest-addin/index.html +2206 -0
- package/docs/v2/transition-guide/index.html +2435 -0
- package/mkdocs-requirements.txt +2 -0
- package/mkdocs.yml +188 -0
- package/package.json +96 -0
- package/packages/azidjsclient/index.ts +68 -0
- package/packages/azidjsclient/package.json +13 -0
- package/packages/azidjsclient/tsconfig.json +12 -0
- package/packages/core/behaviors/assign-from.ts +17 -0
- package/packages/core/behaviors/copy-from.ts +58 -0
- package/packages/core/extendable.ts +193 -0
- package/packages/core/index.ts +11 -0
- package/packages/core/moments.ts +117 -0
- package/packages/core/package.json +10 -0
- package/packages/core/storage.ts +274 -0
- package/packages/core/timeline.ts +387 -0
- package/packages/core/tsconfig.json +10 -0
- package/packages/core/util.ts +169 -0
- package/packages/graph/attachments/conversations.ts +14 -0
- package/packages/graph/attachments/index.ts +8 -0
- package/packages/graph/attachments/types.ts +37 -0
- package/packages/graph/batching.ts +408 -0
- package/packages/graph/behaviors/consistency-level.ts +17 -0
- package/packages/graph/behaviors/defaults.ts +41 -0
- package/packages/graph/behaviors/endpoint.ts +22 -0
- package/packages/graph/behaviors/graphbrowser.ts +38 -0
- package/packages/graph/behaviors/paged.ts +109 -0
- package/packages/graph/behaviors/spfx.ts +46 -0
- package/packages/graph/behaviors/telemetry.ts +19 -0
- package/packages/graph/bookings/funcs.ts +18 -0
- package/packages/graph/bookings/index.ts +62 -0
- package/packages/graph/bookings/types.ts +352 -0
- package/packages/graph/calendars/funcs.ts +58 -0
- package/packages/graph/calendars/groups.ts +19 -0
- package/packages/graph/calendars/index.ts +18 -0
- package/packages/graph/calendars/types.ts +73 -0
- package/packages/graph/calendars/users.ts +28 -0
- package/packages/graph/cloud-communications/index.ts +24 -0
- package/packages/graph/cloud-communications/types.ts +32 -0
- package/packages/graph/cloud-communications/users.ts +15 -0
- package/packages/graph/columns/addColumns.ts +28 -0
- package/packages/graph/columns/content-types.ts +44 -0
- package/packages/graph/columns/index.ts +14 -0
- package/packages/graph/columns/lists.ts +33 -0
- package/packages/graph/columns/sites.ts +32 -0
- package/packages/graph/columns/types.ts +24 -0
- package/packages/graph/contacts/index.ts +14 -0
- package/packages/graph/contacts/types.ts +126 -0
- package/packages/graph/contacts/users.ts +17 -0
- package/packages/graph/content-types/index.ts +11 -0
- package/packages/graph/content-types/lists.ts +44 -0
- package/packages/graph/content-types/sites.ts +70 -0
- package/packages/graph/content-types/types.ts +112 -0
- package/packages/graph/conversations/groups.ts +20 -0
- package/packages/graph/conversations/index.ts +19 -0
- package/packages/graph/conversations/types.ts +147 -0
- package/packages/graph/decorators.ts +164 -0
- package/packages/graph/directory-objects/index.ts +24 -0
- package/packages/graph/directory-objects/types.ts +94 -0
- package/packages/graph/fi.ts +46 -0
- package/packages/graph/graphqueryable.ts +193 -0
- package/packages/graph/groups/index.ts +25 -0
- package/packages/graph/groups/types.ts +130 -0
- package/packages/graph/index.ts +21 -0
- package/packages/graph/insights/index.ts +20 -0
- package/packages/graph/insights/types.ts +105 -0
- package/packages/graph/insights/users.ts +14 -0
- package/packages/graph/invitations/index.ts +22 -0
- package/packages/graph/invitations/types.ts +41 -0
- package/packages/graph/lists/drive.ts +21 -0
- package/packages/graph/lists/index.ts +10 -0
- package/packages/graph/lists/sites.ts +16 -0
- package/packages/graph/lists/types.ts +47 -0
- package/packages/graph/members/groups.ts +17 -0
- package/packages/graph/members/index.ts +8 -0
- package/packages/graph/members/types.ts +40 -0
- package/packages/graph/messages/index.ts +14 -0
- package/packages/graph/messages/types.ts +46 -0
- package/packages/graph/messages/users.ts +27 -0
- package/packages/graph/onedrive/funcs.ts +40 -0
- package/packages/graph/onedrive/groups.ts +33 -0
- package/packages/graph/onedrive/index.ts +48 -0
- package/packages/graph/onedrive/sites.ts +35 -0
- package/packages/graph/onedrive/types.ts +482 -0
- package/packages/graph/onedrive/users.ts +56 -0
- package/packages/graph/onenote/index.ts +16 -0
- package/packages/graph/onenote/types.ts +119 -0
- package/packages/graph/onenote/users.ts +14 -0
- package/packages/graph/operations.ts +22 -0
- package/packages/graph/outlook/index.ts +11 -0
- package/packages/graph/outlook/types.ts +58 -0
- package/packages/graph/outlook/users.ts +14 -0
- package/packages/graph/package.json +16 -0
- package/packages/graph/photos/groups.ts +14 -0
- package/packages/graph/photos/index.ts +7 -0
- package/packages/graph/photos/types.ts +33 -0
- package/packages/graph/photos/users.ts +14 -0
- package/packages/graph/planner/groups.ts +14 -0
- package/packages/graph/planner/index.ts +42 -0
- package/packages/graph/planner/types.ts +213 -0
- package/packages/graph/planner/users.ts +14 -0
- package/packages/graph/post-install.cjs +20 -0
- package/packages/graph/presets/all.ts +42 -0
- package/packages/graph/search/index.ts +18 -0
- package/packages/graph/search/types.ts +20 -0
- package/packages/graph/shares/index.ts +23 -0
- package/packages/graph/shares/types.ts +47 -0
- package/packages/graph/sites/group.ts +14 -0
- package/packages/graph/sites/index.ts +25 -0
- package/packages/graph/sites/types.ts +45 -0
- package/packages/graph/subscriptions/index.ts +24 -0
- package/packages/graph/subscriptions/types.ts +59 -0
- package/packages/graph/teams/index.ts +68 -0
- package/packages/graph/teams/types.ts +333 -0
- package/packages/graph/teams/users.ts +14 -0
- package/packages/graph/tsconfig.json +16 -0
- package/packages/graph/users/index.ts +34 -0
- package/packages/graph/users/types.ts +56 -0
- package/packages/graph/utils/type.ts +3 -0
- package/packages/logging/index.ts +145 -0
- package/packages/logging/listeners.ts +134 -0
- package/packages/logging/package.json +10 -0
- package/packages/logging/tsconfig.json +7 -0
- package/packages/msaljsclient/index.ts +40 -0
- package/packages/msaljsclient/package.json +12 -0
- package/packages/msaljsclient/tsconfig.json +12 -0
- package/packages/nodejs/behaviors/fetch.ts +130 -0
- package/packages/nodejs/behaviors/graphdefault.ts +50 -0
- package/packages/nodejs/behaviors/msal.ts +24 -0
- package/packages/nodejs/behaviors/spdefault.ts +45 -0
- package/packages/nodejs/behaviors/stream-parse.ts +7 -0
- package/packages/nodejs/index.ts +33 -0
- package/packages/nodejs/package.json +17 -0
- package/packages/nodejs/sp-extensions/stream.ts +136 -0
- package/packages/nodejs/tsconfig.json +28 -0
- package/packages/queryable/add-prop.ts +18 -0
- package/packages/queryable/behaviors/bearer-token.ts +15 -0
- package/packages/queryable/behaviors/browser-fetch.ts +131 -0
- package/packages/queryable/behaviors/caching-pessimistic.ts +67 -0
- package/packages/queryable/behaviors/caching.ts +149 -0
- package/packages/queryable/behaviors/cancelable.ts +264 -0
- package/packages/queryable/behaviors/inject-headers.ts +23 -0
- package/packages/queryable/behaviors/parsers.ts +134 -0
- package/packages/queryable/behaviors/resolvers.ts +28 -0
- package/packages/queryable/behaviors/timeout.ts +24 -0
- package/packages/queryable/index.ts +19 -0
- package/packages/queryable/invokable.ts +42 -0
- package/packages/queryable/operations.ts +32 -0
- package/packages/queryable/package.json +11 -0
- package/packages/queryable/queryable-factory.ts +19 -0
- package/packages/queryable/queryable.ts +239 -0
- package/packages/queryable/request-builders.ts +20 -0
- package/packages/queryable/tsconfig.json +11 -0
- package/packages/readme.md +21 -0
- package/packages/sp/appcatalog/index.ts +35 -0
- package/packages/sp/appcatalog/types.ts +176 -0
- package/packages/sp/appcatalog/web.ts +19 -0
- package/packages/sp/attachments/index.ts +11 -0
- package/packages/sp/attachments/item.ts +17 -0
- package/packages/sp/attachments/types.ts +95 -0
- package/packages/sp/batching.ts +483 -0
- package/packages/sp/behaviors/defaults.ts +38 -0
- package/packages/sp/behaviors/request-digest.ts +78 -0
- package/packages/sp/behaviors/spbrowser.ts +40 -0
- package/packages/sp/behaviors/spfx.ts +83 -0
- package/packages/sp/behaviors/telemetry.ts +35 -0
- package/packages/sp/clientside-pages/funcs.ts +27 -0
- package/packages/sp/clientside-pages/index.ts +27 -0
- package/packages/sp/clientside-pages/types.ts +1661 -0
- package/packages/sp/clientside-pages/web.ts +93 -0
- package/packages/sp/column-defaults/folder.ts +89 -0
- package/packages/sp/column-defaults/index.ts +8 -0
- package/packages/sp/column-defaults/list.ts +219 -0
- package/packages/sp/column-defaults/types.ts +19 -0
- package/packages/sp/comments/clientside-page.ts +120 -0
- package/packages/sp/comments/index.ts +14 -0
- package/packages/sp/comments/item.ts +77 -0
- package/packages/sp/comments/types.ts +160 -0
- package/packages/sp/content-types/index.ts +17 -0
- package/packages/sp/content-types/item.ts +17 -0
- package/packages/sp/content-types/list.ts +17 -0
- package/packages/sp/content-types/types.ts +181 -0
- package/packages/sp/content-types/web.ts +17 -0
- package/packages/sp/context-info/index.ts +40 -0
- package/packages/sp/decorators.ts +18 -0
- package/packages/sp/favorites/index.ts +32 -0
- package/packages/sp/favorites/types.ts +187 -0
- package/packages/sp/features/index.ts +11 -0
- package/packages/sp/features/site.ts +17 -0
- package/packages/sp/features/types.ts +73 -0
- package/packages/sp/features/web.ts +17 -0
- package/packages/sp/fi.ts +46 -0
- package/packages/sp/fields/index.ts +22 -0
- package/packages/sp/fields/list.ts +17 -0
- package/packages/sp/fields/types.ts +648 -0
- package/packages/sp/fields/web.ts +23 -0
- package/packages/sp/files/folder.ts +17 -0
- package/packages/sp/files/index.ts +25 -0
- package/packages/sp/files/item.ts +17 -0
- package/packages/sp/files/readable-file.ts +40 -0
- package/packages/sp/files/types.ts +771 -0
- package/packages/sp/files/web.ts +46 -0
- package/packages/sp/folders/index.ts +19 -0
- package/packages/sp/folders/item.ts +16 -0
- package/packages/sp/folders/list.ts +17 -0
- package/packages/sp/folders/types.ts +439 -0
- package/packages/sp/folders/web.ts +50 -0
- package/packages/sp/forms/index.ts +9 -0
- package/packages/sp/forms/list.ts +14 -0
- package/packages/sp/forms/types.ts +41 -0
- package/packages/sp/groupsitemanager/index.ts +18 -0
- package/packages/sp/groupsitemanager/types.ts +433 -0
- package/packages/sp/hubsites/index.ts +31 -0
- package/packages/sp/hubsites/site.ts +43 -0
- package/packages/sp/hubsites/types.ts +71 -0
- package/packages/sp/hubsites/web.ts +38 -0
- package/packages/sp/index.ts +24 -0
- package/packages/sp/items/get-all.ts +52 -0
- package/packages/sp/items/index.ts +18 -0
- package/packages/sp/items/list.ts +14 -0
- package/packages/sp/items/types.ts +405 -0
- package/packages/sp/lists/index.ts +23 -0
- package/packages/sp/lists/types.ts +851 -0
- package/packages/sp/lists/web.ts +68 -0
- package/packages/sp/navigation/index.ts +35 -0
- package/packages/sp/navigation/types.ts +243 -0
- package/packages/sp/navigation/web.ts +19 -0
- package/packages/sp/operations.ts +33 -0
- package/packages/sp/package.json +15 -0
- package/packages/sp/post-install.cjs +20 -0
- package/packages/sp/presets/all.ts +75 -0
- package/packages/sp/profiles/index.ts +30 -0
- package/packages/sp/profiles/types.ts +595 -0
- package/packages/sp/publishing-sitepageservice/index.ts +22 -0
- package/packages/sp/publishing-sitepageservice/types.ts +18 -0
- package/packages/sp/recycle-bin/index.ts +36 -0
- package/packages/sp/recycle-bin/types.ts +113 -0
- package/packages/sp/regional-settings/content-type.ts +11 -0
- package/packages/sp/regional-settings/field.ts +11 -0
- package/packages/sp/regional-settings/funcs.ts +10 -0
- package/packages/sp/regional-settings/index.ts +18 -0
- package/packages/sp/regional-settings/list.ts +11 -0
- package/packages/sp/regional-settings/types.ts +159 -0
- package/packages/sp/regional-settings/user-custom-actions.ts +11 -0
- package/packages/sp/regional-settings/web.ts +21 -0
- package/packages/sp/related-items/index.ts +7 -0
- package/packages/sp/related-items/types.ts +194 -0
- package/packages/sp/related-items/web.ts +22 -0
- package/packages/sp/search/index.ts +48 -0
- package/packages/sp/search/query.ts +254 -0
- package/packages/sp/search/suggest.ts +130 -0
- package/packages/sp/search/types.ts +480 -0
- package/packages/sp/security/funcs.ts +94 -0
- package/packages/sp/security/index.ts +21 -0
- package/packages/sp/security/item.ts +29 -0
- package/packages/sp/security/list.ts +29 -0
- package/packages/sp/security/types.ts +440 -0
- package/packages/sp/security/web.ts +34 -0
- package/packages/sp/sharing/file.ts +75 -0
- package/packages/sp/sharing/folder.ts +69 -0
- package/packages/sp/sharing/funcs.ts +258 -0
- package/packages/sp/sharing/index.ts +27 -0
- package/packages/sp/sharing/item.ts +53 -0
- package/packages/sp/sharing/types.ts +626 -0
- package/packages/sp/sharing/web.ts +109 -0
- package/packages/sp/site-designs/index.ts +29 -0
- package/packages/sp/site-designs/types.ts +456 -0
- package/packages/sp/site-designs/web.ts +41 -0
- package/packages/sp/site-groups/index.ts +11 -0
- package/packages/sp/site-groups/types.ts +133 -0
- package/packages/sp/site-groups/web.ts +73 -0
- package/packages/sp/site-scripts/index.ts +27 -0
- package/packages/sp/site-scripts/list.ts +27 -0
- package/packages/sp/site-scripts/types.ts +243 -0
- package/packages/sp/site-scripts/web.ts +24 -0
- package/packages/sp/site-users/index.ts +12 -0
- package/packages/sp/site-users/types.ts +195 -0
- package/packages/sp/site-users/web.ts +56 -0
- package/packages/sp/sites/index.ts +26 -0
- package/packages/sp/sites/types.ts +422 -0
- package/packages/sp/social/index.ts +33 -0
- package/packages/sp/social/types.ts +381 -0
- package/packages/sp/spqueryable.ts +244 -0
- package/packages/sp/sputilities/index.ts +23 -0
- package/packages/sp/sputilities/types.ts +197 -0
- package/packages/sp/subscriptions/index.ts +10 -0
- package/packages/sp/subscriptions/list.ts +18 -0
- package/packages/sp/subscriptions/types.ts +107 -0
- package/packages/sp/taxonomy/index.ts +50 -0
- package/packages/sp/taxonomy/types.ts +508 -0
- package/packages/sp/tsconfig.json +16 -0
- package/packages/sp/types.ts +283 -0
- package/packages/sp/user-custom-actions/index.ts +15 -0
- package/packages/sp/user-custom-actions/list.ts +18 -0
- package/packages/sp/user-custom-actions/site.ts +18 -0
- package/packages/sp/user-custom-actions/types.ts +133 -0
- package/packages/sp/user-custom-actions/web.ts +21 -0
- package/packages/sp/utils/encode-path-str.ts +29 -0
- package/packages/sp/utils/extract-web-url.ts +21 -0
- package/packages/sp/utils/file-names.ts +35 -0
- package/packages/sp/utils/metadata.ts +5 -0
- package/packages/sp/utils/odata-url-from.ts +42 -0
- package/packages/sp/utils/to-resource-path.ts +9 -0
- package/packages/sp/views/index.ts +14 -0
- package/packages/sp/views/list.ts +33 -0
- package/packages/sp/views/types.ts +210 -0
- package/packages/sp/webparts/file.ts +21 -0
- package/packages/sp/webparts/index.ts +11 -0
- package/packages/sp/webparts/types.ts +141 -0
- package/packages/sp/webs/index.ts +32 -0
- package/packages/sp/webs/types.ts +350 -0
- package/packages/sp-admin/index.ts +46 -0
- package/packages/sp-admin/office-tenant.ts +567 -0
- package/packages/sp-admin/package.json +13 -0
- package/packages/sp-admin/site-properties.ts +45 -0
- package/packages/sp-admin/tenant.ts +595 -0
- package/packages/sp-admin/tsconfig.json +20 -0
- package/packages/sp-admin/types.ts +1679 -0
- package/packages/tsconfig-watch.json +9 -0
- package/packages/tsconfig.json +37 -0
- package/pre-install.cjs +1 -0
- package/samples/custom-bundle-webpack/index.ts +33 -0
- package/samples/custom-bundle-webpack/package-lock.json +4601 -0
- package/samples/custom-bundle-webpack/package.json +18 -0
- package/samples/custom-bundle-webpack/readme.md +102 -0
- package/samples/custom-bundle-webpack/tsconfig.json +12 -0
- package/samples/custom-bundle-webpack/webpack.config.js +27 -0
- package/samples/nodejs-app/.vscode/launch.json +27 -0
- package/samples/nodejs-app/.vscode/settings.json +10 -0
- package/samples/nodejs-app/.vscode/tasks.json +22 -0
- package/samples/nodejs-app/index.ts +63 -0
- package/samples/nodejs-app/package-lock.json +259 -0
- package/samples/nodejs-app/package.json +21 -0
- package/samples/nodejs-app/readme.md +140 -0
- package/samples/nodejs-app/tsconfig.json +14 -0
- package/samples/nodejs-commonjs/package-lock.json +702 -0
- package/samples/nodejs-commonjs/package.json +21 -0
- package/samples/nodejs-commonjs/readme.md +58 -0
- package/samples/nodejs-commonjs/src/index.ts +23 -0
- package/samples/nodejs-commonjs/src/settings.ts +35 -0
- package/samples/nodejs-commonjs/tsconfig.json +35 -0
- package/samples/project-preset/README.md +73 -0
- package/samples/project-preset/package-lock.json +21097 -0
- package/samples/project-preset/package.json +29 -0
- package/samples/project-preset/teams/4530a515-8ba7-45bb-9a27-be06b33c59d4_color.png +0 -0
- package/samples/project-preset/teams/4530a515-8ba7-45bb-9a27-be06b33c59d4_outline.png +0 -0
- package/samples/readme.md +16 -0
- package/settings.example.js +57 -0
- package/test/args.ts +107 -0
- package/test/clean-subsite.ts +36 -0
- package/test/core/assumptions.ts +99 -0
- package/test/core/storage.ts +60 -0
- package/test/core/timeline.ts +205 -0
- package/test/core/util.ts +205 -0
- package/test/graph/assets/testconvert.docx +0 -0
- package/test/graph/batch.ts +125 -0
- package/test/graph/calendars.ts +234 -0
- package/test/graph/columns.ts +247 -0
- package/test/graph/contacts.ts +254 -0
- package/test/graph/content-types.ts +206 -0
- package/test/graph/directoryobjects.ts +115 -0
- package/test/graph/groups.ts +130 -0
- package/test/graph/lists.ts +72 -0
- package/test/graph/onedrive.ts +365 -0
- package/test/graph/outlook.ts +95 -0
- package/test/graph/paging.ts +91 -0
- package/test/graph/planner.ts +160 -0
- package/test/graph/querable.ts +97 -0
- package/test/graph/search.ts +4 -0
- package/test/graph/shares.ts +26 -0
- package/test/graph/sites.ts +40 -0
- package/test/graph/teams.ts +76 -0
- package/test/graph/utilities/getTestingGraphSPSite.ts +27 -0
- package/test/graph/utilities/getValidUser.ts +37 -0
- package/test/load-settings.ts +103 -0
- package/test/logging/logging.ts +86 -0
- package/test/mocha-root-hooks.ts +227 -0
- package/test/nodejs/sp-extensions.ts +86 -0
- package/test/pnp-test.ts +60 -0
- package/test/queryable/add-prop.ts +24 -0
- package/test/queryable/behaviors.ts +188 -0
- package/test/queryable/invokable.ts +35 -0
- package/test/queryable/queryable.ts +118 -0
- package/test/sp/alias.ts +46 -0
- package/test/sp/appcatalog.ts +142 -0
- package/test/sp/assets/helloworld.sppkg +0 -0
- package/test/sp/assets/sample_file.jpg +0 -0
- package/test/sp/attachments.ts +134 -0
- package/test/sp/batch.ts +362 -0
- package/test/sp/clientside-pages.ts +426 -0
- package/test/sp/column-defaults.ts +225 -0
- package/test/sp/comments.ts +202 -0
- package/test/sp/content-types.ts +68 -0
- package/test/sp/favorites.ts +2 -0
- package/test/sp/features.ts +201 -0
- package/test/sp/fields.ts +396 -0
- package/test/sp/files.ts +338 -0
- package/test/sp/folders.ts +242 -0
- package/test/sp/forms.ts +22 -0
- package/test/sp/groupsitemanager.ts +88 -0
- package/test/sp/hubsites.ts +41 -0
- package/test/sp/items.ts +179 -0
- package/test/sp/lists.ts +319 -0
- package/test/sp/navigation.ts +167 -0
- package/test/sp/profiles.ts +2 -0
- package/test/sp/query-escaping.ts +94 -0
- package/test/sp/recycle-bin.ts +1 -0
- package/test/sp/regional-settings.ts +58 -0
- package/test/sp/related-items.ts +94 -0
- package/test/sp/search.ts +39 -0
- package/test/sp/security.ts +90 -0
- package/test/sp/sharing.ts +313 -0
- package/test/sp/site-designs.ts +224 -0
- package/test/sp/site-groups.ts +98 -0
- package/test/sp/site-scripts.ts +162 -0
- package/test/sp/site-users.ts +93 -0
- package/test/sp/sites.ts +156 -0
- package/test/sp/social.ts +2 -0
- package/test/sp/spfx.ts +52 -0
- package/test/sp/sputilities.ts +78 -0
- package/test/sp/subscriptions.ts +64 -0
- package/test/sp/taxonomy.ts +178 -0
- package/test/sp/user-custom-actions.ts +31 -0
- package/test/sp/views.ts +117 -0
- package/test/sp/webparts.ts +38 -0
- package/test/sp/webs.ts +249 -0
- package/test/test-invokable-props.ts +35 -0
- package/test/test-props.ts +90 -0
- package/test/test-recording.ts +171 -0
- package/test/tsconfig.json +18 -0
- package/tools/buildsystem/package-lock.json +4404 -0
- package/tools/buildsystem/package.json +56 -0
- package/tools/buildsystem/readme.md +23 -0
- package/tools/config.js +34 -0
- package/tools/local-module-resolver/cjs.ts +33 -0
- package/tools/local-module-resolver/esm-debug.ts +2 -0
- package/tools/local-module-resolver/esm-test.ts +2 -0
- package/tools/local-module-resolver/esm.ts +112 -0
- package/tools/local-module-resolver/readme.md +8 -0
- package/tsconfig.buildsystem.json +17 -0
- package/tsconfig.json +42 -0
@@ -0,0 +1,245 @@
|
|
1
|
+
# Error Handling
|
2
|
+
|
3
|
+
This article describes the most common types of errors generated by the library. It provides context on the error object, and ways to handle the errors. As always you should tailor your error handling to what your application needs. These are ideas that can be applied to many different patterns.
|
4
|
+
|
5
|
+
> For 429, 503, and 504 errors we include retry logic within the library
|
6
|
+
|
7
|
+
## The HttpRequestError
|
8
|
+
|
9
|
+
All errors resulting from executed web requests will be returned as an `HttpRequestError` object which extends the base `Error`. In addition to the standard Error properties it has some other properties to help you figure out what went wrong. We used a custom error to attempt to normalize what can be a wide assortment of http related errors, while also seeking to provide as much information to library consumers as possible.
|
10
|
+
|
11
|
+
|Property Name|Description|
|
12
|
+
|---|---|
|
13
|
+
|name|Standard Error.name property. Always 'Error'|
|
14
|
+
|message|Normalized string containing the status, status text, and the full response text|
|
15
|
+
|stack|The callstack producing the error|
|
16
|
+
|isHttpRequestError|Always true, allows you to reliably determine if you have an HttpRequestError instance|
|
17
|
+
|response|Unread copy of the Response object resulting in the thrown error|
|
18
|
+
|status|The Response.status value (such as 404)
|
19
|
+
|statusText|The Response.statusText value (such as 'Not Found')
|
20
|
+
|
21
|
+
## Basic Handling
|
22
|
+
|
23
|
+
For all operations involving a web request you should account for the possibility they might fail. That failure might be transient or permanent - you won't know until they happen 😉. The most basic type of error handling involves a simple try-catch when using the [async/await promises pattern](https://javascript.info/async-await).
|
24
|
+
|
25
|
+
```TypeScript
|
26
|
+
import { sp } from "@pnp/sp";
|
27
|
+
import "@pnp/sp/webs";
|
28
|
+
import "@pnp/sp/lists/web";
|
29
|
+
|
30
|
+
try {
|
31
|
+
|
32
|
+
// get a list that doesn't exist
|
33
|
+
const w = await sp.web.lists.getByTitle("no")();
|
34
|
+
|
35
|
+
} catch (e) {
|
36
|
+
|
37
|
+
console.error(e);
|
38
|
+
}
|
39
|
+
```
|
40
|
+
|
41
|
+
This will produce output like:
|
42
|
+
|
43
|
+
```console
|
44
|
+
Error making HttpClient request in queryable [404] Not Found ::> {"odata.error":{"code":"-1, System.ArgumentException","message":{"lang":"en-US","value":"List 'no' does not exist at site with URL 'https://tenant.sharepoint.com/sites/dev'."}}} Data: {"response":{"size":0,"timeout":0},"status":404,"statusText":"Not Found","isHttpRequestError":true}
|
45
|
+
```
|
46
|
+
|
47
|
+
This is very descriptive and provides full details as to what happened, but you might want to handle things a little more cleanly.
|
48
|
+
|
49
|
+
## Reading the Response
|
50
|
+
|
51
|
+
In some cases the response body will have additional details such as a localized error messages which can be nicer to display rather than our normalized string. You can read the response directly and process it however you desire:
|
52
|
+
|
53
|
+
```TypeScript
|
54
|
+
import { sp } from "@pnp/sp";
|
55
|
+
import "@pnp/sp/webs";
|
56
|
+
import "@pnp/sp/lists/web";
|
57
|
+
import { HttpRequestError } from "@pnp/queryable";
|
58
|
+
|
59
|
+
try {
|
60
|
+
|
61
|
+
// get a list that doesn't exist
|
62
|
+
const w = await sp.web.lists.getByTitle("no")();
|
63
|
+
|
64
|
+
} catch (e) {
|
65
|
+
|
66
|
+
// are we dealing with an HttpRequestError?
|
67
|
+
if (e?.isHttpRequestError) {
|
68
|
+
|
69
|
+
// we can read the json from the response
|
70
|
+
const json = await (<HttpRequestError>e).response.json();
|
71
|
+
|
72
|
+
// if we have a value property we can show it
|
73
|
+
console.log(typeof json["odata.error"] === "object" ? json["odata.error"].message.value : e.message);
|
74
|
+
|
75
|
+
// add of course you have access to the other properties and can make choices on how to act
|
76
|
+
if ((<HttpRequestError>e).status === 404) {
|
77
|
+
console.error((<HttpRequestError>e).statusText);
|
78
|
+
// maybe create the resource, or redirect, or fallback to a secondary data source
|
79
|
+
// just ideas, handle any of the status codes uniquely as needed
|
80
|
+
}
|
81
|
+
|
82
|
+
} else {
|
83
|
+
// not an HttpRequestError so we just log message
|
84
|
+
console.log(e.message);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
```
|
88
|
+
|
89
|
+
## Logging errors
|
90
|
+
|
91
|
+
Using the [PnPjs Logging Framework](../logging/index.md) you can directly pass the error object and the normalized message will be logged. These techniques can be applied to any logging framework.
|
92
|
+
|
93
|
+
```TypeScript
|
94
|
+
import { Logger } from "@pnp/logging";
|
95
|
+
import { sp } from "@pnp/sp";
|
96
|
+
import "@pnp/sp/webs";
|
97
|
+
import "@pnp/sp/lists/web";
|
98
|
+
|
99
|
+
try {
|
100
|
+
// get a list that doesn't exist
|
101
|
+
const w = await sp.web.lists.getByTitle("no")();
|
102
|
+
} catch (e) {
|
103
|
+
|
104
|
+
Logger.error(e);
|
105
|
+
}
|
106
|
+
```
|
107
|
+
|
108
|
+
You may want to read the response and customize the message as described above:
|
109
|
+
|
110
|
+
```TypeScript
|
111
|
+
import { Logger } from "@pnp/logging";
|
112
|
+
import { sp } from "@pnp/sp";
|
113
|
+
import "@pnp/sp/webs";
|
114
|
+
import "@pnp/sp/lists/web";
|
115
|
+
import { HttpRequestError } from "@pnp/queryable";
|
116
|
+
|
117
|
+
try {
|
118
|
+
// get a list that doesn't exist
|
119
|
+
const w = await sp.web.lists.getByTitle("no")();
|
120
|
+
} catch (e) {
|
121
|
+
|
122
|
+
if (e?.isHttpRequestError) {
|
123
|
+
|
124
|
+
// we can read the json from the response
|
125
|
+
const data = await (<HttpRequestError>e).response.json();
|
126
|
+
|
127
|
+
// parse this however you want
|
128
|
+
const message = typeof data["odata.error"] === "object" ? data["odata.error"].message.value : e.message;
|
129
|
+
|
130
|
+
// we use the status to determine a custom logging level
|
131
|
+
const level: LogLevel = (<HttpRequestError>e).status === 404 ? LogLevel.Warning : LogLevel.Info;
|
132
|
+
|
133
|
+
// create a custom log entry
|
134
|
+
Logger.log({
|
135
|
+
data,
|
136
|
+
level,
|
137
|
+
message,
|
138
|
+
});
|
139
|
+
|
140
|
+
} else {
|
141
|
+
// not an HttpRequestError so we just log message
|
142
|
+
Logger.error(e);
|
143
|
+
}
|
144
|
+
}
|
145
|
+
```
|
146
|
+
|
147
|
+
## Putting it All Together
|
148
|
+
|
149
|
+
After reviewing the above section you might have thought it seems like a lot of work to include all that logic for every error. One approach is to establish a single function you use application wide to process errors. This allows all the error handling logic to be easily updated and consistent across the application.
|
150
|
+
|
151
|
+
### errorhandler.ts
|
152
|
+
|
153
|
+
```TypeScript
|
154
|
+
import { Logger } from "@pnp/logging";
|
155
|
+
import { HttpRequestError } from "@pnp/queryable";
|
156
|
+
import { hOP } from "@pnp/core";
|
157
|
+
|
158
|
+
export async function handleError(e: Error | HttpRequestError): Promise<void> {
|
159
|
+
|
160
|
+
if (hOP(e, "isHttpRequestError")) {
|
161
|
+
|
162
|
+
// we can read the json from the response
|
163
|
+
const data = await (<HttpRequestError>e).response.json();
|
164
|
+
|
165
|
+
// parse this however you want
|
166
|
+
const message = typeof data["odata.error"] === "object" ? data["odata.error"].message.value : e.message;
|
167
|
+
|
168
|
+
// we use the status to determine a custom logging level
|
169
|
+
const level: LogLevel = (<HttpRequestError>e).status === 404 ? LogLevel.Warning : LogLevel.Info;
|
170
|
+
|
171
|
+
// create a custom log entry
|
172
|
+
Logger.log({
|
173
|
+
data,
|
174
|
+
level,
|
175
|
+
message,
|
176
|
+
});
|
177
|
+
|
178
|
+
} else {
|
179
|
+
// not an HttpRequestError so we just log message
|
180
|
+
Logger.error(e);
|
181
|
+
}
|
182
|
+
}
|
183
|
+
```
|
184
|
+
|
185
|
+
### web-request.ts
|
186
|
+
|
187
|
+
```TypeScript
|
188
|
+
import { sp } from "@pnp/sp";
|
189
|
+
import "@pnp/sp/webs";
|
190
|
+
import "@pnp/sp/lists/web";
|
191
|
+
import { handleError } from "./errorhandler";
|
192
|
+
|
193
|
+
try {
|
194
|
+
|
195
|
+
const w = await sp.web.lists.getByTitle("no")();
|
196
|
+
|
197
|
+
} catch (e) {
|
198
|
+
|
199
|
+
await handleError(e);
|
200
|
+
}
|
201
|
+
```
|
202
|
+
|
203
|
+
### web-request2.ts
|
204
|
+
|
205
|
+
```TypeScript
|
206
|
+
import { sp } from "@pnp/sp";
|
207
|
+
import "@pnp/sp/webs";
|
208
|
+
import "@pnp/sp/lists/web";
|
209
|
+
import { handleError } from "./errorhandler";
|
210
|
+
|
211
|
+
try {
|
212
|
+
|
213
|
+
const w = await sp.web.lists();
|
214
|
+
|
215
|
+
} catch (e) {
|
216
|
+
|
217
|
+
await handleError(e);
|
218
|
+
}
|
219
|
+
```
|
220
|
+
|
221
|
+
## Building a Custom Error Handler
|
222
|
+
|
223
|
+
In Version 3 the library introduced the concept of a Timeline object and moments. One of the broadcast moments is error. To create your own custom error handler you can define a special handler for the error moment something like the following:
|
224
|
+
|
225
|
+
```TypeScript
|
226
|
+
|
227
|
+
//Custom Error Behavior
|
228
|
+
export function CustomError(): TimelinePipe<Queryable> {
|
229
|
+
|
230
|
+
return (instance: Queryable) => {
|
231
|
+
|
232
|
+
instance.on.error((err) => {
|
233
|
+
if (logging) {
|
234
|
+
console.log(`🛑 PnPjs Testing Error - ${err.toString()}`);
|
235
|
+
}
|
236
|
+
});
|
237
|
+
|
238
|
+
return instance;
|
239
|
+
};
|
240
|
+
}
|
241
|
+
|
242
|
+
//Adding our CustomError behavior to our timline
|
243
|
+
|
244
|
+
const sp = spfi().using(SPDefault(this.context)).using(CustomError());
|
245
|
+
```
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Invokables
|
2
|
+
|
3
|
+
For people who have been using the library since the early days you are familiar with the need to use the `()` method to invoke a method chain: Starting with v3 this is no longer possible, you must invoke the object directly to execute the default action for that class:
|
4
|
+
|
5
|
+
```TypeScript
|
6
|
+
const lists = await sp.web.lists();
|
7
|
+
```
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Nightly Builds
|
2
|
+
|
3
|
+
Starting with version 3 we support nightly builds, which are built from the version-3 branch each evening and include all the changes merged ahead of a particular build. These are a great way to try out new features before a release, or get a fix or enhancement without waiting for the monthly builds.
|
4
|
+
|
5
|
+
You can install the nightly builds using the below examples. While we only show examples for `sp` and `graph` nightly builds are available for all packages.
|
6
|
+
|
7
|
+
### SP
|
8
|
+
|
9
|
+
```CMD
|
10
|
+
npm install @pnp/sp@v3nightly --save
|
11
|
+
```
|
12
|
+
|
13
|
+
### Microsoft Graph
|
14
|
+
|
15
|
+
```CMD
|
16
|
+
npm install @pnp/graph@v3nightly --save
|
17
|
+
```
|
18
|
+
|
19
|
+
> Nightly builds are NOT monthly releases and aren't tested as deeply. We never intend to release broken code, but nightly builds may contain some code that is not entirely final or fully reviewed. As always if you encounter an issue [please let us know](https://github.com/pnp/pnpjs/issues), especially for nightly builds so we can be sure to address it before the next monthly release.
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# Project Config/Services Setup
|
2
|
+
|
3
|
+
Due to the introduction of [selective imports](./selective-imports.md) it can be somewhat frustrating to import all of the needed dependencies every time you need them across many files. Instead the preferred approach, especially for SPFx, is to create a project config file or establish a service to manage your PnPjs interfaces. Doing so centralizes the imports, configuration, and optionally extensions to PnPjs in a single place.
|
4
|
+
|
5
|
+
> If you have multiple projects that share dependencies on PnPjs you can benefit from creating a [custom bundle](./custom-bundle.md) and using them across your projects.
|
6
|
+
|
7
|
+
These steps reference an [SPFx](https://docs.microsoft.com/sharepoint/dev/spfx/sharepoint-framework-overview) solution, but apply to any solution.
|
8
|
+
|
9
|
+
## Using a config file
|
10
|
+
|
11
|
+
Within the src directory create a new file named `pnpjs-config.ts` and copy in the below content.
|
12
|
+
|
13
|
+
```TypeScript
|
14
|
+
import { WebPartContext } from "@microsoft/sp-webpart-base";
|
15
|
+
|
16
|
+
// import pnp, pnp logging system, and any other selective imports needed
|
17
|
+
import { spfi, SPFI, SPFx } from "@pnp/sp";
|
18
|
+
import { LogLevel, PnPLogging } from "@pnp/logging";
|
19
|
+
import "@pnp/sp/webs";
|
20
|
+
import "@pnp/sp/lists";
|
21
|
+
import "@pnp/sp/items";
|
22
|
+
import "@pnp/sp/batching";
|
23
|
+
|
24
|
+
var _sp: SPFI = null;
|
25
|
+
|
26
|
+
export const getSP = (context?: WebPartContext): SPFI => {
|
27
|
+
if (context != null) {
|
28
|
+
//You must add the @pnp/logging package to include the PnPLogging behavior it is no longer a peer dependency
|
29
|
+
// The LogLevel set's at what level a message will be written to the console
|
30
|
+
_sp = spfi().using(SPFx(context)).using(PnPLogging(LogLevel.Warning));
|
31
|
+
}
|
32
|
+
return _sp;
|
33
|
+
};
|
34
|
+
```
|
35
|
+
|
36
|
+
To initialize the configuration, from the `onInit` function (or whatever function runs first in your code) make a call to getSP passing in the SPFx context object (or whatever configuration you would require for your setup).
|
37
|
+
|
38
|
+
```TypeScript
|
39
|
+
protected async onInit(): Promise<void> {
|
40
|
+
this._environmentMessage = this._getEnvironmentMessage();
|
41
|
+
|
42
|
+
super.onInit();
|
43
|
+
|
44
|
+
//Initialize our _sp object that we can then use in other packages without having to pass around the context.
|
45
|
+
// Check out pnpjsConfig.ts for an example of a project setup file.
|
46
|
+
getSP(this.context);
|
47
|
+
}
|
48
|
+
```
|
49
|
+
|
50
|
+
Now you can consume your configured `_sp` object from anywhere else in your code by simply referencing the `pnpjs-presets.ts` file via an import statement and then getting a local instance of the `_sp` object using the `getSP()` method without passing any context.
|
51
|
+
|
52
|
+
```TypeScript
|
53
|
+
import { getSP } from './pnpjs-config.ts';
|
54
|
+
...
|
55
|
+
export default class PnPjsExample extends React.Component<IPnPjsExampleProps, IIPnPjsExampleState> {
|
56
|
+
|
57
|
+
private _sp: SPFI;
|
58
|
+
|
59
|
+
constructor(props: IPnPjsExampleProps) {
|
60
|
+
super(props);
|
61
|
+
// set initial state
|
62
|
+
this.state = {
|
63
|
+
items: [],
|
64
|
+
errors: []
|
65
|
+
};
|
66
|
+
this._sp = getSP();
|
67
|
+
}
|
68
|
+
|
69
|
+
...
|
70
|
+
|
71
|
+
}
|
72
|
+
```
|
73
|
+
|
74
|
+
### Use a service class
|
75
|
+
|
76
|
+
Because you do not have full access to the context object within a service you need to setup things a little differently.
|
77
|
+
|
78
|
+
```TypeScript
|
79
|
+
import { ServiceKey, ServiceScope } from "@microsoft/sp-core-library";
|
80
|
+
import { PageContext } from "@microsoft/sp-page-context";
|
81
|
+
import { AadTokenProviderFactory } from "@microsoft/sp-http";
|
82
|
+
import { spfi, SPFI, SPFx as spSPFx } from "@pnp/sp";
|
83
|
+
import { graphfi, GraphFI, SPFx as gSPFx } from "@pnp/graph";
|
84
|
+
import "@pnp/sp/webs";
|
85
|
+
import "@pnp/sp/lists/web";
|
86
|
+
|
87
|
+
export interface ISampleService {
|
88
|
+
getLists(): Promise<any[]>;
|
89
|
+
}
|
90
|
+
|
91
|
+
export class SampleService {
|
92
|
+
|
93
|
+
public static readonly serviceKey: ServiceKey<ISampleService> = ServiceKey.create<ISampleService>('SPFx:SampleService', SampleService);
|
94
|
+
private _sp: SPFI;
|
95
|
+
private _graph: GraphFI;
|
96
|
+
|
97
|
+
constructor(serviceScope: ServiceScope) {
|
98
|
+
|
99
|
+
serviceScope.whenFinished(() => {
|
100
|
+
|
101
|
+
const pageContext = serviceScope.consume(PageContext.serviceKey);
|
102
|
+
const aadTokenProviderFactory = serviceScope.consume(AadTokenProviderFactory.serviceKey);
|
103
|
+
|
104
|
+
//SharePoint
|
105
|
+
this._sp = spfi().using(spSPFx({ pageContext }));
|
106
|
+
|
107
|
+
//Graph
|
108
|
+
this._graph = graphfi().using(gSPFx({ aadTokenProviderFactory }));
|
109
|
+
}
|
110
|
+
|
111
|
+
public getLists(): Promise<any[]> {
|
112
|
+
return this._sp.web.lists();
|
113
|
+
}
|
114
|
+
}
|
115
|
+
```
|
116
|
+
|
117
|
+
Depending on the architecture of your solution you can also opt to export the service as a global. If you choose this route you would need to modify the service to create an Init function where you would pass the service scope instead of doing so in the constructor. You would then export a constant that creates a global instance of the service.
|
118
|
+
|
119
|
+
```ts
|
120
|
+
export const mySampleService = new SampleService();
|
121
|
+
```
|
122
|
+
|
123
|
+
For a full sample, please see our [PnPjs Version 3 Sample Project](https://github.com/pnp/sp-dev-fx-webparts/tree/main/samples/react-pnp-js-sample)
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# Selective Imports
|
2
|
+
|
3
|
+
As the libraries have grown to support more of the SharePoint and Graph API they have also grown in size. On one hand this is good as more functionality becomes available but you had to include lots of code you didn't use if you were only doing simple operations. To solve this we introduced selective imports. This allows you to only import the parts of the sp or graph library you need, allowing you to greatly reduce your overall solution bundle size - and enables [treeshaking](https://github.com/rollup/rollup#tree-shaking).
|
4
|
+
|
5
|
+
This concept works well with [custom bundling](./custom-bundle.md) to create a shared package tailored exactly to your needs.
|
6
|
+
|
7
|
+
If you would prefer to not worry about selective imports please see the section on [presets](#presets).
|
8
|
+
|
9
|
+
> A quick note on how TypeScript handles type only imports. If you have a line like `import { IWeb } from "@pnp/sp/webs"` everything will transpile correctly but you will get runtime errors because TS will see that line as a type only import and drop it. You need to include both `import { IWeb } from "@pnp/sp/webs"` and `import "@pnp/sp/webs"` to ensure the webs functionality is correctly included. You can see this in the last example below.
|
10
|
+
|
11
|
+
```TypeScript
|
12
|
+
// the sp var now has almost nothing attached at import time and relies on
|
13
|
+
|
14
|
+
// we need to import each of the pieces we need to "attach" them for chaining
|
15
|
+
// here we are importing the specific sub modules we need and attaching the functionality for lists to web and items to list
|
16
|
+
import "@pnp/sp/webs";
|
17
|
+
import "@pnp/sp/lists/web";
|
18
|
+
import "@pnp/sp/items/list";
|
19
|
+
|
20
|
+
// placeholder for fully configuring the sp interface
|
21
|
+
const sp = spfi();
|
22
|
+
|
23
|
+
const itemData = await sp.web.lists.getById('00000000-0000-0000-0000-000000000000').items.getById(1)();
|
24
|
+
```
|
25
|
+
|
26
|
+
Above we are being very specific in what we are importing, but you can also import entire sub-modules and be slightly less specific
|
27
|
+
|
28
|
+
```TypeScript
|
29
|
+
// the sp var now has almost nothing attached at import time and relies on
|
30
|
+
|
31
|
+
// we need to import each of the pieces we need to "attach" them for chaining
|
32
|
+
// here we are importing the specific sub modules we need and attaching the functionality for lists to web and items to list
|
33
|
+
import "@pnp/sp/webs";
|
34
|
+
import "@pnp/sp/lists";
|
35
|
+
import "@pnp/sp/items";
|
36
|
+
|
37
|
+
// placeholder for fully configuring the sp interface
|
38
|
+
const sp = spfi();
|
39
|
+
|
40
|
+
const itemData = await sp.web.lists.getById('00000000-0000-0000-0000-000000000000').items.getById(1)();
|
41
|
+
```
|
42
|
+
|
43
|
+
The above two examples both work just fine but you may end up with slightly smaller bundle sizes using the first. Consider this example:
|
44
|
+
|
45
|
+
```TypeScript
|
46
|
+
// this import statement will attach content-type functionality to list, web, and item
|
47
|
+
import "@pnp/sp/content-types";
|
48
|
+
|
49
|
+
// this import statement will only attach content-type functionality to web
|
50
|
+
import "@pnp/sp/content-types/web";
|
51
|
+
```
|
52
|
+
|
53
|
+
If you only need to access content types on the web object you can reduce size by only importing that piece.
|
54
|
+
|
55
|
+
The below example shows the need to import types and module augmentation separately.
|
56
|
+
|
57
|
+
```TypeScript
|
58
|
+
// this will fail
|
59
|
+
import "@pnp/sp/webs";
|
60
|
+
import { IList } from "@pnp/sp/lists";
|
61
|
+
|
62
|
+
// do this instead
|
63
|
+
import { sp } from "@pnp/sp";
|
64
|
+
import "@pnp/sp/webs";
|
65
|
+
import "@pnp/sp/lists";
|
66
|
+
import { IList } from "@pnp/sp/lists";
|
67
|
+
|
68
|
+
// placeholder for fully configuring the sp interface
|
69
|
+
const sp = spfi();
|
70
|
+
|
71
|
+
const lists = await sp.web.lists();
|
72
|
+
```
|
73
|
+
|
74
|
+
## Presets
|
75
|
+
|
76
|
+
Sometimes you don't care as much about bundle size - testing or node development for example. In these cases we have provided what we are calling presets to allow you to skip importing each module individually. Both libraries supply an "all" preset that will attach all of the available library functionality.
|
77
|
+
|
78
|
+
> While the presets provided may be useful, we encourage you to look at making your own [project presets](./project-preset.md) or [custom bundles](./custom-bundle.md) as a preferred solution. Use of the presets in client-side solutions is not recommended.
|
79
|
+
|
80
|
+
## SP
|
81
|
+
|
82
|
+
```TypeScript
|
83
|
+
import "@pnp/sp/presets/all";
|
84
|
+
|
85
|
+
|
86
|
+
// placeholder for fully configuring the sp interface
|
87
|
+
const sp = spfi();
|
88
|
+
|
89
|
+
// sp.* will have all of the library functionality bound to it, tree shaking will not work
|
90
|
+
const lists = await sp.web.lists();
|
91
|
+
```
|
92
|
+
|
93
|
+
## Graph
|
94
|
+
|
95
|
+
The graph library contains a single preset, "all" mimicking the v1 structure.
|
96
|
+
|
97
|
+
```TypeScript
|
98
|
+
import "@pnp/graph/presets/all";
|
99
|
+
import { graphfi } from "@pnp/graph";
|
100
|
+
|
101
|
+
// placeholder for fully configuring the sp interface
|
102
|
+
const graph = graphfi();
|
103
|
+
|
104
|
+
// graph.* will have all of the library functionality bound to it, tree shaking will not work
|
105
|
+
const me = await graph.me();
|
106
|
+
```
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Typing Return Objects
|
2
|
+
|
3
|
+
Whenever you make a request of the library for data from an object and utilize the `select` method to reduce the size of the objects in the payload its preferable in TypeScript to be able to type that returned object. The library provides you a method to do so by using TypeScript's Generics declaration.
|
4
|
+
|
5
|
+
By defining the objects type in the <> after the closure of the select method the resulting object is typed.
|
6
|
+
|
7
|
+
```TypesScript
|
8
|
+
.select("Title")<{Title: string}>()
|
9
|
+
```
|
10
|
+
|
11
|
+
Below are some examples of typing the return payload:
|
12
|
+
|
13
|
+
```TypeScript
|
14
|
+
const _sp = spfi().using(SPFx(this.context));
|
15
|
+
|
16
|
+
//Typing the Title property of a field
|
17
|
+
const field = await _sp.site.rootWeb.fields.getById(titleFieldId).select("Title")<{ Title: string }>();
|
18
|
+
|
19
|
+
//Typing the ParentWebUrl property of the selected list.
|
20
|
+
const testList = await _sp.web.lists.getByTitle('MyList').select("ParentWebUrl")<{ ParentWebUrl: string }>();
|
21
|
+
```
|
22
|
+
|
23
|
+
> There have been discussions in the past around auto-typing based on select and the expected properties of the return object. We haven't done so for a few reasons: there is no even mildly complex way to account for all the possibilities expand introduces to selects, and if we "ignore" expand it effectively makes the select typings back to "any". Looking at template types etc, we haven't yet seen a way to do this that makes it worth the effort and doesn't introduce some other limitation or confusion.
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# Writing Tests
|
2
|
+
|
3
|
+
With version 2 we have made a significant effort to improve out test coverage. To keep that up, all changes submitted will require one or more tests be included. For new functionality at least a basic test that the method executes is required. For bug fixes please include a test that would have caught the bug (i.e. fail before your fix) and passes with your fix in place.
|
4
|
+
|
5
|
+
## How to write Tests
|
6
|
+
|
7
|
+
We use [Mocha](https://mochajs.org/) and [Chai](https://www.chaijs.com/) for our testing framework. You can see many examples of writing tests within the ./test folder. Here is a sample with extra comments to help explain what's happening, taken from [./test/sp/items.ts](https://github.com/pnp/pnpjs/blob/main/test/sp/items.ts):
|
8
|
+
|
9
|
+
```TypeScript
|
10
|
+
import { getRandomString } from "@pnp/core";
|
11
|
+
import { testSettings } from "../main";
|
12
|
+
import { expect } from "chai";
|
13
|
+
import { sp } from "@pnp/sp";
|
14
|
+
import "@pnp/sp/lists/web";
|
15
|
+
import "@pnp/sp/items/list";
|
16
|
+
import { IList } from "@pnp/sp/lists";
|
17
|
+
|
18
|
+
describe("Items", () => {
|
19
|
+
|
20
|
+
// any tests that make a web request should be withing a block checking if web tests are enabled
|
21
|
+
if (testSettings.enableWebTests) {
|
22
|
+
|
23
|
+
// a block scoped var we will use across our tests
|
24
|
+
let list: IList = null;
|
25
|
+
|
26
|
+
// we use the before block to setup
|
27
|
+
// executed before all the tests in this block, see the mocha docs for more details
|
28
|
+
// mocha prefers using function vs arrow functions and this is recommended
|
29
|
+
before(async function () {
|
30
|
+
|
31
|
+
// execute a request to ensure we have a list
|
32
|
+
const ler = await sp.web.lists.ensure("ItemTestList", "Used to test item operations");
|
33
|
+
list = ler.list;
|
34
|
+
|
35
|
+
// in this case we want to have some items in the list for testing so we add those
|
36
|
+
// only if the list was just created
|
37
|
+
if (ler.created) {
|
38
|
+
|
39
|
+
// add a few items to get started
|
40
|
+
const batch = sp.web.createBatch();
|
41
|
+
list.items.inBatch(batch).add({ Title: `Item ${getRandomString(4)}` });
|
42
|
+
list.items.inBatch(batch).add({ Title: `Item ${getRandomString(4)}` });
|
43
|
+
list.items.inBatch(batch).add({ Title: `Item ${getRandomString(4)}` });
|
44
|
+
list.items.inBatch(batch).add({ Title: `Item ${getRandomString(4)}` });
|
45
|
+
list.items.inBatch(batch).add({ Title: `Item ${getRandomString(4)}` });
|
46
|
+
await batch.execute();
|
47
|
+
}
|
48
|
+
});
|
49
|
+
|
50
|
+
// this test has a label "get items" and is run via an async function
|
51
|
+
it("get items", async function () {
|
52
|
+
|
53
|
+
// make a request for the list's items
|
54
|
+
const items = await list.items();
|
55
|
+
|
56
|
+
// report that we expect that result to be an array with more than 0 items
|
57
|
+
expect(items.length).to.be.gt(0);
|
58
|
+
});
|
59
|
+
|
60
|
+
// ... remainder of code removed
|
61
|
+
}
|
62
|
+
}
|
63
|
+
```
|
64
|
+
|
65
|
+
## General Guidelines for Writing Tests
|
66
|
+
|
67
|
+
- Tests should operate within the site defined in testSettings
|
68
|
+
- Tests should be able to run multiple times on the same site, but do not need to cleanup after themselves
|
69
|
+
- Each test should be self contained and not depend on other tests, they can depend on work done in before or beforeAll
|
70
|
+
- When writing tests you can use "only" and "skip" from mochajs to focus on only the tests you are writing
|
71
|
+
- Be sure to review the [various options](./npm-scripts.md#test) when running your tests
|
72
|
+
- If you are writing a test and the endpoint doesn't support app only permissions, you can skip writing a test - but please note that in the PR description
|
73
|
+
|
74
|
+
## Next Steps
|
75
|
+
|
76
|
+
Now that you've written tests to cover your changes you'll need to [update the docs](./documentation.md).
|