@apvee/spfx-react-toolkit 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/atoms.internal.js +1 -1
- package/lib/core/atoms.internal.js.map +1 -1
- package/lib/core/context.internal.js +2 -2
- package/lib/core/context.internal.js.map +1 -1
- package/lib/core/provider-base.internal.js +29 -29
- package/lib/core/provider-base.internal.js.map +1 -1
- package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.js +8 -29
- package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.js.map +1 -1
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.d.ts.map +1 -1
- package/lib/hooks/index.js +1 -0
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useAppCatalogUrl.internal.d.ts +26 -0
- package/lib/hooks/useAppCatalogUrl.internal.d.ts.map +1 -0
- package/lib/hooks/useAppCatalogUrl.internal.js +72 -0
- package/lib/hooks/useAppCatalogUrl.internal.js.map +1 -0
- package/lib/hooks/useAsyncInvoke.internal.js +27 -75
- package/lib/hooks/useAsyncInvoke.internal.js.map +1 -1
- package/lib/hooks/useSPFxAadHttpClient.js +27 -27
- package/lib/hooks/useSPFxAadHttpClient.js.map +1 -1
- package/lib/hooks/useSPFxContainerInfo.js +5 -5
- package/lib/hooks/useSPFxContainerInfo.js.map +1 -1
- package/lib/hooks/useSPFxContainerSize.js +9 -10
- package/lib/hooks/useSPFxContainerSize.js.map +1 -1
- package/lib/hooks/useSPFxCorrelationInfo.js +6 -7
- package/lib/hooks/useSPFxCorrelationInfo.js.map +1 -1
- package/lib/hooks/useSPFxCrossSitePermissions.js +48 -58
- package/lib/hooks/useSPFxCrossSitePermissions.js.map +1 -1
- package/lib/hooks/useSPFxDisplayMode.js +8 -8
- package/lib/hooks/useSPFxDisplayMode.js.map +1 -1
- package/lib/hooks/useSPFxEnvironmentInfo.js +17 -18
- package/lib/hooks/useSPFxEnvironmentInfo.js.map +1 -1
- package/lib/hooks/useSPFxFluent9ThemeInfo.js +4 -4
- package/lib/hooks/useSPFxFluent9ThemeInfo.js.map +1 -1
- package/lib/hooks/useSPFxHttpClient.js +10 -10
- package/lib/hooks/useSPFxHttpClient.js.map +1 -1
- package/lib/hooks/useSPFxHubSiteInfo.js +21 -24
- package/lib/hooks/useSPFxHubSiteInfo.js.map +1 -1
- package/lib/hooks/useSPFxInstanceInfo.js +2 -2
- package/lib/hooks/useSPFxInstanceInfo.js.map +1 -1
- package/lib/hooks/useSPFxListInfo.js +8 -9
- package/lib/hooks/useSPFxListInfo.js.map +1 -1
- package/lib/hooks/useSPFxLocaleInfo.js +10 -10
- package/lib/hooks/useSPFxLocaleInfo.js.map +1 -1
- package/lib/hooks/useSPFxLogger.js +26 -26
- package/lib/hooks/useSPFxLogger.js.map +1 -1
- package/lib/hooks/useSPFxMSGraphClient.js +25 -25
- package/lib/hooks/useSPFxMSGraphClient.js.map +1 -1
- package/lib/hooks/useSPFxOneDriveAppData.js +148 -209
- package/lib/hooks/useSPFxOneDriveAppData.js.map +1 -1
- package/lib/hooks/useSPFxPageContext.js +2 -2
- package/lib/hooks/useSPFxPageContext.js.map +1 -1
- package/lib/hooks/useSPFxPageType.js +19 -20
- package/lib/hooks/useSPFxPageType.js.map +1 -1
- package/lib/hooks/useSPFxPerformance.js +33 -87
- package/lib/hooks/useSPFxPerformance.js.map +1 -1
- package/lib/hooks/useSPFxPermissions.js +14 -15
- package/lib/hooks/useSPFxPermissions.js.map +1 -1
- package/lib/hooks/useSPFxPnP.js +62 -119
- package/lib/hooks/useSPFxPnP.js.map +1 -1
- package/lib/hooks/useSPFxPnPContext.js +22 -25
- package/lib/hooks/useSPFxPnPContext.js.map +1 -1
- package/lib/hooks/useSPFxPnPList.js +307 -451
- package/lib/hooks/useSPFxPnPList.js.map +1 -1
- package/lib/hooks/useSPFxPnPSearch.js +262 -353
- package/lib/hooks/useSPFxPnPSearch.js.map +1 -1
- package/lib/hooks/useSPFxProperties.js +12 -20
- package/lib/hooks/useSPFxProperties.js.map +1 -1
- package/lib/hooks/useSPFxSPHttpClient.js +19 -19
- package/lib/hooks/useSPFxSPHttpClient.js.map +1 -1
- package/lib/hooks/useSPFxServiceScope.js +6 -6
- package/lib/hooks/useSPFxServiceScope.js.map +1 -1
- package/lib/hooks/useSPFxSiteInfo.js +7 -8
- package/lib/hooks/useSPFxSiteInfo.js.map +1 -1
- package/lib/hooks/useSPFxStorage.js +22 -22
- package/lib/hooks/useSPFxStorage.js.map +1 -1
- package/lib/hooks/useSPFxTeams.js +37 -92
- package/lib/hooks/useSPFxTeams.js.map +1 -1
- package/lib/hooks/useSPFxTenantKeyValueStore.d.ts +252 -0
- package/lib/hooks/useSPFxTenantKeyValueStore.d.ts.map +1 -0
- package/lib/hooks/useSPFxTenantKeyValueStore.js +572 -0
- package/lib/hooks/useSPFxTenantKeyValueStore.js.map +1 -0
- package/lib/hooks/useSPFxTenantProperty.d.ts +23 -244
- package/lib/hooks/useSPFxTenantProperty.d.ts.map +1 -1
- package/lib/hooks/useSPFxTenantProperty.js +85 -559
- package/lib/hooks/useSPFxTenantProperty.js.map +1 -1
- package/lib/hooks/useSPFxUserInfo.js +3 -4
- package/lib/hooks/useSPFxUserInfo.js.map +1 -1
- package/lib/hooks/useSPFxUserPhoto.js +76 -123
- package/lib/hooks/useSPFxUserPhoto.js.map +1 -1
- package/lib/utils/resize-observer.internal.js +6 -7
- package/lib/utils/resize-observer.internal.js.map +1 -1
- package/lib/utils/theme-subscription.internal.js +8 -8
- package/lib/utils/theme-subscription.internal.js.map +1 -1
- package/lib/utils/type-guards.internal.js +6 -6
- package/lib/utils/type-guards.internal.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js +12 -37
- package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.d.ts.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js +277 -336
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js +26 -86
- package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js +53 -113
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js +49 -121
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js +44 -103
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js +15 -15
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js +18 -66
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js +9 -9
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js +37 -86
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js +6 -9
- package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js +3 -6
- package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,52 +1,5 @@
|
|
|
1
1
|
// useSPFxPerformance.ts
|
|
2
2
|
// Hook for performance measurement and monitoring
|
|
3
|
-
var __assign = (this && this.__assign) || function () {
|
|
4
|
-
__assign = Object.assign || function(t) {
|
|
5
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
-
s = arguments[i];
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
-
t[p] = s[p];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
return __assign.apply(this, arguments);
|
|
13
|
-
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
24
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
25
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
26
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
|
-
function step(op) {
|
|
28
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
|
-
switch (op[0]) {
|
|
33
|
-
case 0: case 1: t = op; break;
|
|
34
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
35
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
36
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
37
|
-
default:
|
|
38
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
39
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
40
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
41
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
42
|
-
if (t[2]) _.ops.pop();
|
|
43
|
-
_.trys.pop(); continue;
|
|
44
|
-
}
|
|
45
|
-
op = body.call(thisArg, _);
|
|
46
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
47
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
3
|
import { useCallback } from 'react';
|
|
51
4
|
import { useSPFxInstanceInfo } from './useSPFxInstanceInfo';
|
|
52
5
|
import { useSPFxCorrelationInfo } from './useSPFxCorrelationInfo';
|
|
@@ -93,75 +46,68 @@ import { useSPFxCorrelationInfo } from './useSPFxCorrelationInfo';
|
|
|
93
46
|
* ```
|
|
94
47
|
*/
|
|
95
48
|
export function useSPFxPerformance() {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
var correlationId = useSPFxCorrelationInfo().correlationId;
|
|
49
|
+
const { id: instanceId, kind: host } = useSPFxInstanceInfo();
|
|
50
|
+
const { correlationId } = useSPFxCorrelationInfo();
|
|
99
51
|
// Create a performance mark
|
|
100
|
-
|
|
101
|
-
if (typeof
|
|
52
|
+
const mark = useCallback((name) => {
|
|
53
|
+
if (typeof performance?.mark === 'function') {
|
|
102
54
|
try {
|
|
103
55
|
performance.mark(name);
|
|
104
56
|
}
|
|
105
|
-
catch
|
|
57
|
+
catch {
|
|
106
58
|
// Swallow errors (e.g., invalid mark name)
|
|
107
59
|
}
|
|
108
60
|
}
|
|
109
61
|
}, []);
|
|
110
62
|
// Measure duration between marks
|
|
111
|
-
|
|
112
|
-
var _a;
|
|
63
|
+
const measure = useCallback((name, startMark, endMark) => {
|
|
113
64
|
try {
|
|
114
65
|
// Create end mark if provided
|
|
115
|
-
if (endMark && typeof
|
|
66
|
+
if (endMark && typeof performance?.mark === 'function') {
|
|
116
67
|
performance.mark(endMark);
|
|
117
68
|
}
|
|
118
69
|
// Create measure
|
|
119
|
-
if (typeof
|
|
70
|
+
if (typeof performance?.measure === 'function') {
|
|
120
71
|
performance.measure(name, startMark, endMark);
|
|
121
72
|
// Get the measurement
|
|
122
|
-
|
|
123
|
-
|
|
73
|
+
const entries = performance.getEntriesByName(name, 'measure');
|
|
74
|
+
const lastEntry = entries[entries.length - 1];
|
|
124
75
|
return {
|
|
125
|
-
name
|
|
126
|
-
durationMs:
|
|
127
|
-
instanceId
|
|
128
|
-
host
|
|
129
|
-
correlationId
|
|
76
|
+
name,
|
|
77
|
+
durationMs: lastEntry?.duration ?? 0,
|
|
78
|
+
instanceId,
|
|
79
|
+
host,
|
|
80
|
+
correlationId,
|
|
130
81
|
};
|
|
131
82
|
}
|
|
132
83
|
}
|
|
133
|
-
catch
|
|
84
|
+
catch {
|
|
134
85
|
// Swallow errors
|
|
135
86
|
}
|
|
136
87
|
// Fallback result
|
|
137
88
|
return {
|
|
138
|
-
name
|
|
89
|
+
name,
|
|
139
90
|
durationMs: 0,
|
|
140
|
-
instanceId
|
|
141
|
-
host
|
|
142
|
-
correlationId
|
|
91
|
+
instanceId,
|
|
92
|
+
host,
|
|
93
|
+
correlationId,
|
|
143
94
|
};
|
|
144
95
|
}, [instanceId, host, correlationId]);
|
|
145
96
|
// Time an async operation
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
measurement = measure(name, startMark);
|
|
157
|
-
return [2 /*return*/, __assign(__assign({}, measurement), { result: result })];
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
}); }, [mark, measure]);
|
|
97
|
+
const time = useCallback(async (name, fn) => {
|
|
98
|
+
const startMark = name + '-start';
|
|
99
|
+
mark(startMark);
|
|
100
|
+
const result = await Promise.resolve().then(fn);
|
|
101
|
+
const measurement = measure(name, startMark);
|
|
102
|
+
return {
|
|
103
|
+
...measurement,
|
|
104
|
+
result,
|
|
105
|
+
};
|
|
106
|
+
}, [mark, measure]);
|
|
161
107
|
return {
|
|
162
|
-
mark
|
|
163
|
-
measure
|
|
164
|
-
time
|
|
108
|
+
mark,
|
|
109
|
+
measure,
|
|
110
|
+
time,
|
|
165
111
|
};
|
|
166
112
|
}
|
|
167
113
|
//# sourceMappingURL=useSPFxPerformance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxPerformance.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPerformance.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,kDAAkD
|
|
1
|
+
{"version":3,"file":"useSPFxPerformance.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPerformance.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,kDAAkD;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAuClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC7D,MAAM,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAEnD,4BAA4B;IAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,IAAY,EAAQ,EAAE;QAC9C,IAAI,OAAO,WAAW,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iCAAiC;IACjC,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,IAAY,EAAE,SAAiB,EAAE,OAAgB,EAAkB,EAAE;QACpE,IAAI,CAAC;YACH,8BAA8B;YAC9B,IAAI,OAAO,IAAI,OAAO,WAAW,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;gBACvD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAED,iBAAiB;YACjB,IAAI,OAAO,WAAW,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC/C,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAE9C,sBAAsB;gBACtB,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE9C,OAAO;oBACL,IAAI;oBACJ,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;oBACpC,UAAU;oBACV,IAAI;oBACJ,aAAa;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QAED,kBAAkB;QAClB,OAAO;YACL,IAAI;YACJ,UAAU,EAAE,CAAC;YACb,UAAU;YACV,IAAI;YACJ,aAAa;SACd,CAAC;IACJ,CAAC,EACD,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,CAClC,CAAC;IAEF,0BAA0B;IAC1B,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,EAAM,IAAY,EAAE,EAAwB,EAA8B,EAAE;QAC/E,MAAM,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE7C,OAAO;YACL,GAAG,WAAW;YACd,MAAM;SACP,CAAC;IACJ,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,OAAO;QACP,IAAI;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -44,30 +44,29 @@ import { useSPFxPageContext } from './useSPFxPageContext';
|
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
46
|
export function useSPFxPermissions() {
|
|
47
|
-
|
|
48
|
-
var pageContext = useSPFxPageContext();
|
|
47
|
+
const pageContext = useSPFxPageContext();
|
|
49
48
|
// Extract permissions from pageContext
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
const sitePermissions = pageContext.site?.permissions;
|
|
50
|
+
const webPermissions = pageContext.web?.permissions;
|
|
51
|
+
const listPermissions = pageContext.list?.permissions;
|
|
53
52
|
// Helper to check permission
|
|
54
|
-
|
|
53
|
+
const has = useCallback((perms, permission) => {
|
|
55
54
|
if (!perms) {
|
|
56
55
|
return false;
|
|
57
56
|
}
|
|
58
57
|
return perms.hasPermission(permission);
|
|
59
58
|
}, []);
|
|
60
59
|
// Specific helpers for each scope
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
const hasWebPermission = useCallback((permission) => has(webPermissions, permission), [has, webPermissions]);
|
|
61
|
+
const hasSitePermission = useCallback((permission) => has(sitePermissions, permission), [has, sitePermissions]);
|
|
62
|
+
const hasListPermission = useCallback((permission) => has(listPermissions, permission), [has, listPermissions]);
|
|
64
63
|
return {
|
|
65
|
-
sitePermissions
|
|
66
|
-
webPermissions
|
|
67
|
-
listPermissions
|
|
68
|
-
hasWebPermission
|
|
69
|
-
hasSitePermission
|
|
70
|
-
hasListPermission
|
|
64
|
+
sitePermissions,
|
|
65
|
+
webPermissions,
|
|
66
|
+
listPermissions,
|
|
67
|
+
hasWebPermission,
|
|
68
|
+
hasSitePermission,
|
|
69
|
+
hasListPermission,
|
|
71
70
|
};
|
|
72
71
|
}
|
|
73
72
|
//# sourceMappingURL=useSPFxPermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxPermissions.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPermissions.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,2CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAqC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,UAAU,kBAAkB
|
|
1
|
+
{"version":3,"file":"useSPFxPermissions.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPermissions.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,2CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAqC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IAEzC,uCAAuC;IACvC,MAAM,eAAe,GAAI,WAAW,CAAC,IAAkD,EAAE,WAAW,CAAC;IACrG,MAAM,cAAc,GAAI,WAAW,CAAC,GAAiD,EAAE,WAAW,CAAC;IACnG,MAAM,eAAe,GAAI,WAAW,CAAC,IAAkD,EAAE,WAAW,CAAC;IAErG,6BAA6B;IAC7B,MAAM,GAAG,GAAG,WAAW,CACrB,CAAC,KAA+B,EAAE,UAAwB,EAAW,EAAE;QACrE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,EACD,EAAE,CACH,CAAC;IAEF,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,UAAwB,EAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,EACtE,CAAC,GAAG,EAAE,cAAc,CAAC,CACtB,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,UAAwB,EAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,EACvE,CAAC,GAAG,EAAE,eAAe,CAAC,CACvB,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,UAAwB,EAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,EACvE,CAAC,GAAG,EAAE,eAAe,CAAC,CACvB,CAAC;IAEF,OAAO;QACL,eAAe;QACf,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
package/lib/hooks/useSPFxPnP.js
CHANGED
|
@@ -1,41 +1,5 @@
|
|
|
1
1
|
// useSPFxPnP.ts
|
|
2
2
|
// Hook to access PnPjs with state management and batching support
|
|
3
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
13
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
14
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
15
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
16
|
-
function step(op) {
|
|
17
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
18
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
19
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
20
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
21
|
-
switch (op[0]) {
|
|
22
|
-
case 0: case 1: t = op; break;
|
|
23
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
24
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
25
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
26
|
-
default:
|
|
27
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
28
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
29
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
-
if (t[2]) _.ops.pop();
|
|
32
|
-
_.trys.pop(); continue;
|
|
33
|
-
}
|
|
34
|
-
op = body.call(thisArg, _);
|
|
35
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
3
|
import { useState, useCallback } from 'react';
|
|
40
4
|
import { useSPFxPnPContext } from './useSPFxPnPContext';
|
|
41
5
|
/**
|
|
@@ -430,104 +394,83 @@ import { useSPFxPnPContext } from './useSPFxPnPContext';
|
|
|
430
394
|
* @see {@link useSPFxPnPList} for specialized list operations
|
|
431
395
|
*/
|
|
432
396
|
export function useSPFxPnP(pnpContext) {
|
|
433
|
-
var _this = this;
|
|
434
397
|
// If no context provided, create default for current site
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
398
|
+
const defaultContext = useSPFxPnPContext();
|
|
399
|
+
const contextToUse = pnpContext || defaultContext;
|
|
400
|
+
const { sp, isInitialized, error: contextError, siteUrl } = contextToUse;
|
|
438
401
|
// Local state for invoke/batch operations
|
|
439
|
-
|
|
440
|
-
|
|
402
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
403
|
+
const [invokeError, setInvokeError] = useState();
|
|
441
404
|
// Prioritized error: invoke/batch errors take precedence over context errors
|
|
442
|
-
|
|
405
|
+
const error = invokeError || contextError;
|
|
443
406
|
/**
|
|
444
407
|
* Execute single PnPjs operation with state management
|
|
445
408
|
*/
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
error_1 = err_1 instanceof Error ? err_1 : new Error(String(err_1));
|
|
467
|
-
setInvokeError(error_1);
|
|
468
|
-
throw error_1;
|
|
469
|
-
case 4:
|
|
470
|
-
setIsLoading(false);
|
|
471
|
-
return [7 /*endfinally*/];
|
|
472
|
-
case 5: return [2 /*return*/];
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
}); }, [sp]);
|
|
409
|
+
const invoke = useCallback(async (fn) => {
|
|
410
|
+
if (!sp) {
|
|
411
|
+
throw new Error('SPFI instance not initialized. ' +
|
|
412
|
+
'Check isInitialized property or context error.');
|
|
413
|
+
}
|
|
414
|
+
setIsLoading(true);
|
|
415
|
+
setInvokeError(undefined);
|
|
416
|
+
try {
|
|
417
|
+
const result = await fn(sp);
|
|
418
|
+
return result;
|
|
419
|
+
}
|
|
420
|
+
catch (err) {
|
|
421
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
422
|
+
setInvokeError(error);
|
|
423
|
+
throw error;
|
|
424
|
+
}
|
|
425
|
+
finally {
|
|
426
|
+
setIsLoading(false);
|
|
427
|
+
}
|
|
428
|
+
}, [sp]);
|
|
476
429
|
/**
|
|
477
430
|
* Execute multiple PnPjs operations in a single batch
|
|
478
431
|
*/
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
error_2 = err_2 instanceof Error ? err_2 : new Error(String(err_2));
|
|
507
|
-
setInvokeError(error_2);
|
|
508
|
-
throw error_2;
|
|
509
|
-
case 5:
|
|
510
|
-
setIsLoading(false);
|
|
511
|
-
return [7 /*endfinally*/];
|
|
512
|
-
case 6: return [2 /*return*/];
|
|
513
|
-
}
|
|
514
|
-
});
|
|
515
|
-
}); }, [sp]);
|
|
432
|
+
const batch = useCallback(async (fn) => {
|
|
433
|
+
if (!sp) {
|
|
434
|
+
throw new Error('SPFI instance not initialized. ' +
|
|
435
|
+
'Check isInitialized property or context error.');
|
|
436
|
+
}
|
|
437
|
+
setIsLoading(true);
|
|
438
|
+
setInvokeError(undefined);
|
|
439
|
+
try {
|
|
440
|
+
// Create batched instance
|
|
441
|
+
const [batchedSP, execute] = sp.batched();
|
|
442
|
+
// User builds operations
|
|
443
|
+
const resultPromise = fn(batchedSP);
|
|
444
|
+
// Execute batch automatically
|
|
445
|
+
await execute();
|
|
446
|
+
// Resolve results
|
|
447
|
+
const result = await resultPromise;
|
|
448
|
+
return result;
|
|
449
|
+
}
|
|
450
|
+
catch (err) {
|
|
451
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
452
|
+
setInvokeError(error);
|
|
453
|
+
throw error;
|
|
454
|
+
}
|
|
455
|
+
finally {
|
|
456
|
+
setIsLoading(false);
|
|
457
|
+
}
|
|
458
|
+
}, [sp]);
|
|
516
459
|
/**
|
|
517
460
|
* Clear current error state
|
|
518
461
|
*/
|
|
519
|
-
|
|
462
|
+
const clearError = useCallback(() => {
|
|
520
463
|
setInvokeError(undefined);
|
|
521
464
|
}, []);
|
|
522
465
|
return {
|
|
523
|
-
sp
|
|
524
|
-
invoke
|
|
525
|
-
batch
|
|
526
|
-
isLoading
|
|
527
|
-
error
|
|
528
|
-
clearError
|
|
529
|
-
isInitialized
|
|
530
|
-
siteUrl
|
|
466
|
+
sp,
|
|
467
|
+
invoke,
|
|
468
|
+
batch,
|
|
469
|
+
isLoading,
|
|
470
|
+
error,
|
|
471
|
+
clearError,
|
|
472
|
+
isInitialized,
|
|
473
|
+
siteUrl,
|
|
531
474
|
};
|
|
532
475
|
}
|
|
533
476
|
//# sourceMappingURL=useSPFxPnP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxPnP.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPnP.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,kEAAkE
|
|
1
|
+
{"version":3,"file":"useSPFxPnP.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPnP.ts"],"names":[],"mappings":"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"}
|
|
@@ -249,24 +249,24 @@ import { useSPFxPageContext } from './useSPFxPageContext';
|
|
|
249
249
|
* @see {@link useSPFxPnP} for general PnP operations wrapper
|
|
250
250
|
*/
|
|
251
251
|
export function useSPFxPnPContext(siteUrl, config) {
|
|
252
|
-
|
|
253
|
-
|
|
252
|
+
const { spfxContext } = useSPFxContext();
|
|
253
|
+
const pageContext = useSPFxPageContext();
|
|
254
254
|
// State for error tracking
|
|
255
|
-
|
|
255
|
+
const [error, setError] = useState(undefined);
|
|
256
256
|
// Resolve effective site URL
|
|
257
|
-
|
|
257
|
+
const effectiveSiteUrl = useMemo(() => {
|
|
258
258
|
// If no siteUrl provided, use current site
|
|
259
259
|
if (!siteUrl) {
|
|
260
260
|
return pageContext.web.absoluteUrl;
|
|
261
261
|
}
|
|
262
262
|
// Normalize: remove trailing slash (ES5 compatible)
|
|
263
|
-
|
|
263
|
+
const trimmed = siteUrl.charAt(siteUrl.length - 1) === '/'
|
|
264
264
|
? siteUrl.slice(0, -1)
|
|
265
265
|
: siteUrl;
|
|
266
266
|
// If relative URL, make it absolute (ES5 compatible)
|
|
267
267
|
if (trimmed.charAt(0) === '/') {
|
|
268
|
-
|
|
269
|
-
return
|
|
268
|
+
const origin = new URL(pageContext.web.absoluteUrl).origin;
|
|
269
|
+
return `${origin}${trimmed}`;
|
|
270
270
|
}
|
|
271
271
|
// Already absolute
|
|
272
272
|
return trimmed;
|
|
@@ -281,12 +281,9 @@ export function useSPFxPnPContext(siteUrl, config) {
|
|
|
281
281
|
// there's a tiny overhead that's negligible compared to network/rendering costs.
|
|
282
282
|
//
|
|
283
283
|
// This approach prioritizes DX (works without memoization) over micro-optimization.
|
|
284
|
-
|
|
285
|
-
return JSON.stringify(config || {});
|
|
286
|
-
}, [config]);
|
|
284
|
+
const configKey = useMemo(() => JSON.stringify(config || {}), [config]);
|
|
287
285
|
// Create and configure SPFI instance
|
|
288
|
-
|
|
289
|
-
var _a;
|
|
286
|
+
const sp = useMemo(() => {
|
|
290
287
|
try {
|
|
291
288
|
// Validate SPFx context availability
|
|
292
289
|
if (!spfxContext) {
|
|
@@ -294,20 +291,20 @@ export function useSPFxPnPContext(siteUrl, config) {
|
|
|
294
291
|
'Ensure your component is wrapped with SPFxProvider.');
|
|
295
292
|
}
|
|
296
293
|
// Initialize PnPjs with SPFx behavior for authentication
|
|
297
|
-
|
|
294
|
+
let instance = spfi(effectiveSiteUrl).using(SPFx(spfxContext));
|
|
298
295
|
// Apply caching if enabled
|
|
299
|
-
if (
|
|
300
|
-
|
|
296
|
+
if (config?.cache?.enabled) {
|
|
297
|
+
const cacheOptions = {
|
|
301
298
|
store: config.cache.storage || 'session',
|
|
302
|
-
keyFactory: config.cache.keyFactory || (
|
|
299
|
+
keyFactory: config.cache.keyFactory || ((url) => {
|
|
303
300
|
// Simple hash function for cache keys (ES5 compatible)
|
|
304
|
-
|
|
305
|
-
for (
|
|
306
|
-
|
|
301
|
+
let hash = 0;
|
|
302
|
+
for (let i = 0; i < url.length; i++) {
|
|
303
|
+
const char = url.charCodeAt(i);
|
|
307
304
|
hash = ((hash << 5) - hash) + char;
|
|
308
305
|
hash = hash & hash; // Convert to 32-bit integer
|
|
309
306
|
}
|
|
310
|
-
return
|
|
307
|
+
return `pnp-cache-${Math.abs(hash)}`;
|
|
311
308
|
}),
|
|
312
309
|
timeout: config.cache.timeout || 300000 // 5 minutes default
|
|
313
310
|
};
|
|
@@ -319,7 +316,7 @@ export function useSPFxPnPContext(siteUrl, config) {
|
|
|
319
316
|
// instance = instance.using(Batching());
|
|
320
317
|
// }
|
|
321
318
|
// Apply custom headers if provided
|
|
322
|
-
if (config
|
|
319
|
+
if (config?.headers) {
|
|
323
320
|
instance = instance.using(InjectHeaders(config.headers));
|
|
324
321
|
}
|
|
325
322
|
// Clear any previous errors on successful initialization
|
|
@@ -328,16 +325,16 @@ export function useSPFxPnPContext(siteUrl, config) {
|
|
|
328
325
|
}
|
|
329
326
|
catch (err) {
|
|
330
327
|
// Capture initialization error
|
|
331
|
-
|
|
332
|
-
setError(
|
|
328
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
329
|
+
setError(error);
|
|
333
330
|
// Return undefined on error
|
|
334
331
|
return undefined;
|
|
335
332
|
}
|
|
336
333
|
}, [effectiveSiteUrl, spfxContext, configKey]);
|
|
337
334
|
return {
|
|
338
|
-
sp
|
|
335
|
+
sp,
|
|
339
336
|
isInitialized: sp !== undefined,
|
|
340
|
-
error
|
|
337
|
+
error,
|
|
341
338
|
siteUrl: effectiveSiteUrl
|
|
342
339
|
};
|
|
343
340
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxPnPContext.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPnPContext.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,wDAAwD;AAExD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAQ,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,2DAA2D;AAC3D,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA4D1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6OG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,MAAyB;
|
|
1
|
+
{"version":3,"file":"useSPFxPnPContext.js","sourceRoot":"","sources":["../../src/hooks/useSPFxPnPContext.ts"],"names":[],"mappings":"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"}
|