@carlonicora/nextjs-jsonapi 6.24.0 → 6.26.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/dist/{BlockNoteEditor-MONT74RQ.js → BlockNoteEditor-JHXDOCS5.js} +28 -25
- package/dist/BlockNoteEditor-JHXDOCS5.js.map +1 -0
- package/dist/{BlockNoteEditor-ENDOVTAW.mjs → BlockNoteEditor-RVDSB6TF.mjs} +13 -10
- package/dist/{BlockNoteEditor-ENDOVTAW.mjs.map → BlockNoteEditor-RVDSB6TF.mjs.map} +1 -1
- package/dist/{BlockNoteViewer-2TJZ6JET.mjs → BlockNoteViewer-76CKL6W5.mjs} +8 -6
- package/dist/{BlockNoteViewer-2TJZ6JET.mjs.map → BlockNoteViewer-76CKL6W5.mjs.map} +1 -1
- package/dist/{BlockNoteViewer-K2HBF3IP.js → BlockNoteViewer-B25WKYQP.js} +9 -7
- package/dist/BlockNoteViewer-B25WKYQP.js.map +1 -0
- package/dist/JsonApiRequest-OKNQZLS6.js +26 -0
- package/dist/{JsonApiRequest-KC6DOHKT.js.map → JsonApiRequest-OKNQZLS6.js.map} +1 -1
- package/dist/{JsonApiRequest-ADLBJ5RX.mjs → JsonApiRequest-WNPDS356.mjs} +2 -2
- package/dist/billing/index.js +504 -517
- package/dist/billing/index.js.map +1 -1
- package/dist/billing/index.mjs +20 -33
- package/dist/billing/index.mjs.map +1 -1
- package/dist/{chunk-VNUT2D27.mjs → chunk-2PWYG2WJ.mjs} +2 -2
- package/dist/{chunk-W4ML6D2X.mjs → chunk-3U7YJ73T.mjs} +7 -7
- package/dist/{chunk-BQ2WAG4K.js → chunk-3VNDFKT7.js} +19 -19
- package/dist/{chunk-BQ2WAG4K.js.map → chunk-3VNDFKT7.js.map} +1 -1
- package/dist/{chunk-BE6UMM5X.mjs → chunk-47HNJQ7U.mjs} +3 -3
- package/dist/chunk-5T2AQMQ2.mjs +90 -0
- package/dist/chunk-5T2AQMQ2.mjs.map +1 -0
- package/dist/{chunk-A5M3MORY.js → chunk-5WM72MLE.js} +3 -3
- package/dist/{chunk-A5M3MORY.js.map → chunk-5WM72MLE.js.map} +1 -1
- package/dist/{chunk-OZADFYE7.mjs → chunk-64REWDSK.mjs} +308 -241
- package/dist/chunk-64REWDSK.mjs.map +1 -0
- package/dist/{chunk-S7SPAC6X.mjs → chunk-73NKUBMP.mjs} +3 -3
- package/dist/chunk-743M4TIB.mjs +76 -0
- package/dist/chunk-743M4TIB.mjs.map +1 -0
- package/dist/{chunk-HN7L6RRW.js → chunk-77JC2UCF.js} +903 -955
- package/dist/chunk-77JC2UCF.js.map +1 -0
- package/dist/{chunk-7OIWOPM5.mjs → chunk-7MGXQIEP.mjs} +4 -3
- package/dist/chunk-7MGXQIEP.mjs.map +1 -0
- package/dist/{chunk-YTDGYI62.mjs → chunk-DWPHHUMV.mjs} +3 -3
- package/dist/{chunk-SO3YUCL6.js → chunk-F3EVYBMA.js} +6 -5
- package/dist/chunk-F3EVYBMA.js.map +1 -0
- package/dist/{chunk-53SD4YRF.js → chunk-FBHUUPRV.js} +5 -5
- package/dist/{chunk-53SD4YRF.js.map → chunk-FBHUUPRV.js.map} +1 -1
- package/dist/{chunk-T6G2F2BK.mjs → chunk-FJUKLVVX.mjs} +16 -68
- package/dist/chunk-FJUKLVVX.mjs.map +1 -0
- package/dist/chunk-HROKKUBQ.js +156 -0
- package/dist/chunk-HROKKUBQ.js.map +1 -0
- package/dist/{chunk-BDWV4KYR.js → chunk-JE6QWCNE.js} +1386 -1319
- package/dist/chunk-JE6QWCNE.js.map +1 -0
- package/dist/{chunk-RCOKQ3R4.js → chunk-LNO2JLU3.js} +2 -2
- package/dist/{chunk-RCOKQ3R4.js.map → chunk-LNO2JLU3.js.map} +1 -1
- package/dist/{chunk-TMV7TL7O.mjs → chunk-M7YK5CCE.mjs} +8 -6
- package/dist/{chunk-TMV7TL7O.mjs.map → chunk-M7YK5CCE.mjs.map} +1 -1
- package/dist/{chunk-GMMDXINC.js → chunk-N3NQS7X6.js} +12 -12
- package/dist/{chunk-GMMDXINC.js.map → chunk-N3NQS7X6.js.map} +1 -1
- package/dist/chunk-NP3AFULU.js +76 -0
- package/dist/chunk-NP3AFULU.js.map +1 -0
- package/dist/{chunk-TNTCLVUR.js → chunk-ONU4WCDG.js} +17 -15
- package/dist/chunk-ONU4WCDG.js.map +1 -0
- package/dist/{chunk-YSE2Z4RB.js → chunk-PQQFOONG.js} +12 -12
- package/dist/{chunk-YSE2Z4RB.js.map → chunk-PQQFOONG.js.map} +1 -1
- package/dist/chunk-RW6XZGZG.mjs +156 -0
- package/dist/chunk-RW6XZGZG.mjs.map +1 -0
- package/dist/chunk-SYMI4IDW.js +90 -0
- package/dist/chunk-SYMI4IDW.js.map +1 -0
- package/dist/{chunk-N2BFT7KI.mjs → chunk-W7U6O3OE.mjs} +2 -71
- package/dist/chunk-W7U6O3OE.mjs.map +1 -0
- package/dist/{chunk-YMCL3JXZ.mjs → chunk-YPBIPE2B.mjs} +2 -2
- package/dist/{chunk-P7L6OFX5.js → chunk-Z6T2575A.js} +12 -81
- package/dist/chunk-Z6T2575A.js.map +1 -0
- package/dist/client/index.js +13 -10
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +17 -14
- package/dist/components/forms/DatePickerPopover.d.ts.map +1 -1
- package/dist/components/forms/DateRangeSelector.d.ts.map +1 -1
- package/dist/components/forms/FormDate.d.ts.map +1 -1
- package/dist/components/forms/FormDateTime.d.ts.map +1 -1
- package/dist/components/forms/time-cycle.d.ts +14 -0
- package/dist/components/forms/time-cycle.d.ts.map +1 -0
- package/dist/components/index.js +11 -8
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +10 -7
- package/dist/components/tables/cells/cell.date.d.ts.map +1 -1
- package/dist/components/tables/cells/cell.dateTime.d.ts.map +1 -1
- package/dist/contexts/DateLocaleContext.d.ts +56 -0
- package/dist/contexts/DateLocaleContext.d.ts.map +1 -0
- package/dist/contexts/index.d.ts +1 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/contexts/index.js +24 -8
- package/dist/contexts/index.js.map +1 -1
- package/dist/contexts/index.mjs +23 -7
- package/dist/core/index.js +17 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +19 -8
- package/dist/date-locale/index.d.ts +2 -0
- package/dist/date-locale/index.d.ts.map +1 -0
- package/dist/date-locale/index.js +21 -0
- package/dist/date-locale/index.js.map +1 -0
- package/dist/date-locale/index.mjs +21 -0
- package/dist/email-automations/index.js +131 -123
- package/dist/email-automations/index.js.map +1 -1
- package/dist/email-automations/index.mjs +23 -15
- package/dist/email-automations/index.mjs.map +1 -1
- package/dist/features/account-deletion/components/AccountDeletionAdminTrigger.d.ts.map +1 -1
- package/dist/features/analytics/components/AnalyticsJourneyContainer.d.ts.map +1 -1
- package/dist/features/analytics/components/AnalyticsSessionsTable.d.ts.map +1 -1
- package/dist/features/analytics/index.js +154 -147
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/index.mjs +32 -25
- package/dist/features/analytics/index.mjs.map +1 -1
- package/dist/features/analytics/server.js +11 -9
- package/dist/features/analytics/server.js.map +1 -1
- package/dist/features/analytics/server.mjs +9 -7
- package/dist/features/analytics/server.mjs.map +1 -1
- package/dist/features/billing/components/utils/date.d.ts +3 -3
- package/dist/features/billing/components/utils/format-options.d.ts +6 -4
- package/dist/features/billing/components/utils/format-options.d.ts.map +1 -1
- package/dist/features/billing/components/utils/useBillingFormatOptions.d.ts +5 -1
- package/dist/features/billing/components/utils/useBillingFormatOptions.d.ts.map +1 -1
- package/dist/features/billing/stripe-usage/components/details/UsageSummaryCard.d.ts.map +1 -1
- package/dist/features/billing/stripe-usage/components/lists/UsageHistoryTable.d.ts.map +1 -1
- package/dist/features/blog/components/admin/BlogTranslationStatus.d.ts.map +1 -1
- package/dist/features/blog/components/public/BlogPostMeta.d.ts.map +1 -1
- package/dist/features/blog/hooks/useBlogPostTableStructure.d.ts.map +1 -1
- package/dist/features/blog/index.js +168 -162
- package/dist/features/blog/index.js.map +1 -1
- package/dist/features/blog/index.mjs +25 -19
- package/dist/features/blog/index.mjs.map +1 -1
- package/dist/features/blog/server.js +29 -27
- package/dist/features/blog/server.js.map +1 -1
- package/dist/features/blog/server.mjs +8 -6
- package/dist/features/blog/server.mjs.map +1 -1
- package/dist/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.d.ts.map +1 -1
- package/dist/features/handbook/components/parts/HandbookIndexStatus.d.ts.map +1 -1
- package/dist/features/help/components/HelpArticleBody.d.ts.map +1 -1
- package/dist/features/help/index.js +48 -43
- package/dist/features/help/index.js.map +1 -1
- package/dist/features/help/index.mjs +15 -10
- package/dist/features/help/index.mjs.map +1 -1
- package/dist/features/notification/components/notifications/Notification.d.ts +2 -1
- package/dist/features/notification/components/notifications/Notification.d.ts.map +1 -1
- package/dist/features/notification/contexts/NotificationContext.d.ts.map +1 -1
- package/dist/features/notification/hooks/useNotificationTableStructure.d.ts.map +1 -1
- package/dist/features/oauth/components/OAuthClientCard.d.ts.map +1 -1
- package/dist/features/oauth/components/OAuthClientDetail.d.ts.map +1 -1
- package/dist/features/tokenusage/index.js +133 -130
- package/dist/features/tokenusage/index.js.map +1 -1
- package/dist/features/tokenusage/index.mjs +10 -7
- package/dist/features/tokenusage/index.mjs.map +1 -1
- package/dist/features/tokenusage/lib/formatters.d.ts +6 -3
- package/dist/features/tokenusage/lib/formatters.d.ts.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +23 -11
- package/dist/local-transport-AT4TE264.js +15 -0
- package/dist/{local-transport-MJPOKPTU.js.map → local-transport-AT4TE264.js.map} +1 -1
- package/dist/{local-transport-RVD4FZGA.mjs → local-transport-KWEUZ4GX.mjs} +5 -5
- package/dist/offline/index.js +56 -54
- package/dist/offline/index.js.map +1 -1
- package/dist/offline/index.mjs +23 -21
- package/dist/offline/index.mjs.map +1 -1
- package/dist/{request-4AWGPIGH.mjs → request-6GAIWWTG.mjs} +2 -2
- package/dist/{request-H5FZBZA2.js → request-BWO4Y434.js} +3 -3
- package/dist/{request-H5FZBZA2.js.map → request-BWO4Y434.js.map} +1 -1
- package/dist/server/ServerSession.d.ts +2 -0
- package/dist/server/ServerSession.d.ts.map +1 -1
- package/dist/server/index.js +10 -8
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +9 -7
- package/dist/utils/date-formatter.d.ts +45 -4
- package/dist/utils/date-formatter.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/toast.d.ts +2 -0
- package/dist/utils/toast.d.ts.map +1 -1
- package/dist/write-through-KNRI5L4V.mjs +15 -0
- package/dist/write-through-KNRI5L4V.mjs.map +1 -0
- package/dist/write-through-MYHQ6GJU.js +15 -0
- package/dist/{write-through-HE2QSOVI.js.map → write-through-MYHQ6GJU.js.map} +1 -1
- package/messages/en.json +1 -0
- package/messages/it.json +1 -0
- package/package.json +6 -1
- package/src/components/forms/DatePickerPopover.tsx +5 -3
- package/src/components/forms/DateRangeSelector.tsx +9 -7
- package/src/components/forms/FormDate.tsx +5 -3
- package/src/components/forms/FormDateTime.tsx +75 -39
- package/src/components/forms/__tests__/time-cycle.spec.ts +37 -0
- package/src/components/forms/time-cycle.ts +27 -0
- package/src/components/tables/cells/cell.date.tsx +3 -5
- package/src/components/tables/cells/cell.dateTime.tsx +3 -7
- package/src/contexts/DateLocaleContext.tsx +106 -0
- package/src/contexts/__tests__/DateLocaleContext.spec.tsx +175 -0
- package/src/contexts/index.ts +1 -0
- package/src/date-locale/index.ts +12 -0
- package/src/features/account-deletion/components/AccountDeletionAdminTrigger.tsx +3 -4
- package/src/features/analytics/components/AnalyticsJourneyContainer.tsx +8 -8
- package/src/features/analytics/components/AnalyticsSessionsTable.tsx +4 -6
- package/src/features/auth/components/two-factor/PasskeyList.tsx +3 -3
- package/src/features/auth/components/two-factor/TotpAuthenticatorList.tsx +3 -3
- package/src/features/billing/components/utils/__tests__/billing-formatters.spec.ts +14 -6
- package/src/features/billing/components/utils/date.ts +5 -5
- package/src/features/billing/components/utils/format-options.ts +6 -4
- package/src/features/billing/components/utils/useBillingFormatOptions.ts +8 -2
- package/src/features/billing/stripe-usage/components/details/UsageSummaryCard.tsx +4 -12
- package/src/features/billing/stripe-usage/components/lists/UsageHistoryTable.tsx +4 -17
- package/src/features/blog/components/admin/BlogTranslationStatus.tsx +3 -2
- package/src/features/blog/components/public/BlogPostMeta.tsx +5 -4
- package/src/features/blog/components/public/__tests__/BlogList.spec.tsx +1 -2
- package/src/features/blog/components/public/__tests__/BlogPostView.spec.tsx +2 -3
- package/src/features/blog/hooks/useBlogPostTableStructure.tsx +4 -8
- package/src/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.tsx +11 -5
- package/src/features/email-blast/components/containers/EmailBlastContainer.tsx +3 -3
- package/src/features/email-blast/hooks/useEmailBlastTableStructure.tsx +4 -4
- package/src/features/handbook/components/parts/HandbookIndexStatus.tsx +4 -3
- package/src/features/help/components/HelpArticleBody.tsx +4 -3
- package/src/features/notification/components/notifications/Notification.tsx +38 -7
- package/src/features/notification/contexts/NotificationContext.tsx +6 -3
- package/src/features/notification/hooks/useNotificationTableStructure.tsx +6 -5
- package/src/features/oauth/components/OAuthClientCard.tsx +8 -5
- package/src/features/oauth/components/OAuthClientDetail.tsx +3 -6
- package/src/features/tokenusage/lib/__tests__/formatters.spec.ts +19 -0
- package/src/features/tokenusage/lib/formatters.ts +11 -6
- package/src/features/waitlist/hooks/useWaitlistTableStructure.tsx +5 -5
- package/src/server/ServerSession.ts +3 -0
- package/src/server/__tests__/ServerSession.read.spec.ts +18 -1
- package/src/utils/__tests__/date-formatter.spec.ts +134 -10
- package/src/utils/__tests__/toast.spec.ts +39 -0
- package/src/utils/date-formatter.ts +200 -44
- package/src/utils/index.ts +11 -1
- package/src/utils/toast.ts +2 -0
- package/dist/BlockNoteEditor-MONT74RQ.js.map +0 -1
- package/dist/BlockNoteViewer-K2HBF3IP.js.map +0 -1
- package/dist/JsonApiRequest-KC6DOHKT.js +0 -26
- package/dist/chunk-7OIWOPM5.mjs.map +0 -1
- package/dist/chunk-BDWV4KYR.js.map +0 -1
- package/dist/chunk-HN7L6RRW.js.map +0 -1
- package/dist/chunk-N2BFT7KI.mjs.map +0 -1
- package/dist/chunk-OZADFYE7.mjs.map +0 -1
- package/dist/chunk-P7L6OFX5.js.map +0 -1
- package/dist/chunk-SO3YUCL6.js.map +0 -1
- package/dist/chunk-T6G2F2BK.mjs.map +0 -1
- package/dist/chunk-TNTCLVUR.js.map +0 -1
- package/dist/local-transport-MJPOKPTU.js +0 -15
- package/dist/write-through-7I3LA2WN.mjs +0 -15
- package/dist/write-through-HE2QSOVI.js +0 -15
- /package/dist/{JsonApiRequest-ADLBJ5RX.mjs.map → JsonApiRequest-WNPDS356.mjs.map} +0 -0
- /package/dist/{chunk-VNUT2D27.mjs.map → chunk-2PWYG2WJ.mjs.map} +0 -0
- /package/dist/{chunk-W4ML6D2X.mjs.map → chunk-3U7YJ73T.mjs.map} +0 -0
- /package/dist/{chunk-BE6UMM5X.mjs.map → chunk-47HNJQ7U.mjs.map} +0 -0
- /package/dist/{chunk-S7SPAC6X.mjs.map → chunk-73NKUBMP.mjs.map} +0 -0
- /package/dist/{chunk-YTDGYI62.mjs.map → chunk-DWPHHUMV.mjs.map} +0 -0
- /package/dist/{chunk-YMCL3JXZ.mjs.map → chunk-YPBIPE2B.mjs.map} +0 -0
- /package/dist/{local-transport-RVD4FZGA.mjs.map → date-locale/index.mjs.map} +0 -0
- /package/dist/{request-4AWGPIGH.mjs.map → local-transport-KWEUZ4GX.mjs.map} +0 -0
- /package/dist/{write-through-7I3LA2WN.mjs.map → request-6GAIWWTG.mjs.map} +0 -0
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
ENV,
|
|
9
9
|
JsonApiDataFactory,
|
|
10
10
|
translateResponse
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-YPBIPE2B.mjs";
|
|
12
12
|
import {
|
|
13
13
|
__name
|
|
14
14
|
} from "./chunk-PAWJFY3S.mjs";
|
|
@@ -201,4 +201,4 @@ export {
|
|
|
201
201
|
ServerJsonApiPatch,
|
|
202
202
|
ServerJsonApiDelete
|
|
203
203
|
};
|
|
204
|
-
//# sourceMappingURL=chunk-
|
|
204
|
+
//# sourceMappingURL=chunk-2PWYG2WJ.mjs.map
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
cacheArtworkImage,
|
|
3
|
-
imageUrlOf,
|
|
4
|
-
isRootLocked
|
|
5
|
-
} from "./chunk-4RPGFQBA.mjs";
|
|
6
1
|
import {
|
|
7
2
|
linkKindFor,
|
|
8
3
|
linkKindsOf,
|
|
@@ -10,7 +5,12 @@ import {
|
|
|
10
5
|
matchPattern,
|
|
11
6
|
rootIdForResource,
|
|
12
7
|
splitApiUrl
|
|
13
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DWPHHUMV.mjs";
|
|
9
|
+
import {
|
|
10
|
+
cacheArtworkImage,
|
|
11
|
+
imageUrlOf,
|
|
12
|
+
isRootLocked
|
|
13
|
+
} from "./chunk-4RPGFQBA.mjs";
|
|
14
14
|
import {
|
|
15
15
|
OfflineUnavailableError,
|
|
16
16
|
getOfflineConfig,
|
|
@@ -230,4 +230,4 @@ export {
|
|
|
230
230
|
waitingRecordKeys,
|
|
231
231
|
writeThrough
|
|
232
232
|
};
|
|
233
|
-
//# sourceMappingURL=chunk-
|
|
233
|
+
//# sourceMappingURL=chunk-3U7YJ73T.mjs.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunk5WM72MLEjs = require('./chunk-5WM72MLE.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkLNO2JLU3js = require('./chunk-LNO2JLU3.js');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var _chunkLXKSUWAVjs = require('./chunk-LXKSUWAV.js');
|
|
@@ -22,7 +22,7 @@ var _clientConfig = null;
|
|
|
22
22
|
function configureClientJsonApi(config) {
|
|
23
23
|
_clientConfig = config;
|
|
24
24
|
if (config.bootstrapper) {
|
|
25
|
-
|
|
25
|
+
_chunkLNO2JLU3js.setBootstrapper.call(void 0, config.bootstrapper);
|
|
26
26
|
config.bootstrapper();
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -31,7 +31,7 @@ function getClientApiUrl() {
|
|
|
31
31
|
if (_optionalChain([_clientConfig, 'optionalAccess', _ => _.apiUrl])) {
|
|
32
32
|
return _clientConfig.apiUrl;
|
|
33
33
|
}
|
|
34
|
-
const envUrl =
|
|
34
|
+
const envUrl = _chunkLNO2JLU3js.ENV.API_URL;
|
|
35
35
|
if (!envUrl) {
|
|
36
36
|
throw new Error(
|
|
37
37
|
"API URL not configured. Use configureClientJsonApi() or set NEXT_PUBLIC_API_URL environment variable."
|
|
@@ -44,7 +44,7 @@ function getClientAppUrl() {
|
|
|
44
44
|
if (_optionalChain([_clientConfig, 'optionalAccess', _2 => _2.appUrl])) {
|
|
45
45
|
return _clientConfig.appUrl;
|
|
46
46
|
}
|
|
47
|
-
const envUrl =
|
|
47
|
+
const envUrl = _chunkLNO2JLU3js.ENV.APP_URL;
|
|
48
48
|
if (!envUrl) {
|
|
49
49
|
throw new Error(
|
|
50
50
|
"App URL not configured. Use configureClientJsonApi({ appUrl }) or set NEXT_PUBLIC_ADDRESS environment variable."
|
|
@@ -72,7 +72,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, buildClientUrl, "buildClientUrl");
|
|
|
72
72
|
async function ClientJsonApiGet(params) {
|
|
73
73
|
runClientBootstrapper();
|
|
74
74
|
const token = await _chunkLXKSUWAVjs.getClientToken.call(void 0, );
|
|
75
|
-
const apiResponse = await
|
|
75
|
+
const apiResponse = await _chunk5WM72MLEjs.directFetch.call(void 0, {
|
|
76
76
|
method: "GET",
|
|
77
77
|
url: buildClientUrl(params.endpoint, params.baseUrl),
|
|
78
78
|
token,
|
|
@@ -81,7 +81,7 @@ async function ClientJsonApiGet(params) {
|
|
|
81
81
|
additionalHeaders: _optionalChain([_clientConfig, 'optionalAccess', _5 => _5.additionalHeaders]),
|
|
82
82
|
credentials: params.credentials
|
|
83
83
|
});
|
|
84
|
-
return
|
|
84
|
+
return _chunkLNO2JLU3js.translateResponse.call(void 0, {
|
|
85
85
|
classKey: params.classKey,
|
|
86
86
|
apiResponse,
|
|
87
87
|
companyId: params.companyId,
|
|
@@ -103,9 +103,9 @@ async function ClientJsonApiPost(params) {
|
|
|
103
103
|
if (!body) {
|
|
104
104
|
body = {};
|
|
105
105
|
} else if (params.overridesJsonApiCreation !== true) {
|
|
106
|
-
body =
|
|
106
|
+
body = _chunkLNO2JLU3js.JsonApiDataFactory.create(params.classKey, body);
|
|
107
107
|
}
|
|
108
|
-
const apiResponse = await
|
|
108
|
+
const apiResponse = await _chunk5WM72MLEjs.directFetch.call(void 0, {
|
|
109
109
|
method: "POST",
|
|
110
110
|
url: buildClientUrl(params.endpoint, params.baseUrl),
|
|
111
111
|
token,
|
|
@@ -116,7 +116,7 @@ async function ClientJsonApiPost(params) {
|
|
|
116
116
|
additionalHeaders: _optionalChain([_clientConfig, 'optionalAccess', _6 => _6.additionalHeaders]),
|
|
117
117
|
credentials: params.credentials
|
|
118
118
|
});
|
|
119
|
-
return
|
|
119
|
+
return _chunkLNO2JLU3js.translateResponse.call(void 0, {
|
|
120
120
|
classKey: _nullishCoalesce(params.responseType, () => ( params.classKey)),
|
|
121
121
|
apiResponse,
|
|
122
122
|
companyId: params.companyId,
|
|
@@ -131,9 +131,9 @@ async function ClientJsonApiPut(params) {
|
|
|
131
131
|
if (!body) {
|
|
132
132
|
body = {};
|
|
133
133
|
} else {
|
|
134
|
-
body =
|
|
134
|
+
body = _chunkLNO2JLU3js.JsonApiDataFactory.create(params.classKey, body);
|
|
135
135
|
}
|
|
136
|
-
const apiResponse = await
|
|
136
|
+
const apiResponse = await _chunk5WM72MLEjs.directFetch.call(void 0, {
|
|
137
137
|
method: "PUT",
|
|
138
138
|
url: buildClientUrl(params.endpoint, params.baseUrl),
|
|
139
139
|
token,
|
|
@@ -144,7 +144,7 @@ async function ClientJsonApiPut(params) {
|
|
|
144
144
|
additionalHeaders: _optionalChain([_clientConfig, 'optionalAccess', _7 => _7.additionalHeaders]),
|
|
145
145
|
credentials: params.credentials
|
|
146
146
|
});
|
|
147
|
-
return
|
|
147
|
+
return _chunkLNO2JLU3js.translateResponse.call(void 0, {
|
|
148
148
|
classKey: _nullishCoalesce(params.responseType, () => ( params.classKey)),
|
|
149
149
|
apiResponse,
|
|
150
150
|
companyId: params.companyId,
|
|
@@ -159,9 +159,9 @@ async function ClientJsonApiPatch(params) {
|
|
|
159
159
|
if (!body) {
|
|
160
160
|
body = {};
|
|
161
161
|
} else if (params.overridesJsonApiCreation !== true) {
|
|
162
|
-
body =
|
|
162
|
+
body = _chunkLNO2JLU3js.JsonApiDataFactory.create(params.classKey, body);
|
|
163
163
|
}
|
|
164
|
-
const apiResponse = await
|
|
164
|
+
const apiResponse = await _chunk5WM72MLEjs.directFetch.call(void 0, {
|
|
165
165
|
method: "PATCH",
|
|
166
166
|
url: buildClientUrl(params.endpoint, params.baseUrl),
|
|
167
167
|
token,
|
|
@@ -172,7 +172,7 @@ async function ClientJsonApiPatch(params) {
|
|
|
172
172
|
additionalHeaders: _optionalChain([_clientConfig, 'optionalAccess', _8 => _8.additionalHeaders]),
|
|
173
173
|
credentials: params.credentials
|
|
174
174
|
});
|
|
175
|
-
return
|
|
175
|
+
return _chunkLNO2JLU3js.translateResponse.call(void 0, {
|
|
176
176
|
classKey: _nullishCoalesce(params.responseType, () => ( params.classKey)),
|
|
177
177
|
apiResponse,
|
|
178
178
|
companyId: params.companyId,
|
|
@@ -183,7 +183,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, ClientJsonApiPatch, "ClientJsonApiPatch");
|
|
|
183
183
|
async function ClientJsonApiDelete(params) {
|
|
184
184
|
runClientBootstrapper();
|
|
185
185
|
const token = await _chunkLXKSUWAVjs.getClientToken.call(void 0, );
|
|
186
|
-
const apiResponse = await
|
|
186
|
+
const apiResponse = await _chunk5WM72MLEjs.directFetch.call(void 0, {
|
|
187
187
|
method: "DELETE",
|
|
188
188
|
url: buildClientUrl(params.endpoint, params.baseUrl),
|
|
189
189
|
token,
|
|
@@ -192,7 +192,7 @@ async function ClientJsonApiDelete(params) {
|
|
|
192
192
|
additionalHeaders: _optionalChain([_clientConfig, 'optionalAccess', _9 => _9.additionalHeaders]),
|
|
193
193
|
credentials: params.credentials
|
|
194
194
|
});
|
|
195
|
-
return
|
|
195
|
+
return _chunkLNO2JLU3js.translateResponse.call(void 0, {
|
|
196
196
|
classKey: _nullishCoalesce(params.responseType, () => ( params.classKey)),
|
|
197
197
|
apiResponse,
|
|
198
198
|
companyId: params.companyId,
|
|
@@ -214,4 +214,4 @@ _chunk7QVYU63Ejs.__name.call(void 0, ClientJsonApiDelete, "ClientJsonApiDelete")
|
|
|
214
214
|
|
|
215
215
|
|
|
216
216
|
exports.CURRENT_USER_STORAGE_KEY = CURRENT_USER_STORAGE_KEY; exports.configureClientJsonApi = configureClientJsonApi; exports.getClientApiUrl = getClientApiUrl; exports.getClientAppUrl = getClientAppUrl; exports.getClientTrackablePages = getClientTrackablePages; exports.buildClientUrl = buildClientUrl; exports.ClientJsonApiGet = ClientJsonApiGet; exports.ClientJsonApiPost = ClientJsonApiPost; exports.ClientJsonApiPut = ClientJsonApiPut; exports.ClientJsonApiPatch = ClientJsonApiPatch; exports.ClientJsonApiDelete = ClientJsonApiDelete;
|
|
217
|
-
//# sourceMappingURL=chunk-
|
|
217
|
+
//# sourceMappingURL=chunk-3VNDFKT7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-BQ2WAG4K.js","../src/features/user/data/user.storage.ts","../src/client/JsonApiClient.ts"],"names":[],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-BQ2WAG4K.js","sourcesContent":[null,"/**\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-3VNDFKT7.js","../src/features/user/data/user.storage.ts","../src/client/JsonApiClient.ts"],"names":[],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-3VNDFKT7.js","sourcesContent":[null,"/**\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\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 credentials?: RequestCredentials;\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 credentials: params.credentials,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
directFetch
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-73NKUBMP.mjs";
|
|
4
4
|
import {
|
|
5
5
|
ENV,
|
|
6
6
|
JsonApiDataFactory,
|
|
7
7
|
setBootstrapper,
|
|
8
8
|
translateResponse
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-YPBIPE2B.mjs";
|
|
10
10
|
import {
|
|
11
11
|
getClientToken
|
|
12
12
|
} from "./chunk-AUXK7QSA.mjs";
|
|
@@ -214,4 +214,4 @@ export {
|
|
|
214
214
|
ClientJsonApiPatch,
|
|
215
215
|
ClientJsonApiDelete
|
|
216
216
|
};
|
|
217
|
-
//# sourceMappingURL=chunk-
|
|
217
|
+
//# sourceMappingURL=chunk-47HNJQ7U.mjs.map
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatDateStyle,
|
|
3
|
+
formatRelativeDate,
|
|
4
|
+
resolveDateLocale,
|
|
5
|
+
usesTwelveHourClock
|
|
6
|
+
} from "./chunk-RW6XZGZG.mjs";
|
|
7
|
+
import {
|
|
8
|
+
useI18nLocale
|
|
9
|
+
} from "./chunk-743M4TIB.mjs";
|
|
10
|
+
import {
|
|
11
|
+
__name
|
|
12
|
+
} from "./chunk-PAWJFY3S.mjs";
|
|
13
|
+
|
|
14
|
+
// src/contexts/DateLocaleContext.tsx
|
|
15
|
+
import * as React from "react";
|
|
16
|
+
|
|
17
|
+
// src/utils/map-thenable.ts
|
|
18
|
+
function mapThenable(thenable, map) {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
thenable.then((value) => resolve(map(value)), reject);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
__name(mapThenable, "mapThenable");
|
|
24
|
+
|
|
25
|
+
// src/contexts/DateLocaleContext.tsx
|
|
26
|
+
import { jsx } from "react/jsx-runtime";
|
|
27
|
+
var DateLocaleContext = React.createContext(null);
|
|
28
|
+
function DateLocaleProvider(props) {
|
|
29
|
+
const { session, children } = props;
|
|
30
|
+
const value = React.useMemo(
|
|
31
|
+
() => props.mode === "public" || !session ? { mode: "public" } : { mode: "session", acceptLanguage: mapThenable(session, (snapshot) => snapshot.acceptLanguage) },
|
|
32
|
+
// Created once, like ViewportProvider's seed.
|
|
33
|
+
[]
|
|
34
|
+
);
|
|
35
|
+
return /* @__PURE__ */ jsx(DateLocaleContext.Provider, { value, children });
|
|
36
|
+
}
|
|
37
|
+
__name(DateLocaleProvider, "DateLocaleProvider");
|
|
38
|
+
function useDateLocaleSource() {
|
|
39
|
+
return React.useContext(DateLocaleContext);
|
|
40
|
+
}
|
|
41
|
+
__name(useDateLocaleSource, "useDateLocaleSource");
|
|
42
|
+
function DateLocaleSourceProvider({
|
|
43
|
+
value,
|
|
44
|
+
children
|
|
45
|
+
}) {
|
|
46
|
+
return /* @__PURE__ */ jsx(DateLocaleContext.Provider, { value, children });
|
|
47
|
+
}
|
|
48
|
+
__name(DateLocaleSourceProvider, "DateLocaleSourceProvider");
|
|
49
|
+
function useDateLocale() {
|
|
50
|
+
const source = React.useContext(DateLocaleContext);
|
|
51
|
+
const appLocale = useI18nLocale();
|
|
52
|
+
const acceptLanguage = source?.mode === "session" ? React.use(source.acceptLanguage) : void 0;
|
|
53
|
+
const isPublic = source?.mode === "public";
|
|
54
|
+
const locale = source?.mode === "session" ? resolveDateLocale({ appLocale, acceptLanguage }) : appLocale;
|
|
55
|
+
return React.useMemo(() => ({ locale, isPublic }), [locale, isPublic]);
|
|
56
|
+
}
|
|
57
|
+
__name(useDateLocale, "useDateLocale");
|
|
58
|
+
function useDateFormatter() {
|
|
59
|
+
const { locale, isPublic } = useDateLocale();
|
|
60
|
+
return React.useMemo(
|
|
61
|
+
() => ({
|
|
62
|
+
locale,
|
|
63
|
+
isPublic,
|
|
64
|
+
format: /* @__PURE__ */ __name((date, style, options) => formatDateStyle({ date, style, locale, timeZone: options?.timeZone, isPublic }), "format"),
|
|
65
|
+
relative: /* @__PURE__ */ __name((date, options) => formatRelativeDate({ date, locale, now: options.now }), "relative"),
|
|
66
|
+
twelveHourClock: usesTwelveHourClock(locale)
|
|
67
|
+
}),
|
|
68
|
+
[locale, isPublic]
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
__name(useDateFormatter, "useDateFormatter");
|
|
72
|
+
function useMountedNow() {
|
|
73
|
+
const [now, setNow] = React.useState(void 0);
|
|
74
|
+
React.useEffect(() => {
|
|
75
|
+
setNow(/* @__PURE__ */ new Date());
|
|
76
|
+
}, []);
|
|
77
|
+
return now;
|
|
78
|
+
}
|
|
79
|
+
__name(useMountedNow, "useMountedNow");
|
|
80
|
+
|
|
81
|
+
export {
|
|
82
|
+
mapThenable,
|
|
83
|
+
DateLocaleProvider,
|
|
84
|
+
useDateLocaleSource,
|
|
85
|
+
DateLocaleSourceProvider,
|
|
86
|
+
useDateLocale,
|
|
87
|
+
useDateFormatter,
|
|
88
|
+
useMountedNow
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=chunk-5T2AQMQ2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/contexts/DateLocaleContext.tsx","../src/utils/map-thenable.ts"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { useI18nLocale } from \"../i18n/config\";\nimport type { SessionSnapshot } from \"../server/ServerSession\";\nimport {\n type DateFormatStyle,\n formatDateStyle,\n formatRelativeDate,\n resolveDateLocale,\n usesTwelveHourClock,\n} from \"../utils/date-formatter\";\nimport { mapThenable } from \"../utils/map-thenable\";\n\n/**\n * The locale every real-world date is formatted in.\n *\n * Signed-in shells pass the request's session promise: the provider maps it to\n * the `Accept-Language` header once and never awaits it, so its children render\n * at once; only `useDateLocale()` callers suspend until it settles (the shape of\n * `ViewportProvider`). Public layouts pass `mode=\"public\"`: the app language,\n * with all-numeric styles spelled out. Without a provider: the app language.\n *\n * THIS LIVES IN `contexts/` for the same reason as `ViewportProvider`: the\n * server layouts render it directly, so it needs the \"use client\" boundary that\n * tsup stamps onto `dist/contexts/*`.\n */\nexport type DateLocaleSource = { mode: \"session\"; acceptLanguage: Promise<string | undefined> } | { mode: \"public\" };\n\nconst DateLocaleContext = React.createContext<DateLocaleSource | null>(null);\n\nexport function DateLocaleProvider(\n props:\n | { session: Promise<SessionSnapshot>; mode?: \"session\"; children: React.ReactNode }\n | { mode: \"public\"; session?: never; children: React.ReactNode },\n) {\n const { session, children } = props;\n const value = React.useMemo<DateLocaleSource>(\n () =>\n props.mode === \"public\" || !session\n ? { mode: \"public\" }\n : { mode: \"session\", acceptLanguage: mapThenable(session, (snapshot) => snapshot.acceptLanguage) },\n // Created once, like ViewportProvider's seed.\n [],\n );\n\n return <DateLocaleContext.Provider value={value}>{children}</DateLocaleContext.Provider>;\n}\n\n/** The provider's raw context value (mapped thenable + mode), read WITHOUT suspending — for re-providing it to a tree rendered outside the provider (sonner toasts). */\nexport function useDateLocaleSource(): DateLocaleSource | null {\n return React.useContext(DateLocaleContext);\n}\n\nexport function DateLocaleSourceProvider({\n value,\n children,\n}: {\n value: DateLocaleSource | null;\n children: React.ReactNode;\n}) {\n return <DateLocaleContext.Provider value={value}>{children}</DateLocaleContext.Provider>;\n}\n\nexport type DateLocale = { locale: string; isPublic: boolean };\n\n/** Suspends on the session (put the caller behind its own `<Suspense>`) when a session provider is above it. */\nexport function useDateLocale(): DateLocale {\n const source = React.useContext(DateLocaleContext);\n const appLocale = useI18nLocale();\n const acceptLanguage = source?.mode === \"session\" ? React.use(source.acceptLanguage) : undefined;\n const isPublic = source?.mode === \"public\";\n const locale = source?.mode === \"session\" ? resolveDateLocale({ appLocale, acceptLanguage }) : appLocale;\n\n return React.useMemo(() => ({ locale, isPublic }), [locale, isPublic]);\n}\n\nexport type DateFormatter = DateLocale & {\n format(date: Date | string | undefined, style: DateFormatStyle, options?: { timeZone?: string }): string;\n relative(date: Date | string, options: { now: Date }): string;\n twelveHourClock: boolean;\n};\n\nexport function useDateFormatter(): DateFormatter {\n const { locale, isPublic } = useDateLocale();\n\n return React.useMemo<DateFormatter>(\n () => ({\n locale,\n isPublic,\n format: (date, style, options) => formatDateStyle({ date, style, locale, timeZone: options?.timeZone, isPublic }),\n relative: (date, options) => formatRelativeDate({ date, locale, now: options.now }),\n twelveHourClock: usesTwelveHourClock(locale),\n }),\n [locale, isPublic],\n );\n}\n\n/** undefined on the server render and the first client render; the current time after mount (set in useEffect). */\nexport function useMountedNow(): Date | undefined {\n const [now, setNow] = React.useState<Date | undefined>(undefined);\n React.useEffect(() => {\n setNow(new Date());\n }, []);\n return now;\n}\n","/**\n * Derives a native Promise from a thenable.\n *\n * A promise passed from a Server Component to a Client Component arrives as\n * React's deserialised chunk. It inherits from Promise.prototype, but its\n * `then()` only registers callbacks and returns undefined, so\n * `session.then(fn)` yields undefined and `Promise.resolve(session)` hands the\n * same chunk back. Wrapping it in `new Promise` adopts it and gives a real\n * promise to chain, store in context or pass to `use()`.\n */\nexport function mapThenable<T, R>(thenable: PromiseLike<T>, map: (value: T) => R): Promise<R> {\n return new Promise<R>((resolve, reject) => {\n thenable.then((value) => resolve(map(value)), reject);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AAEA,YAAY,WAAW;;;ACQhB,SAAS,YAAkB,UAA0B,KAAkC;AAC5F,SAAO,IAAI,QAAW,CAAC,SAAS,WAAW;AACzC,aAAS,KAAK,CAAC,UAAU,QAAQ,IAAI,KAAK,CAAC,GAAG,MAAM;AAAA,EACtD,CAAC;AACH;AAJgB;;;ADoCP;AAjBT,IAAM,oBAA0B,oBAAuC,IAAI;AAEpE,SAAS,mBACd,OAGA;AACA,QAAM,EAAE,SAAS,SAAS,IAAI;AAC9B,QAAM,QAAc;AAAA,IAClB,MACE,MAAM,SAAS,YAAY,CAAC,UACxB,EAAE,MAAM,SAAS,IACjB,EAAE,MAAM,WAAW,gBAAgB,YAAY,SAAS,CAAC,aAAa,SAAS,cAAc,EAAE;AAAA;AAAA,IAErG,CAAC;AAAA,EACH;AAEA,SAAO,oBAAC,kBAAkB,UAAlB,EAA2B,OAAe,UAAS;AAC7D;AAhBgB;AAmBT,SAAS,sBAA+C;AAC7D,SAAa,iBAAW,iBAAiB;AAC3C;AAFgB;AAIT,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AACF,GAGG;AACD,SAAO,oBAAC,kBAAkB,UAAlB,EAA2B,OAAe,UAAS;AAC7D;AARgB;AAaT,SAAS,gBAA4B;AAC1C,QAAM,SAAe,iBAAW,iBAAiB;AACjD,QAAM,YAAY,cAAc;AAChC,QAAM,iBAAiB,QAAQ,SAAS,YAAkB,UAAI,OAAO,cAAc,IAAI;AACvF,QAAM,WAAW,QAAQ,SAAS;AAClC,QAAM,SAAS,QAAQ,SAAS,YAAY,kBAAkB,EAAE,WAAW,eAAe,CAAC,IAAI;AAE/F,SAAa,cAAQ,OAAO,EAAE,QAAQ,SAAS,IAAI,CAAC,QAAQ,QAAQ,CAAC;AACvE;AARgB;AAgBT,SAAS,mBAAkC;AAChD,QAAM,EAAE,QAAQ,SAAS,IAAI,cAAc;AAE3C,SAAa;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,QAAQ,wBAAC,MAAM,OAAO,YAAY,gBAAgB,EAAE,MAAM,OAAO,QAAQ,UAAU,SAAS,UAAU,SAAS,CAAC,GAAxG;AAAA,MACR,UAAU,wBAAC,MAAM,YAAY,mBAAmB,EAAE,MAAM,QAAQ,KAAK,QAAQ,IAAI,CAAC,GAAxE;AAAA,MACV,iBAAiB,oBAAoB,MAAM;AAAA,IAC7C;AAAA,IACA,CAAC,QAAQ,QAAQ;AAAA,EACnB;AACF;AAbgB;AAgBT,SAAS,gBAAkC;AAChD,QAAM,CAAC,KAAK,MAAM,IAAU,eAA2B,MAAS;AAChE,EAAM,gBAAU,MAAM;AACpB,WAAO,oBAAI,KAAK,CAAC;AAAA,EACnB,GAAG,CAAC,CAAC;AACL,SAAO;AACT;AANgB;","names":[]}
|
|
@@ -21,7 +21,7 @@ async function directFetch(params) {
|
|
|
21
21
|
return answerLocally(params);
|
|
22
22
|
}
|
|
23
23
|
if (offline && response.ok && params.method.toUpperCase() !== "GET") {
|
|
24
|
-
const { writeThrough } = await Promise.resolve().then(() => _interopRequireWildcard(require("./write-through-
|
|
24
|
+
const { writeThrough } = await Promise.resolve().then(() => _interopRequireWildcard(require("./write-through-MYHQ6GJU.js")));
|
|
25
25
|
await writeThrough({ method: params.method, url: params.url }, response);
|
|
26
26
|
}
|
|
27
27
|
return response;
|
|
@@ -33,7 +33,7 @@ function hasReplayHeader(headers) {
|
|
|
33
33
|
}
|
|
34
34
|
_chunk7QVYU63Ejs.__name.call(void 0, hasReplayHeader, "hasReplayHeader");
|
|
35
35
|
async function answerLocally(params) {
|
|
36
|
-
const { localTransport } = await Promise.resolve().then(() => _interopRequireWildcard(require("./local-transport-
|
|
36
|
+
const { localTransport } = await Promise.resolve().then(() => _interopRequireWildcard(require("./local-transport-AT4TE264.js")));
|
|
37
37
|
return localTransport({ method: params.method, url: params.url, body: params.body, files: params.files });
|
|
38
38
|
}
|
|
39
39
|
_chunk7QVYU63Ejs.__name.call(void 0, answerLocally, "answerLocally");
|
|
@@ -113,4 +113,4 @@ _chunk7QVYU63Ejs.__name.call(void 0, fetchFromApi, "fetchFromApi");
|
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
exports.directFetch = directFetch;
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-5WM72MLE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-5WM72MLE.js","../src/client/request.ts"],"names":[],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-5WM72MLE.js","sourcesContent":[null,"\"use client\";\n\nimport { ApiData } from \"../core/interfaces/ApiData\";\nimport { isOfflineConfigured } from \"../offline/config\";\nimport { getOfflineState, reachesNetworkWhileOffline, setOfflineState } from \"../offline/state\";\nimport { OFFLINE_REPLAY_HEADER } from \"../offline/types\";\n\nexport interface DirectFetchParams {\n method: string;\n url: string;\n token?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n companyId?: string;\n language: string;\n additionalHeaders?: Record<string, string>;\n /**\n * Optional `fetch` credentials mode (e.g. \"include\" so the browser stores a cookie the API sets).\n * Omitted => no `credentials` option is passed, unchanged behaviour.\n */\n credentials?: RequestCredentials;\n}\n\n/**\n * Client-side direct fetch to bypass server action overhead.\n * Use this for client-side API calls.\n */\nexport async function directFetch(params: DirectFetchParams): Promise<ApiData> {\n // Offline mode is opt-in (`configureOffline`). Without it nothing below loads or runs. A request\n // the server runs as an offline replay always goes to the network, and so do the reads and the\n // change-set request of a reconnect attempt (the session stays offline until its sync succeeds).\n const offline = isOfflineConfigured() && !hasReplayHeader(params.additionalHeaders);\n if (offline && !getOfflineState().online && !reachesNetworkWhileOffline(params.method, params.url)) {\n return answerLocally(params);\n }\n\n const response = await fetchFromApi(params);\n\n if (offline && response.networkError) {\n setOfflineState({ online: false });\n return answerLocally(params);\n }\n if (offline && response.ok && params.method.toUpperCase() !== \"GET\") {\n const { writeThrough } = await import(\"../offline/write-through\");\n await writeThrough({ method: params.method, url: params.url }, response);\n }\n\n return response;\n}\n\nfunction hasReplayHeader(headers?: Record<string, string>): boolean {\n if (!headers) return false;\n return Object.keys(headers).some((key) => key.toLowerCase() === OFFLINE_REPLAY_HEADER);\n}\n\nasync function answerLocally(params: DirectFetchParams): Promise<ApiData> {\n const { localTransport } = await import(\"../offline/local-transport\");\n return localTransport({ method: params.method, url: params.url, body: params.body, files: params.files });\n}\n\nasync function fetchFromApi(params: DirectFetchParams): Promise<ApiData> {\n const response: ApiData = {\n data: undefined,\n ok: false,\n status: 0,\n statusText: \"\",\n };\n\n const additionalHeaders: Record<string, string> = { ...params.additionalHeaders };\n\n if (params.companyId) {\n additionalHeaders[\"x-companyid\"] = params.companyId;\n }\n additionalHeaders[\"x-language\"] = params.language;\n\n let requestBody: BodyInit | undefined = undefined;\n\n if (params.files) {\n const formData = new FormData();\n if (params.body && typeof params.body === \"object\") {\n for (const key in params.body) {\n if (Object.prototype.hasOwnProperty.call(params.body, key)) {\n formData.append(\n key,\n typeof params.body[key] === \"object\" ? JSON.stringify(params.body[key]) : params.body[key],\n );\n }\n }\n }\n\n if (params.files instanceof Blob) {\n formData.append(\"file\", params.files);\n } else if (typeof params.files === \"object\" && params.files !== null) {\n for (const key in params.files) {\n if (Object.prototype.hasOwnProperty.call(params.files, key)) {\n formData.append(key, params.files[key]);\n }\n }\n }\n\n requestBody = formData;\n } else if (params.body !== undefined) {\n requestBody = JSON.stringify(params.body);\n additionalHeaders[\"Content-Type\"] = \"application/json\";\n }\n\n const options: RequestInit = {\n method: params.method,\n headers: { Accept: \"application/json\", ...additionalHeaders },\n };\n\n if (requestBody !== undefined) {\n options.body = requestBody;\n }\n\n if (params.credentials) {\n options.credentials = params.credentials;\n }\n\n if (params.token) {\n options.headers = { ...options.headers, Authorization: `Bearer ${params.token}` };\n }\n\n try {\n const apiResponse = await fetch(params.url, options);\n\n response.ok = apiResponse.ok;\n response.status = apiResponse.status;\n response.statusText = apiResponse.statusText;\n try {\n response.data = await apiResponse.json();\n } catch {\n response.data = undefined;\n }\n } catch {\n // fetch() only throws when the API could not be reached at all (server\n // down, DNS, connection refused). Report it as 503 so consumers can tell\n // \"API unreachable\" apart from a 500 the API actually returned.\n response.ok = false;\n response.status = 503;\n response.statusText = \"Service Unavailable\";\n response.data = undefined;\n response.networkError = true;\n }\n\n return response;\n}\n"]}
|