@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.
- package/CHANGELOG.md +12 -0
- package/dist/index.cjs +445 -252
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +128 -0
- package/dist/index.d.ts +127 -8
- package/dist/{index.mjs → index.js} +406 -209
- package/dist/index.js.map +1 -0
- package/package.json +23 -23
- package/dist/auth/auth.middleware.d.ts +0 -14
- package/dist/auth/index.d.ts +0 -2
- package/dist/auth/tokens.d.ts +0 -19
- package/dist/constants/config.d.ts +0 -10
- package/dist/constants/headers.d.ts +0 -5
- package/dist/constants/index.d.ts +0 -2
- package/dist/distribution/cookie-policy.d.ts +0 -2
- package/dist/distribution/create-public-files.d.ts +0 -1
- package/dist/distribution/index.d.ts +0 -1
- package/dist/distribution/json-schemas.d.ts +0 -7
- package/dist/distribution/pkg-json.d.ts +0 -13
- package/dist/exceptions/alliance-gql.exception.d.ts +0 -7
- package/dist/exceptions/alliance.exception.d.ts +0 -7
- package/dist/exceptions/codes.d.ts +0 -35
- package/dist/exceptions/exception.filter.d.ts +0 -5
- package/dist/exceptions/index.d.ts +0 -4
- package/dist/get-app-manifests.d.ts +0 -2
- package/dist/logging/index.d.ts +0 -2
- package/dist/logging/logging.module.d.ts +0 -9
- package/dist/logging/logging.service.d.ts +0 -12
- package/dist/slugify.d.ts +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/vite-css-import.plugin.d.ts +0 -2
|
@@ -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
|
|
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 {
|
|
9
|
-
import {
|
|
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
|
|
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
|
-
|
|
26
|
-
})(SharedConfigKeys || {});
|
|
202
|
+
})(SharedConfigKeys || (SharedConfigKeys = {}));
|
|
27
203
|
|
|
28
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
function authMiddleware(configService, {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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 = [
|
|
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
|
-
|
|
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, {
|
|
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
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
542
|
-
|
|
543
|
-
|
|
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
|
-
|
|
551
|
-
|
|
552
|
-
|
|
723
|
+
})(DatabasesErrorCodes || (DatabasesErrorCodes = {}));
|
|
724
|
+
var PortalErrorCodes;
|
|
725
|
+
(function(PortalErrorCodes2) {
|
|
553
726
|
PortalErrorCodes2[PortalErrorCodes2["NoObjectId"] = 12e3] = "NoObjectId";
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
const allianceErrors = {
|
|
727
|
+
})(PortalErrorCodes || (PortalErrorCodes = {}));
|
|
728
|
+
var allianceErrors = {
|
|
557
729
|
// gateway
|
|
558
|
-
[10001
|
|
730
|
+
[10001]: {
|
|
559
731
|
httpCode: HttpStatus.UNAUTHORIZED,
|
|
560
732
|
message: "No object id available on authenticated user."
|
|
561
733
|
},
|
|
562
|
-
[10002
|
|
734
|
+
[10002]: {
|
|
563
735
|
httpCode: HttpStatus.BAD_REQUEST,
|
|
564
736
|
message: `Request missing header '${AllianceHeaders.TargetApp}'.`
|
|
565
737
|
},
|
|
566
|
-
[10003
|
|
738
|
+
[10003]: {
|
|
567
739
|
httpCode: HttpStatus.BAD_REQUEST,
|
|
568
740
|
message: `Request missing header '${AllianceHeaders.TargetWorkspace}'.`
|
|
569
741
|
},
|
|
570
|
-
[10004
|
|
742
|
+
[10004]: {
|
|
571
743
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
572
744
|
message: "App manifests missing in cache."
|
|
573
745
|
},
|
|
574
|
-
[10005
|
|
746
|
+
[10005]: {
|
|
575
747
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
576
748
|
message: "No dev session in memory cache."
|
|
577
749
|
},
|
|
578
|
-
[10006
|
|
750
|
+
[10006]: {
|
|
579
751
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
580
752
|
message: "Could not find manifest for app '{{appSlug}}'."
|
|
581
753
|
},
|
|
582
|
-
[10007
|
|
754
|
+
[10007]: {
|
|
583
755
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
584
756
|
message: "No request context."
|
|
585
757
|
},
|
|
586
|
-
[10008
|
|
758
|
+
[10008]: {
|
|
587
759
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
588
760
|
message: "No user in request context."
|
|
589
761
|
},
|
|
590
|
-
[10009
|
|
762
|
+
[10009]: {
|
|
591
763
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
592
764
|
message: "No app in request context."
|
|
593
765
|
},
|
|
594
|
-
[10010
|
|
766
|
+
[10010]: {
|
|
595
767
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
596
768
|
message: "No workspace in request context."
|
|
597
769
|
},
|
|
598
|
-
[10012
|
|
770
|
+
[10012]: {
|
|
599
771
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
600
772
|
message: "No user permissions in request context."
|
|
601
773
|
},
|
|
602
|
-
[10013
|
|
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
|
|
779
|
+
[11e3]: {
|
|
608
780
|
httpCode: HttpStatus.UNAUTHORIZED,
|
|
609
781
|
message: "No public key available to decode JWT."
|
|
610
782
|
},
|
|
611
|
-
[11001
|
|
783
|
+
[11001]: {
|
|
612
784
|
httpCode: HttpStatus.UNAUTHORIZED,
|
|
613
785
|
message: "No authorization header found."
|
|
614
786
|
},
|
|
615
|
-
[11002
|
|
787
|
+
[11002]: {
|
|
616
788
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
617
789
|
message: "Error storing file."
|
|
618
790
|
},
|
|
619
|
-
[11003
|
|
791
|
+
[11003]: {
|
|
620
792
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
621
793
|
message: "Error reading file."
|
|
622
794
|
},
|
|
623
|
-
[11004
|
|
795
|
+
[11004]: {
|
|
624
796
|
httpCode: HttpStatus.INTERNAL_SERVER_ERROR,
|
|
625
797
|
message: "Missing database record."
|
|
626
798
|
},
|
|
627
|
-
[11005
|
|
799
|
+
[11005]: {
|
|
628
800
|
httpCode: HttpStatus.CONFLICT,
|
|
629
801
|
message: "Field has to be unique."
|
|
630
802
|
},
|
|
631
803
|
// portal
|
|
632
|
-
[12e3
|
|
804
|
+
[12e3]: {
|
|
633
805
|
httpCode: HttpStatus.UNAUTHORIZED,
|
|
634
806
|
message: "No object id found in user claims."
|
|
635
807
|
}
|
|
636
808
|
};
|
|
637
809
|
|
|
638
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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 =
|
|
878
|
+
AllianceExceptionFilter = _ts_decorate([
|
|
693
879
|
Catch(AllianceException)
|
|
694
880
|
], AllianceExceptionFilter);
|
|
695
|
-
|
|
696
|
-
var
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
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 =
|
|
926
|
+
LoggerService = _ts_decorate2([
|
|
721
927
|
Injectable(),
|
|
722
|
-
|
|
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
|
-
|
|
726
|
-
|
|
727
|
-
var
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
return
|
|
735
|
-
}
|
|
736
|
-
|
|
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:
|
|
953
|
+
module: LoggerModule2,
|
|
740
954
|
controllers: [],
|
|
741
955
|
imports: [
|
|
742
956
|
LoggerModule$1.forRootAsync({
|
|
743
|
-
imports: [
|
|
744
|
-
|
|
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: [
|
|
977
|
+
providers: [
|
|
978
|
+
LoggerService
|
|
979
|
+
],
|
|
760
980
|
exports: []
|
|
761
981
|
};
|
|
762
982
|
}
|
|
763
983
|
};
|
|
764
|
-
LoggerModule =
|
|
984
|
+
LoggerModule = _ts_decorate3([
|
|
765
985
|
Module({
|
|
766
|
-
providers: [
|
|
767
|
-
|
|
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, {
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
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
|
|
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
|