@telia-ace/alliance-internal-node-utilities 1.0.3 → 1.0.4-next.1

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.
@@ -1,19 +1,196 @@
1
- import { InjectPinoLogger, LoggerModule as LoggerModule$1 } from 'nestjs-pino';
1
+ import { InjectPinoLogger, LoggerModule as LoggerModule$1, PinoLogger } from 'nestjs-pino';
2
2
  export { LoggerErrorInterceptor } from 'nestjs-pino';
3
- import RedisStore from 'connect-redis';
3
+ import { Store } from 'express-session';
4
4
  import { auth } from 'express-openid-connect';
5
5
  import { createClient } from 'redis';
6
6
  import { sign } from 'jsonwebtoken';
7
7
  import { validate } from 'jsonschema';
8
- import { resolve, dirname, relative } from 'node:path';
9
- import { readFileSync, writeFileSync, rmSync, existsSync, mkdirSync, createWriteStream, createReadStream, renameSync } from 'node:fs';
8
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, rmSync } from 'node:fs';
9
+ import { resolve } from 'node:path';
10
10
  import { GraphQLError } from 'graphql';
11
11
  import { HttpStatus, HttpException, Catch, Injectable, Module } from '@nestjs/common';
12
12
  import { ConfigModule, ConfigService } from '@nestjs/config';
13
13
  import _slugify from 'slugify';
14
- import { pipeline } from 'node:stream/promises';
15
14
 
16
- var SharedConfigKeys = /* @__PURE__ */ ((SharedConfigKeys2) => {
15
+ var __defProp = Object.defineProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ var noop = /* @__PURE__ */ __name((_err, _data) => {
18
+ }, "noop");
19
+ var RedisStore = class RedisStore2 extends Store {
20
+ static {
21
+ __name(this, "RedisStore");
22
+ }
23
+ constructor(opts) {
24
+ super();
25
+ this.prefix = opts.prefix == null ? "sess:" : opts.prefix;
26
+ this.scanCount = opts.scanCount || 100;
27
+ this.serializer = opts.serializer || JSON;
28
+ this.ttl = opts.ttl || 86400;
29
+ this.disableTTL = opts.disableTTL || false;
30
+ this.disableTouch = opts.disableTouch || false;
31
+ this.client = this.normalizeClient(opts.client);
32
+ }
33
+ // Create a redis and ioredis compatible client
34
+ normalizeClient(client) {
35
+ let isRedis = "scanIterator" in client;
36
+ return {
37
+ get: (key) => client.get(key),
38
+ set: (key, val, ttl) => {
39
+ if (ttl) {
40
+ return isRedis ? client.set(key, val, {
41
+ EX: ttl
42
+ }) : client.set(key, val, "EX", ttl);
43
+ }
44
+ return client.set(key, val);
45
+ },
46
+ del: (key) => client.del(key),
47
+ expire: (key, ttl) => client.expire(key, ttl),
48
+ mget: (keys) => isRedis ? client.mGet(keys) : client.mget(keys),
49
+ scanIterator: (match, count) => {
50
+ if (isRedis)
51
+ return client.scanIterator({
52
+ MATCH: match,
53
+ COUNT: count
54
+ });
55
+ return async function* () {
56
+ let [c, xs] = await client.scan("0", "MATCH", match, "COUNT", count);
57
+ for (let key of xs)
58
+ yield key;
59
+ while (c !== "0") {
60
+ [c, xs] = await client.scan(c, "MATCH", match, "COUNT", count);
61
+ for (let key of xs)
62
+ yield key;
63
+ }
64
+ }();
65
+ }
66
+ };
67
+ }
68
+ async get(sid, cb = noop) {
69
+ let key = this.prefix + sid;
70
+ try {
71
+ let data = await this.client.get(key);
72
+ if (!data)
73
+ return cb();
74
+ return cb(null, await this.serializer.parse(data));
75
+ } catch (err) {
76
+ return cb(err);
77
+ }
78
+ }
79
+ async set(sid, sess, cb = noop) {
80
+ let key = this.prefix + sid;
81
+ let ttl = this._getTTL(sess);
82
+ try {
83
+ let val = this.serializer.stringify(sess);
84
+ if (ttl > 0) {
85
+ if (this.disableTTL)
86
+ await this.client.set(key, val);
87
+ else
88
+ await this.client.set(key, val, ttl);
89
+ return cb();
90
+ } else {
91
+ return this.destroy(sid, cb);
92
+ }
93
+ } catch (err) {
94
+ return cb(err);
95
+ }
96
+ }
97
+ async touch(sid, sess, cb = noop) {
98
+ let key = this.prefix + sid;
99
+ if (this.disableTouch || this.disableTTL)
100
+ return cb();
101
+ try {
102
+ await this.client.expire(key, this._getTTL(sess));
103
+ return cb();
104
+ } catch (err) {
105
+ return cb(err);
106
+ }
107
+ }
108
+ async destroy(sid, cb = noop) {
109
+ let key = this.prefix + sid;
110
+ try {
111
+ await this.client.del([
112
+ key
113
+ ]);
114
+ return cb();
115
+ } catch (err) {
116
+ return cb(err);
117
+ }
118
+ }
119
+ async clear(cb = noop) {
120
+ try {
121
+ let keys = await this._getAllKeys();
122
+ if (!keys.length)
123
+ return cb();
124
+ await this.client.del(keys);
125
+ return cb();
126
+ } catch (err) {
127
+ return cb(err);
128
+ }
129
+ }
130
+ async length(cb = noop) {
131
+ try {
132
+ let keys = await this._getAllKeys();
133
+ return cb(null, keys.length);
134
+ } catch (err) {
135
+ return cb(err);
136
+ }
137
+ }
138
+ async ids(cb = noop) {
139
+ let len = this.prefix.length;
140
+ try {
141
+ let keys = await this._getAllKeys();
142
+ return cb(null, keys.map((k) => k.substring(len)));
143
+ } catch (err) {
144
+ return cb(err);
145
+ }
146
+ }
147
+ async all(cb = noop) {
148
+ let len = this.prefix.length;
149
+ try {
150
+ let keys = await this._getAllKeys();
151
+ if (keys.length === 0)
152
+ return cb(null, []);
153
+ let data = await this.client.mget(keys);
154
+ let results = data.reduce((acc, raw, idx) => {
155
+ if (!raw)
156
+ return acc;
157
+ let sess = this.serializer.parse(raw);
158
+ sess.id = keys[idx].substring(len);
159
+ acc.push(sess);
160
+ return acc;
161
+ }, []);
162
+ return cb(null, results);
163
+ } catch (err) {
164
+ return cb(err);
165
+ }
166
+ }
167
+ _getTTL(sess) {
168
+ if (typeof this.ttl === "function") {
169
+ return this.ttl(sess);
170
+ }
171
+ let ttl;
172
+ if (sess && sess.cookie && sess.cookie.expires) {
173
+ let ms = Number(new Date(sess.cookie.expires)) - Date.now();
174
+ ttl = Math.ceil(ms / 1e3);
175
+ } else {
176
+ ttl = this.ttl;
177
+ }
178
+ return ttl;
179
+ }
180
+ async _getAllKeys() {
181
+ let pattern = this.prefix + "*";
182
+ let keys = [];
183
+ for await (let key of this.client.scanIterator(pattern, this.scanCount)) {
184
+ keys.push(key);
185
+ }
186
+ return keys;
187
+ }
188
+ };
189
+ var esm_default = RedisStore;
190
+
191
+ // src/constants/config.ts
192
+ var SharedConfigKeys;
193
+ (function(SharedConfigKeys2) {
17
194
  SharedConfigKeys2["AuthCookieName"] = "AUTH_COOKIE_NAME";
18
195
  SharedConfigKeys2["AuthCookieSecret"] = "AUTH_COOKIE_SECRET";
19
196
  SharedConfigKeys2["DbEndpoint"] = "DB_ENDPOINT";
@@ -22,33 +199,30 @@ var SharedConfigKeys = /* @__PURE__ */ ((SharedConfigKeys2) => {
22
199
  SharedConfigKeys2["ServicePort"] = "SERVICE_PORT";
23
200
  SharedConfigKeys2["RedisHost"] = "REDIS_HOST";
24
201
  SharedConfigKeys2["RedisPassword"] = "REDIS_PASSWORD";
25
- return SharedConfigKeys2;
26
- })(SharedConfigKeys || {});
202
+ })(SharedConfigKeys || (SharedConfigKeys = {}));
27
203
 
28
- var AllianceHeaders = /* @__PURE__ */ ((AllianceHeaders2) => {
204
+ // src/constants/headers.ts
205
+ var AllianceHeaders;
206
+ (function(AllianceHeaders2) {
29
207
  AllianceHeaders2["TargetUrl"] = "alliance-target-url";
30
208
  AllianceHeaders2["TargetApp"] = "alliance-target-app";
31
209
  AllianceHeaders2["TargetWorkspace"] = "alliance-target-workspace";
32
- return AllianceHeaders2;
33
- })(AllianceHeaders || {});
34
-
35
- function authMiddleware(configService, {
36
- baseURL = "https://127.0.0.1",
37
- clientSecret,
38
- clientID = " ",
39
- authRequired = true,
40
- authorizationParams = {},
41
- afterCallback,
42
- issuerBaseURL = "https://127.0.0.1"
43
- } = {}) {
44
- const redisClient = createClient({
45
- url: configService.getOrThrow(SharedConfigKeys.RedisHost),
46
- password: configService.get(SharedConfigKeys.RedisPassword)
47
- });
48
- redisClient.connect().catch(console.error);
49
- const redisStore = new RedisStore({
50
- client: redisClient
51
- });
210
+ })(AllianceHeaders || (AllianceHeaders = {}));
211
+
212
+ // src/auth/auth.middleware.ts
213
+ function authMiddleware(configService, { baseURL = "https://127.0.0.1", clientSecret, clientID = " ", authRequired = true, authorizationParams = {}, afterCallback, issuerBaseURL = "https://127.0.0.1", sessionCookiePath } = {}) {
214
+ let store;
215
+ const redisHostUrl = configService.get(SharedConfigKeys.RedisHost);
216
+ if (redisHostUrl) {
217
+ const redisClient = createClient({
218
+ url: configService.getOrThrow(SharedConfigKeys.RedisHost),
219
+ password: configService.get(SharedConfigKeys.RedisPassword)
220
+ });
221
+ redisClient.connect().catch(console.error);
222
+ store = new esm_default({
223
+ client: redisClient
224
+ });
225
+ }
52
226
  return auth({
53
227
  baseURL,
54
228
  clientSecret,
@@ -60,47 +234,43 @@ function authMiddleware(configService, {
60
234
  secret: configService.getOrThrow(SharedConfigKeys.AuthCookieSecret),
61
235
  session: {
62
236
  name: configService.getOrThrow(SharedConfigKeys.AuthCookieName),
63
- store: redisStore
237
+ // @ts-ignore
238
+ store,
239
+ cookie: {
240
+ path: sessionCookiePath
241
+ }
64
242
  },
65
243
  routes: {
66
244
  callback: "/signin-oidc"
67
245
  }
68
246
  });
69
247
  }
70
-
71
- function createBearerToken({
72
- privateKey,
73
- aud,
74
- sub,
75
- name,
76
- user,
77
- workspace
78
- }) {
79
- const jwt = sign(
80
- {
81
- iss: "Alliance",
82
- aud,
83
- sub,
84
- name,
85
- "https://alliance.teliacompany.net/user_type": user.type,
86
- "https://alliance.teliacompany.net/user_privileges": user.permissions,
87
- "https://alliance.teliacompany.net/workspace": workspace.slug,
88
- "https://alliance.teliacompany.net/workspace_name": workspace.name,
89
- "https://alliance.teliacompany.net/tenant": workspace.slug,
90
- "https://alliance.teliacompany.net/tenant_name": workspace.name
91
- },
92
- privateKey,
93
- {
94
- expiresIn: "1h",
95
- algorithm: "RS256"
96
- }
97
- );
248
+ __name(authMiddleware, "authMiddleware");
249
+ function createBearerToken({ privateKey, aud, sub, name, user, workspace }) {
250
+ const jwt = sign({
251
+ iss: "Alliance",
252
+ aud,
253
+ sub,
254
+ name,
255
+ "https://alliance.teliacompany.net/user_type": user.type,
256
+ "https://alliance.teliacompany.net/user_email": user.email,
257
+ "https://alliance.teliacompany.net/user_privileges": user.permissions,
258
+ "https://alliance.teliacompany.net/workspace": workspace.slug,
259
+ "https://alliance.teliacompany.net/workspace_name": workspace.name,
260
+ "https://alliance.teliacompany.net/tenant": workspace.slug,
261
+ "https://alliance.teliacompany.net/tenant_name": workspace.name
262
+ }, privateKey, {
263
+ expiresIn: "1h",
264
+ algorithm: "RS256"
265
+ });
98
266
  return `Bearer ${jwt}`;
99
267
  }
268
+ __name(createBearerToken, "createBearerToken");
100
269
  function getPrivateKey(configService) {
101
270
  const privateKey = configService.getOrThrow(SharedConfigKeys.JwtPrivateKey);
102
271
  return "-----BEGIN RSA PRIVATE KEY-----\n" + privateKey + "\n-----END RSA PRIVATE KEY-----";
103
272
  }
273
+ __name(getPrivateKey, "getPrivateKey");
104
274
  function createSystemUserToken(configService) {
105
275
  return createBearerToken({
106
276
  aud: "system",
@@ -112,12 +282,15 @@ function createSystemUserToken(configService) {
112
282
  },
113
283
  user: {
114
284
  type: "system",
115
- permissions: []
285
+ permissions: [],
286
+ email: "system"
116
287
  },
117
288
  privateKey: getPrivateKey(configService)
118
289
  });
119
290
  }
291
+ __name(createSystemUserToken, "createSystemUserToken");
120
292
 
293
+ // src/distribution/cookie-policy.ts
121
294
  function generateCookiePolicyHtml(appManifests) {
122
295
  const cookiePolicyTableRows = [];
123
296
  for (const appName in appManifests) {
@@ -132,8 +305,11 @@ function generateCookiePolicyHtml(appManifests) {
132
305
  }
133
306
  return cookiePolicyHtml.replace("{APP_COOKIES}", cookiePolicyTableRows.join(""));
134
307
  }
308
+ __name(generateCookiePolicyHtml, "generateCookiePolicyHtml");
135
309
  function createCookiePolicyTableRow(key, claimEntry) {
136
- const rows = ["<tr>"];
310
+ const rows = [
311
+ "<tr>"
312
+ ];
137
313
  const { category, purpose, lifespan } = claimEntry;
138
314
  rows.push(`<td>${key}</td>`);
139
315
  rows.push(`<td>${category}</td>`);
@@ -142,7 +318,8 @@ function createCookiePolicyTableRow(key, claimEntry) {
142
318
  rows.push("</tr>");
143
319
  return rows.join("");
144
320
  }
145
- const cookiePolicyHtml = `
321
+ __name(createCookiePolicyTableRow, "createCookiePolicyTableRow");
322
+ var cookiePolicyHtml = `
146
323
  <!DOCTYPE html>
147
324
  <html lang="en">
148
325
  <head>
@@ -430,14 +607,8 @@ const cookiePolicyHtml = `
430
607
  </body>
431
608
  </html>
432
609
  `;
433
-
434
610
  function getJsonSchemas() {
435
- const frameworkDistDirPath = resolve(
436
- process.cwd(),
437
- "node_modules",
438
- "@telia-ace/alliance-framework",
439
- "dist"
440
- );
611
+ const frameworkDistDirPath = resolve(process.cwd(), "node_modules", "@telia-ace/alliance-framework", "dist");
441
612
  const appConfigSchemaPath = resolve(frameworkDistDirPath, "config.schema.json");
442
613
  const appManifestSchemaPath = resolve(frameworkDistDirPath, "manifest.schema.json");
443
614
  const appConfigSchemaFile = readFileSync(appConfigSchemaPath).toString();
@@ -449,14 +620,17 @@ function getJsonSchemas() {
449
620
  appManifest
450
621
  };
451
622
  }
452
-
623
+ __name(getJsonSchemas, "getJsonSchemas");
453
624
  async function createTempModuleAndImport(moduleString, fileName) {
454
625
  const file = resolve(process.cwd(), `${fileName}.mjs`);
455
626
  writeFileSync(file, moduleString);
456
627
  const importedModule = await import(`file:///${file}`);
457
- rmSync(file, { force: true });
628
+ rmSync(file, {
629
+ force: true
630
+ });
458
631
  return importedModule;
459
632
  }
633
+ __name(createTempModuleAndImport, "createTempModuleAndImport");
460
634
  async function getAppManifests(apps) {
461
635
  const moduleStringParts = [];
462
636
  const manifestImportVariables = [];
@@ -466,18 +640,18 @@ async function getAppManifests(apps) {
466
640
  moduleStringParts.push(`import ${manifestImportVariable} from '${packageName}/manifest';`);
467
641
  }
468
642
  moduleStringParts.push(`export default [${manifestImportVariables.join(", ")}];`);
469
- const result = await createTempModuleAndImport(
470
- moduleStringParts.join("\n"),
471
- "app-manifests"
472
- );
643
+ const result = await createTempModuleAndImport(moduleStringParts.join("\n"), "app-manifests");
473
644
  return result.default;
474
645
  }
646
+ __name(getAppManifests, "getAppManifests");
475
647
 
648
+ // src/distribution/pkg-json.ts
476
649
  function getPkgJson() {
477
650
  const packageJson = resolve(process.cwd(), "package.json");
478
651
  const pkgJsonFile = readFileSync(packageJson).toString();
479
652
  return JSON.parse(pkgJsonFile);
480
653
  }
654
+ __name(getPkgJson, "getPkgJson");
481
655
  async function getManifests(pkgJson) {
482
656
  if (!pkgJson || !pkgJson.alliance || !pkgJson.alliance.apps) {
483
657
  throw new Error("Alliance apps not defined in package.json.");
@@ -488,12 +662,14 @@ async function getManifests(pkgJson) {
488
662
  return acc;
489
663
  }, {});
490
664
  }
491
-
492
- const PUBLIC_DIR_NAME = "public";
493
- const MANIFESTS_FILE_NAME = "manifests.json";
494
- const COOKIE_POLICY_FILE_NAME = "cookie-policy.html";
495
- const APP_CONFIG_SCHEMA_FILE_NAME = "config.schema.json";
496
- const APP_MANIFEST_SCHEMA_FILE_NAME = "manifest.schema.json";
665
+ __name(getManifests, "getManifests");
666
+
667
+ // src/distribution/create-public-files.ts
668
+ var PUBLIC_DIR_NAME = "public";
669
+ var MANIFESTS_FILE_NAME = "manifests.json";
670
+ var COOKIE_POLICY_FILE_NAME = "cookie-policy.html";
671
+ var APP_CONFIG_SCHEMA_FILE_NAME = "config.schema.json";
672
+ var APP_MANIFEST_SCHEMA_FILE_NAME = "manifest.schema.json";
497
673
  async function createPublicDistributionFiles() {
498
674
  const pkgJson = getPkgJson();
499
675
  const manifests = await getManifests(pkgJson);
@@ -503,12 +679,8 @@ async function createPublicDistributionFiles() {
503
679
  const validationResult = validate(manifest, schemas.appManifest);
504
680
  if (validationResult.errors.length) {
505
681
  const errors = validationResult.errors.map((e) => JSON.stringify(e, null, 2));
506
- throw new Error(
507
- `Validation of app manifest for app '${appName}' failed with the following errors:
508
- ${errors.join(
509
- "\n"
510
- )}`
511
- );
682
+ throw new Error(`Validation of app manifest for app '${appName}' failed with the following errors:
683
+ ${errors.join("\n")}`);
512
684
  }
513
685
  }
514
686
  const publicDirPath = resolve(process.cwd(), PUBLIC_DIR_NAME);
@@ -524,8 +696,9 @@ ${errors.join(
524
696
  writeFileSync(appConfigSchemaFilePath, JSON.stringify(schemas.appConfig));
525
697
  writeFileSync(appManifestSchemaFilePath, JSON.stringify(schemas.appManifest));
526
698
  }
527
-
528
- var GatewayErrorCodes = /* @__PURE__ */ ((GatewayErrorCodes2) => {
699
+ __name(createPublicDistributionFiles, "createPublicDistributionFiles");
700
+ var GatewayErrorCodes;
701
+ (function(GatewayErrorCodes2) {
529
702
  GatewayErrorCodes2[GatewayErrorCodes2["NoObjectId"] = 10001] = "NoObjectId";
530
703
  GatewayErrorCodes2[GatewayErrorCodes2["NoTargetAppHeader"] = 10002] = "NoTargetAppHeader";
531
704
  GatewayErrorCodes2[GatewayErrorCodes2["NoTargetWorkspaceHeader"] = 10003] = "NoTargetWorkspaceHeader";
@@ -538,145 +711,158 @@ var GatewayErrorCodes = /* @__PURE__ */ ((GatewayErrorCodes2) => {
538
711
  GatewayErrorCodes2[GatewayErrorCodes2["NoWorkspaceInRequestContext"] = 10010] = "NoWorkspaceInRequestContext";
539
712
  GatewayErrorCodes2[GatewayErrorCodes2["NoUserPermissionsInRequestContext"] = 10012] = "NoUserPermissionsInRequestContext";
540
713
  GatewayErrorCodes2[GatewayErrorCodes2["WorkspacePermissionDenied"] = 10013] = "WorkspacePermissionDenied";
541
- return GatewayErrorCodes2;
542
- })(GatewayErrorCodes || {});
543
- var DatabasesErrorCodes = /* @__PURE__ */ ((DatabasesErrorCodes2) => {
714
+ })(GatewayErrorCodes || (GatewayErrorCodes = {}));
715
+ var DatabasesErrorCodes;
716
+ (function(DatabasesErrorCodes2) {
544
717
  DatabasesErrorCodes2[DatabasesErrorCodes2["NoPublicKey"] = 11e3] = "NoPublicKey";
545
718
  DatabasesErrorCodes2[DatabasesErrorCodes2["NoAuthHeader"] = 11001] = "NoAuthHeader";
546
719
  DatabasesErrorCodes2[DatabasesErrorCodes2["FailedFileStore"] = 11002] = "FailedFileStore";
547
720
  DatabasesErrorCodes2[DatabasesErrorCodes2["FailedFileRead"] = 11003] = "FailedFileRead";
548
721
  DatabasesErrorCodes2[DatabasesErrorCodes2["NoRecord"] = 11004] = "NoRecord";
549
722
  DatabasesErrorCodes2[DatabasesErrorCodes2["UniqueConstrain"] = 11005] = "UniqueConstrain";
550
- return DatabasesErrorCodes2;
551
- })(DatabasesErrorCodes || {});
552
- var PortalErrorCodes = /* @__PURE__ */ ((PortalErrorCodes2) => {
723
+ })(DatabasesErrorCodes || (DatabasesErrorCodes = {}));
724
+ var PortalErrorCodes;
725
+ (function(PortalErrorCodes2) {
553
726
  PortalErrorCodes2[PortalErrorCodes2["NoObjectId"] = 12e3] = "NoObjectId";
554
- return PortalErrorCodes2;
555
- })(PortalErrorCodes || {});
556
- const allianceErrors = {
727
+ })(PortalErrorCodes || (PortalErrorCodes = {}));
728
+ var allianceErrors = {
557
729
  // gateway
558
- [10001 /* NoObjectId */]: {
730
+ [10001]: {
559
731
  httpCode: HttpStatus.UNAUTHORIZED,
560
732
  message: "No object id available on authenticated user."
561
733
  },
562
- [10002 /* NoTargetAppHeader */]: {
734
+ [10002]: {
563
735
  httpCode: HttpStatus.BAD_REQUEST,
564
736
  message: `Request missing header '${AllianceHeaders.TargetApp}'.`
565
737
  },
566
- [10003 /* NoTargetWorkspaceHeader */]: {
738
+ [10003]: {
567
739
  httpCode: HttpStatus.BAD_REQUEST,
568
740
  message: `Request missing header '${AllianceHeaders.TargetWorkspace}'.`
569
741
  },
570
- [10004 /* NoManifestsInCache */]: {
742
+ [10004]: {
571
743
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
572
744
  message: "App manifests missing in cache."
573
745
  },
574
- [10005 /* NoDevSessionInCache */]: {
746
+ [10005]: {
575
747
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
576
748
  message: "No dev session in memory cache."
577
749
  },
578
- [10006 /* NoManifest */]: {
750
+ [10006]: {
579
751
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
580
752
  message: "Could not find manifest for app '{{appSlug}}'."
581
753
  },
582
- [10007 /* NoRequestContext */]: {
754
+ [10007]: {
583
755
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
584
756
  message: "No request context."
585
757
  },
586
- [10008 /* NoUserInRequestContext */]: {
758
+ [10008]: {
587
759
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
588
760
  message: "No user in request context."
589
761
  },
590
- [10009 /* NoAppInRequestContext */]: {
762
+ [10009]: {
591
763
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
592
764
  message: "No app in request context."
593
765
  },
594
- [10010 /* NoWorkspaceInRequestContext */]: {
766
+ [10010]: {
595
767
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
596
768
  message: "No workspace in request context."
597
769
  },
598
- [10012 /* NoUserPermissionsInRequestContext */]: {
770
+ [10012]: {
599
771
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
600
772
  message: "No user permissions in request context."
601
773
  },
602
- [10013 /* WorkspacePermissionDenied */]: {
774
+ [10013]: {
603
775
  httpCode: HttpStatus.FORBIDDEN,
604
776
  message: "User does not have access to the current workspace."
605
777
  },
606
778
  // databases
607
- [11e3 /* NoPublicKey */]: {
779
+ [11e3]: {
608
780
  httpCode: HttpStatus.UNAUTHORIZED,
609
781
  message: "No public key available to decode JWT."
610
782
  },
611
- [11001 /* NoAuthHeader */]: {
783
+ [11001]: {
612
784
  httpCode: HttpStatus.UNAUTHORIZED,
613
785
  message: "No authorization header found."
614
786
  },
615
- [11002 /* FailedFileStore */]: {
787
+ [11002]: {
616
788
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
617
789
  message: "Error storing file."
618
790
  },
619
- [11003 /* FailedFileRead */]: {
791
+ [11003]: {
620
792
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
621
793
  message: "Error reading file."
622
794
  },
623
- [11004 /* NoRecord */]: {
795
+ [11004]: {
624
796
  httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
625
797
  message: "Missing database record."
626
798
  },
627
- [11005 /* UniqueConstrain */]: {
799
+ [11005]: {
628
800
  httpCode: HttpStatus.CONFLICT,
629
801
  message: "Field has to be unique."
630
802
  },
631
803
  // portal
632
- [12e3 /* NoObjectId */]: {
804
+ [12e3]: {
633
805
  httpCode: HttpStatus.UNAUTHORIZED,
634
806
  message: "No object id found in user claims."
635
807
  }
636
808
  };
637
809
 
638
- function parseTemplates$1(message, variables) {
810
+ // src/exceptions/alliance-gql.exception.ts
811
+ function parseTemplates(message, variables) {
639
812
  return Object.entries(variables).reduce((acc, [key, value]) => {
640
813
  return acc.replaceAll(`{{${key}}}`, value);
641
814
  }, message);
642
815
  }
643
- class AllianceGqlException extends GraphQLError {
816
+ __name(parseTemplates, "parseTemplates");
817
+ var AllianceGqlException = class extends GraphQLError {
818
+ static {
819
+ __name(this, "AllianceGqlException");
820
+ }
821
+ info;
822
+ code;
644
823
  constructor(code, variables = {}, extensions) {
645
824
  const { message } = allianceErrors[code];
646
- super(parseTemplates$1(message, variables), {
825
+ super(parseTemplates(message, variables), {
647
826
  extensions
648
827
  });
649
828
  this.code = code;
650
829
  this.info = `https://github.com/telia-company/ace-alliance-sdk/wiki/error-codes#${code}`;
651
830
  }
652
- }
653
-
654
- function parseTemplates(message, variables) {
831
+ };
832
+ function parseTemplates2(message, variables) {
655
833
  return Object.entries(variables).reduce((acc, [key, value]) => {
656
834
  return acc.replaceAll(`{{${key}}}`, value);
657
835
  }, message);
658
836
  }
659
- class AllianceException extends HttpException {
837
+ __name(parseTemplates2, "parseTemplates");
838
+ var AllianceException = class extends HttpException {
839
+ static {
840
+ __name(this, "AllianceException");
841
+ }
842
+ info;
843
+ code;
660
844
  constructor(code, variables = {}) {
661
845
  const { message, httpCode } = allianceErrors[code];
662
- super(parseTemplates(message, variables), httpCode);
846
+ super(parseTemplates2(message, variables), httpCode);
663
847
  this.code = code;
664
848
  this.info = `https://github.com/telia-company/ace-alliance-sdk/wiki/error-codes#${code}`;
665
849
  }
666
- }
667
-
668
- var __defProp$2 = Object.defineProperty;
669
- var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
670
- var __decorateClass$2 = (decorators, target, key, kind) => {
671
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
672
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
673
- if (decorator = decorators[i])
674
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
675
- if (kind && result)
676
- __defProp$2(target, key, result);
677
- return result;
678
850
  };
679
- let AllianceExceptionFilter = class {
851
+ function _ts_decorate(decorators, target, key, desc) {
852
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
853
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
854
+ r = Reflect.decorate(decorators, target, key, desc);
855
+ else
856
+ for (var i = decorators.length - 1; i >= 0; i--)
857
+ if (d = decorators[i])
858
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
859
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
860
+ }
861
+ __name(_ts_decorate, "_ts_decorate");
862
+ var AllianceExceptionFilter = class AllianceExceptionFilter2 {
863
+ static {
864
+ __name(this, "AllianceExceptionFilter");
865
+ }
680
866
  catch(exception, host) {
681
867
  const ctx = host.switchToHttp();
682
868
  const response = ctx.getResponse();
@@ -689,23 +875,36 @@ let AllianceExceptionFilter = class {
689
875
  });
690
876
  }
691
877
  };
692
- AllianceExceptionFilter = __decorateClass$2([
878
+ AllianceExceptionFilter = _ts_decorate([
693
879
  Catch(AllianceException)
694
880
  ], AllianceExceptionFilter);
695
-
696
- var __defProp$1 = Object.defineProperty;
697
- var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
698
- var __decorateClass$1 = (decorators, target, key, kind) => {
699
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
700
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
701
- if (decorator = decorators[i])
702
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
703
- if (kind && result)
704
- __defProp$1(target, key, result);
705
- return result;
706
- };
707
- var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index);
708
- let LoggerService = class {
881
+ function _ts_decorate2(decorators, target, key, desc) {
882
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
883
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
884
+ r = Reflect.decorate(decorators, target, key, desc);
885
+ else
886
+ for (var i = decorators.length - 1; i >= 0; i--)
887
+ if (d = decorators[i])
888
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
889
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
890
+ }
891
+ __name(_ts_decorate2, "_ts_decorate");
892
+ function _ts_metadata(k, v) {
893
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
894
+ return Reflect.metadata(k, v);
895
+ }
896
+ __name(_ts_metadata, "_ts_metadata");
897
+ function _ts_param(paramIndex, decorator) {
898
+ return function(target, key) {
899
+ decorator(target, key, paramIndex);
900
+ };
901
+ }
902
+ __name(_ts_param, "_ts_param");
903
+ var LoggerService = class LoggerService2 {
904
+ static {
905
+ __name(this, "LoggerService");
906
+ }
907
+ logger;
709
908
  constructor(logger) {
710
909
  this.logger = logger;
711
910
  this.log = (...args) => this.logger.info(...args);
@@ -716,32 +915,51 @@ let LoggerService = class {
716
915
  this.error = (...args) => this.logger.error(...args);
717
916
  this.fatal = (...args) => this.logger.fatal(...args);
718
917
  }
918
+ log;
919
+ trace;
920
+ debug;
921
+ info;
922
+ warn;
923
+ error;
924
+ fatal;
719
925
  };
720
- LoggerService = __decorateClass$1([
926
+ LoggerService = _ts_decorate2([
721
927
  Injectable(),
722
- __decorateParam(0, InjectPinoLogger())
928
+ _ts_param(0, InjectPinoLogger()),
929
+ _ts_metadata("design:type", Function),
930
+ _ts_metadata("design:paramtypes", [
931
+ typeof PinoLogger === "undefined" ? Object : PinoLogger
932
+ ])
723
933
  ], LoggerService);
724
934
 
725
- var __defProp = Object.defineProperty;
726
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
727
- var __decorateClass = (decorators, target, key, kind) => {
728
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
729
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
730
- if (decorator = decorators[i])
731
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
732
- if (kind && result)
733
- __defProp(target, key, result);
734
- return result;
735
- };
736
- let LoggerModule = class {
935
+ // src/logging/logging.module.ts
936
+ function _ts_decorate3(decorators, target, key, desc) {
937
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
938
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
939
+ r = Reflect.decorate(decorators, target, key, desc);
940
+ else
941
+ for (var i = decorators.length - 1; i >= 0; i--)
942
+ if (d = decorators[i])
943
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
944
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
945
+ }
946
+ __name(_ts_decorate3, "_ts_decorate");
947
+ var LoggerModule = class LoggerModule2 {
948
+ static {
949
+ __name(this, "LoggerModule");
950
+ }
737
951
  static forRoot({ logLevel, redact = true } = {}) {
738
952
  return {
739
- module: LoggerModule,
953
+ module: LoggerModule2,
740
954
  controllers: [],
741
955
  imports: [
742
956
  LoggerModule$1.forRootAsync({
743
- imports: [ConfigModule],
744
- inject: [ConfigService],
957
+ imports: [
958
+ ConfigModule
959
+ ],
960
+ inject: [
961
+ ConfigService
962
+ ],
745
963
  useFactory: async (configService) => ({
746
964
  pinoHttp: {
747
965
  level: logLevel || configService.get(SharedConfigKeys.ServiceLogLevel) || "silent",
@@ -756,53 +974,32 @@ let LoggerModule = class {
756
974
  })
757
975
  ],
758
976
  global: true,
759
- providers: [LoggerService],
977
+ providers: [
978
+ LoggerService
979
+ ],
760
980
  exports: []
761
981
  };
762
982
  }
763
983
  };
764
- LoggerModule = __decorateClass([
984
+ LoggerModule = _ts_decorate3([
765
985
  Module({
766
- providers: [LoggerService],
767
- exports: [LoggerService]
986
+ providers: [
987
+ LoggerService
988
+ ],
989
+ exports: [
990
+ LoggerService
991
+ ]
768
992
  })
769
993
  ], LoggerModule);
770
-
771
994
  function slugify(name) {
772
- return _slugify(name, { strict: true, replacement: "-", lower: true });
773
- }
774
-
775
- function viteCssImportPlugin(outFilePath, relativePath = false) {
776
- return {
777
- name: "vite-plugin-css-import",
778
- apply: "build",
779
- enforce: "post",
780
- writeBundle: async (_, bundle) => {
781
- const cssFiles = Object.keys(bundle).filter((fileName) => fileName.endsWith(".css"));
782
- if (!cssFiles.length) {
783
- return;
784
- }
785
- const tempTargetFilePath = resolve(process.cwd(), `${outFilePath}-temp.js`);
786
- const targetFilePath = resolve(process.cwd(), `${outFilePath}.js`);
787
- const cssImportStatement = cssFiles.reduce((acc, cssFile) => {
788
- if (relativePath) {
789
- const targetDirname = dirname(targetFilePath);
790
- const relativePath2 = relative(targetDirname, cssFile);
791
- return `${acc}import "${relativePath2.replaceAll("\\", "/")}";
792
- `;
793
- }
794
- return `${acc}import "./${cssFile}";
795
- `;
796
- }, "");
797
- const writeStream = createWriteStream(tempTargetFilePath);
798
- writeStream.write(cssImportStatement, "utf8");
799
- const readStream = createReadStream(targetFilePath);
800
- await pipeline(readStream, writeStream);
801
- rmSync(targetFilePath, { force: true });
802
- renameSync(tempTargetFilePath, targetFilePath);
803
- writeStream.end();
804
- }
805
- };
995
+ return _slugify(name, {
996
+ strict: true,
997
+ replacement: "-",
998
+ lower: true
999
+ });
806
1000
  }
1001
+ __name(slugify, "slugify");
807
1002
 
808
- export { AllianceException, AllianceExceptionFilter, AllianceGqlException, AllianceHeaders, DatabasesErrorCodes, GatewayErrorCodes, LoggerModule, LoggerService, PortalErrorCodes, SharedConfigKeys, authMiddleware, createBearerToken, createPublicDistributionFiles, createSystemUserToken, getAppManifests, getPrivateKey, slugify, viteCssImportPlugin };
1003
+ export { AllianceException, AllianceExceptionFilter, AllianceGqlException, AllianceHeaders, DatabasesErrorCodes, GatewayErrorCodes, LoggerModule, LoggerService, PortalErrorCodes, SharedConfigKeys, authMiddleware, createBearerToken, createPublicDistributionFiles, createSystemUserToken, getAppManifests, getPrivateKey, slugify };
1004
+ //# sourceMappingURL=out.js.map
1005
+ //# sourceMappingURL=index.js.map