From 4c8221c09ed360ed469244da03ea65473bf3446b Mon Sep 17 00:00:00 2001 From: kotsiossp97 Date: Thu, 16 May 2024 11:56:18 +0300 Subject: [PATCH 1/4] Update docs for ListItem, update multivalue taxonomy field --- docs/sp/items.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/docs/sp/items.md b/docs/sp/items.md index 5a366b880..f6828df7c 100644 --- a/docs/sp/items.md +++ b/docs/sp/items.md @@ -466,6 +466,43 @@ updateVal[fields[0].InternalName] = "-1;#New Term|bb046161-49cc-41bd-a459-566717 await sp.web.lists.getByTitle("TestList").items.getById(newItem.Id).update(updateVal); ``` +#### File List Item +To update a multi-value taxonomy field on a file item, a different serialization is needed. +```TypeScript +import { spfi } from "@pnp/sp"; +import "@pnp/sp/webs"; +import "@pnp/sp/lists"; +import "@pnp/sp/items"; +import "@pnp/sp/files"; + +const sp = spfi(...); + +const multiValueTaxonomy = { + field: "MetaDataColumn", + values: [ + { + label: "Demo 1", + guid: "bb046161-49cc-41bd-a459-5667175920d4" + }, + { + label: "Demo 2", + guid: "0069972e-67f1-4c5e-99b6-24ac5c90b7c9" + } + ] +} + +// serialize values for field "MetaDataColumn" +// it needs to be serialized as {field label}|{field guid} joined by ; +const newFieldValue = multiValueTaxonomy + .map((val) => (`${val.label}|${val.guid}`)).join(";") +// this will result to "Demo 1|bb046161-49cc-41bd-a459-5667175920d4;Demo 2|0069972e-67f1-4c5e-99b6-24ac5c90b7c9" + +await (await sp.web.getFileByServerRelativePath("/sites/demo/DemoLibrary/File.txt").getItem()).validateUpdateListItem([{ + FieldName: multiValueTaxonomy.field, + FieldValue: multiValueTaxonomy.guid, //Label|TermGuid;Label 2|TermGuid 2 +}]); +``` + ### Update BCS Field Please see [the issue](https://github.com/pnp/pnpjs/issues/2143) for full details. From a70e18768970819369c7081bf4479dd0ee2ebd0a Mon Sep 17 00:00:00 2001 From: Patrick Rodgers Date: Wed, 22 May 2024 10:01:37 -0400 Subject: [PATCH 2/4] updates to better handle graph default url logic --- packages/graph/behaviors/defaults.ts | 7 +++++- packages/graph/behaviors/graphbrowser.ts | 25 ++++++--------------- packages/graph/index.ts | 2 ++ packages/nodejs/behaviors/graphdefault.ts | 27 ++++++++--------------- 4 files changed, 24 insertions(+), 37 deletions(-) diff --git a/packages/graph/behaviors/defaults.ts b/packages/graph/behaviors/defaults.ts index 784e47ed4..3d618135e 100644 --- a/packages/graph/behaviors/defaults.ts +++ b/packages/graph/behaviors/defaults.ts @@ -1,8 +1,13 @@ import { combine, isUrlAbsolute, TimelinePipe } from "@pnp/core"; import { InjectHeaders, Queryable, RejectOnError, ResolveOnData } from "@pnp/queryable"; import { Telemetry } from "./telemetry.js"; +import { DEFAULT_GRAPH_URL } from "../index.js"; -export function DefaultInit(graphUrl = "https://graph.microsoft.com/v1.0"): TimelinePipe { +export function DefaultInit(graphUrl = DEFAULT_GRAPH_URL): TimelinePipe { + + if (!isUrlAbsolute(graphUrl)) { + throw Error("Graph baseUrl must be absolute."); + } return (instance: Queryable) => { diff --git a/packages/graph/behaviors/graphbrowser.ts b/packages/graph/behaviors/graphbrowser.ts index c47d026f4..6c93d1cc8 100644 --- a/packages/graph/behaviors/graphbrowser.ts +++ b/packages/graph/behaviors/graphbrowser.ts @@ -1,6 +1,7 @@ -import { combine, isUrlAbsolute, TimelinePipe } from "@pnp/core"; +import { TimelinePipe } from "@pnp/core"; import { BrowserFetchWithRetry, DefaultParse, Queryable } from "@pnp/queryable"; import { DefaultHeaders, DefaultInit } from "./defaults.js"; +import { DEFAULT_GRAPH_URL } from "../index.js"; export interface IGraphBrowserProps { baseUrl?: string; @@ -8,31 +9,19 @@ export interface IGraphBrowserProps { export function GraphBrowser(props?: IGraphBrowserProps): TimelinePipe { - if (props?.baseUrl && !isUrlAbsolute(props.baseUrl)) { - throw Error("GraphBrowser props.baseUrl must be absolute when supplied."); - } + const { baseUrl } = { + baseUrl: DEFAULT_GRAPH_URL, + ...props, + }; return (instance: Queryable) => { instance.using( DefaultHeaders(), - DefaultInit(), + DefaultInit(baseUrl), BrowserFetchWithRetry(), DefaultParse()); - if (props?.baseUrl) { - - // we want to fix up the url first - instance.on.pre.prepend(async (url, init, result) => { - - if (!isUrlAbsolute(url)) { - url = combine(props.baseUrl, url); - } - - return [url, init, result]; - }); - } - return instance; }; } diff --git a/packages/graph/index.ts b/packages/graph/index.ts index 61ea18fd6..d57ce90e8 100644 --- a/packages/graph/index.ts +++ b/packages/graph/index.ts @@ -9,3 +9,5 @@ export * from "./behaviors/graphbrowser.js"; export * from "./behaviors/paged.js"; export * from "./behaviors/telemetry.js"; export * from "./behaviors/spfx.js"; + +export const DEFAULT_GRAPH_URL = "https://graph.microsoft.com/v1.0"; diff --git a/packages/nodejs/behaviors/graphdefault.ts b/packages/nodejs/behaviors/graphdefault.ts index 5d905ae96..bf86dca59 100644 --- a/packages/nodejs/behaviors/graphdefault.ts +++ b/packages/nodejs/behaviors/graphdefault.ts @@ -1,7 +1,7 @@ import { Configuration } from "@azure/msal-node"; -import { combine, isUrlAbsolute, TimelinePipe } from "@pnp/core"; +import { combine, TimelinePipe } from "@pnp/core"; import { DefaultParse, Queryable } from "@pnp/queryable"; -import { DefaultHeaders, DefaultInit } from "@pnp/graph"; +import { DEFAULT_GRAPH_URL, DefaultHeaders, DefaultInit } from "@pnp/graph"; import { NodeFetchWithRetry } from "./fetch.js"; import { MSAL } from "./msal.js"; @@ -20,30 +20,21 @@ export interface IGraphDefaultProps { */ export function GraphDefault(props?: IGraphDefaultProps): TimelinePipe { - if (props?.baseUrl && !isUrlAbsolute(props?.baseUrl)) { - throw Error("GraphDefault props.baseUrl must be absolute when supplied."); - } - const { baseUrl, msal } = { - baseUrl: "https://graph.microsoft.com/", + baseUrl: DEFAULT_GRAPH_URL, ...props, }; return (instance: Queryable) => { - const behaviors: TimelinePipe[] = [DefaultHeaders(), DefaultInit(), NodeFetchWithRetry(), DefaultParse()]; - if(props?.msal){ - behaviors.push(MSAL(msal.config, msal?.scopes || [combine(baseUrl, ".default")])); - } - instance.using(...behaviors); - instance.on.pre(async (url, init, result) => { + const behaviors: TimelinePipe[] = [DefaultHeaders(), DefaultInit(baseUrl), NodeFetchWithRetry(), DefaultParse()]; - if (!isUrlAbsolute(url)) { - url = combine(baseUrl, url); - } + if (props?.msal) { + const u = new URL(baseUrl); + behaviors.push(MSAL(msal.config, msal?.scopes || [combine(`${u.protocol}//${u.host}`, ".default")])); + } - return [url, init, result]; - }); + instance.using(...behaviors); return instance; }; From e72a32cd2ddaa74761d40cac876a2b8677e3feb4 Mon Sep 17 00:00:00 2001 From: Julie Turner Date: Wed, 22 May 2024 16:43:53 +0000 Subject: [PATCH 3/4] SPFX debugging update and added docs for sp-admin --- debug/spfx/package-lock.json | 145 +++++++++++++++++++++++++---------- debug/spfx/package.json | 9 ++- docs/sp-admin/index.md | 2 +- 3 files changed, 111 insertions(+), 45 deletions(-) diff --git a/debug/spfx/package-lock.json b/debug/spfx/package-lock.json index 9d2a3d4aa..71ac6b990 100644 --- a/debug/spfx/package-lock.json +++ b/debug/spfx/package-lock.json @@ -14,10 +14,11 @@ "@microsoft/sp-office-ui-fabric-core": "1.18.2", "@microsoft/sp-property-pane": "1.18.2", "@microsoft/sp-webpart-base": "1.18.2", - "@pnp/core": "^4.0.0-alpha0-v4nightly.20240412", - "@pnp/graph": "^4.0.0-alpha0-v4nightly.20240412", - "@pnp/logging": "^4.0.0-alpha0-v4nightly.20240412", - "@pnp/sp": "^4.0.0-alpha0-v4nightly.20240412", + "@pnp/core": "^4.0.1", + "@pnp/graph": "^4.0.1", + "@pnp/logging": "^4.0.1", + "@pnp/sp": "^4.0.1", + "@pnp/sp-admin": "^4.0.1", "tslib": "2.3.1" }, "devDependencies": { @@ -37,6 +38,66 @@ "node": ">=16.13.0 <17.0.0 || >=18.17.1 <19.0.0" } }, + "../..": { + "name": "@pnp/monorepo", + "version": "4.0.1", + "license": "MIT", + "devDependencies": { + "@azure/identity": "4.1.0", + "@azure/msal-browser": "3.13.0", + "@azure/msal-node": "2.7.0", + "@microsoft/microsoft-graph-types": "2.40.0", + "@pnp/buildsystem": "^4.0.1", + "@pnp/logging": "^3.24.0", + "@types/chai": "4.3.14", + "@types/chai-as-promised": "7.1.8", + "@types/core-js": "2.5.8", + "@types/findup-sync": "4.0.5", + "@types/mocha": "10.0.6", + "@types/node": "18.11.9", + "@types/webpack": "5.28.5", + "@types/yargs": "17.0.32", + "@typescript-eslint/eslint-plugin": "6.21.0", + "@typescript-eslint/parser": "6.21.0", + "chai": "4.3.10", + "chai-as-promised": "7.1.1", + "del-cli": "5.1.0", + "eslint": "8.57.0", + "findup-sync": "5.0.0", + "globby": "^14.0.1", + "mocha": "10.4.0", + "node-fetch": "3.3.2", + "prettyjson": "1.2.5", + "string-replace-loader": "3.1.0", + "tslib": "2.6.2", + "typescript": "4.9.5", + "webpack": "5.91.0", + "webpack-cli": "5.1.4", + "webpack-dev-server": "5.0.4", + "yargs": "17.7.2" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "../../dist/packages/sp-admin": { + "name": "@pnp/sp-admin", + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "@pnp/core": "4.0.1", + "@pnp/queryable": "4.0.1", + "@pnp/sp": "4.0.1", + "tslib": "2.6.2" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/patrick-rodgers/" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -4941,11 +5002,11 @@ } }, "node_modules/@pnp/core": { - "version": "4.0.0-alpha0-v4nightly.20240412", - "resolved": "https://registry.npmjs.org/@pnp/core/-/core-4.0.0-alpha0-v4nightly.20240412.tgz", - "integrity": "sha512-CETGc6aYHRPSQtKRXLUKv5COLVy28QhKfjeqTEXmaleweRfRghvf3X0AYijYROQJL6//m5pHusA84skSwEI1iw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@pnp/core/-/core-4.0.1.tgz", + "integrity": "sha512-Z+FiQDR1BPLuzoU8IpL3rmpiPa4+kvu997uVDfTmOhXv7YWlCOgTQa0scJoqGDZZCkTUwl07KGZ8A6nT76gA5w==", "dependencies": { - "tslib": "2.4.1" + "tslib": "2.6.2" }, "engines": { "node": ">=18.12.0" @@ -4956,18 +5017,18 @@ } }, "node_modules/@pnp/core/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@pnp/graph": { - "version": "4.0.0-alpha0-v4nightly.20240412", - "resolved": "https://registry.npmjs.org/@pnp/graph/-/graph-4.0.0-alpha0-v4nightly.20240412.tgz", - "integrity": "sha512-6XsUED+ad0W7gnkQYK0W1DHBXB4veTP8QuPwtcDSrMzH48/bHHWRKudgwrGJGyj9rK1Fz3eaYyxFAj0lXhiTvQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@pnp/graph/-/graph-4.0.1.tgz", + "integrity": "sha512-7h+nZIkutcYtXzx8z64nSCBX62pfrbif1C+JZ+EAPsF19i2lhsB1cZTMsVSgyJRjt0cU/yb/XqBs0c63HwMMwg==", "dependencies": { "@microsoft/microsoft-graph-types": "2.40.0", - "@pnp/core": "4.0.0-alpha0-v4nightly.20240412", - "@pnp/queryable": "4.0.0-alpha0-v4nightly.20240412", + "@pnp/core": "4.0.1", + "@pnp/queryable": "4.0.1", "tslib": "2.6.2" }, "engines": { @@ -4984,11 +5045,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@pnp/logging": { - "version": "4.0.0-alpha0-v4nightly.20240412", - "resolved": "https://registry.npmjs.org/@pnp/logging/-/logging-4.0.0-alpha0-v4nightly.20240412.tgz", - "integrity": "sha512-l9QLYZaXgRFQBIJN6R7EQFD2h/s9r3i6arQPSNM4IHzHpq1TDKuFz/WK/EmPYyYLrAf3OeOp4/8CsGyD1FAeCw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@pnp/logging/-/logging-4.0.1.tgz", + "integrity": "sha512-+HVb3EFvSuEis2Wn7kHVhReEyFsB8Vtb2PfRWGcHQiCXGuje9y2oJb8HLxpV5+IdS2qoqpktrZa6ADf8+EkOVQ==", "dependencies": { - "tslib": "2.4.1" + "tslib": "2.6.2" }, "engines": { "node": ">=18.12.0" @@ -4999,17 +5060,17 @@ } }, "node_modules/@pnp/logging/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@pnp/queryable": { - "version": "4.0.0-alpha0-v4nightly.20240412", - "resolved": "https://registry.npmjs.org/@pnp/queryable/-/queryable-4.0.0-alpha0-v4nightly.20240412.tgz", - "integrity": "sha512-lKExbFgeccpSzs7qPSsN4qX8vS8Sp2BAT/FjECYNjyPjKhgP9wox1zC0BVR6W0gbAdHE+nAhBn6DxL/8vdtMEQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@pnp/queryable/-/queryable-4.0.1.tgz", + "integrity": "sha512-n/oq5jjjCf+IAreEUsFUQ2EjXuAjSBUxO5usQVi3tjStUca50DPDIxzJTiPTGcqnpwTiEqJiyqEmKIbZfzWSqg==", "dependencies": { - "@pnp/core": "4.0.0-alpha0-v4nightly.20240412", - "tslib": "2.4.1" + "@pnp/core": "4.0.1", + "tslib": "2.6.2" }, "engines": { "node": ">=18.12.0" @@ -5020,18 +5081,18 @@ } }, "node_modules/@pnp/queryable/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@pnp/sp": { - "version": "4.0.0-alpha0-v4nightly.20240412", - "resolved": "https://registry.npmjs.org/@pnp/sp/-/sp-4.0.0-alpha0-v4nightly.20240412.tgz", - "integrity": "sha512-M8KBzH3+R5odmeefrR6KKh6BOquXKxfIGJ6wXp67qDtdifE8cOY18ObFPyLOnReaA80R0VKrYhrrM1vPsrWY1g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@pnp/sp/-/sp-4.0.1.tgz", + "integrity": "sha512-EpDfxgKoHESi+04pJKwfxSxNYPRnYfsXKEK3uDNrwf1TObM/oWXzoumaXD8A8h4rW7DlI0vIUQiXdsJT7sQUwQ==", "dependencies": { - "@pnp/core": "4.0.0-alpha0-v4nightly.20240412", - "@pnp/queryable": "4.0.0-alpha0-v4nightly.20240412", - "tslib": "2.4.1" + "@pnp/core": "4.0.1", + "@pnp/queryable": "4.0.1", + "tslib": "2.6.2" }, "engines": { "node": ">=18.12.0" @@ -5041,10 +5102,14 @@ "url": "https://github.com/sponsors/patrick-rodgers/" } }, + "node_modules/@pnp/sp-admin": { + "resolved": "../../dist/packages/sp-admin", + "link": true + }, "node_modules/@pnp/sp/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@pnpm/crypto.base32-hash": { "version": "2.0.0", diff --git a/debug/spfx/package.json b/debug/spfx/package.json index 5b56ce540..12c254d75 100644 --- a/debug/spfx/package.json +++ b/debug/spfx/package.json @@ -18,10 +18,11 @@ "@microsoft/sp-office-ui-fabric-core": "1.18.2", "@microsoft/sp-property-pane": "1.18.2", "@microsoft/sp-webpart-base": "1.18.2", - "@pnp/core": "^4.0.0-alpha0-v4nightly.20240412", - "@pnp/graph": "^4.0.0-alpha0-v4nightly.20240412", - "@pnp/logging": "^4.0.0-alpha0-v4nightly.20240412", - "@pnp/sp": "^4.0.0-alpha0-v4nightly.20240412", + "@pnp/core": "^4.0.1", + "@pnp/graph": "^4.0.1", + "@pnp/logging": "^4.0.1", + "@pnp/sp": "^4.0.1", + "@pnp/sp-admin": "^4.0.1", "tslib": "2.3.1" }, "devDependencies": { diff --git a/docs/sp-admin/index.md b/docs/sp-admin/index.md index 765db8df2..83e3fd103 100644 --- a/docs/sp-admin/index.md +++ b/docs/sp-admin/index.md @@ -6,7 +6,7 @@ The `@pnp/sp-admin` library enables you to call the static SharePoint admin API' - `_api/Microsoft.Online.SharePoint.TenantAdministration.SiteProperties` - `_api/Microsoft.Online.SharePoint.TenantAdministration.Tenant` -These APIs typically require an elevated level of permissions and should not be relied upon in general user facing solutions. Before using this library please understand the impact of what you are doing as you are updating settings at the tenant level for all users. +These APIs typically require an elevated level of permissions and should not be relied upon in general user facing solutions. Before using this library please understand the impact of what you are doing as you are updating settings at the tenant level for all users. Also keep in mind these endpoints do not support application permissions, therefore you will need to get a user token for delegated access, ergo they cannot be used unattended. !!! warning These APIs are officially not documented which means there is no SLA provided by Microsoft. Furthermore, they can be updated without notification. From b5b54b129c46b10980fb728bf2b42179bce4f25e Mon Sep 17 00:00:00 2001 From: Julie Turner Date: Fri, 24 May 2024 13:29:21 +0000 Subject: [PATCH 4/4] Release 4.1.0 Updates for deploying 4.1.0 --- CHANGELOG.md | 7 + package-lock.json | 452 ++++++++++++++++++----------- package.json | 12 +- packages/azidjsclient/package.json | 2 +- packages/msaljsclient/package.json | 2 +- packages/nodejs/package.json | 2 +- 6 files changed, 299 insertions(+), 178 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 370788220..fd57c71ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 4.1.0 - 2024-May-24 + +### Fixed + +- graph + - Update to better handle graph default url logic + ## 4.0.1 - 2024-Apr-23 ### Fixed diff --git a/package-lock.json b/package-lock.json index f6e693a56..215bba194 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "@pnp/monorepo", - "version": "4.0.0", + "version": "4.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pnp/monorepo", - "version": "4.0.0", + "version": "4.1.0", "license": "MIT", "devDependencies": { - "@azure/identity": "4.1.0", - "@azure/msal-browser": "3.13.0", - "@azure/msal-node": "2.7.0", + "@azure/identity": "4.2.0", + "@azure/msal-browser": "3.14.0", + "@azure/msal-node": "2.8.1", "@microsoft/microsoft-graph-types": "2.40.0", "@pnp/buildsystem": "^4.0.1", - "@pnp/logging": "^3.24.0", - "@types/chai": "4.3.14", + "@pnp/logging": "^4.0.1", + "@types/chai": "4.3.16", "@types/chai-as-promised": "7.1.8", "@types/core-js": "2.5.8", "@types/findup-sync": "4.0.5", @@ -46,15 +46,6 @@ "node": ">=14.15.1" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -124,15 +115,15 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.15.2.tgz", - "integrity": "sha512-BmWfpjc/QXc2ipHOh6LbUzp3ONCaa6xzIssTU0DwH9bbYNXJlGUL6tujx5TrbVd/QQknmS+vlQJGrCq2oL1gZA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz", + "integrity": "sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==", "dev": true, "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.4.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.3.0", + "@azure/core-util": "^1.9.0", "@azure/logger": "^1.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", @@ -192,9 +183,9 @@ } }, "node_modules/@azure/identity": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.1.0.tgz", - "integrity": "sha512-BhYkF8Xr2gXjyDxocm0pc9RI5J5a1jw8iW0dw6Bx95OGdYbuMyFZrrwNw4eYSqQ2BB6FZOqpJP3vjsAqRcvDhw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.0.tgz", + "integrity": "sha512-ve3aYv79qXOJ8wRxQ5jO0eIz2DZ4o0TyME4m4vlGV5YyePddVZ+pFMzusAMODNAflYAAv1cBIhKnd4xytmXyig==", "dev": true, "dependencies": { "@azure/abort-controller": "^1.0.0", @@ -229,33 +220,33 @@ } }, "node_modules/@azure/msal-browser": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.13.0.tgz", - "integrity": "sha512-fD906nmJei3yE7la6DZTdUtXKvpwzJURkfsiz9747Icv4pit77cegSm6prJTKLQ1fw4iiZzrrWwxnhMLrTf5gQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.14.0.tgz", + "integrity": "sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA==", "dev": true, "dependencies": { - "@azure/msal-common": "14.9.0" + "@azure/msal-common": "14.10.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "14.9.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.9.0.tgz", - "integrity": "sha512-yzBPRlWPnTBeixxLNI3BBIgF5/bHpbhoRVuuDBnYjCyWRavaPUsKAHUDYLqpGkBLDciA6TCc6GOxN4/S3WiSxg==", + "version": "14.10.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.10.0.tgz", + "integrity": "sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA==", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.7.0.tgz", - "integrity": "sha512-wXD8LkUvHICeSWZydqg6o8Yvv+grlBEcmLGu+QEI4FcwFendbTEZrlSygnAXXSOCVaGAirWLchca35qrgpO6Jw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.8.1.tgz", + "integrity": "sha512-VcZZM+5VvCWRBTOF7SxMKaxrz+EXjntx2u5AQe7QE06e6FuPJElGBrImgNgCh5QmFaNCfVFO+3qNR7UoFD/Gfw==", "dev": true, "dependencies": { - "@azure/msal-common": "14.9.0", + "@azure/msal-common": "14.10.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -264,12 +255,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.6", "picocolors": "^1.0.0" }, "engines": { @@ -277,21 +268,21 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.6", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -667,6 +658,60 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", + "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.3.tgz", + "integrity": "sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -748,12 +793,12 @@ } }, "node_modules/@pnp/core": { - "version": "4.0.0-alpha0-v4nightly.20240422", - "resolved": "https://registry.npmjs.org/@pnp/core/-/core-4.0.0-alpha0-v4nightly.20240422.tgz", - "integrity": "sha512-kjd2V3SvB2StwR7KIj0tvhHtUGHYoxGWi2NyhHe+yTPfB9IW/BbnWblEtmC3zqMRvF4gAfQDxS344MNAqs/6/A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@pnp/core/-/core-4.0.1.tgz", + "integrity": "sha512-Z+FiQDR1BPLuzoU8IpL3rmpiPa4+kvu997uVDfTmOhXv7YWlCOgTQa0scJoqGDZZCkTUwl07KGZ8A6nT76gA5w==", "dev": true, "dependencies": { - "tslib": "2.4.1" + "tslib": "2.6.2" }, "engines": { "node": ">=18.12.0" @@ -763,34 +808,22 @@ "url": "https://github.com/sponsors/patrick-rodgers/" } }, - "node_modules/@pnp/core/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, "node_modules/@pnp/logging": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@pnp/logging/-/logging-3.24.0.tgz", - "integrity": "sha512-Fw9ej0WIkKxFmG2mQx6BD2TJBOPbmQHbx3y5dASFongg8mZSg/X/pbvxKwMi4CWhfVkSCgt1vw1eH6tEHuT8Bg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@pnp/logging/-/logging-4.0.1.tgz", + "integrity": "sha512-+HVb3EFvSuEis2Wn7kHVhReEyFsB8Vtb2PfRWGcHQiCXGuje9y2oJb8HLxpV5+IdS2qoqpktrZa6ADf8+EkOVQ==", "dev": true, "dependencies": { - "tslib": "2.4.1" + "tslib": "2.6.2" }, "engines": { - "node": ">=14.15.1" + "node": ">=18.12.0" }, "funding": { "type": "individual", "url": "https://github.com/sponsors/patrick-rodgers/" } }, - "node_modules/@pnp/logging/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, "node_modules/@sindresorhus/merge-streams": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", @@ -829,9 +862,9 @@ "dev": true }, "node_modules/@types/chai": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz", - "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==", + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", + "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", "dev": true }, "node_modules/@types/chai-as-promised": { @@ -907,9 +940,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz", + "integrity": "sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==", "dev": true, "dependencies": { "@types/node": "*", @@ -1626,15 +1659,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -1872,12 +1905,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2028,9 +2061,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001612", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", - "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", + "version": "1.0.30001621", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", "dev": true, "funding": [ { @@ -2708,9 +2741,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.745", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.745.tgz", - "integrity": "sha512-tRbzkaRI5gbUn5DEvF0dV4TQbMZ5CLkWeTAXmpC9IrYT+GE+x76i9p+o3RJ5l9XmdQlI1pPhVtE9uNcJJ0G0EA==", + "version": "1.4.782", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.782.tgz", + "integrity": "sha512-JUfU61e8tr+i5Y1FKXcKs+Xe+rJ+CEqm4cgv1kMihPE2EvYHmYyVr3Im/+1+Z5B29Be2EEGCZCwAc6Tazdl1Yg==", "dev": true }, "node_modules/emoji-regex": { @@ -2738,9 +2771,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -2751,9 +2784,9 @@ } }, "node_modules/envinfo": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.12.0.tgz", - "integrity": "sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -2793,9 +2826,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", "dev": true }, "node_modules/escalade": { @@ -3232,9 +3265,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3976,6 +4009,15 @@ "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "engines": { + "node": ">=10.18" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -4057,6 +4099,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -4368,9 +4411,9 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -4764,11 +4807,14 @@ } }, "node_modules/memfs": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.8.2.tgz", - "integrity": "sha512-j4WKth315edViMBGkHW6NTF0QBjsTrcRDmYNcGsPq+ozMEyCCCIlX2d2mJ5wuh6iHvJ3FevUrr48v58YRqVdYg==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.2.tgz", + "integrity": "sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==", "dev": true, "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.1.2", + "sonic-forest": "^1.0.0", "tslib": "^2.0.0" }, "engines": { @@ -4848,12 +4894,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -4956,9 +5002,9 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -5316,17 +5362,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -5520,25 +5566,25 @@ } }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -5572,9 +5618,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -6173,13 +6219,10 @@ } }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6446,6 +6489,25 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/sonic-forest": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.3.tgz", + "integrity": "sha512-dtwajos6IWMEWXdEbW1IkEkyL2gztCAgDplRIX+OT5aRKnEd5e7r7YCxRgXZdhRP1FBdOBf8axeTPhzDv8T4wQ==", + "dev": true, + "dependencies": { + "tree-dump": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6492,9 +6554,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/spdy": { @@ -6692,9 +6754,9 @@ } }, "node_modules/terser": { - "version": "5.30.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", - "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -6758,6 +6820,18 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -6785,6 +6859,22 @@ "node": ">=0.6" } }, + "node_modules/tree-dump": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz", + "integrity": "sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-newlines": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", @@ -6905,9 +6995,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -6924,8 +7014,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -7148,15 +7238,15 @@ } }, "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -7260,15 +7350,15 @@ } }, "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -7324,22 +7414,22 @@ } }, "node_modules/webpack-dev-server/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7378,6 +7468,21 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/webpack-dev-server/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/webpack-dev-server/node_modules/open": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", @@ -7397,9 +7502,9 @@ } }, "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", "dev": true, "dependencies": { "glob": "^10.3.7" @@ -7408,7 +7513,7 @@ "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=14" + "node": ">=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7522,6 +7627,15 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", @@ -7570,9 +7684,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 7968fe98f..f65dcc08d 100644 --- a/package.json +++ b/package.json @@ -2,16 +2,16 @@ "name": "@pnp/monorepo", "private": true, "type": "module", - "version": "4.0.1", + "version": "4.1.0", "description": "A JavaScript library for SharePoint & Graph development.", "devDependencies": { - "@azure/identity": "4.1.0", - "@azure/msal-browser": "3.13.0", - "@azure/msal-node": "2.7.0", + "@azure/identity": "4.2.0", + "@azure/msal-browser": "3.14.0", + "@azure/msal-node": "2.8.1", "@microsoft/microsoft-graph-types": "2.40.0", "@pnp/buildsystem": "^4.0.1", - "@pnp/logging": "^3.24.0", - "@types/chai": "4.3.14", + "@pnp/logging": "^4.0.1", + "@types/chai": "4.3.16", "@types/chai-as-promised": "7.1.8", "@types/core-js": "2.5.8", "@types/findup-sync": "4.0.5", diff --git a/packages/azidjsclient/package.json b/packages/azidjsclient/package.json index bcab34b95..b660e31d6 100644 --- a/packages/azidjsclient/package.json +++ b/packages/azidjsclient/package.json @@ -7,7 +7,7 @@ "dependencies": { "@pnp/core": "0.0.0-PLACEHOLDER", "@pnp/queryable": "0.0.0-PLACEHOLDER", - "@azure/identity": "4.1.0", + "@azure/identity": "4.2.0", "tslib": "2.6.2" } } \ No newline at end of file diff --git a/packages/msaljsclient/package.json b/packages/msaljsclient/package.json index 17a83f8ac..cd1b047c1 100644 --- a/packages/msaljsclient/package.json +++ b/packages/msaljsclient/package.json @@ -5,7 +5,7 @@ "main": "./index.js", "typings": "./index", "dependencies": { - "@azure/msal-browser": "3.13.0", + "@azure/msal-browser": "3.14.0", "@pnp/queryable": "0.0.0-PLACEHOLDER", "tslib": "2.6.2" } diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index 5ebac1762..9fa6bd056 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -5,7 +5,7 @@ "main": "./index.js", "typings": "./index", "dependencies": { - "@azure/msal-node": "2.7.0", + "@azure/msal-node": "2.8.1", "@pnp/core": "0.0.0-PLACEHOLDER", "@pnp/logging": "0.0.0-PLACEHOLDER", "@pnp/queryable": "0.0.0-PLACEHOLDER",