@carlonicora/nextjs-jsonapi 6.22.0 → 6.24.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-2XSIQCEB.mjs → BlockNoteEditor-ENDOVTAW.mjs} +8 -8
- package/dist/{BlockNoteEditor-HW3TK7SM.js → BlockNoteEditor-MONT74RQ.js} +23 -23
- package/dist/{BlockNoteEditor-HW3TK7SM.js.map → BlockNoteEditor-MONT74RQ.js.map} +1 -1
- package/dist/{BlockNoteViewer-2UDFTXRS.mjs → BlockNoteViewer-2TJZ6JET.mjs} +6 -6
- package/dist/{BlockNoteViewer-4OHBRE4Q.js → BlockNoteViewer-K2HBF3IP.js} +7 -7
- package/dist/{BlockNoteViewer-4OHBRE4Q.js.map → BlockNoteViewer-K2HBF3IP.js.map} +1 -1
- package/dist/{JsonApiRequest-IKKHWCPB.mjs → JsonApiRequest-ADLBJ5RX.mjs} +2 -2
- package/dist/JsonApiRequest-KC6DOHKT.js +26 -0
- package/dist/{JsonApiRequest-G4J2WTSU.js.map → JsonApiRequest-KC6DOHKT.js.map} +1 -1
- package/dist/billing/index.js +495 -495
- package/dist/billing/index.mjs +7 -7
- package/dist/{chunk-N5ZE2Z6I.js → chunk-53SD4YRF.js} +5 -5
- package/dist/{chunk-N5ZE2Z6I.js.map → chunk-53SD4YRF.js.map} +1 -1
- package/dist/{chunk-4RA5PRXX.mjs → chunk-7OIWOPM5.mjs} +2 -2
- package/dist/{chunk-WCEYT3GG.js → chunk-A5M3MORY.js} +6 -3
- package/dist/chunk-A5M3MORY.js.map +1 -0
- package/dist/{chunk-FXRRQ7Q6.js → chunk-BDWV4KYR.js} +1224 -1221
- package/dist/chunk-BDWV4KYR.js.map +1 -0
- package/dist/{chunk-AUD6ZLBB.mjs → chunk-BE6UMM5X.mjs} +13 -8
- package/dist/chunk-BE6UMM5X.mjs.map +1 -0
- package/dist/{chunk-KV4N7DEG.js → chunk-BQ2WAG4K.js} +29 -24
- package/dist/chunk-BQ2WAG4K.js.map +1 -0
- package/dist/{chunk-OQQ7CZWT.js → chunk-GMMDXINC.js} +12 -12
- package/dist/{chunk-OQQ7CZWT.js.map → chunk-GMMDXINC.js.map} +1 -1
- package/dist/{chunk-ZB6OYIMB.js → chunk-HN7L6RRW.js} +1296 -1093
- package/dist/{chunk-DPXOPLQP.mjs.map → chunk-HN7L6RRW.js.map} +1 -1
- package/dist/{chunk-JSHLBRFV.mjs → chunk-N2BFT7KI.mjs} +2 -2
- package/dist/chunk-N2BFT7KI.mjs.map +1 -0
- package/dist/{chunk-EFQIMPCJ.mjs → chunk-OZADFYE7.mjs} +13 -10
- package/dist/chunk-OZADFYE7.mjs.map +1 -0
- package/dist/{chunk-YWLSIIE6.js → chunk-P7L6OFX5.js} +11 -11
- package/dist/{chunk-YWLSIIE6.js.map → chunk-P7L6OFX5.js.map} +1 -1
- package/dist/{chunk-GM4VZTWL.js → chunk-RCOKQ3R4.js} +14 -8
- package/dist/chunk-RCOKQ3R4.js.map +1 -0
- package/dist/{chunk-M3N7LPHX.mjs → chunk-S7SPAC6X.mjs} +6 -3
- package/dist/chunk-S7SPAC6X.mjs.map +1 -0
- package/dist/{chunk-54K2CZ2F.js → chunk-SO3YUCL6.js} +4 -4
- package/dist/{chunk-54K2CZ2F.js.map → chunk-SO3YUCL6.js.map} +1 -1
- package/dist/{chunk-DPXOPLQP.mjs → chunk-T6G2F2BK.mjs} +220 -17
- package/dist/chunk-T6G2F2BK.mjs.map +1 -0
- package/dist/{chunk-G2UIQSNJ.mjs → chunk-TMV7TL7O.mjs} +4 -4
- package/dist/{chunk-BD6ARGGI.js → chunk-TNTCLVUR.js} +15 -15
- package/dist/{chunk-BD6ARGGI.js.map → chunk-TNTCLVUR.js.map} +1 -1
- package/dist/{chunk-QIEF7HIL.mjs → chunk-VNUT2D27.mjs} +2 -2
- package/dist/{chunk-KTGKW72G.mjs → chunk-W4ML6D2X.mjs} +2 -2
- package/dist/{chunk-MQ7TXALH.mjs → chunk-YMCL3JXZ.mjs} +14 -8
- package/dist/chunk-YMCL3JXZ.mjs.map +1 -0
- package/dist/{chunk-QGVVF77L.js → chunk-YSE2Z4RB.js} +11 -11
- package/dist/{chunk-QGVVF77L.js.map → chunk-YSE2Z4RB.js.map} +1 -1
- package/dist/{chunk-A3RB47X4.mjs → chunk-YTDGYI62.mjs} +3 -3
- package/dist/client/JsonApiClient.d.ts +5 -0
- package/dist/client/JsonApiClient.d.ts.map +1 -1
- package/dist/client/index.js +8 -8
- package/dist/client/index.mjs +7 -7
- package/dist/client/request.d.ts +5 -0
- package/dist/client/request.d.ts.map +1 -1
- package/dist/components/forms/EditorSheet.d.ts +6 -1
- package/dist/components/forms/EditorSheet.d.ts.map +1 -1
- package/dist/components/index.js +8 -8
- package/dist/components/index.mjs +7 -7
- package/dist/contexts/index.js +8 -8
- package/dist/contexts/index.mjs +7 -7
- package/dist/core/abstracts/AbstractService.d.ts +5 -0
- package/dist/core/abstracts/AbstractService.d.ts.map +1 -1
- package/dist/core/abstracts/ClientAbstractService.d.ts +5 -0
- package/dist/core/abstracts/ClientAbstractService.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +24 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +23 -5
- package/dist/core/registry/ModuleRegistry.d.ts +3 -0
- package/dist/core/registry/ModuleRegistry.d.ts.map +1 -1
- package/dist/email-automations/index.js +121 -121
- package/dist/email-automations/index.mjs +7 -7
- package/dist/features/analytics/index.js +139 -139
- package/dist/features/analytics/index.mjs +7 -7
- package/dist/features/analytics/server.js +9 -9
- package/dist/features/analytics/server.mjs +7 -7
- package/dist/features/blog/index.js +154 -154
- package/dist/features/blog/index.mjs +7 -7
- package/dist/features/blog/server.js +27 -27
- package/dist/features/blog/server.mjs +6 -6
- package/dist/features/discord-connection/data/discord-connect-confirmation.d.ts +11 -0
- package/dist/features/discord-connection/data/discord-connect-confirmation.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connect-confirmation.interface.d.ts +14 -0
- package/dist/features/discord-connection/data/discord-connect-confirmation.interface.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connect-confirmation.service.d.ts +10 -0
- package/dist/features/discord-connection/data/discord-connect-confirmation.service.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connect-intent.d.ts +11 -0
- package/dist/features/discord-connection/data/discord-connect-intent.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connect-intent.interface.d.ts +15 -0
- package/dist/features/discord-connection/data/discord-connect-intent.interface.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connect-intent.service.d.ts +11 -0
- package/dist/features/discord-connection/data/discord-connect-intent.service.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connection.d.ts +14 -0
- package/dist/features/discord-connection/data/discord-connection.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connection.interface.d.ts +10 -0
- package/dist/features/discord-connection/data/discord-connection.interface.d.ts.map +1 -0
- package/dist/features/discord-connection/data/discord-connection.service.d.ts +12 -0
- package/dist/features/discord-connection/data/discord-connection.service.d.ts.map +1 -0
- package/dist/features/discord-connection/data/index.d.ts +10 -0
- package/dist/features/discord-connection/data/index.d.ts.map +1 -0
- package/dist/features/discord-connection/discord-connection.module.d.ts +5 -0
- package/dist/features/discord-connection/discord-connection.module.d.ts.map +1 -0
- package/dist/features/discord-connection/index.d.ts +3 -0
- package/dist/features/discord-connection/index.d.ts.map +1 -0
- package/dist/features/help/index.js +41 -41
- package/dist/features/help/index.mjs +7 -7
- package/dist/features/tokenusage/index.js +130 -130
- package/dist/features/tokenusage/index.mjs +7 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +26 -6
- package/dist/local-transport-MJPOKPTU.js +15 -0
- package/dist/{local-transport-4YDJ6FQG.js.map → local-transport-MJPOKPTU.js.map} +1 -1
- package/dist/{local-transport-C7YTA4I7.mjs → local-transport-RVD4FZGA.mjs} +5 -5
- package/dist/offline/index.js +51 -51
- package/dist/offline/index.mjs +6 -6
- package/dist/{request-66FGJIHB.mjs → request-4AWGPIGH.mjs} +2 -2
- package/dist/{request-6W6UGKJV.js → request-H5FZBZA2.js} +3 -3
- package/dist/{request-6W6UGKJV.js.map → request-H5FZBZA2.js.map} +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/index.mjs +7 -7
- package/dist/unified/JsonApiRequest.d.ts +5 -0
- package/dist/unified/JsonApiRequest.d.ts.map +1 -1
- package/dist/write-through-7I3LA2WN.mjs +15 -0
- package/dist/write-through-HE2QSOVI.js +15 -0
- package/dist/{write-through-BAPS24GL.js.map → write-through-HE2QSOVI.js.map} +1 -1
- package/package.json +1 -1
- package/src/client/JsonApiClient.ts +10 -0
- package/src/client/__tests__/request.credentials.spec.ts +103 -0
- package/src/client/request.ts +9 -0
- package/src/components/forms/EditorSheet.tsx +8 -0
- package/src/components/forms/__tests__/EditorSheet.spec.tsx +30 -0
- package/src/core/abstracts/AbstractService.ts +10 -0
- package/src/core/abstracts/ClientAbstractService.ts +10 -0
- package/src/core/index.ts +3 -0
- package/src/core/registry/ModuleRegistry.ts +4 -0
- package/src/features/discord-connection/data/__tests__/DiscordConnection.spec.ts +114 -0
- package/src/features/discord-connection/data/discord-connect-confirmation.interface.ts +16 -0
- package/src/features/discord-connection/data/discord-connect-confirmation.service.ts +21 -0
- package/src/features/discord-connection/data/discord-connect-confirmation.ts +46 -0
- package/src/features/discord-connection/data/discord-connect-intent.interface.ts +16 -0
- package/src/features/discord-connection/data/discord-connect-intent.service.ts +20 -0
- package/src/features/discord-connection/data/discord-connect-intent.ts +42 -0
- package/src/features/discord-connection/data/discord-connection.interface.ts +10 -0
- package/src/features/discord-connection/data/discord-connection.service.ts +17 -0
- package/src/features/discord-connection/data/discord-connection.ts +41 -0
- package/src/features/discord-connection/data/index.ts +9 -0
- package/src/features/discord-connection/discord-connection.module.ts +28 -0
- package/src/features/discord-connection/index.ts +2 -0
- package/src/index.ts +1 -1
- package/src/unified/JsonApiRequest.ts +14 -0
- package/dist/JsonApiRequest-G4J2WTSU.js +0 -26
- package/dist/chunk-AUD6ZLBB.mjs.map +0 -1
- package/dist/chunk-EFQIMPCJ.mjs.map +0 -1
- package/dist/chunk-FXRRQ7Q6.js.map +0 -1
- package/dist/chunk-GM4VZTWL.js.map +0 -1
- package/dist/chunk-JSHLBRFV.mjs.map +0 -1
- package/dist/chunk-KV4N7DEG.js.map +0 -1
- package/dist/chunk-M3N7LPHX.mjs.map +0 -1
- package/dist/chunk-MQ7TXALH.mjs.map +0 -1
- package/dist/chunk-WCEYT3GG.js.map +0 -1
- package/dist/chunk-ZB6OYIMB.js.map +0 -1
- package/dist/local-transport-4YDJ6FQG.js +0 -15
- package/dist/write-through-BAPS24GL.js +0 -15
- package/dist/write-through-IWQKXYHE.mjs +0 -15
- /package/dist/{BlockNoteEditor-2XSIQCEB.mjs.map → BlockNoteEditor-ENDOVTAW.mjs.map} +0 -0
- /package/dist/{BlockNoteViewer-2UDFTXRS.mjs.map → BlockNoteViewer-2TJZ6JET.mjs.map} +0 -0
- /package/dist/{JsonApiRequest-IKKHWCPB.mjs.map → JsonApiRequest-ADLBJ5RX.mjs.map} +0 -0
- /package/dist/{chunk-4RA5PRXX.mjs.map → chunk-7OIWOPM5.mjs.map} +0 -0
- /package/dist/{chunk-G2UIQSNJ.mjs.map → chunk-TMV7TL7O.mjs.map} +0 -0
- /package/dist/{chunk-QIEF7HIL.mjs.map → chunk-VNUT2D27.mjs.map} +0 -0
- /package/dist/{chunk-KTGKW72G.mjs.map → chunk-W4ML6D2X.mjs.map} +0 -0
- /package/dist/{chunk-A3RB47X4.mjs.map → chunk-YTDGYI62.mjs.map} +0 -0
- /package/dist/{local-transport-C7YTA4I7.mjs.map → local-transport-RVD4FZGA.mjs.map} +0 -0
- /package/dist/{request-66FGJIHB.mjs.map → request-4AWGPIGH.mjs.map} +0 -0
- /package/dist/{write-through-IWQKXYHE.mjs.map → write-through-7I3LA2WN.mjs.map} +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AbstractApiData, JsonApiHydratedDataInterface, Modules } from "../../../core";
|
|
2
|
+
import { DiscordConnectIntentInput, DiscordConnectIntentInterface } from "./discord-connect-intent.interface";
|
|
3
|
+
|
|
4
|
+
export class DiscordConnectIntent extends AbstractApiData implements DiscordConnectIntentInterface {
|
|
5
|
+
private _returnPath?: string;
|
|
6
|
+
private _authorizeUrl?: string;
|
|
7
|
+
|
|
8
|
+
get returnPath(): string {
|
|
9
|
+
return this._returnPath ?? "/";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
get authorizeUrl(): string | undefined {
|
|
13
|
+
return this._authorizeUrl;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
rehydrate(data: JsonApiHydratedDataInterface): this {
|
|
17
|
+
super.rehydrate(data);
|
|
18
|
+
|
|
19
|
+
const attributes = data.jsonApi.attributes ?? {};
|
|
20
|
+
|
|
21
|
+
this._returnPath = attributes.returnPath;
|
|
22
|
+
this._authorizeUrl = attributes.authorizeUrl ?? undefined;
|
|
23
|
+
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
createJsonApi(data: DiscordConnectIntentInput) {
|
|
28
|
+
const response: any = {
|
|
29
|
+
data: {
|
|
30
|
+
type: Modules.DiscordConnectIntent.name,
|
|
31
|
+
id: data.id,
|
|
32
|
+
attributes: {
|
|
33
|
+
returnPath: data.returnPath,
|
|
34
|
+
},
|
|
35
|
+
relationships: {},
|
|
36
|
+
},
|
|
37
|
+
included: [],
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
return response;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ApiDataInterface } from "../../../core";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Whether the signed-in user has a Discord account attached. Not a stored entity:
|
|
5
|
+
* the API builds it for one user; its id is that user's id.
|
|
6
|
+
*/
|
|
7
|
+
export interface DiscordConnectionInterface extends ApiDataInterface {
|
|
8
|
+
get connected(): boolean;
|
|
9
|
+
get discordName(): string | undefined;
|
|
10
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AbstractService, EndpointCreator, HttpMethod, Modules } from "../../../core";
|
|
2
|
+
import { DiscordConnectionInterface } from "./discord-connection.interface";
|
|
3
|
+
|
|
4
|
+
export class DiscordConnectionService extends AbstractService {
|
|
5
|
+
/**
|
|
6
|
+
* GET whether the user has Discord attached. `params.id` must be the signed-in
|
|
7
|
+
* user's id; any other id answers 404.
|
|
8
|
+
*/
|
|
9
|
+
static async findById(params: { id: string }): Promise<DiscordConnectionInterface> {
|
|
10
|
+
return this.callApi<DiscordConnectionInterface>({
|
|
11
|
+
type: Modules.DiscordConnection,
|
|
12
|
+
method: HttpMethod.GET,
|
|
13
|
+
endpoint: new EndpointCreator({ endpoint: Modules.DiscordConnection, id: params.id }).generate(),
|
|
14
|
+
suppressGlobalError: true,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AbstractApiData, JsonApiHydratedDataInterface, Modules } from "../../../core";
|
|
2
|
+
import { DiscordConnectionInterface } from "./discord-connection.interface";
|
|
3
|
+
|
|
4
|
+
export class DiscordConnection extends AbstractApiData implements DiscordConnectionInterface {
|
|
5
|
+
private _connected: boolean = false;
|
|
6
|
+
private _discordName?: string;
|
|
7
|
+
|
|
8
|
+
get connected(): boolean {
|
|
9
|
+
return this._connected;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
get discordName(): string | undefined {
|
|
13
|
+
return this._discordName;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
rehydrate(data: JsonApiHydratedDataInterface): this {
|
|
17
|
+
super.rehydrate(data);
|
|
18
|
+
|
|
19
|
+
const attributes = data.jsonApi.attributes ?? {};
|
|
20
|
+
|
|
21
|
+
this._connected = attributes.connected === true;
|
|
22
|
+
this._discordName = attributes.discordName ?? undefined;
|
|
23
|
+
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Read-only resource: the body only identifies the user. */
|
|
28
|
+
createJsonApi(data: { id: string }) {
|
|
29
|
+
const response: any = {
|
|
30
|
+
data: {
|
|
31
|
+
type: Modules.DiscordConnection.name,
|
|
32
|
+
id: data.id,
|
|
33
|
+
attributes: {},
|
|
34
|
+
relationships: {},
|
|
35
|
+
},
|
|
36
|
+
included: [],
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
return response;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./discord-connection.interface";
|
|
2
|
+
export * from "./discord-connection";
|
|
3
|
+
export * from "./discord-connection.service";
|
|
4
|
+
export * from "./discord-connect-intent.interface";
|
|
5
|
+
export * from "./discord-connect-intent";
|
|
6
|
+
export * from "./discord-connect-intent.service";
|
|
7
|
+
export * from "./discord-connect-confirmation.interface";
|
|
8
|
+
export * from "./discord-connect-confirmation";
|
|
9
|
+
export * from "./discord-connect-confirmation.service";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ModuleFactory } from "../../permissions";
|
|
2
|
+
import { DiscordConnectConfirmation } from "./data/discord-connect-confirmation";
|
|
3
|
+
import { DiscordConnectIntent } from "./data/discord-connect-intent";
|
|
4
|
+
import { DiscordConnection } from "./data/discord-connection";
|
|
5
|
+
|
|
6
|
+
// Bootstrapper key: `DiscordConnection: DiscordConnectionModule(moduleFactory)`.
|
|
7
|
+
export const DiscordConnectionModule = (factory: ModuleFactory) =>
|
|
8
|
+
factory({
|
|
9
|
+
name: "discord-connections",
|
|
10
|
+
pageUrl: "/settings",
|
|
11
|
+
model: DiscordConnection,
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
// Bootstrapper key: `DiscordConnectIntent: DiscordConnectIntentModule(moduleFactory)`.
|
|
15
|
+
export const DiscordConnectIntentModule = (factory: ModuleFactory) =>
|
|
16
|
+
factory({
|
|
17
|
+
name: "discord-connect-intents",
|
|
18
|
+
pageUrl: "/settings",
|
|
19
|
+
model: DiscordConnectIntent,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Bootstrapper key: `DiscordConnectConfirmation: DiscordConnectConfirmationModule(moduleFactory)`.
|
|
23
|
+
export const DiscordConnectConfirmationModule = (factory: ModuleFactory) =>
|
|
24
|
+
factory({
|
|
25
|
+
name: "discord-connect-confirmations",
|
|
26
|
+
pageUrl: "/settings",
|
|
27
|
+
model: DiscordConnectConfirmation,
|
|
28
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { configureI18n } from "./i18n";
|
|
|
23
23
|
export type { I18nConfig } from "./i18n";
|
|
24
24
|
|
|
25
25
|
// Login configuration (multi-provider auth)
|
|
26
|
-
export { configureLogin } from "./login";
|
|
26
|
+
export { configureLogin, isDiscordAuthEnabled } from "./login";
|
|
27
27
|
export type { LoginConfig } from "./login";
|
|
28
28
|
|
|
29
29
|
// Roles configuration
|
|
@@ -17,6 +17,7 @@ type DirectFetchFn = (params: {
|
|
|
17
17
|
companyId?: string;
|
|
18
18
|
language: string;
|
|
19
19
|
additionalHeaders?: Record<string, string>;
|
|
20
|
+
credentials?: RequestCredentials;
|
|
20
21
|
}) => Promise<ApiData>;
|
|
21
22
|
|
|
22
23
|
type ServerRequestFn = (params: {
|
|
@@ -95,6 +96,8 @@ async function makeRequest(params: {
|
|
|
95
96
|
companyId?: string;
|
|
96
97
|
language: string;
|
|
97
98
|
additionalHeaders?: Record<string, string>;
|
|
99
|
+
/** Client-side only: forwarded to the browser `fetch`. Ignored on the server. */
|
|
100
|
+
credentials?: RequestCredentials;
|
|
98
101
|
}): Promise<ApiData> {
|
|
99
102
|
if (typeof window !== "undefined") {
|
|
100
103
|
// Client-side: use direct fetch
|
|
@@ -111,6 +114,7 @@ async function makeRequest(params: {
|
|
|
111
114
|
companyId: params.companyId,
|
|
112
115
|
language: params.language,
|
|
113
116
|
additionalHeaders: params.additionalHeaders,
|
|
117
|
+
credentials: params.credentials,
|
|
114
118
|
});
|
|
115
119
|
} else {
|
|
116
120
|
// Server-side: use server request with caching
|
|
@@ -188,6 +192,7 @@ export async function JsonApiGet(params: {
|
|
|
188
192
|
language: string;
|
|
189
193
|
token?: string;
|
|
190
194
|
baseUrl?: string;
|
|
195
|
+
credentials?: RequestCredentials;
|
|
191
196
|
}): Promise<ApiResponseInterface> {
|
|
192
197
|
runBootstrapper();
|
|
193
198
|
// A cached server GET never sends the token, so it must not read the cookie either:
|
|
@@ -203,6 +208,7 @@ export async function JsonApiGet(params: {
|
|
|
203
208
|
companyId: params.companyId,
|
|
204
209
|
language: params.language,
|
|
205
210
|
additionalHeaders: _staticConfig?.additionalHeaders,
|
|
211
|
+
credentials: params.credentials,
|
|
206
212
|
});
|
|
207
213
|
|
|
208
214
|
return translateResponse({
|
|
@@ -233,6 +239,7 @@ export async function JsonApiPost(params: {
|
|
|
233
239
|
responseType?: ApiRequestDataTypeInterface;
|
|
234
240
|
token?: string;
|
|
235
241
|
baseUrl?: string;
|
|
242
|
+
credentials?: RequestCredentials;
|
|
236
243
|
}): Promise<ApiResponseInterface> {
|
|
237
244
|
runBootstrapper();
|
|
238
245
|
const token = params.token ?? (await getToken());
|
|
@@ -253,6 +260,7 @@ export async function JsonApiPost(params: {
|
|
|
253
260
|
companyId: params.companyId,
|
|
254
261
|
language: params.language,
|
|
255
262
|
additionalHeaders: _staticConfig?.additionalHeaders,
|
|
263
|
+
credentials: params.credentials,
|
|
256
264
|
});
|
|
257
265
|
|
|
258
266
|
return translateResponse({
|
|
@@ -273,6 +281,7 @@ export async function JsonApiPut(params: {
|
|
|
273
281
|
responseType?: ApiRequestDataTypeInterface;
|
|
274
282
|
token?: string;
|
|
275
283
|
baseUrl?: string;
|
|
284
|
+
credentials?: RequestCredentials;
|
|
276
285
|
}): Promise<ApiResponseInterface> {
|
|
277
286
|
runBootstrapper();
|
|
278
287
|
const token = params.token ?? (await getToken());
|
|
@@ -293,6 +302,7 @@ export async function JsonApiPut(params: {
|
|
|
293
302
|
companyId: params.companyId,
|
|
294
303
|
language: params.language,
|
|
295
304
|
additionalHeaders: _staticConfig?.additionalHeaders,
|
|
305
|
+
credentials: params.credentials,
|
|
296
306
|
});
|
|
297
307
|
|
|
298
308
|
return translateResponse({
|
|
@@ -314,6 +324,7 @@ export async function JsonApiPatch(params: {
|
|
|
314
324
|
language: string;
|
|
315
325
|
token?: string;
|
|
316
326
|
baseUrl?: string;
|
|
327
|
+
credentials?: RequestCredentials;
|
|
317
328
|
}): Promise<ApiResponseInterface> {
|
|
318
329
|
runBootstrapper();
|
|
319
330
|
const token = params.token ?? (await getToken());
|
|
@@ -334,6 +345,7 @@ export async function JsonApiPatch(params: {
|
|
|
334
345
|
companyId: params.companyId,
|
|
335
346
|
language: params.language,
|
|
336
347
|
additionalHeaders: _staticConfig?.additionalHeaders,
|
|
348
|
+
credentials: params.credentials,
|
|
337
349
|
});
|
|
338
350
|
|
|
339
351
|
return translateResponse({
|
|
@@ -352,6 +364,7 @@ export async function JsonApiDelete(params: {
|
|
|
352
364
|
responseType?: ApiRequestDataTypeInterface;
|
|
353
365
|
token?: string;
|
|
354
366
|
baseUrl?: string;
|
|
367
|
+
credentials?: RequestCredentials;
|
|
355
368
|
}): Promise<ApiResponseInterface> {
|
|
356
369
|
runBootstrapper();
|
|
357
370
|
const token = params.token ?? (await getToken());
|
|
@@ -363,6 +376,7 @@ export async function JsonApiDelete(params: {
|
|
|
363
376
|
companyId: params.companyId,
|
|
364
377
|
language: params.language,
|
|
365
378
|
additionalHeaders: _staticConfig?.additionalHeaders,
|
|
379
|
+
credentials: params.credentials,
|
|
366
380
|
});
|
|
367
381
|
|
|
368
382
|
return translateResponse({
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var _chunkGM4VZTWLjs = require('./chunk-GM4VZTWL.js');
|
|
13
|
-
require('./chunk-7QVYU63E.js');
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
exports.JsonApiDelete = _chunkGM4VZTWLjs.JsonApiDelete; exports.JsonApiGet = _chunkGM4VZTWLjs.JsonApiGet; exports.JsonApiPatch = _chunkGM4VZTWLjs.JsonApiPatch; exports.JsonApiPost = _chunkGM4VZTWLjs.JsonApiPost; exports.JsonApiPut = _chunkGM4VZTWLjs.JsonApiPut; exports.buildUrl = _chunkGM4VZTWLjs.buildUrl; exports.configureJsonApi = _chunkGM4VZTWLjs.configureJsonApi; exports.getApiUrl = _chunkGM4VZTWLjs.getApiUrl; exports.getAppUrl = _chunkGM4VZTWLjs.getAppUrl; exports.getTrackablePages = _chunkGM4VZTWLjs.getTrackablePages;
|
|
26
|
-
//# sourceMappingURL=JsonApiRequest-G4J2WTSU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|