@carlonicora/nextjs-jsonapi 6.12.2 → 6.13.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 (254) hide show
  1. package/dist/{ApiData-DPKNfY-9.d.mts → ApiData-Be8yxCOX.d.mts} +2 -0
  2. package/dist/{ApiData-DPKNfY-9.d.ts → ApiData-Be8yxCOX.d.ts} +2 -0
  3. package/dist/{BlockNoteEditor-75ED2CN2.mjs → BlockNoteEditor-22Q4DJBU.mjs} +20 -8
  4. package/dist/BlockNoteEditor-22Q4DJBU.mjs.map +1 -0
  5. package/dist/{BlockNoteEditor-7M5QW2YQ.js → BlockNoteEditor-2VLPSEKS.js} +34 -22
  6. package/dist/BlockNoteEditor-2VLPSEKS.js.map +1 -0
  7. package/dist/{BlockNoteViewer-WGCDB7IJ.js → BlockNoteViewer-2XYASA5Y.js} +8 -5
  8. package/dist/BlockNoteViewer-2XYASA5Y.js.map +1 -0
  9. package/dist/{BlockNoteViewer-MTGS6YJV.mjs → BlockNoteViewer-NBW2H6LC.mjs} +7 -4
  10. package/dist/{BlockNoteViewer-MTGS6YJV.mjs.map → BlockNoteViewer-NBW2H6LC.mjs.map} +1 -1
  11. package/dist/{JsonApiRequest-A66XK5WT.mjs → JsonApiRequest-F6TMJ42G.mjs} +2 -2
  12. package/dist/JsonApiRequest-WISJZSDE.js +26 -0
  13. package/dist/{JsonApiRequest-FZGPLNUF.js.map → JsonApiRequest-WISJZSDE.js.map} +1 -1
  14. package/dist/billing/index.js +499 -494
  15. package/dist/billing/index.js.map +1 -1
  16. package/dist/billing/index.mjs +13 -8
  17. package/dist/billing/index.mjs.map +1 -1
  18. package/dist/chunk-27LQDGNP.mjs +317 -0
  19. package/dist/chunk-27LQDGNP.mjs.map +1 -0
  20. package/dist/{chunk-V3YDVJ63.js → chunk-2H342HNN.js} +948 -921
  21. package/dist/chunk-2H342HNN.js.map +1 -0
  22. package/dist/{chunk-KSYQEKJX.js → chunk-2SV4SS6N.js} +14 -14
  23. package/dist/{chunk-KSYQEKJX.js.map → chunk-2SV4SS6N.js.map} +1 -1
  24. package/dist/{chunk-4FNGWALA.mjs → chunk-47BBY5KA.mjs} +6 -4
  25. package/dist/{chunk-4FNGWALA.mjs.map → chunk-47BBY5KA.mjs.map} +1 -1
  26. package/dist/chunk-6JUCIWDC.mjs +570 -0
  27. package/dist/chunk-6JUCIWDC.mjs.map +1 -0
  28. package/dist/chunk-7DBJTNSU.mjs +1049 -0
  29. package/dist/chunk-7DBJTNSU.mjs.map +1 -0
  30. package/dist/chunk-7JZHPMGW.mjs +704 -0
  31. package/dist/chunk-7JZHPMGW.mjs.map +1 -0
  32. package/dist/{chunk-L6PYFQTO.js → chunk-7ZHTPFFT.js} +16 -14
  33. package/dist/chunk-7ZHTPFFT.js.map +1 -0
  34. package/dist/chunk-B6JGKDP2.js +214 -0
  35. package/dist/chunk-B6JGKDP2.js.map +1 -0
  36. package/dist/{chunk-3YW35YHQ.mjs → chunk-BH6JWIKI.mjs} +5 -5
  37. package/dist/chunk-BZ5J2FIV.js +570 -0
  38. package/dist/chunk-BZ5J2FIV.js.map +1 -0
  39. package/dist/{chunk-V5MI7RNB.mjs → chunk-DGWOVYEC.mjs} +2 -2
  40. package/dist/chunk-DOCIFE6A.mjs +212 -0
  41. package/dist/chunk-DOCIFE6A.mjs.map +1 -0
  42. package/dist/chunk-GB6DBFYY.js +25 -0
  43. package/dist/chunk-GB6DBFYY.js.map +1 -0
  44. package/dist/{chunk-RXQYEEKZ.mjs → chunk-H4NLDX5G.mjs} +51 -24
  45. package/dist/chunk-H4NLDX5G.mjs.map +1 -0
  46. package/dist/{chunk-EWCY6QJA.mjs → chunk-JJMMT24D.mjs} +37 -3
  47. package/dist/chunk-JJMMT24D.mjs.map +1 -0
  48. package/dist/{chunk-JTPRJNT2.js → chunk-KMW7UNL2.js} +38 -3
  49. package/dist/chunk-KMW7UNL2.js.map +1 -0
  50. package/dist/chunk-MHB36MYE.js +317 -0
  51. package/dist/chunk-MHB36MYE.js.map +1 -0
  52. package/dist/{chunk-FF4EIQ6H.js → chunk-MOGEGWXW.js} +1039 -1680
  53. package/dist/chunk-MOGEGWXW.js.map +1 -0
  54. package/dist/{chunk-AA52ORW2.mjs → chunk-P445QGOC.mjs} +61 -702
  55. package/dist/chunk-P445QGOC.mjs.map +1 -0
  56. package/dist/chunk-PV4Z5W6V.js +212 -0
  57. package/dist/chunk-PV4Z5W6V.js.map +1 -0
  58. package/dist/chunk-PXDUJ47N.js +1049 -0
  59. package/dist/chunk-PXDUJ47N.js.map +1 -0
  60. package/dist/{chunk-GHE4VT2R.js → chunk-QKNGZDSQ.js} +2 -2
  61. package/dist/{chunk-GHE4VT2R.js.map → chunk-QKNGZDSQ.js.map} +1 -1
  62. package/dist/chunk-W62MHDWM.js +704 -0
  63. package/dist/chunk-W62MHDWM.js.map +1 -0
  64. package/dist/chunk-XXP3TQHF.mjs +25 -0
  65. package/dist/chunk-XXP3TQHF.mjs.map +1 -0
  66. package/dist/chunk-YRKIFYOE.mjs +214 -0
  67. package/dist/chunk-YRKIFYOE.mjs.map +1 -0
  68. package/dist/{chunk-O3PDL2CV.js → chunk-Z4POQWFG.js} +40 -6
  69. package/dist/chunk-Z4POQWFG.js.map +1 -0
  70. package/dist/{chunk-PI56A4DG.mjs → chunk-ZLTOUZN2.mjs} +37 -2
  71. package/dist/chunk-ZLTOUZN2.mjs.map +1 -0
  72. package/dist/client/index.d.mts +2 -2
  73. package/dist/client/index.d.ts +2 -2
  74. package/dist/client/index.js +14 -9
  75. package/dist/client/index.js.map +1 -1
  76. package/dist/client/index.mjs +24 -19
  77. package/dist/components/index.d.mts +7 -1
  78. package/dist/components/index.d.ts +7 -1
  79. package/dist/components/index.js +11 -7
  80. package/dist/components/index.js.map +1 -1
  81. package/dist/components/index.mjs +10 -6
  82. package/dist/contexts/index.d.mts +1 -1
  83. package/dist/contexts/index.d.ts +1 -1
  84. package/dist/contexts/index.js +11 -7
  85. package/dist/contexts/index.js.map +1 -1
  86. package/dist/contexts/index.mjs +10 -6
  87. package/dist/core/index.d.mts +128 -2
  88. package/dist/core/index.d.ts +128 -2
  89. package/dist/core/index.js +17 -4
  90. package/dist/core/index.js.map +1 -1
  91. package/dist/core/index.mjs +22 -9
  92. package/dist/email-automations/index.js +101 -96
  93. package/dist/email-automations/index.js.map +1 -1
  94. package/dist/email-automations/index.mjs +13 -8
  95. package/dist/email-automations/index.mjs.map +1 -1
  96. package/dist/features/analytics/index.js +128 -123
  97. package/dist/features/analytics/index.js.map +1 -1
  98. package/dist/features/analytics/index.mjs +13 -8
  99. package/dist/features/analytics/index.mjs.map +1 -1
  100. package/dist/features/analytics/server.js +11 -8
  101. package/dist/features/analytics/server.js.map +1 -1
  102. package/dist/features/analytics/server.mjs +9 -6
  103. package/dist/features/analytics/server.mjs.map +1 -1
  104. package/dist/features/blog/index.js +158 -153
  105. package/dist/features/blog/index.js.map +1 -1
  106. package/dist/features/blog/index.mjs +14 -9
  107. package/dist/features/blog/index.mjs.map +1 -1
  108. package/dist/features/blog/server.js +30 -26
  109. package/dist/features/blog/server.js.map +1 -1
  110. package/dist/features/blog/server.mjs +10 -6
  111. package/dist/features/blog/server.mjs.map +1 -1
  112. package/dist/features/help/index.js +44 -40
  113. package/dist/features/help/index.js.map +1 -1
  114. package/dist/features/help/index.mjs +10 -6
  115. package/dist/features/help/index.mjs.map +1 -1
  116. package/dist/features/tokenusage/index.js +134 -129
  117. package/dist/features/tokenusage/index.js.map +1 -1
  118. package/dist/features/tokenusage/index.mjs +13 -8
  119. package/dist/features/tokenusage/index.mjs.map +1 -1
  120. package/dist/index.d.mts +2 -2
  121. package/dist/index.d.ts +2 -2
  122. package/dist/index.js +18 -5
  123. package/dist/index.js.map +1 -1
  124. package/dist/index.mjs +24 -11
  125. package/dist/lifecycle-4GUOTB46.js +23 -0
  126. package/dist/lifecycle-4GUOTB46.js.map +1 -0
  127. package/dist/lifecycle-LKGPRBS7.mjs +23 -0
  128. package/dist/local-transport-7H3SPZSA.js +15 -0
  129. package/dist/local-transport-7H3SPZSA.js.map +1 -0
  130. package/dist/local-transport-QYFKA6AN.mjs +15 -0
  131. package/dist/local-transport-QYFKA6AN.mjs.map +1 -0
  132. package/dist/offline/index.d.mts +607 -0
  133. package/dist/offline/index.d.ts +607 -0
  134. package/dist/offline/index.js +1052 -0
  135. package/dist/offline/index.js.map +1 -0
  136. package/dist/offline/index.mjs +1052 -0
  137. package/dist/offline/index.mjs.map +1 -0
  138. package/dist/offline/sqlite/device-worker.mjs +62 -0
  139. package/dist/offline/sqlite/index.mjs +17392 -0
  140. package/dist/offline/sqlite/sqlite3-opfs-async-proxy.js +881 -0
  141. package/dist/offline/sqlite/sqlite3.wasm +0 -0
  142. package/dist/request-KTBV6HHH.js +10 -0
  143. package/dist/request-KTBV6HHH.js.map +1 -0
  144. package/dist/request-SQOUNWZ4.mjs +10 -0
  145. package/dist/request-SQOUNWZ4.mjs.map +1 -0
  146. package/dist/server/cachedGet.d.mts +1 -1
  147. package/dist/server/cachedGet.d.ts +1 -1
  148. package/dist/server/cachedGet.stub.d.mts +1 -1
  149. package/dist/server/cachedGet.stub.d.ts +1 -1
  150. package/dist/server/index.d.mts +28 -2
  151. package/dist/server/index.d.ts +28 -2
  152. package/dist/server/index.js +18 -8
  153. package/dist/server/index.js.map +1 -1
  154. package/dist/server/index.mjs +18 -8
  155. package/dist/{useSocket-IRHtk2xc.d.ts → useSocket-Bo9M0t0J.d.ts} +3 -1
  156. package/dist/{useSocket-C8fqU4od.d.mts → useSocket-J5qanQPN.d.mts} +3 -1
  157. package/dist/write-through-FDQ7N4YI.js +15 -0
  158. package/dist/write-through-FDQ7N4YI.js.map +1 -0
  159. package/dist/write-through-R25VQMH6.mjs +15 -0
  160. package/dist/write-through-R25VQMH6.mjs.map +1 -0
  161. package/package.json +7 -1
  162. package/pwa/sw.js +277 -26
  163. package/src/client/request.ts +37 -0
  164. package/src/components/editors/BlockNoteEditor.tsx +14 -0
  165. package/src/components/editors/__tests__/BlockNoteEditor.empty-change.spec.tsx +205 -0
  166. package/src/contexts/SocketContext.tsx +7 -1
  167. package/src/contexts/__tests__/SocketContext.session.spec.tsx +52 -5
  168. package/src/core/factories/RehydrationFactory.ts +28 -8
  169. package/src/core/factories/__tests__/RehydrationFactory.spec.ts +33 -0
  170. package/src/core/index.ts +3 -0
  171. package/src/core/interfaces/ApiData.ts +2 -0
  172. package/src/core/registry/ModuleRegistry.ts +3 -0
  173. package/src/features/auth/components/forms/Logout.tsx +8 -1
  174. package/src/features/auth/components/forms/__tests__/Logout.spec.tsx +62 -0
  175. package/src/hooks/__tests__/useSocket.pause.spec.ts +39 -0
  176. package/src/hooks/useSocket.ts +20 -1
  177. package/src/offline/__tests__/answer-builders.spec.ts +176 -0
  178. package/src/offline/__tests__/device-switch.spec.ts +179 -0
  179. package/src/offline/__tests__/generic-answers.spec.ts +380 -0
  180. package/src/offline/__tests__/local-transport.spec.ts +150 -0
  181. package/src/offline/__tests__/logout.spec.ts +122 -0
  182. package/src/offline/__tests__/offline-fixtures.ts +89 -0
  183. package/src/offline/__tests__/router.spec.ts +56 -0
  184. package/src/offline/__tests__/state.spec.ts +62 -0
  185. package/src/offline/__tests__/write-through.spec.ts +137 -0
  186. package/src/offline/config.ts +229 -0
  187. package/src/offline/configure.ts +14 -0
  188. package/src/offline/device-switch.ts +75 -0
  189. package/src/offline/generic-answers.ts +706 -0
  190. package/src/offline/index.ts +67 -0
  191. package/src/offline/local-transport.ts +189 -0
  192. package/src/offline/logout.ts +41 -0
  193. package/src/offline/router.ts +41 -0
  194. package/src/offline/server/__tests__/build-offline-manifest.spec.ts +76 -0
  195. package/src/offline/server/build-offline-manifest.ts +49 -0
  196. package/src/offline/state-hooks.ts +10 -0
  197. package/src/offline/state.ts +143 -0
  198. package/src/offline/store/DeviceStore.ts +112 -0
  199. package/src/offline/store/__tests__/device-store-lifecycle.spec.ts +343 -0
  200. package/src/offline/store/__tests__/shared-database.spec.ts +151 -0
  201. package/src/offline/store/__tests__/sql-device-store.spec.ts +399 -0
  202. package/src/offline/store/lifecycle.ts +315 -0
  203. package/src/offline/store/schema.ts +101 -0
  204. package/src/offline/store/shared-database.ts +321 -0
  205. package/src/offline/store/sql-device-store.ts +469 -0
  206. package/src/offline/store/worker-client.ts +71 -0
  207. package/src/offline/store/worker.ts +87 -0
  208. package/src/offline/sync/__tests__/conflicts.spec.ts +185 -0
  209. package/src/offline/sync/__tests__/queue-drain.spec.ts +364 -0
  210. package/src/offline/sync/__tests__/runtime.spec.ts +337 -0
  211. package/src/offline/sync/__tests__/sync-fixtures.ts +103 -0
  212. package/src/offline/sync/__tests__/sync-root.spec.ts +727 -0
  213. package/src/offline/sync/artwork-cache.ts +67 -0
  214. package/src/offline/sync/conflicts.ts +211 -0
  215. package/src/offline/sync/counts.ts +39 -0
  216. package/src/offline/sync/drain-queue.ts +246 -0
  217. package/src/offline/sync/known-roots.ts +37 -0
  218. package/src/offline/sync/models/OfflineChangeSet.ts +34 -0
  219. package/src/offline/sync/models/OfflineChangeSetInterface.ts +54 -0
  220. package/src/offline/sync/models/RootSync.ts +68 -0
  221. package/src/offline/sync/models/RootSyncInterface.ts +20 -0
  222. package/src/offline/sync/models/__tests__/OfflineChangeSet.spec.ts +47 -0
  223. package/src/offline/sync/models/__tests__/RootSync.spec.ts +54 -0
  224. package/src/offline/sync/models/index.ts +5 -0
  225. package/src/offline/sync/models/offline.modules.ts +14 -0
  226. package/src/offline/sync/runtime.ts +226 -0
  227. package/src/offline/sync/session-refresh.ts +32 -0
  228. package/src/offline/sync/sync-root.ts +336 -0
  229. package/src/offline/sync/waiting.ts +40 -0
  230. package/src/offline/types.ts +115 -0
  231. package/src/offline/write-through.ts +189 -0
  232. package/src/pwa/__tests__/sw.spec.ts +358 -1
  233. package/src/server/index.ts +5 -0
  234. package/src/unified/__tests__/JsonApiRequest.offline.spec.ts +243 -0
  235. package/dist/BlockNoteEditor-75ED2CN2.mjs.map +0 -1
  236. package/dist/BlockNoteEditor-7M5QW2YQ.js.map +0 -1
  237. package/dist/BlockNoteViewer-WGCDB7IJ.js.map +0 -1
  238. package/dist/JsonApiRequest-FZGPLNUF.js +0 -26
  239. package/dist/chunk-AA52ORW2.mjs.map +0 -1
  240. package/dist/chunk-EWCY6QJA.mjs.map +0 -1
  241. package/dist/chunk-FF4EIQ6H.js.map +0 -1
  242. package/dist/chunk-JTPRJNT2.js.map +0 -1
  243. package/dist/chunk-L6PYFQTO.js.map +0 -1
  244. package/dist/chunk-O3PDL2CV.js.map +0 -1
  245. package/dist/chunk-PI56A4DG.mjs.map +0 -1
  246. package/dist/chunk-RXQYEEKZ.mjs.map +0 -1
  247. package/dist/chunk-V3YDVJ63.js.map +0 -1
  248. package/dist/request-5RLK2AM3.mjs +0 -9
  249. package/dist/request-EUGTI3BE.js +0 -9
  250. package/dist/request-EUGTI3BE.js.map +0 -1
  251. /package/dist/{JsonApiRequest-A66XK5WT.mjs.map → JsonApiRequest-F6TMJ42G.mjs.map} +0 -0
  252. /package/dist/{chunk-3YW35YHQ.mjs.map → chunk-BH6JWIKI.mjs.map} +0 -0
  253. /package/dist/{chunk-V5MI7RNB.mjs.map → chunk-DGWOVYEC.mjs.map} +0 -0
  254. /package/dist/{request-5RLK2AM3.mjs.map → lifecycle-LKGPRBS7.mjs.map} +0 -0
@@ -0,0 +1,212 @@
1
+ import {
2
+ directFetch
3
+ } from "./chunk-ZLTOUZN2.mjs";
4
+ import {
5
+ ENV,
6
+ JsonApiDataFactory,
7
+ setBootstrapper,
8
+ translateResponse
9
+ } from "./chunk-DGWOVYEC.mjs";
10
+ import {
11
+ getClientToken
12
+ } from "./chunk-AUXK7QSA.mjs";
13
+ import {
14
+ __name
15
+ } from "./chunk-PAWJFY3S.mjs";
16
+
17
+ // src/features/user/data/user.storage.ts
18
+ var CURRENT_USER_STORAGE_KEY = "user";
19
+
20
+ // src/client/JsonApiClient.ts
21
+ var _clientConfig = null;
22
+ function configureClientJsonApi(config) {
23
+ _clientConfig = config;
24
+ if (config.bootstrapper) {
25
+ setBootstrapper(config.bootstrapper);
26
+ config.bootstrapper();
27
+ }
28
+ }
29
+ __name(configureClientJsonApi, "configureClientJsonApi");
30
+ function getClientApiUrl() {
31
+ if (_clientConfig?.apiUrl) {
32
+ return _clientConfig.apiUrl;
33
+ }
34
+ const envUrl = ENV.API_URL;
35
+ if (!envUrl) {
36
+ throw new Error(
37
+ "API URL not configured. Use configureClientJsonApi() or set NEXT_PUBLIC_API_URL environment variable."
38
+ );
39
+ }
40
+ return envUrl;
41
+ }
42
+ __name(getClientApiUrl, "getClientApiUrl");
43
+ function getClientAppUrl() {
44
+ if (_clientConfig?.appUrl) {
45
+ return _clientConfig.appUrl;
46
+ }
47
+ const envUrl = ENV.APP_URL;
48
+ if (!envUrl) {
49
+ throw new Error(
50
+ "App URL not configured. Use configureClientJsonApi({ appUrl }) or set NEXT_PUBLIC_ADDRESS environment variable."
51
+ );
52
+ }
53
+ return envUrl.trim().replace(/\/+$/, "");
54
+ }
55
+ __name(getClientAppUrl, "getClientAppUrl");
56
+ function getClientTrackablePages() {
57
+ return _clientConfig?.trackablePages ?? [];
58
+ }
59
+ __name(getClientTrackablePages, "getClientTrackablePages");
60
+ function runClientBootstrapper() {
61
+ if (_clientConfig?.bootstrapper) {
62
+ _clientConfig.bootstrapper();
63
+ }
64
+ }
65
+ __name(runClientBootstrapper, "runClientBootstrapper");
66
+ function buildClientUrl(endpoint, baseUrl) {
67
+ if (endpoint.startsWith("http")) return endpoint;
68
+ const apiUrl = baseUrl ?? getClientApiUrl();
69
+ return `${apiUrl}${endpoint}`;
70
+ }
71
+ __name(buildClientUrl, "buildClientUrl");
72
+ async function ClientJsonApiGet(params) {
73
+ runClientBootstrapper();
74
+ const token = await getClientToken();
75
+ const apiResponse = await directFetch({
76
+ method: "GET",
77
+ url: buildClientUrl(params.endpoint, params.baseUrl),
78
+ token,
79
+ companyId: params.companyId,
80
+ language: params.language,
81
+ additionalHeaders: _clientConfig?.additionalHeaders
82
+ });
83
+ return translateResponse({
84
+ classKey: params.classKey,
85
+ apiResponse,
86
+ companyId: params.companyId,
87
+ language: params.language,
88
+ paginationHandler: /* @__PURE__ */ __name(async (endpoint) => ClientJsonApiGet({
89
+ classKey: params.classKey,
90
+ endpoint,
91
+ companyId: params.companyId,
92
+ language: params.language,
93
+ baseUrl: params.baseUrl
94
+ }), "paginationHandler")
95
+ });
96
+ }
97
+ __name(ClientJsonApiGet, "ClientJsonApiGet");
98
+ async function ClientJsonApiPost(params) {
99
+ runClientBootstrapper();
100
+ const token = await getClientToken();
101
+ let body = params.body;
102
+ if (!body) {
103
+ body = {};
104
+ } else if (params.overridesJsonApiCreation !== true) {
105
+ body = JsonApiDataFactory.create(params.classKey, body);
106
+ }
107
+ const apiResponse = await directFetch({
108
+ method: "POST",
109
+ url: buildClientUrl(params.endpoint, params.baseUrl),
110
+ token,
111
+ body,
112
+ files: params.files,
113
+ companyId: params.companyId,
114
+ language: params.language,
115
+ additionalHeaders: _clientConfig?.additionalHeaders
116
+ });
117
+ return translateResponse({
118
+ classKey: params.responseType ?? params.classKey,
119
+ apiResponse,
120
+ companyId: params.companyId,
121
+ language: params.language
122
+ });
123
+ }
124
+ __name(ClientJsonApiPost, "ClientJsonApiPost");
125
+ async function ClientJsonApiPut(params) {
126
+ runClientBootstrapper();
127
+ const token = await getClientToken();
128
+ let body = params.body;
129
+ if (!body) {
130
+ body = {};
131
+ } else {
132
+ body = JsonApiDataFactory.create(params.classKey, body);
133
+ }
134
+ const apiResponse = await directFetch({
135
+ method: "PUT",
136
+ url: buildClientUrl(params.endpoint, params.baseUrl),
137
+ token,
138
+ body,
139
+ files: params.files,
140
+ companyId: params.companyId,
141
+ language: params.language,
142
+ additionalHeaders: _clientConfig?.additionalHeaders
143
+ });
144
+ return translateResponse({
145
+ classKey: params.responseType ?? params.classKey,
146
+ apiResponse,
147
+ companyId: params.companyId,
148
+ language: params.language
149
+ });
150
+ }
151
+ __name(ClientJsonApiPut, "ClientJsonApiPut");
152
+ async function ClientJsonApiPatch(params) {
153
+ runClientBootstrapper();
154
+ const token = await getClientToken();
155
+ let body = params.body;
156
+ if (!body) {
157
+ body = {};
158
+ } else if (params.overridesJsonApiCreation !== true) {
159
+ body = JsonApiDataFactory.create(params.classKey, body);
160
+ }
161
+ const apiResponse = await directFetch({
162
+ method: "PATCH",
163
+ url: buildClientUrl(params.endpoint, params.baseUrl),
164
+ token,
165
+ body,
166
+ files: params.files,
167
+ companyId: params.companyId,
168
+ language: params.language,
169
+ additionalHeaders: _clientConfig?.additionalHeaders
170
+ });
171
+ return translateResponse({
172
+ classKey: params.responseType ?? params.classKey,
173
+ apiResponse,
174
+ companyId: params.companyId,
175
+ language: params.language
176
+ });
177
+ }
178
+ __name(ClientJsonApiPatch, "ClientJsonApiPatch");
179
+ async function ClientJsonApiDelete(params) {
180
+ runClientBootstrapper();
181
+ const token = await getClientToken();
182
+ const apiResponse = await directFetch({
183
+ method: "DELETE",
184
+ url: buildClientUrl(params.endpoint, params.baseUrl),
185
+ token,
186
+ companyId: params.companyId,
187
+ language: params.language,
188
+ additionalHeaders: _clientConfig?.additionalHeaders
189
+ });
190
+ return translateResponse({
191
+ classKey: params.responseType ?? params.classKey,
192
+ apiResponse,
193
+ companyId: params.companyId,
194
+ language: params.language
195
+ });
196
+ }
197
+ __name(ClientJsonApiDelete, "ClientJsonApiDelete");
198
+
199
+ export {
200
+ CURRENT_USER_STORAGE_KEY,
201
+ configureClientJsonApi,
202
+ getClientApiUrl,
203
+ getClientAppUrl,
204
+ getClientTrackablePages,
205
+ buildClientUrl,
206
+ ClientJsonApiGet,
207
+ ClientJsonApiPost,
208
+ ClientJsonApiPut,
209
+ ClientJsonApiPatch,
210
+ ClientJsonApiDelete
211
+ };
212
+ //# sourceMappingURL=chunk-DOCIFE6A.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/features/user/data/user.storage.ts","../src/client/JsonApiClient.ts"],"sourcesContent":["/**\n * localStorage key backing the `CurrentUserProvider` atom.\n *\n * Owned by this library, not by the apps that consume it: `<Logout />` clears\n * it on every sign-out. Kept in its own module so both the provider that writes\n * it and the component that clears it can reference the same constant without\n * importing each other.\n */\nexport const CURRENT_USER_STORAGE_KEY = \"user\";\n","\"use client\";\n\nimport { ENV } from \"../core/env\";\nimport { JsonApiDataFactory } from \"../core/factories/JsonApiDataFactory\";\nimport { ApiRequestDataTypeInterface } from \"../core/interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../core/interfaces/ApiResponseInterface\";\nimport { setBootstrapper } from \"../core/registry/bootstrapStore\";\nimport { translateResponse } from \"../core/utils/translateResponse\";\nimport { ModuleWithPermissions } from \"../permissions/types\";\nimport { directFetch } from \"./request\";\nimport { getClientToken } from \"./token\";\n\n// Config storage for client contexts\nlet _clientConfig: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n} | null = null;\n\n/**\n * Configure the JSON:API client for browser contexts.\n * Call this in your client-side initialization or use JsonApiProvider.\n */\nexport function configureClientJsonApi(config: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n}): void {\n _clientConfig = config;\n if (config.bootstrapper) {\n setBootstrapper(config.bootstrapper);\n config.bootstrapper();\n }\n}\n\nexport function getClientApiUrl(): string {\n if (_clientConfig?.apiUrl) {\n return _clientConfig.apiUrl;\n }\n const envUrl = ENV.API_URL;\n if (!envUrl) {\n throw new Error(\n \"API URL not configured. Use configureClientJsonApi() or set NEXT_PUBLIC_API_URL environment variable.\",\n );\n }\n return envUrl;\n}\n\nexport function getClientAppUrl(): string {\n if (_clientConfig?.appUrl) {\n return _clientConfig.appUrl;\n }\n const envUrl = ENV.APP_URL;\n if (!envUrl) {\n throw new Error(\n \"App URL not configured. Use configureClientJsonApi({ appUrl }) or set NEXT_PUBLIC_ADDRESS environment variable.\",\n );\n }\n return envUrl.trim().replace(/\\/+$/, \"\");\n}\n\nexport function getClientTrackablePages(): ModuleWithPermissions[] {\n return _clientConfig?.trackablePages ?? [];\n}\n\nfunction runClientBootstrapper(): void {\n if (_clientConfig?.bootstrapper) {\n _clientConfig.bootstrapper();\n }\n}\n\n/**\n * Resolve the final request URL for an endpoint (client-side variant of `buildUrl`\n * in `unified/JsonApiRequest.ts` — kept in lockstep with it).\n *\n * - `endpoint` starting with \"http\" is always passed through unchanged (existing behaviour).\n * - Otherwise, an explicit `baseUrl` (per-call override) takes precedence over the global\n * `getClientApiUrl()` resolution. Omitting `baseUrl` preserves today's behaviour exactly.\n */\nexport function buildClientUrl(endpoint: string, baseUrl?: string): string {\n if (endpoint.startsWith(\"http\")) return endpoint;\n const apiUrl = baseUrl ?? getClientApiUrl();\n return `${apiUrl}${endpoint}`;\n}\n\nexport async function ClientJsonApiGet(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n language: string;\n baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n runClientBootstrapper();\n const token = await getClientToken();\n\n const apiResponse = await directFetch({\n method: \"GET\",\n url: buildClientUrl(params.endpoint, params.baseUrl),\n token,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _clientConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n paginationHandler: async (endpoint: string) =>\n ClientJsonApiGet({\n classKey: params.classKey,\n endpoint,\n companyId: params.companyId,\n language: params.language,\n baseUrl: params.baseUrl,\n }),\n });\n}\n\nexport async function ClientJsonApiPost(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n overridesJsonApiCreation?: boolean;\n files?: { [key: string]: File | Blob } | File | Blob;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n runClientBootstrapper();\n const token = await getClientToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else if (params.overridesJsonApiCreation !== true) {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await directFetch({\n method: \"POST\",\n url: buildClientUrl(params.endpoint, params.baseUrl),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _clientConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function ClientJsonApiPut(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n runClientBootstrapper();\n const token = await getClientToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await directFetch({\n method: \"PUT\",\n url: buildClientUrl(params.endpoint, params.baseUrl),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _clientConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function ClientJsonApiPatch(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n overridesJsonApiCreation?: boolean;\n responseType?: ApiRequestDataTypeInterface;\n language: string;\n baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n runClientBootstrapper();\n const token = await getClientToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else if (params.overridesJsonApiCreation !== true) {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await directFetch({\n method: \"PATCH\",\n url: buildClientUrl(params.endpoint, params.baseUrl),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _clientConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function ClientJsonApiDelete(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n runClientBootstrapper();\n const token = await getClientToken();\n\n const apiResponse = await directFetch({\n method: \"DELETE\",\n url: buildClientUrl(params.endpoint, params.baseUrl),\n token,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _clientConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkMHB36MYEjs = require('./chunk-MHB36MYE.js');
6
+
7
+
8
+ var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
9
+
10
+ // src/offline/state-hooks.ts
11
+ var _react = require('react');
12
+ function useOfflineState() {
13
+ return _react.useSyncExternalStore.call(void 0, _chunkMHB36MYEjs.subscribeOfflineState, _chunkMHB36MYEjs.getOfflineState, () => _chunkMHB36MYEjs.SERVER_SNAPSHOT);
14
+ }
15
+ _chunk7QVYU63Ejs.__name.call(void 0, useOfflineState, "useOfflineState");
16
+ function useNeedsConnection() {
17
+ return !useOfflineState().online;
18
+ }
19
+ _chunk7QVYU63Ejs.__name.call(void 0, useNeedsConnection, "useNeedsConnection");
20
+
21
+
22
+
23
+
24
+ exports.useOfflineState = useOfflineState; exports.useNeedsConnection = useNeedsConnection;
25
+ //# sourceMappingURL=chunk-GB6DBFYY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-GB6DBFYY.js","../src/offline/state-hooks.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACTA,8BAAqC;AAG9B,SAAS,eAAA,CAAA,EAAgC;AAC9C,EAAA,OAAO,yCAAA,sCAAqB,EAAuB,gCAAA,EAAiB,CAAA,EAAA,GAAM,gCAAe,CAAA;AAC3F;AAFgB,qCAAA,eAAA,EAAA,iBAAA,CAAA;AAIT,SAAS,kBAAA,CAAA,EAA8B;AAC5C,EAAA,OAAO,CAAC,eAAA,CAAgB,CAAA,CAAE,MAAA;AAC5B;AAFgB,qCAAA,kBAAA,EAAA,oBAAA,CAAA;ADYhB;AACA;AACE;AACA;AACF,2FAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-GB6DBFYY.js","sourcesContent":[null,"import { useSyncExternalStore } from \"react\";\nimport { getOfflineState, SERVER_SNAPSHOT, subscribeOfflineState, type OfflineState } from \"./state\";\n\nexport function useOfflineState(): OfflineState {\n return useSyncExternalStore(subscribeOfflineState, getOfflineState, () => SERVER_SNAPSHOT);\n}\n\nexport function useNeedsConnection(): boolean {\n return !useOfflineState().online;\n}\n"]}
@@ -1,3 +1,6 @@
1
+ import {
2
+ JsonApiContext
3
+ } from "./chunk-VOXD3ZLY.mjs";
1
4
  import {
2
5
  ACTION_TYPES,
3
6
  RbacService,
@@ -16,7 +19,7 @@ import {
16
19
  isReferralEnabled,
17
20
  isRegistrationAllowed,
18
21
  useWaitlistText
19
- } from "./chunk-4FNGWALA.mjs";
22
+ } from "./chunk-47BBY5KA.mjs";
20
23
  import {
21
24
  getRoleId,
22
25
  isRolesConfigured
@@ -30,13 +33,11 @@ import {
30
33
  AssistantMessageService,
31
34
  AssistantService,
32
35
  AuthService,
33
- CURRENT_USER_STORAGE_KEY,
34
36
  ClientAbstractService,
35
37
  CompanyService,
36
38
  ContentService,
37
39
  DEFAULT_GRANT_TYPES,
38
40
  EmailBlastService,
39
- EndpointCreator,
40
41
  FeatureService,
41
42
  HandbookPageService,
42
43
  HandbookSectionService,
@@ -45,15 +46,12 @@ import {
45
46
  HandbookThreadService,
46
47
  HowTo,
47
48
  HowToService,
48
- ModuleRegistry,
49
- Modules,
50
49
  NotificationService,
51
50
  OAUTH_SCOPE_DISPLAY,
52
51
  OAuthService,
53
52
  PushService,
54
53
  ReferralAdminService,
55
54
  ReferralService,
56
- RehydrationFactory,
57
55
  RoleService,
58
56
  S3Service,
59
57
  STRIPE_COUPON_DETAIL_PAGE_URL,
@@ -72,7 +70,6 @@ import {
72
70
  formatCurrency,
73
71
  formatDate,
74
72
  formatInterval,
75
- getI18nLink,
76
73
  getIconByModule,
77
74
  getInitials,
78
75
  getLastApiMeta,
@@ -96,20 +93,33 @@ import {
96
93
  showToast,
97
94
  subscribeViewport,
98
95
  useComposedRefs,
99
- useI18nDateFnsLocale,
100
- useI18nLocale,
101
- useI18nRouter,
102
- useI18nTranslations,
103
96
  useIsMobile,
104
97
  validateItalianTaxCode,
105
98
  validatePartitaIva
106
- } from "./chunk-AA52ORW2.mjs";
99
+ } from "./chunk-P445QGOC.mjs";
107
100
  import {
108
- ENV
109
- } from "./chunk-V5MI7RNB.mjs";
101
+ useOfflineState
102
+ } from "./chunk-XXP3TQHF.mjs";
110
103
  import {
111
- JsonApiContext
112
- } from "./chunk-VOXD3ZLY.mjs";
104
+ EndpointCreator,
105
+ ModuleRegistry,
106
+ Modules,
107
+ RehydrationFactory,
108
+ getI18nLink,
109
+ useI18nDateFnsLocale,
110
+ useI18nLocale,
111
+ useI18nRouter,
112
+ useI18nTranslations
113
+ } from "./chunk-6JUCIWDC.mjs";
114
+ import {
115
+ CURRENT_USER_STORAGE_KEY
116
+ } from "./chunk-DOCIFE6A.mjs";
117
+ import {
118
+ isOfflineConfigured
119
+ } from "./chunk-27LQDGNP.mjs";
120
+ import {
121
+ ENV
122
+ } from "./chunk-DGWOVYEC.mjs";
113
123
  import {
114
124
  __name
115
125
  } from "./chunk-PAWJFY3S.mjs";
@@ -7958,7 +7968,9 @@ var SocketProvider = /* @__PURE__ */ __name(({ token, session, children }) => {
7958
7968
  };
7959
7969
  }, [session]);
7960
7970
  const resolvedToken = token ?? sessionToken;
7961
- const socketHookData = useSocket({ token: resolvedToken });
7971
+ const offlineState = useOfflineState();
7972
+ const paused = isOfflineConfigured() && !offlineState.online;
7973
+ const socketHookData = useSocket({ token: resolvedToken, paused });
7962
7974
  const sendMessage = /* @__PURE__ */ __name((event, data) => {
7963
7975
  const currentSocket = socketHookData ? socketHookData.socket : defaultContextValue.socket;
7964
7976
  const currentIsConnected = socketHookData ? socketHookData.isConnected : defaultContextValue.isConnected;
@@ -10840,7 +10852,7 @@ import { useRef as useRef18 } from "react";
10840
10852
  import dynamic from "next/dynamic";
10841
10853
  import React18 from "react";
10842
10854
  import { jsx as jsx91 } from "react/jsx-runtime";
10843
- var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-75ED2CN2.mjs"), {
10855
+ var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-22Q4DJBU.mjs"), {
10844
10856
  ssr: false
10845
10857
  });
10846
10858
  var BlockNoteEditorContainer = React18.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
@@ -15412,7 +15424,7 @@ var usePushNotifications_default = usePushNotifications;
15412
15424
  // src/hooks/useSocket.ts
15413
15425
  import { useEffect as useEffect39, useRef as useRef27, useState as useState48 } from "react";
15414
15426
  import io from "socket.io-client";
15415
- function useSocket({ token }) {
15427
+ function useSocket({ token, paused = false }) {
15416
15428
  const _errorCount = useRef27(0);
15417
15429
  const shouldConnect = useRef27(true);
15418
15430
  const [socket, setSocket] = useState48(null);
@@ -15521,6 +15533,20 @@ function useSocket({ token }) {
15521
15533
  }
15522
15534
  };
15523
15535
  }, [token]);
15536
+ const pausedSocket = useRef27(null);
15537
+ useEffect39(() => {
15538
+ const current = socketRef.current;
15539
+ if (!current) return;
15540
+ if (paused) {
15541
+ if (pausedSocket.current !== current) {
15542
+ current.disconnect();
15543
+ pausedSocket.current = current;
15544
+ }
15545
+ } else if (pausedSocket.current === current) {
15546
+ pausedSocket.current = null;
15547
+ current.connect();
15548
+ }
15549
+ }, [paused, socket]);
15524
15550
  const sendMessage = /* @__PURE__ */ __name((event, data) => {
15525
15551
  if (socketRef.current && isConnected) {
15526
15552
  socketRef.current.emit(event, data);
@@ -17049,7 +17075,7 @@ __name(BlockNoteEditorMentionSuggestionMenu, "BlockNoteEditorMentionSuggestionMe
17049
17075
  import dynamic2 from "next/dynamic";
17050
17076
  import React29 from "react";
17051
17077
  import { jsx as jsx178 } from "react/jsx-runtime";
17052
- var BlockNoteViewer = dynamic2(() => import("./BlockNoteViewer-MTGS6YJV.mjs").then((m) => m.BlockNoteViewer), { ssr: false });
17078
+ var BlockNoteViewer = dynamic2(() => import("./BlockNoteViewer-NBW2H6LC.mjs").then((m) => m.BlockNoteViewer), { ssr: false });
17053
17079
  var BlockNoteViewerContainer = React29.memo(/* @__PURE__ */ __name(function ViewerContainer(props) {
17054
17080
  return /* @__PURE__ */ jsx178(BlockNoteViewer, { ...props });
17055
17081
  }, "ViewerContainer"));
@@ -17331,7 +17357,7 @@ function useJsonApiGet(params) {
17331
17357
  setLoading(true);
17332
17358
  setError(null);
17333
17359
  try {
17334
- const { JsonApiGet } = await import("./JsonApiRequest-A66XK5WT.mjs");
17360
+ const { JsonApiGet } = await import("./JsonApiRequest-F6TMJ42G.mjs");
17335
17361
  const language = navigator.language.split("-")[0] || "en";
17336
17362
  const apiResponse = await JsonApiGet({
17337
17363
  classKey: params.classKey,
@@ -17436,7 +17462,7 @@ function useJsonApiMutation(config) {
17436
17462
  setLoading(true);
17437
17463
  setError(null);
17438
17464
  try {
17439
- const { JsonApiPost, JsonApiPut, JsonApiPatch, JsonApiDelete } = await import("./JsonApiRequest-A66XK5WT.mjs");
17465
+ const { JsonApiPost, JsonApiPut, JsonApiPatch, JsonApiDelete } = await import("./JsonApiRequest-F6TMJ42G.mjs");
17440
17466
  const language = navigator.language.split("-")[0] || "en";
17441
17467
  let apiResponse;
17442
17468
  switch (config.method) {
@@ -21819,10 +21845,11 @@ __name(clearClientStorage, "clearClientStorage");
21819
21845
 
21820
21846
  // src/features/auth/components/forms/Logout.tsx
21821
21847
  import { Fragment as Fragment42, jsx as jsx231 } from "react/jsx-runtime";
21822
- function Logout({ storageKeys }) {
21848
+ function Logout({ storageKeys, beforeLogout }) {
21823
21849
  const generateUrl = usePageUrlGenerator();
21824
21850
  useEffect66(() => {
21825
21851
  const logOut = /* @__PURE__ */ __name(async () => {
21852
+ if (beforeLogout && !await beforeLogout()) return;
21826
21853
  clearClientStorage([CURRENT_USER_STORAGE_KEY, ...storageKeys ?? []]);
21827
21854
  await AuthService.logout();
21828
21855
  window.location.href = generateUrl({ page: `/` });
@@ -30751,4 +30778,4 @@ export {
30751
30778
  useOAuthClients,
30752
30779
  useOAuthClient
30753
30780
  };
30754
- //# sourceMappingURL=chunk-RXQYEEKZ.mjs.map
30781
+ //# sourceMappingURL=chunk-H4NLDX5G.mjs.map