@apvee/spfx-react-toolkit 1.2.1 → 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.
Files changed (138) hide show
  1. package/lib/core/atoms.internal.js +1 -1
  2. package/lib/core/atoms.internal.js.map +1 -1
  3. package/lib/core/context.internal.js +2 -2
  4. package/lib/core/context.internal.js.map +1 -1
  5. package/lib/core/provider-base.internal.js +29 -29
  6. package/lib/core/provider-base.internal.js.map +1 -1
  7. package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.d.ts +14 -0
  8. package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.d.ts.map +1 -0
  9. package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.js +20 -0
  10. package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.js.map +1 -0
  11. package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.manifest.json +17 -0
  12. package/lib/extensions/spFxReactToolkitTest/loc/en-us.js +5 -0
  13. package/lib/hooks/index.d.ts +1 -0
  14. package/lib/hooks/index.d.ts.map +1 -1
  15. package/lib/hooks/index.js +1 -0
  16. package/lib/hooks/index.js.map +1 -1
  17. package/lib/hooks/useAppCatalogUrl.internal.d.ts +26 -0
  18. package/lib/hooks/useAppCatalogUrl.internal.d.ts.map +1 -0
  19. package/lib/hooks/useAppCatalogUrl.internal.js +72 -0
  20. package/lib/hooks/useAppCatalogUrl.internal.js.map +1 -0
  21. package/lib/hooks/useAsyncInvoke.internal.js +27 -75
  22. package/lib/hooks/useAsyncInvoke.internal.js.map +1 -1
  23. package/lib/hooks/useSPFxAadHttpClient.d.ts +46 -0
  24. package/lib/hooks/useSPFxAadHttpClient.d.ts.map +1 -1
  25. package/lib/hooks/useSPFxAadHttpClient.js +65 -20
  26. package/lib/hooks/useSPFxAadHttpClient.js.map +1 -1
  27. package/lib/hooks/useSPFxContainerInfo.js +5 -5
  28. package/lib/hooks/useSPFxContainerInfo.js.map +1 -1
  29. package/lib/hooks/useSPFxContainerSize.js +9 -10
  30. package/lib/hooks/useSPFxContainerSize.js.map +1 -1
  31. package/lib/hooks/useSPFxCorrelationInfo.js +6 -7
  32. package/lib/hooks/useSPFxCorrelationInfo.js.map +1 -1
  33. package/lib/hooks/useSPFxCrossSitePermissions.js +48 -58
  34. package/lib/hooks/useSPFxCrossSitePermissions.js.map +1 -1
  35. package/lib/hooks/useSPFxDisplayMode.js +8 -8
  36. package/lib/hooks/useSPFxDisplayMode.js.map +1 -1
  37. package/lib/hooks/useSPFxEnvironmentInfo.js +17 -18
  38. package/lib/hooks/useSPFxEnvironmentInfo.js.map +1 -1
  39. package/lib/hooks/useSPFxFluent9ThemeInfo.js +4 -4
  40. package/lib/hooks/useSPFxFluent9ThemeInfo.js.map +1 -1
  41. package/lib/hooks/useSPFxHttpClient.d.ts +18 -2
  42. package/lib/hooks/useSPFxHttpClient.d.ts.map +1 -1
  43. package/lib/hooks/useSPFxHttpClient.js +19 -9
  44. package/lib/hooks/useSPFxHttpClient.js.map +1 -1
  45. package/lib/hooks/useSPFxHubSiteInfo.js +21 -24
  46. package/lib/hooks/useSPFxHubSiteInfo.js.map +1 -1
  47. package/lib/hooks/useSPFxInstanceInfo.js +2 -2
  48. package/lib/hooks/useSPFxInstanceInfo.js.map +1 -1
  49. package/lib/hooks/useSPFxListInfo.js +8 -9
  50. package/lib/hooks/useSPFxListInfo.js.map +1 -1
  51. package/lib/hooks/useSPFxLocaleInfo.js +10 -10
  52. package/lib/hooks/useSPFxLocaleInfo.js.map +1 -1
  53. package/lib/hooks/useSPFxLogger.js +26 -26
  54. package/lib/hooks/useSPFxLogger.js.map +1 -1
  55. package/lib/hooks/useSPFxMSGraphClient.d.ts +50 -3
  56. package/lib/hooks/useSPFxMSGraphClient.d.ts.map +1 -1
  57. package/lib/hooks/useSPFxMSGraphClient.js +68 -15
  58. package/lib/hooks/useSPFxMSGraphClient.js.map +1 -1
  59. package/lib/hooks/useSPFxOneDriveAppData.d.ts +0 -1
  60. package/lib/hooks/useSPFxOneDriveAppData.d.ts.map +1 -1
  61. package/lib/hooks/useSPFxOneDriveAppData.js +420 -230
  62. package/lib/hooks/useSPFxOneDriveAppData.js.map +1 -1
  63. package/lib/hooks/useSPFxPageContext.js +2 -2
  64. package/lib/hooks/useSPFxPageContext.js.map +1 -1
  65. package/lib/hooks/useSPFxPageType.js +19 -20
  66. package/lib/hooks/useSPFxPageType.js.map +1 -1
  67. package/lib/hooks/useSPFxPerformance.js +33 -87
  68. package/lib/hooks/useSPFxPerformance.js.map +1 -1
  69. package/lib/hooks/useSPFxPermissions.js +14 -15
  70. package/lib/hooks/useSPFxPermissions.js.map +1 -1
  71. package/lib/hooks/useSPFxPnP.js +62 -119
  72. package/lib/hooks/useSPFxPnP.js.map +1 -1
  73. package/lib/hooks/useSPFxPnPContext.js +22 -25
  74. package/lib/hooks/useSPFxPnPContext.js.map +1 -1
  75. package/lib/hooks/useSPFxPnPList.js +307 -451
  76. package/lib/hooks/useSPFxPnPList.js.map +1 -1
  77. package/lib/hooks/useSPFxPnPSearch.js +262 -353
  78. package/lib/hooks/useSPFxPnPSearch.js.map +1 -1
  79. package/lib/hooks/useSPFxProperties.js +12 -20
  80. package/lib/hooks/useSPFxProperties.js.map +1 -1
  81. package/lib/hooks/useSPFxSPHttpClient.d.ts +18 -2
  82. package/lib/hooks/useSPFxSPHttpClient.d.ts.map +1 -1
  83. package/lib/hooks/useSPFxSPHttpClient.js +28 -18
  84. package/lib/hooks/useSPFxSPHttpClient.js.map +1 -1
  85. package/lib/hooks/useSPFxServiceScope.js +6 -6
  86. package/lib/hooks/useSPFxServiceScope.js.map +1 -1
  87. package/lib/hooks/useSPFxSiteInfo.js +7 -8
  88. package/lib/hooks/useSPFxSiteInfo.js.map +1 -1
  89. package/lib/hooks/useSPFxStorage.js +22 -22
  90. package/lib/hooks/useSPFxStorage.js.map +1 -1
  91. package/lib/hooks/useSPFxTeams.js +37 -92
  92. package/lib/hooks/useSPFxTeams.js.map +1 -1
  93. package/lib/hooks/useSPFxTenantKeyValueStore.d.ts +252 -0
  94. package/lib/hooks/useSPFxTenantKeyValueStore.d.ts.map +1 -0
  95. package/lib/hooks/useSPFxTenantKeyValueStore.js +572 -0
  96. package/lib/hooks/useSPFxTenantKeyValueStore.js.map +1 -0
  97. package/lib/hooks/useSPFxTenantProperty.d.ts +23 -244
  98. package/lib/hooks/useSPFxTenantProperty.d.ts.map +1 -1
  99. package/lib/hooks/useSPFxTenantProperty.js +85 -559
  100. package/lib/hooks/useSPFxTenantProperty.js.map +1 -1
  101. package/lib/hooks/useSPFxUserInfo.js +3 -4
  102. package/lib/hooks/useSPFxUserInfo.js.map +1 -1
  103. package/lib/hooks/useSPFxUserPhoto.js +76 -123
  104. package/lib/hooks/useSPFxUserPhoto.js.map +1 -1
  105. package/lib/utils/resize-observer.internal.js +6 -7
  106. package/lib/utils/resize-observer.internal.js.map +1 -1
  107. package/lib/utils/theme-subscription.internal.js +8 -8
  108. package/lib/utils/theme-subscription.internal.js.map +1 -1
  109. package/lib/utils/type-guards.internal.js +6 -6
  110. package/lib/utils/type-guards.internal.js.map +1 -1
  111. package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js +12 -37
  112. package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js.map +1 -1
  113. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.d.ts.map +1 -1
  114. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js +279 -342
  115. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js.map +1 -1
  116. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js +1 -1
  117. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js.map +1 -1
  118. package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js +26 -86
  119. package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js.map +1 -1
  120. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js +53 -113
  121. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js.map +1 -1
  122. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js +49 -121
  123. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js.map +1 -1
  124. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js +44 -103
  125. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js.map +1 -1
  126. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js +15 -15
  127. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js.map +1 -1
  128. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js +18 -66
  129. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js.map +1 -1
  130. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js +9 -9
  131. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js.map +1 -1
  132. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js +37 -86
  133. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js.map +1 -1
  134. package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js +6 -9
  135. package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js.map +1 -1
  136. package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js +3 -6
  137. package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js.map +1 -1
  138. package/package.json +8 -6
@@ -1 +1 @@
1
- {"version":3,"file":"useSPFxTeams.js","sourceRoot":"","sources":["../../src/hooks/useSPFxTeams.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSPFxTeams.js","sourceRoot":"","sources":["../../src/hooks/useSPFxTeams.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,+CAA+C;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAqBlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEnD,SAAS,CAAC,GAAG,EAAE;QACb,8BAA8B;QAC9B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,MAAM,GAAG,GAAG,WAAsD,CAAC;QACnE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,EAAE,cAMV,CAAC;QAEd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,oCAAoC;QACpC,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAE,UAAmB,EAAQ,EAAE;YAC5D,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YAED,MAAM,eAAe,GAAG,CACtB,UAAU,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC/C,UAAU,EAAE,WAAW,EAAE,KAAK,UAAU,IAAK,UAAU,EAAE,WAAW,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBAC5G,SAAS,CACI,CAAC;YAEhB,QAAQ,CAAC;gBACP,SAAS,EAAE,IAAI;gBACf,OAAO;gBACP,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,0BAA0B;QAC1B,MAAM,KAAK,GAAG,KAAK,IAAsB,EAAE;YACzC,IAAI,CAAC;gBACH,IAAI,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;oBAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBAChD,MAAM,UAAU,GAAI,OAAwC,EAAE,GAAG,EAAE,KAAK,CAAC;oBACzE,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;oBAC3B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAEF,yBAAyB;QACzB,MAAM,KAAK,GAAG,GAAqB,EAAE;YACnC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBACtC,IAAI,CAAC;oBACH,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACxB,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAgB,EAAE,EAAE;4BACvC,MAAM,UAAU,GAAI,OAA8B,EAAE,KAAK,CAAC;4BAC1D,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;4BAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,mBAAmB;QACnB,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;YACrC,MAAM,SAAS,GAAG,MAAM,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,KAAK,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YAChB,kCAAkC;YAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAE/C,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * A single item from the tenant key-value store
3
+ */
4
+ export interface SPFxTenantKeyValueStoreItem<T = unknown> {
5
+ /** Property key (stored in Title column) */
6
+ readonly key: string;
7
+ /** Deserialized property value */
8
+ readonly value: T;
9
+ /** Optional description metadata */
10
+ readonly description: string | undefined;
11
+ /** SharePoint list item ID (internal use) */
12
+ readonly id: number;
13
+ }
14
+ /**
15
+ * Return type for useSPFxTenantKeyValueStore hook
16
+ */
17
+ export interface SPFxTenantKeyValueStoreResult {
18
+ /**
19
+ * Loading state for read operations (`get`, `list`).
20
+ * True during any active read call.
21
+ */
22
+ readonly isLoading: boolean;
23
+ /**
24
+ * Last error from read operations.
25
+ * Cleared on next successful read.
26
+ */
27
+ readonly error: Error | undefined;
28
+ /**
29
+ * Loading state for write operations (`save`, `remove`).
30
+ * True during any active write call.
31
+ */
32
+ readonly isWriting: boolean;
33
+ /**
34
+ * Last error from write operations.
35
+ * Cleared on next successful write.
36
+ */
37
+ readonly writeError: Error | undefined;
38
+ /**
39
+ * Whether the current user has permission to write to the store.
40
+ * Requires Site Collection Administrator role on the tenant app catalog.
41
+ * Computed asynchronously on first operation.
42
+ */
43
+ readonly canWrite: boolean;
44
+ /**
45
+ * Computed state: true when the SPHttpClient is available and
46
+ * the hook is ready to perform operations.
47
+ */
48
+ readonly isReady: boolean;
49
+ /**
50
+ * Get a single item by key.
51
+ * Returns undefined if the key does not exist or the list has not been provisioned.
52
+ *
53
+ * @param key - Property key to look up
54
+ * @returns The item with deserialized value, or undefined
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * const store = useSPFxTenantKeyValueStore();
59
+ *
60
+ * const handleLoad = async () => {
61
+ * const item = await store.get<string>('apiEndpoint');
62
+ * if (item) {
63
+ * console.log(item.value); // "https://api.example.com"
64
+ * }
65
+ * };
66
+ * ```
67
+ */
68
+ readonly get: <T = unknown>(key: string) => Promise<SPFxTenantKeyValueStoreItem<T> | undefined>;
69
+ /**
70
+ * List all items in the store.
71
+ * Returns an empty array if the list has not been provisioned.
72
+ * Items are sorted by key (Title) ascending.
73
+ *
74
+ * @returns Array of all items with deserialized values
75
+ *
76
+ * @example
77
+ * ```tsx
78
+ * const store = useSPFxTenantKeyValueStore();
79
+ *
80
+ * const items = await store.list();
81
+ * items.forEach(item => {
82
+ * console.log(`${item.key}: ${typeof item.value === 'object' ? JSON.stringify(item.value) : item.value}`);
83
+ * });
84
+ * ```
85
+ */
86
+ readonly list: () => Promise<SPFxTenantKeyValueStoreItem<unknown>[]>;
87
+ /**
88
+ * Save (create or update) a key-value pair.
89
+ * Auto-provisions the hidden list on first write if it doesn't exist.
90
+ *
91
+ * Smart serialization:
92
+ * - Primitives (string, number, boolean, null, bigint) → String(value)
93
+ * - Date objects → ISO 8601 string
94
+ * - Objects/arrays → JSON.stringify(value)
95
+ *
96
+ * @param key - Property key
97
+ * @param value - Value to store
98
+ * @param description - Optional description metadata
99
+ *
100
+ * @example
101
+ * ```tsx
102
+ * const store = useSPFxTenantKeyValueStore();
103
+ *
104
+ * // String value
105
+ * await store.save<string>('apiEndpoint', 'https://api.example.com', 'Production API');
106
+ *
107
+ * // Complex object
108
+ * await store.save<FeatureFlags>('featureFlags', { enableChat: true, maxUsers: 1000 });
109
+ * ```
110
+ */
111
+ readonly save: <T = unknown>(key: string, value: T, description?: string) => Promise<void>;
112
+ /**
113
+ * Remove an item by key.
114
+ * No-op if the key does not exist or the list has not been provisioned.
115
+ *
116
+ * @param key - Property key to remove
117
+ *
118
+ * @example
119
+ * ```tsx
120
+ * const store = useSPFxTenantKeyValueStore();
121
+ *
122
+ * await store.remove('deprecatedSetting');
123
+ * ```
124
+ */
125
+ readonly remove: (key: string) => Promise<void>;
126
+ }
127
+ /**
128
+ * Hook to manage tenant-wide key-value pairs backed by a hidden SharePoint list.
129
+ *
130
+ * The store uses a hidden list named `TenantKeyValueStore` in the tenant app catalog.
131
+ * The list is auto-provisioned on the first operation (get, list, save, or remove), with:
132
+ * - Title column: key (indexed, unique)
133
+ * - Value column: multiline text (Note)
134
+ * - Description column: multiline text (Note)
135
+ *
136
+ * This hook provides an alternative to tenant properties (StorageEntity) for scenarios
137
+ * requiring read/write access via REST, since Microsoft has blocked the
138
+ * SetStorageEntity and RemoveStorageEntity REST API endpoints.
139
+ *
140
+ * Features:
141
+ * - CRUD operations (get, list, save, remove) on tenant-scoped key-value data
142
+ * - Auto-provisioning of the hidden list on first operation (any CRUD call)
143
+ * - Smart provisioning: ref-based fast path (zero API calls after first check),
144
+ * field introspection only when list already exists, Title uniqueness only on creation
145
+ * - Smart serialization for primitives, Date, and complex objects
146
+ * - Permission checking (canWrite flag via IsSiteAdmin)
147
+ * - Unique key enforcement (Indexed + EnforceUniqueValues on Title)
148
+ * - Concurrent provisioning protection (mutex ref)
149
+ * - Memory leak safe with mounted state tracking
150
+ * - Idempotent remove (no-op if key or list doesn't exist)
151
+ *
152
+ * Requirements:
153
+ * - Tenant app catalog must be provisioned
154
+ * - Read: Any authenticated user
155
+ * - Write/Remove: Site Collection Administrator role on tenant app catalog site
156
+ *
157
+ * @returns Object with loading states, error states, permission flag, and CRUD functions
158
+ *
159
+ * @example Basic usage
160
+ * ```tsx
161
+ * function TenantConfigPanel() {
162
+ * const store = useSPFxTenantKeyValueStore();
163
+ *
164
+ * const [endpoint, setEndpoint] = React.useState<string>('');
165
+ *
166
+ * React.useEffect(() => {
167
+ * store.get<string>('apiEndpoint').then(item => {
168
+ * if (item) setEndpoint(item.value);
169
+ * });
170
+ * }, []);
171
+ *
172
+ * const handleSave = async () => {
173
+ * await store.save<string>('apiEndpoint', endpoint, 'Production API endpoint');
174
+ * };
175
+ *
176
+ * if (!store.isReady) return <Spinner />;
177
+ *
178
+ * return (
179
+ * <Stack tokens={{ childrenGap: 10 }}>
180
+ * <TextField value={endpoint} onChange={(_, v) => setEndpoint(v ?? '')} />
181
+ * <PrimaryButton onClick={handleSave} disabled={store.isWriting}>
182
+ * {store.isWriting ? 'Saving...' : 'Save'}
183
+ * </PrimaryButton>
184
+ * </Stack>
185
+ * );
186
+ * }
187
+ * ```
188
+ *
189
+ * @example Heterogeneous value types
190
+ * ```tsx
191
+ * const store = useSPFxTenantKeyValueStore();
192
+ *
193
+ * // String
194
+ * await store.save<string>('appVersion', '2.1.0');
195
+ * const ver = await store.get<string>('appVersion');
196
+ *
197
+ * // Number
198
+ * await store.save<number>('maxUploadSize', 10485760);
199
+ * const size = await store.get<number>('maxUploadSize');
200
+ *
201
+ * // Complex object
202
+ * interface FeatureFlags { enableChat: boolean; maxUsers: number; }
203
+ * await store.save<FeatureFlags>('featureFlags', { enableChat: true, maxUsers: 500 });
204
+ * const flags = await store.get<FeatureFlags>('featureFlags');
205
+ * ```
206
+ *
207
+ * @example Dashboard listing all properties
208
+ * ```tsx
209
+ * function AllPropertiesView() {
210
+ * const store = useSPFxTenantKeyValueStore();
211
+ * const [items, setItems] = React.useState<SPFxTenantKeyValueStoreItem<unknown>[]>([]);
212
+ *
213
+ * React.useEffect(() => {
214
+ * store.list().then(setItems);
215
+ * }, []);
216
+ *
217
+ * return (
218
+ * <DetailsList
219
+ * items={items.map(i => ({
220
+ * key: i.key,
221
+ * value: typeof i.value === 'object' ? JSON.stringify(i.value) : String(i.value),
222
+ * description: i.description ?? '',
223
+ * }))}
224
+ * columns={[
225
+ * { key: 'key', name: 'Key', fieldName: 'key', minWidth: 150 },
226
+ * { key: 'value', name: 'Value', fieldName: 'value', minWidth: 200 },
227
+ * { key: 'desc', name: 'Description', fieldName: 'description', minWidth: 200 },
228
+ * ]}
229
+ * />
230
+ * );
231
+ * }
232
+ * ```
233
+ *
234
+ * @example Permission-aware UI
235
+ * ```tsx
236
+ * function TenantStoreManager() {
237
+ * const store = useSPFxTenantKeyValueStore();
238
+ *
239
+ * if (!store.canWrite) {
240
+ * return (
241
+ * <MessageBar messageBarType={MessageBarType.info}>
242
+ * Read-only access. Contact your SharePoint administrator for write permissions.
243
+ * </MessageBar>
244
+ * );
245
+ * }
246
+ *
247
+ * return <EditablePropertyPanel store={store} />;
248
+ * }
249
+ * ```
250
+ */
251
+ export declare function useSPFxTenantKeyValueStore(): SPFxTenantKeyValueStoreResult;
252
+ //# sourceMappingURL=useSPFxTenantKeyValueStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxTenantKeyValueStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useSPFxTenantKeyValueStore.ts"],"names":[],"mappings":"AA0GA;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,CAAC,GAAG,OAAO;IACpD,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,oCAAoC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,SAAS,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAEhG;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAErE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3F;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AA8BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2HG;AACH,wBAAgB,0BAA0B,IAAI,6BAA6B,CAmc1E"}