@c-rex/core 0.1.11 → 0.1.13
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/api/{token.d.mts → OIDC.d.mts} +3 -2
- package/dist/api/{token.d.ts → OIDC.d.ts} +3 -2
- package/dist/api/OIDC.js +623 -0
- package/dist/api/OIDC.js.map +1 -0
- package/dist/api/OIDC.mjs +587 -0
- package/dist/api/OIDC.mjs.map +1 -0
- package/dist/api/cookies.js.map +1 -1
- package/dist/api/cookies.mjs.map +1 -1
- package/dist/api/rpc.js +14 -5
- package/dist/api/rpc.js.map +1 -1
- package/dist/api/rpc.mjs +14 -5
- package/dist/api/rpc.mjs.map +1 -1
- package/dist/index.d.mts +11 -23
- package/dist/index.d.ts +11 -23
- package/dist/index.js +99 -159
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +95 -158
- package/dist/index.mjs.map +1 -1
- package/dist/logger.js +14 -5
- package/dist/logger.js.map +1 -1
- package/dist/logger.mjs +14 -5
- package/dist/logger.mjs.map +1 -1
- package/dist/sdk.d.mts +25 -0
- package/dist/sdk.d.ts +25 -0
- package/dist/sdk.js +387 -0
- package/dist/sdk.js.map +1 -0
- package/dist/sdk.mjs +360 -0
- package/dist/sdk.mjs.map +1 -0
- package/package.json +12 -6
- package/dist/api/token.js +0 -67
- package/dist/api/token.js.map +0 -1
- package/dist/api/token.mjs +0 -42
- package/dist/api/token.mjs.map +0 -1
package/dist/sdk.mjs
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
// src/utils.ts
|
|
2
|
+
var formatIssuer = (issuer) => {
|
|
3
|
+
let newIssuer = issuer;
|
|
4
|
+
const lastChar = newIssuer.charAt(newIssuer.length - 1);
|
|
5
|
+
if (lastChar !== "/") {
|
|
6
|
+
newIssuer += "/";
|
|
7
|
+
}
|
|
8
|
+
newIssuer += ".well-known/openid-configuration";
|
|
9
|
+
return newIssuer;
|
|
10
|
+
};
|
|
11
|
+
var mergeConfigs = (defaultConfig, envVars) => {
|
|
12
|
+
const definedEnvVars = {};
|
|
13
|
+
for (const key in envVars) {
|
|
14
|
+
if (envVars[key] !== void 0) {
|
|
15
|
+
definedEnvVars[key] = envVars[key];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
...defaultConfig,
|
|
20
|
+
...definedEnvVars
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
var generateWarnings = (vars) => {
|
|
24
|
+
const warnings = [];
|
|
25
|
+
vars.forEach((variable) => {
|
|
26
|
+
const value = process.env[variable.key];
|
|
27
|
+
if (value === void 0) {
|
|
28
|
+
warnings.push(`Missing environment variable ${variable.key}, using default value: ${variable.default}`);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return warnings;
|
|
32
|
+
};
|
|
33
|
+
var createUserOIDCConfig = () => {
|
|
34
|
+
const warnings = [];
|
|
35
|
+
const userDefaults = {
|
|
36
|
+
secret: "dummy",
|
|
37
|
+
scope: "openid profile crex.ids.api crex.ids.api.public",
|
|
38
|
+
enabled: true
|
|
39
|
+
};
|
|
40
|
+
const userEnvs = {
|
|
41
|
+
id: process.env.CREX_IDS_ID,
|
|
42
|
+
secret: process.env.CREX_IDS_SECRET,
|
|
43
|
+
scope: process.env.CREX_IDS_USER_SCOPES,
|
|
44
|
+
issuer: process.env.CREX_IDS_ISSUER == void 0 ? void 0 : formatIssuer(process.env.CREX_IDS_ISSUER),
|
|
45
|
+
enabled: process.env.CREX_IDS_USER_LOGIN_ENABLE == void 0 ? void 0 : process.env.CREX_IDS_USER_LOGIN_ENABLE == "true"
|
|
46
|
+
};
|
|
47
|
+
const user = mergeConfigs(userDefaults, userEnvs);
|
|
48
|
+
if (user.enabled) {
|
|
49
|
+
const disableOIDCVars = [
|
|
50
|
+
{ key: "CREX_IDS_ID", value: process.env.CREX_IDS_ID },
|
|
51
|
+
{ key: "CREX_IDS_ISSUER", value: process.env.CREX_IDS_ISSUER }
|
|
52
|
+
];
|
|
53
|
+
disableOIDCVars.forEach((variable) => {
|
|
54
|
+
if (variable.value === void 0) {
|
|
55
|
+
user.enabled = false;
|
|
56
|
+
warnings.push(`Missing environment variable ${variable.key}, disabling client and login`);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (user.enabled) {
|
|
61
|
+
const userWarningVars = [
|
|
62
|
+
{ key: "CREX_IDS_USER_SCOPES", default: user.scope },
|
|
63
|
+
{ key: "CREX_IDS_SECRET", default: user.secret },
|
|
64
|
+
{ key: "CREX_IDS_USER_LOGIN_ENABLE", default: user.enabled }
|
|
65
|
+
];
|
|
66
|
+
const aux = generateWarnings(userWarningVars);
|
|
67
|
+
warnings.push(...aux);
|
|
68
|
+
}
|
|
69
|
+
return { user, warnings };
|
|
70
|
+
};
|
|
71
|
+
var createClientOIDCConfig = () => {
|
|
72
|
+
const warnings = [];
|
|
73
|
+
const clientDefault = {
|
|
74
|
+
secret: "dummy",
|
|
75
|
+
enabled: true
|
|
76
|
+
};
|
|
77
|
+
const clientEnvs = {
|
|
78
|
+
id: process.env.CREX_IDS_ID,
|
|
79
|
+
issuer: process.env.CREX_IDS_ISSUER == void 0 ? void 0 : formatIssuer(process.env.CREX_IDS_ISSUER),
|
|
80
|
+
secret: process.env.CREX_IDS_SECRET,
|
|
81
|
+
enabled: process.env.CREX_IDS_CLIENT_LOGIN_ENABLE == void 0 ? void 0 : process.env.CREX_IDS_CLIENT_LOGIN_ENABLE == "true"
|
|
82
|
+
};
|
|
83
|
+
const client = mergeConfigs(clientDefault, clientEnvs);
|
|
84
|
+
if (client.enabled) {
|
|
85
|
+
const disableOIDCVars = [
|
|
86
|
+
{ key: "CREX_IDS_ID", value: process.env.CREX_IDS_ID },
|
|
87
|
+
{ key: "CREX_IDS_ISSUER", value: process.env.CREX_IDS_ISSUER }
|
|
88
|
+
];
|
|
89
|
+
disableOIDCVars.forEach((variable) => {
|
|
90
|
+
if (variable.value === void 0) {
|
|
91
|
+
client.enabled = false;
|
|
92
|
+
warnings.push(`Missing environment variable ${variable.key}, disabling client and login`);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (client.enabled) {
|
|
97
|
+
const clientWarningVars = [
|
|
98
|
+
{ key: "CREX_IDS_SECRET", default: client.secret },
|
|
99
|
+
{ key: "CREX_IDS_CLIENT_LOGIN_ENABLE", default: client.enabled }
|
|
100
|
+
];
|
|
101
|
+
const aux = generateWarnings(clientWarningVars);
|
|
102
|
+
warnings.push(...aux);
|
|
103
|
+
}
|
|
104
|
+
return { client, warnings };
|
|
105
|
+
};
|
|
106
|
+
var createConsoleLoggerConfig = () => {
|
|
107
|
+
const warnings = [];
|
|
108
|
+
const consoleLoggerDefaults = {
|
|
109
|
+
minimumLevel: "info",
|
|
110
|
+
silent: false
|
|
111
|
+
};
|
|
112
|
+
const consoleLoggerEnvs = {
|
|
113
|
+
minimumLevel: process.env.LOG_CONSOLE_LEVEL,
|
|
114
|
+
silent: process.env.LOG_CONSOLE_SILENT == void 0 ? void 0 : process.env.LOG_CONSOLE_SILENT == "true"
|
|
115
|
+
};
|
|
116
|
+
const consoleLogger = mergeConfigs(consoleLoggerDefaults, consoleLoggerEnvs);
|
|
117
|
+
if (consoleLogger.silent == false) {
|
|
118
|
+
const consoleWarningsVars = [
|
|
119
|
+
{ key: "LOG_CONSOLE_SILENT", default: consoleLogger.silent },
|
|
120
|
+
{ key: "LOG_CONSOLE_LEVEL", default: consoleLogger.minimumLevel }
|
|
121
|
+
];
|
|
122
|
+
const aux = generateWarnings(consoleWarningsVars);
|
|
123
|
+
warnings.push(...aux);
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
consoleLogger,
|
|
127
|
+
warnings
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
var createGraylogLoggerConfig = () => {
|
|
131
|
+
const warnings = [];
|
|
132
|
+
const graylogDefaults = {
|
|
133
|
+
app: "app name not set",
|
|
134
|
+
minimumLevel: "info",
|
|
135
|
+
silent: false,
|
|
136
|
+
hostname: "https://log.c-rex.net",
|
|
137
|
+
port: 12202,
|
|
138
|
+
categoriesLevel: ["NoLicense", "Scenario", "Document", "Search", "Notification", "History", "UserProfile"]
|
|
139
|
+
};
|
|
140
|
+
const graylogEnvs = {
|
|
141
|
+
app: process.env.LOG_GRAYLOG_APP_NAME,
|
|
142
|
+
silent: process.env.LOG_GRAYLOG_SILENT == void 0 ? void 0 : process.env.LOG_GRAYLOG_SILENT == "true",
|
|
143
|
+
hostname: process.env.LOG_GRAYLOG_HOSTNAME,
|
|
144
|
+
port: process.env.LOG_GRAYLOG_PORT == void 0 ? void 0 : Number(process.env.LOG_GRAYLOG_PORT),
|
|
145
|
+
minimumLevel: process.env.LOG_GRAYLOG_LEVEL,
|
|
146
|
+
categoriesLevel: process.env.LOG_GRAYLOG_CATEGORIES == void 0 ? void 0 : process.env.LOG_GRAYLOG_CATEGORIES.split(",")
|
|
147
|
+
};
|
|
148
|
+
const graylog = mergeConfigs(graylogDefaults, graylogEnvs);
|
|
149
|
+
if (graylog.silent == false) {
|
|
150
|
+
const graylogWarningVars = [
|
|
151
|
+
{ key: "LOG_GRAYLOG_APP_NAME", default: graylog.app },
|
|
152
|
+
{ key: "LOG_GRAYLOG_HOSTNAME", default: graylog.hostname },
|
|
153
|
+
{ key: "LOG_GRAYLOG_LEVEL", default: graylog.minimumLevel },
|
|
154
|
+
{ key: "LOG_GRAYLOG_SILENT", default: graylog.silent },
|
|
155
|
+
{ key: "LOG_GRAYLOG_CATEGORIES", default: graylog.categoriesLevel },
|
|
156
|
+
{ key: "LOG_GRAYLOG_PORT", default: graylog.port }
|
|
157
|
+
];
|
|
158
|
+
const aux = generateWarnings(graylogWarningVars);
|
|
159
|
+
warnings.push(...aux);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
graylog,
|
|
163
|
+
warnings
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
var createMatomoLoggerConfig = () => {
|
|
167
|
+
const warnings = [];
|
|
168
|
+
const matomoDefaults = {
|
|
169
|
+
app: "NextJsProjectName",
|
|
170
|
+
minimumLevel: "info",
|
|
171
|
+
silent: true,
|
|
172
|
+
hostname: "",
|
|
173
|
+
port: 0,
|
|
174
|
+
categoriesLevel: ["NoLicense", "Scenario", "Document", "Search", "Notification", "History", "UserProfile"]
|
|
175
|
+
};
|
|
176
|
+
const matomoEnvs = {
|
|
177
|
+
app: process.env.LOG_MATOMO_APP_NAME,
|
|
178
|
+
silent: process.env.LOG_MATOMO_SILENT == void 0 ? void 0 : process.env.LOG_MATOMO_SILENT == "true",
|
|
179
|
+
hostname: process.env.LOG_MATOMO_HOSTNAME,
|
|
180
|
+
port: process.env.LOG_MATOMO_PORT == void 0 ? void 0 : Number(process.env.LOG_MATOMO_PORT),
|
|
181
|
+
minimumLevel: process.env.LOG_MATOMO_LEVEL,
|
|
182
|
+
categoriesLevel: process.env.LOG_MATOMO_CATEGORIES == void 0 ? void 0 : process.env.LOG_MATOMO_CATEGORIES.split(",")
|
|
183
|
+
};
|
|
184
|
+
const matomo = mergeConfigs(matomoDefaults, matomoEnvs);
|
|
185
|
+
const matomoSilentVars = [
|
|
186
|
+
{ key: "LOG_MATOMO_SILENT", value: process.env.LOG_MATOMO_SILENT },
|
|
187
|
+
{ key: "LOG_MATOMO_HOSTNAME", value: process.env.LOG_MATOMO_HOSTNAME },
|
|
188
|
+
{ key: "LOG_MATOMO_PORT", value: process.env.LOG_MATOMO_PORT }
|
|
189
|
+
];
|
|
190
|
+
matomoSilentVars.forEach((variable) => {
|
|
191
|
+
if (variable.value === void 0) {
|
|
192
|
+
matomo.silent = true;
|
|
193
|
+
warnings.push(`Missing environment variable ${variable.key}, setting matomo logger to silent`);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
if (matomo.silent == false) {
|
|
197
|
+
const matomoWarningVars = [
|
|
198
|
+
{ key: "LOG_MATOMO_APP_NAME", default: matomo.app },
|
|
199
|
+
{ key: "LOG_MATOMO_LEVEL", default: matomo.minimumLevel },
|
|
200
|
+
{ key: "LOG_MATOMO_CATEGORIES", default: matomo.categoriesLevel }
|
|
201
|
+
];
|
|
202
|
+
const aux = generateWarnings(matomoWarningVars);
|
|
203
|
+
warnings.push(...aux);
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
matomo,
|
|
207
|
+
warnings
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
// src/sdk.ts
|
|
212
|
+
import { cookies } from "next/headers";
|
|
213
|
+
|
|
214
|
+
// ../constants/src/index.ts
|
|
215
|
+
var SDK_CONFIG_KEY = "crex-sdk-config";
|
|
216
|
+
var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
|
|
217
|
+
|
|
218
|
+
// src/sdk.ts
|
|
219
|
+
var CrexSDK = class {
|
|
220
|
+
userAuthConfig;
|
|
221
|
+
customerConfig;
|
|
222
|
+
cookiesConfig;
|
|
223
|
+
async getUserAuthConfig() {
|
|
224
|
+
if (this.userAuthConfig) {
|
|
225
|
+
return this.userAuthConfig;
|
|
226
|
+
}
|
|
227
|
+
if (!this.customerConfig) {
|
|
228
|
+
this.customerConfig = this.getServerConfig();
|
|
229
|
+
}
|
|
230
|
+
const user = this.customerConfig.OIDC.user;
|
|
231
|
+
const userInfoEndPoint = this.customerConfig.OIDC.issuerMetadata?.userinfo_endpoint;
|
|
232
|
+
if (user.enabled) {
|
|
233
|
+
this.userAuthConfig = {
|
|
234
|
+
providers: [
|
|
235
|
+
{
|
|
236
|
+
id: "crex",
|
|
237
|
+
name: "CREX",
|
|
238
|
+
type: "oauth",
|
|
239
|
+
version: "2.0",
|
|
240
|
+
clientId: user.id,
|
|
241
|
+
wellKnown: user.issuer,
|
|
242
|
+
clientSecret: user.secret,
|
|
243
|
+
authorization: {
|
|
244
|
+
params: {
|
|
245
|
+
scope: user.scope,
|
|
246
|
+
prompt: "login"
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
idToken: true,
|
|
250
|
+
checks: ["pkce", "state"],
|
|
251
|
+
async profile(_, tokens) {
|
|
252
|
+
const res = await fetch(userInfoEndPoint, {
|
|
253
|
+
headers: {
|
|
254
|
+
Authorization: `Bearer ${tokens.access_token}`
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
const userinfo = await res.json();
|
|
258
|
+
return {
|
|
259
|
+
id: userinfo.sub,
|
|
260
|
+
name: userinfo.name,
|
|
261
|
+
email: userinfo.email
|
|
262
|
+
};
|
|
263
|
+
},
|
|
264
|
+
callbacks: {
|
|
265
|
+
async jwt({ token, account }) {
|
|
266
|
+
if (account) {
|
|
267
|
+
token.id_token = account.id_token;
|
|
268
|
+
}
|
|
269
|
+
return token;
|
|
270
|
+
},
|
|
271
|
+
async session({ session, token }) {
|
|
272
|
+
session.id_token = token.id_token;
|
|
273
|
+
return session;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
]
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
;
|
|
281
|
+
return this.userAuthConfig;
|
|
282
|
+
}
|
|
283
|
+
createCustomerConfig(CUSTOMER_CONFIG, shouldLog) {
|
|
284
|
+
const requiredEnvVars = ["CREX_API_URL", "NEXT_PUBLIC_API_URL"];
|
|
285
|
+
const errors = requiredEnvVars.map((key) => {
|
|
286
|
+
const value = process.env[key];
|
|
287
|
+
if (value === void 0) {
|
|
288
|
+
return `Missing required environment variable: ${key}`;
|
|
289
|
+
}
|
|
290
|
+
return "";
|
|
291
|
+
}).filter((item) => item.length > 0);
|
|
292
|
+
const { user, warnings: userWarnings } = createUserOIDCConfig();
|
|
293
|
+
const { client, warnings: clientWarnings } = createClientOIDCConfig();
|
|
294
|
+
const { matomo, warnings: matomoWarnings } = createMatomoLoggerConfig();
|
|
295
|
+
const { graylog, warnings: graylogWarnings } = createGraylogLoggerConfig();
|
|
296
|
+
const { consoleLogger, warnings: consoleWarnings } = createConsoleLoggerConfig();
|
|
297
|
+
const warnings = [
|
|
298
|
+
...clientWarnings,
|
|
299
|
+
...consoleWarnings,
|
|
300
|
+
...userWarnings,
|
|
301
|
+
...graylogWarnings,
|
|
302
|
+
...matomoWarnings
|
|
303
|
+
];
|
|
304
|
+
if (shouldLog) {
|
|
305
|
+
if (errors.length > 0) throw new Error(errors.join("\n"));
|
|
306
|
+
if (warnings.length > 0) console.warn(warnings.join("\n"));
|
|
307
|
+
}
|
|
308
|
+
const cookiesConfig = {
|
|
309
|
+
publicNextApiUrl: process.env.NEXT_PUBLIC_API_URL,
|
|
310
|
+
...CUSTOMER_CONFIG,
|
|
311
|
+
OIDC: {
|
|
312
|
+
clientEnabled: client.enabled,
|
|
313
|
+
userEnabled: user.enabled
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
let baseUrl = process.env.CREX_API_URL;
|
|
317
|
+
const lastChar = baseUrl.charAt(baseUrl.length - 1);
|
|
318
|
+
if (lastChar !== "/") {
|
|
319
|
+
baseUrl += "/";
|
|
320
|
+
}
|
|
321
|
+
baseUrl += "iirds/v1/";
|
|
322
|
+
const config = {
|
|
323
|
+
baseUrl,
|
|
324
|
+
OIDC: { client, user },
|
|
325
|
+
logs: { console: consoleLogger, graylog, matomo },
|
|
326
|
+
...CUSTOMER_CONFIG
|
|
327
|
+
};
|
|
328
|
+
return { cookiesConfig, config };
|
|
329
|
+
}
|
|
330
|
+
getClientConfig = () => {
|
|
331
|
+
const jsonConfigs = cookies().get(SDK_CONFIG_KEY)?.value;
|
|
332
|
+
if (!jsonConfigs) {
|
|
333
|
+
throw new Error("Configs not found");
|
|
334
|
+
}
|
|
335
|
+
const configs = JSON.parse(jsonConfigs);
|
|
336
|
+
return configs;
|
|
337
|
+
};
|
|
338
|
+
getServerConfig() {
|
|
339
|
+
if (!global.__GLOBAL_CONFIG__) {
|
|
340
|
+
throw new Error("Server config not initialized");
|
|
341
|
+
}
|
|
342
|
+
return global.__GLOBAL_CONFIG__;
|
|
343
|
+
}
|
|
344
|
+
initializeConfig(config) {
|
|
345
|
+
if (global.__GLOBAL_CONFIG__) return global.__GLOBAL_CONFIG__;
|
|
346
|
+
global.__GLOBAL_CONFIG__ = config;
|
|
347
|
+
return global.__GLOBAL_CONFIG__;
|
|
348
|
+
}
|
|
349
|
+
updateConfigProp(key, value) {
|
|
350
|
+
if (!global.__GLOBAL_CONFIG__) {
|
|
351
|
+
throw new Error("Server config not initialized");
|
|
352
|
+
}
|
|
353
|
+
global.__GLOBAL_CONFIG__[key] = value;
|
|
354
|
+
return global.__GLOBAL_CONFIG__;
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
export {
|
|
358
|
+
CrexSDK
|
|
359
|
+
};
|
|
360
|
+
//# sourceMappingURL=sdk.mjs.map
|
package/dist/sdk.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/sdk.ts","../../constants/src/index.ts"],"sourcesContent":["import { WarningVars } from \"@c-rex/types\";\nimport { logInfo, OIDCInterface } from \"@c-rex/interfaces\";\nimport { LogLevelType } from \"@c-rex/types\";\nimport { LogCategoriesType } from \"@c-rex/types\";\n\nconst formatIssuer = (issuer: string): string => {\n let newIssuer = issuer\n const lastChar = newIssuer.charAt(newIssuer.length - 1)\n if (lastChar !== \"/\") {\n newIssuer += \"/\"\n }\n newIssuer += \".well-known/openid-configuration\"\n\n return newIssuer;\n}\n\nexport const mergeConfigs = <T>(defaultConfig: Partial<T>, envVars: Partial<T>): T => {\n const definedEnvVars: T = {} as T;\n\n for (const key in envVars) {\n if (envVars[key] !== undefined) {\n definedEnvVars[key] = envVars[key];\n }\n }\n\n return {\n ...defaultConfig,\n ...definedEnvVars,\n };\n}\n\nexport const generateWarnings = (vars: WarningVars[]): string[] => {\n\n const warnings: string[] = []\n\n vars.forEach((variable) => {\n const value = process.env[variable.key];\n if (value === undefined) {\n warnings.push(`Missing environment variable ${variable.key}, using default value: ${variable.default}`)\n }\n })\n\n return warnings;\n}\n\nexport const createUserOIDCConfig = (): { user: OIDCInterface, warnings: string[] } => {\n const warnings: string[] = []\n const userDefaults: Partial<OIDCInterface> = {\n secret: \"dummy\",\n scope: \"openid profile crex.ids.api crex.ids.api.public\",\n enabled: true,\n }\n const userEnvs: Partial<OIDCInterface> = {\n id: process.env.CREX_IDS_ID,\n secret: process.env.CREX_IDS_SECRET,\n scope: process.env.CREX_IDS_USER_SCOPES,\n issuer: process.env.CREX_IDS_ISSUER == undefined ? undefined : formatIssuer(process.env.CREX_IDS_ISSUER),\n enabled: process.env.CREX_IDS_USER_LOGIN_ENABLE == undefined ? undefined : process.env.CREX_IDS_USER_LOGIN_ENABLE == \"true\",\n }\n const user: OIDCInterface = mergeConfigs<OIDCInterface>(userDefaults, userEnvs);\n\n if (user.enabled) {\n const disableOIDCVars = [\n { key: \"CREX_IDS_ID\", value: process.env.CREX_IDS_ID },\n { key: \"CREX_IDS_ISSUER\", value: process.env.CREX_IDS_ISSUER },\n ]\n disableOIDCVars.forEach((variable) => {\n if (variable.value === undefined) {\n user.enabled = false\n\n warnings.push(`Missing environment variable ${variable.key}, disabling client and login`)\n }\n })\n\n }\n\n if (user.enabled) {\n const userWarningVars = [\n { key: \"CREX_IDS_USER_SCOPES\", default: user.scope },\n { key: \"CREX_IDS_SECRET\", default: user.secret },\n { key: \"CREX_IDS_USER_LOGIN_ENABLE\", default: user.enabled }\n ]\n const aux = generateWarnings(userWarningVars)\n warnings.push(...aux);\n }\n\n return { user, warnings }\n}\n\nexport const createClientOIDCConfig = (): { client: OIDCInterface, warnings: string[] } => {\n const warnings: string[] = []\n const clientDefault: Partial<OIDCInterface> = {\n secret: \"dummy\",\n enabled: true,\n }\n const clientEnvs: Partial<OIDCInterface> = {\n id: process.env.CREX_IDS_ID,\n issuer: process.env.CREX_IDS_ISSUER == undefined ? undefined : formatIssuer(process.env.CREX_IDS_ISSUER),\n secret: process.env.CREX_IDS_SECRET,\n enabled: process.env.CREX_IDS_CLIENT_LOGIN_ENABLE == undefined ? undefined : process.env.CREX_IDS_CLIENT_LOGIN_ENABLE == \"true\",\n }\n const client: OIDCInterface = mergeConfigs<OIDCInterface>(clientDefault, clientEnvs);\n\n if (client.enabled) {\n const disableOIDCVars = [\n { key: \"CREX_IDS_ID\", value: process.env.CREX_IDS_ID },\n { key: \"CREX_IDS_ISSUER\", value: process.env.CREX_IDS_ISSUER },\n ]\n disableOIDCVars.forEach((variable) => {\n if (variable.value === undefined) {\n client.enabled = false\n warnings.push(`Missing environment variable ${variable.key}, disabling client and login`)\n }\n })\n }\n\n if (client.enabled) {\n const clientWarningVars = [\n { key: \"CREX_IDS_SECRET\", default: client.secret },\n { key: \"CREX_IDS_CLIENT_LOGIN_ENABLE\", default: client.enabled }\n ]\n\n const aux = generateWarnings(clientWarningVars)\n warnings.push(...aux);\n }\n\n return { client, warnings }\n}\n\nexport const createConsoleLoggerConfig = (): { consoleLogger: Omit<logInfo, \"hostname\" | \"app\" | \"categoriesLevel\">, warnings: string[]; } => {\n const warnings: string[] = []\n\n const consoleLoggerDefaults: Partial<logInfo> = {\n minimumLevel: \"info\" as LogLevelType,\n silent: false,\n }\n const consoleLoggerEnvs: Partial<logInfo> = {\n minimumLevel: process.env.LOG_CONSOLE_LEVEL as LogLevelType,\n silent: process.env.LOG_CONSOLE_SILENT == undefined ? undefined : process.env.LOG_CONSOLE_SILENT == \"true\",\n }\n const consoleLogger: logInfo = mergeConfigs<logInfo>(consoleLoggerDefaults, consoleLoggerEnvs);\n\n if (consoleLogger.silent == false) {\n const consoleWarningsVars = [\n { key: \"LOG_CONSOLE_SILENT\", default: consoleLogger.silent },\n { key: \"LOG_CONSOLE_LEVEL\", default: consoleLogger.minimumLevel }\n ]\n const aux = generateWarnings(consoleWarningsVars)\n warnings.push(...aux);\n }\n\n return {\n consoleLogger,\n warnings\n }\n}\n\nexport const createGraylogLoggerConfig = (): { graylog: logInfo, warnings: string[] } => {\n const warnings: string[] = []\n\n const graylogDefaults: Partial<logInfo> = {\n app: \"app name not set\",\n minimumLevel: \"info\" as LogLevelType,\n silent: false,\n hostname: \"https://log.c-rex.net\",\n port: 12202,\n categoriesLevel: [\"NoLicense\", \"Scenario\", \"Document\", \"Search\", \"Notification\", \"History\", \"UserProfile\"],\n }\n const graylogEnvs: Partial<logInfo> = {\n app: process.env.LOG_GRAYLOG_APP_NAME,\n silent: process.env.LOG_GRAYLOG_SILENT == undefined ? undefined : process.env.LOG_GRAYLOG_SILENT == \"true\",\n hostname: process.env.LOG_GRAYLOG_HOSTNAME,\n port: process.env.LOG_GRAYLOG_PORT == undefined ? undefined : Number(process.env.LOG_GRAYLOG_PORT),\n minimumLevel: process.env.LOG_GRAYLOG_LEVEL as any,\n categoriesLevel: process.env.LOG_GRAYLOG_CATEGORIES == undefined ? undefined : process.env.LOG_GRAYLOG_CATEGORIES.split(\",\") as LogCategoriesType[],\n }\n const graylog: logInfo = mergeConfigs<logInfo>(graylogDefaults, graylogEnvs);\n\n if (graylog.silent == false) {\n const graylogWarningVars = [\n { key: \"LOG_GRAYLOG_APP_NAME\", default: graylog.app },\n { key: \"LOG_GRAYLOG_HOSTNAME\", default: graylog.hostname },\n { key: \"LOG_GRAYLOG_LEVEL\", default: graylog.minimumLevel },\n { key: \"LOG_GRAYLOG_SILENT\", default: graylog.silent },\n { key: \"LOG_GRAYLOG_CATEGORIES\", default: graylog.categoriesLevel },\n { key: \"LOG_GRAYLOG_PORT\", default: graylog.port }\n ]\n const aux = generateWarnings(graylogWarningVars)\n warnings.push(...aux);\n }\n\n return {\n graylog,\n warnings\n }\n}\n\nexport const createMatomoLoggerConfig = (): { matomo: logInfo, warnings: string[] } => {\n const warnings: string[] = []\n\n const matomoDefaults: Partial<logInfo> = {\n app: \"NextJsProjectName\",\n minimumLevel: \"info\" as LogLevelType,\n silent: true,\n hostname: \"\",\n port: 0,\n categoriesLevel: [\"NoLicense\", \"Scenario\", \"Document\", \"Search\", \"Notification\", \"History\", \"UserProfile\"],\n }\n const matomoEnvs: Partial<logInfo> = {\n app: process.env.LOG_MATOMO_APP_NAME,\n silent: process.env.LOG_MATOMO_SILENT == undefined ? undefined : process.env.LOG_MATOMO_SILENT == \"true\",\n hostname: process.env.LOG_MATOMO_HOSTNAME,\n port: process.env.LOG_MATOMO_PORT == undefined ? undefined : Number(process.env.LOG_MATOMO_PORT),\n minimumLevel: process.env.LOG_MATOMO_LEVEL as any,\n categoriesLevel: process.env.LOG_MATOMO_CATEGORIES == undefined ? undefined : process.env.LOG_MATOMO_CATEGORIES.split(\",\") as LogCategoriesType[],\n }\n const matomo: logInfo = mergeConfigs<logInfo>(matomoDefaults, matomoEnvs);\n\n\n const matomoSilentVars = [\n { key: \"LOG_MATOMO_SILENT\", value: process.env.LOG_MATOMO_SILENT },\n { key: \"LOG_MATOMO_HOSTNAME\", value: process.env.LOG_MATOMO_HOSTNAME },\n { key: \"LOG_MATOMO_PORT\", value: process.env.LOG_MATOMO_PORT }\n ]\n matomoSilentVars.forEach((variable) => {\n if (variable.value === undefined) {\n matomo.silent = true\n warnings.push(`Missing environment variable ${variable.key}, setting matomo logger to silent`)\n }\n })\n\n if (matomo.silent == false) {\n const matomoWarningVars = [\n { key: \"LOG_MATOMO_APP_NAME\", default: matomo.app },\n { key: \"LOG_MATOMO_LEVEL\", default: matomo.minimumLevel },\n { key: \"LOG_MATOMO_CATEGORIES\", default: matomo.categoriesLevel }\n ]\n const aux = generateWarnings(matomoWarningVars)\n warnings.push(...aux);\n }\n\n return {\n matomo,\n warnings\n }\n}\n\n","import { ConfigInterface, CookiesConfigs, CustomerConfig } from \"@c-rex/interfaces\";\nimport {\n createClientOIDCConfig,\n createConsoleLoggerConfig,\n createGraylogLoggerConfig,\n createMatomoLoggerConfig,\n createUserOIDCConfig\n} from \"./utils\";\nimport { cookies } from \"next/headers\";\nimport { SDK_CONFIG_KEY } from \"@c-rex/constants\";\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __GLOBAL_CONFIG__: ConfigInterface | null;\n}\n\n/**\n * SDK class for the CREX application.\n * Provides configuration and authentication functionality.\n */\nexport class CrexSDK {\n public userAuthConfig!: any;\n public customerConfig!: ConfigInterface;\n public cookiesConfig!: CookiesConfigs;\n\n public async getUserAuthConfig() {\n if (this.userAuthConfig) {\n return this.userAuthConfig;\n }\n\n if (!this.customerConfig) {\n this.customerConfig = this.getServerConfig()\n }\n\n const user = this.customerConfig.OIDC.user;\n const userInfoEndPoint = this.customerConfig.OIDC.issuerMetadata?.userinfo_endpoint;\n if (user.enabled) {\n this.userAuthConfig = {\n providers: [\n {\n id: \"crex\",\n name: \"CREX\",\n type: \"oauth\",\n version: \"2.0\",\n clientId: user.id,\n wellKnown: user.issuer,\n clientSecret: user.secret,\n authorization: {\n params: {\n scope: user.scope,\n prompt: \"login\"\n }\n },\n idToken: true,\n checks: [\"pkce\", \"state\"],\n async profile(_: any, tokens: any) {\n const res = await fetch(userInfoEndPoint, {\n headers: {\n Authorization: `Bearer ${tokens.access_token}`,\n },\n });\n\n const userinfo = await res.json();\n\n return {\n id: userinfo.sub,\n name: userinfo.name,\n email: userinfo.email,\n };\n },\n callbacks: {\n async jwt({ token, account }: any) {\n if (account) {\n token.id_token = account.id_token;\n }\n return token;\n },\n async session({ session, token }: any) {\n session.id_token = token.id_token;\n return session;\n },\n },\n },\n ]\n }\n };\n\n return this.userAuthConfig;\n }\n\n public createCustomerConfig(CUSTOMER_CONFIG: CustomerConfig, shouldLog: boolean): { cookiesConfig: CookiesConfigs, config: ConfigInterface } {\n\n const requiredEnvVars = [\"CREX_API_URL\", \"NEXT_PUBLIC_API_URL\"]\n\n const errors = requiredEnvVars.map(key => {\n const value = process.env[key];\n if (value === undefined) {\n return `Missing required environment variable: ${key}`;\n }\n\n return \"\"\n }).filter(item => item.length > 0)\n\n const { user, warnings: userWarnings } = createUserOIDCConfig()\n const { client, warnings: clientWarnings } = createClientOIDCConfig()\n const { matomo, warnings: matomoWarnings } = createMatomoLoggerConfig()\n const { graylog, warnings: graylogWarnings } = createGraylogLoggerConfig()\n const { consoleLogger, warnings: consoleWarnings } = createConsoleLoggerConfig()\n\n const warnings = [\n ...clientWarnings,\n ...consoleWarnings,\n ...userWarnings,\n ...graylogWarnings,\n ...matomoWarnings\n ]\n\n if (shouldLog) {\n if (errors.length > 0) throw new Error(errors.join('\\n'));\n if (warnings.length > 0) console.warn(warnings.join('\\n'));\n }\n\n const cookiesConfig: CookiesConfigs = {\n publicNextApiUrl: process.env.NEXT_PUBLIC_API_URL!,\n ...CUSTOMER_CONFIG,\n OIDC: {\n clientEnabled: client.enabled,\n userEnabled: user.enabled,\n },\n }\n\n let baseUrl = process.env.CREX_API_URL!\n const lastChar = baseUrl.charAt(baseUrl.length - 1)\n if (lastChar !== \"/\") {\n baseUrl += \"/\"\n }\n baseUrl += \"iirds/v1/\"\n\n const config: ConfigInterface = {\n baseUrl,\n OIDC: { client, user },\n logs: { console: consoleLogger, graylog, matomo, },\n ...CUSTOMER_CONFIG,\n }\n\n return { cookiesConfig, config };\n }\n\n public getClientConfig = (): CookiesConfigs => {\n const jsonConfigs = cookies().get(SDK_CONFIG_KEY)?.value;\n if (!jsonConfigs) {\n throw new Error('Configs not found');\n }\n\n const configs: CookiesConfigs = JSON.parse(jsonConfigs);\n\n return configs;\n }\n\n public getServerConfig() {\n if (!global.__GLOBAL_CONFIG__) {\n throw new Error('Server config not initialized');\n }\n return global.__GLOBAL_CONFIG__;\n }\n\n public initializeConfig(config: ConfigInterface) {\n if (global.__GLOBAL_CONFIG__) return global.__GLOBAL_CONFIG__;\n global.__GLOBAL_CONFIG__ = config;\n return global.__GLOBAL_CONFIG__;\n }\n\n public updateConfigProp(key: keyof ConfigInterface, value: any) {\n if (!global.__GLOBAL_CONFIG__) {\n throw new Error('Server config not initialized');\n }\n global.__GLOBAL_CONFIG__[key] = value;\n return global.__GLOBAL_CONFIG__;\n }\n}","export const ALL = \"*\"\n\nexport const LOG_CATEGORIES = [\n \"NoLicense\",\n \"Scenario\",\n \"Favorites\",\n \"Subscription\",\n \"Share\",\n \"Document\",\n \"Search\",\n \"History\",\n \"Notification\",\n \"UserProfile\",\n] as const;\n\nexport const LOG_LEVELS = {\n critical: 2,\n error: 3,\n warning: 4,\n info: 6,\n debug: 7,\n} as const;\n\nexport const RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\n \"table-with-images\",\n] as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n RETRY_DELAY: 500,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport const MARKER_COLORS = [\n \"red-500\",\n \"orange-500\",\n \"yellow-400\",\n \"green-500\",\n \"teal-500\",\n \"blue-500\",\n \"sky-500\",\n \"purple-500\",\n \"pink-500\",\n \"gray-500\",\n \"neutral-800\",\n \"cyan-500\",\n \"lime-500\",\n \"amber-500\",\n \"indigo-500\",\n];"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c-rex/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist"
|
|
6
6
|
],
|
|
@@ -20,17 +20,23 @@
|
|
|
20
20
|
"require": "./dist/logger.js",
|
|
21
21
|
"default": "./dist/logger.js"
|
|
22
22
|
},
|
|
23
|
+
"./sdk": {
|
|
24
|
+
"types": "./dist/sdk.d.ts",
|
|
25
|
+
"import": "./dist/sdk.mjs",
|
|
26
|
+
"require": "./dist/sdk.js",
|
|
27
|
+
"default": "./dist/sdk.js"
|
|
28
|
+
},
|
|
23
29
|
"./cookies": {
|
|
24
30
|
"types": "./dist/api/cookies.d.ts",
|
|
25
31
|
"import": "./dist/api/cookies.mjs",
|
|
26
32
|
"require": "./dist/api/cookies.js",
|
|
27
33
|
"default": "./dist/api/cookies.js"
|
|
28
34
|
},
|
|
29
|
-
"./
|
|
30
|
-
"types": "./dist/api/
|
|
31
|
-
"import": "./dist/api/
|
|
32
|
-
"require": "./dist/api/
|
|
33
|
-
"default": "./dist/api/
|
|
35
|
+
"./OIDC": {
|
|
36
|
+
"types": "./dist/api/OIDC.d.ts",
|
|
37
|
+
"import": "./dist/api/OIDC.mjs",
|
|
38
|
+
"require": "./dist/api/OIDC.js",
|
|
39
|
+
"default": "./dist/api/OIDC.js"
|
|
34
40
|
},
|
|
35
41
|
"./rpc": {
|
|
36
42
|
"types": "./dist/api/rpc.d.ts",
|
package/dist/api/token.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/api/token.ts
|
|
21
|
-
var token_exports = {};
|
|
22
|
-
__export(token_exports, {
|
|
23
|
-
postMethod: () => postMethod
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(token_exports);
|
|
26
|
-
var import_server = require("next/server");
|
|
27
|
-
var import_openid_client = require("openid-client");
|
|
28
|
-
|
|
29
|
-
// ../constants/src/index.ts
|
|
30
|
-
var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
|
|
31
|
-
var CREX_TOKEN_HEADER_KEY = "crex-token";
|
|
32
|
-
|
|
33
|
-
// src/api/token.ts
|
|
34
|
-
var import_next_cookies = require("@c-rex/utils/next-cookies");
|
|
35
|
-
var postMethod = async () => {
|
|
36
|
-
try {
|
|
37
|
-
const customerConfig = await (0, import_next_cookies.getServerConfigs)();
|
|
38
|
-
const issuer = await import_openid_client.Issuer.discover(customerConfig.OIDC.client.issuer);
|
|
39
|
-
const client = new issuer.Client({
|
|
40
|
-
client_id: customerConfig.OIDC.client.id,
|
|
41
|
-
client_secret: customerConfig.OIDC.client.secret
|
|
42
|
-
});
|
|
43
|
-
const tokenSet = await client.grant({ grant_type: "client_credentials" });
|
|
44
|
-
const token = tokenSet.access_token;
|
|
45
|
-
if (!token) {
|
|
46
|
-
return import_server.NextResponse.json({ error: "Failed to get token" }, { status: 500 });
|
|
47
|
-
}
|
|
48
|
-
const response = import_server.NextResponse.json({ token });
|
|
49
|
-
response.cookies.set({
|
|
50
|
-
name: CREX_TOKEN_HEADER_KEY,
|
|
51
|
-
value: token,
|
|
52
|
-
httpOnly: true,
|
|
53
|
-
secure: process.env.NODE_ENV === "production",
|
|
54
|
-
sameSite: "lax",
|
|
55
|
-
path: "/",
|
|
56
|
-
expires: tokenSet.expires_at ? new Date(tokenSet.expires_at * 1e3) : void 0
|
|
57
|
-
});
|
|
58
|
-
return response;
|
|
59
|
-
} catch (error) {
|
|
60
|
-
return import_server.NextResponse.json({ error: String(error) }, { status: 500 });
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
-
0 && (module.exports = {
|
|
65
|
-
postMethod
|
|
66
|
-
});
|
|
67
|
-
//# sourceMappingURL=token.js.map
|
package/dist/api/token.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/token.ts","../../../constants/src/index.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\nimport { Issuer } from 'openid-client';\nimport { CREX_TOKEN_HEADER_KEY } from '@c-rex/constants';\nimport { getServerConfigs } from '@c-rex/utils/next-cookies';\n\n/**\n * Retrieves an access token using client credentials flow from the configured OIDC provider\n * \n * @returns NextResponse with success status or error message\n * @throws Error if token retrieval fails\n */\nexport const postMethod = async (): Promise<NextResponse> => {\n try {\n const customerConfig = await getServerConfigs();\n\n const issuer = await Issuer.discover(customerConfig.OIDC.client.issuer);\n const client = new issuer.Client({\n client_id: customerConfig.OIDC.client.id,\n client_secret: customerConfig.OIDC.client.secret,\n });\n const tokenSet = await client.grant({ grant_type: 'client_credentials' });\n\n const token = tokenSet.access_token!;\n\n if (!token) {\n return NextResponse.json({ error: 'Failed to get token' }, { status: 500 });\n }\n\n const response = NextResponse.json({ token: token });\n\n response.cookies.set({\n name: CREX_TOKEN_HEADER_KEY,\n value: token,\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n sameSite: 'lax',\n path: '/',\n expires: tokenSet.expires_at ? new Date(tokenSet.expires_at * 1000) : undefined\n });\n\n return response;\n\n } catch (error) {\n return NextResponse.json({ error: String(error) }, { status: 500 });\n }\n}\n","export const ALL = \"*\"\n\nexport const LOG_CATEGORIES = [\n \"NoLicense\",\n \"Scenario\",\n \"Favorites\",\n \"Subscription\",\n \"Share\",\n \"Document\",\n \"Search\",\n \"History\",\n \"Notification\",\n \"UserProfile\",\n] as const;\n\nexport const LOG_LEVELS = {\n critical: 2,\n error: 3,\n warning: 4,\n info: 6,\n debug: 7,\n} as const;\n\nexport const RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\n] as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n RETRY_DELAY: 500,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6B;AAC7B,2BAAuB;;;AC4EhB,IAAM,uBAAuB,KAAK,KAAK,KAAK,KAAK;AAQjD,IAAM,wBAAwB;;;ADlFrC,0BAAiC;AAQ1B,IAAM,aAAa,YAAmC;AACzD,MAAI;AACA,UAAM,iBAAiB,UAAM,sCAAiB;AAE9C,UAAM,SAAS,MAAM,4BAAO,SAAS,eAAe,KAAK,OAAO,MAAM;AACtE,UAAM,SAAS,IAAI,OAAO,OAAO;AAAA,MAC7B,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,eAAe,eAAe,KAAK,OAAO;AAAA,IAC9C,CAAC;AACD,UAAM,WAAW,MAAM,OAAO,MAAM,EAAE,YAAY,qBAAqB,CAAC;AAExE,UAAM,QAAQ,SAAS;AAEvB,QAAI,CAAC,OAAO;AACR,aAAO,2BAAa,KAAK,EAAE,OAAO,sBAAsB,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9E;AAEA,UAAM,WAAW,2BAAa,KAAK,EAAE,MAAa,CAAC;AAEnD,aAAS,QAAQ,IAAI;AAAA,MACjB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,MACjC,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS,SAAS,aAAa,IAAI,KAAK,SAAS,aAAa,GAAI,IAAI;AAAA,IAC1E,CAAC;AAED,WAAO;AAAA,EAEX,SAAS,OAAO;AACZ,WAAO,2BAAa,KAAK,EAAE,OAAO,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACtE;AACJ;","names":[]}
|
package/dist/api/token.mjs
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
// src/api/token.ts
|
|
2
|
-
import { NextResponse } from "next/server";
|
|
3
|
-
import { Issuer } from "openid-client";
|
|
4
|
-
|
|
5
|
-
// ../constants/src/index.ts
|
|
6
|
-
var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
|
|
7
|
-
var CREX_TOKEN_HEADER_KEY = "crex-token";
|
|
8
|
-
|
|
9
|
-
// src/api/token.ts
|
|
10
|
-
import { getServerConfigs } from "@c-rex/utils/next-cookies";
|
|
11
|
-
var postMethod = async () => {
|
|
12
|
-
try {
|
|
13
|
-
const customerConfig = await getServerConfigs();
|
|
14
|
-
const issuer = await Issuer.discover(customerConfig.OIDC.client.issuer);
|
|
15
|
-
const client = new issuer.Client({
|
|
16
|
-
client_id: customerConfig.OIDC.client.id,
|
|
17
|
-
client_secret: customerConfig.OIDC.client.secret
|
|
18
|
-
});
|
|
19
|
-
const tokenSet = await client.grant({ grant_type: "client_credentials" });
|
|
20
|
-
const token = tokenSet.access_token;
|
|
21
|
-
if (!token) {
|
|
22
|
-
return NextResponse.json({ error: "Failed to get token" }, { status: 500 });
|
|
23
|
-
}
|
|
24
|
-
const response = NextResponse.json({ token });
|
|
25
|
-
response.cookies.set({
|
|
26
|
-
name: CREX_TOKEN_HEADER_KEY,
|
|
27
|
-
value: token,
|
|
28
|
-
httpOnly: true,
|
|
29
|
-
secure: process.env.NODE_ENV === "production",
|
|
30
|
-
sameSite: "lax",
|
|
31
|
-
path: "/",
|
|
32
|
-
expires: tokenSet.expires_at ? new Date(tokenSet.expires_at * 1e3) : void 0
|
|
33
|
-
});
|
|
34
|
-
return response;
|
|
35
|
-
} catch (error) {
|
|
36
|
-
return NextResponse.json({ error: String(error) }, { status: 500 });
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
export {
|
|
40
|
-
postMethod
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=token.mjs.map
|
package/dist/api/token.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/token.ts","../../../constants/src/index.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\nimport { Issuer } from 'openid-client';\nimport { CREX_TOKEN_HEADER_KEY } from '@c-rex/constants';\nimport { getServerConfigs } from '@c-rex/utils/next-cookies';\n\n/**\n * Retrieves an access token using client credentials flow from the configured OIDC provider\n * \n * @returns NextResponse with success status or error message\n * @throws Error if token retrieval fails\n */\nexport const postMethod = async (): Promise<NextResponse> => {\n try {\n const customerConfig = await getServerConfigs();\n\n const issuer = await Issuer.discover(customerConfig.OIDC.client.issuer);\n const client = new issuer.Client({\n client_id: customerConfig.OIDC.client.id,\n client_secret: customerConfig.OIDC.client.secret,\n });\n const tokenSet = await client.grant({ grant_type: 'client_credentials' });\n\n const token = tokenSet.access_token!;\n\n if (!token) {\n return NextResponse.json({ error: 'Failed to get token' }, { status: 500 });\n }\n\n const response = NextResponse.json({ token: token });\n\n response.cookies.set({\n name: CREX_TOKEN_HEADER_KEY,\n value: token,\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n sameSite: 'lax',\n path: '/',\n expires: tokenSet.expires_at ? new Date(tokenSet.expires_at * 1000) : undefined\n });\n\n return response;\n\n } catch (error) {\n return NextResponse.json({ error: String(error) }, { status: 500 });\n }\n}\n","export const ALL = \"*\"\n\nexport const LOG_CATEGORIES = [\n \"NoLicense\",\n \"Scenario\",\n \"Favorites\",\n \"Subscription\",\n \"Share\",\n \"Document\",\n \"Search\",\n \"History\",\n \"Notification\",\n \"UserProfile\",\n] as const;\n\nexport const LOG_LEVELS = {\n critical: 2,\n error: 3,\n warning: 4,\n info: 6,\n debug: 7,\n} as const;\n\nexport const RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\n] as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n RETRY_DELAY: 500,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};"],"mappings":";AAAA,SAAS,oBAAoB;AAC7B,SAAS,cAAc;;;AC4EhB,IAAM,uBAAuB,KAAK,KAAK,KAAK,KAAK;AAQjD,IAAM,wBAAwB;;;ADlFrC,SAAS,wBAAwB;AAQ1B,IAAM,aAAa,YAAmC;AACzD,MAAI;AACA,UAAM,iBAAiB,MAAM,iBAAiB;AAE9C,UAAM,SAAS,MAAM,OAAO,SAAS,eAAe,KAAK,OAAO,MAAM;AACtE,UAAM,SAAS,IAAI,OAAO,OAAO;AAAA,MAC7B,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,eAAe,eAAe,KAAK,OAAO;AAAA,IAC9C,CAAC;AACD,UAAM,WAAW,MAAM,OAAO,MAAM,EAAE,YAAY,qBAAqB,CAAC;AAExE,UAAM,QAAQ,SAAS;AAEvB,QAAI,CAAC,OAAO;AACR,aAAO,aAAa,KAAK,EAAE,OAAO,sBAAsB,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9E;AAEA,UAAM,WAAW,aAAa,KAAK,EAAE,MAAa,CAAC;AAEnD,aAAS,QAAQ,IAAI;AAAA,MACjB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,MACjC,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS,SAAS,aAAa,IAAI,KAAK,SAAS,aAAa,GAAI,IAAI;AAAA,IAC1E,CAAC;AAED,WAAO;AAAA,EAEX,SAAS,OAAO;AACZ,WAAO,aAAa,KAAK,EAAE,OAAO,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACtE;AACJ;","names":[]}
|