@mayhem93/nexxus-core-lib 0.0.1 → 0.0.3
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-cjs/common/BuiltinSchemas.js +24 -5
- package/dist-cjs/common/BuiltinSchemas.js.map +1 -1
- package/dist-cjs/common/FilterQuery.js +5 -18
- package/dist-cjs/common/FilterQuery.js.map +1 -1
- package/dist-cjs/common/InferModel.js +3 -0
- package/dist-cjs/common/InferModel.js.map +1 -0
- package/dist-cjs/common/JsonPatch.js +42 -225
- package/dist-cjs/common/JsonPatch.js.map +1 -1
- package/dist-cjs/common/SchemaValidator.js +100 -29
- package/dist-cjs/common/SchemaValidator.js.map +1 -1
- package/dist-cjs/index.js +4 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/lib/BaseService.js +6 -6
- package/dist-cjs/lib/BaseService.js.map +1 -1
- package/dist-cjs/lib/ConfigManager.js +56 -25
- package/dist-cjs/lib/ConfigManager.js.map +1 -1
- package/dist-cjs/lib/ConfigProvider.js +14 -1
- package/dist-cjs/lib/ConfigProvider.js.map +1 -1
- package/dist-cjs/lib/Exceptions.js +22 -4
- package/dist-cjs/lib/Exceptions.js.map +1 -1
- package/dist-cjs/lib/Logger.js +138 -65
- package/dist-cjs/lib/Logger.js.map +1 -1
- package/dist-cjs/lib/ServiceResolver.js +57 -0
- package/dist-cjs/lib/ServiceResolver.js.map +1 -0
- package/dist-cjs/models/AppModel.js +17 -3
- package/dist-cjs/models/AppModel.js.map +1 -1
- package/dist-cjs/models/Application.js +51 -12
- package/dist-cjs/models/Application.js.map +1 -1
- package/dist-cjs/models/BaseModel.js.map +1 -1
- package/dist-cjs/models/BuiltinModel.js +8 -0
- package/dist-cjs/models/BuiltinModel.js.map +1 -0
- package/dist-cjs/models/User.js +12 -3
- package/dist-cjs/models/User.js.map +1 -1
- package/dist-esm/common/BuiltinSchemas.js +23 -4
- package/dist-esm/common/BuiltinSchemas.js.map +1 -1
- package/dist-esm/common/FilterQuery.js +6 -19
- package/dist-esm/common/FilterQuery.js.map +1 -1
- package/dist-esm/common/InferModel.js +2 -0
- package/dist-esm/common/InferModel.js.map +1 -0
- package/dist-esm/common/JsonPatch.js +44 -227
- package/dist-esm/common/JsonPatch.js.map +1 -1
- package/dist-esm/common/SchemaValidator.js +100 -29
- package/dist-esm/common/SchemaValidator.js.map +1 -1
- package/dist-esm/index.js +4 -0
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/lib/BaseService.js +8 -8
- package/dist-esm/lib/BaseService.js.map +1 -1
- package/dist-esm/lib/ConfigManager.js +56 -25
- package/dist-esm/lib/ConfigManager.js.map +1 -1
- package/dist-esm/lib/ConfigProvider.js +14 -1
- package/dist-esm/lib/ConfigProvider.js.map +1 -1
- package/dist-esm/lib/Exceptions.js +20 -3
- package/dist-esm/lib/Exceptions.js.map +1 -1
- package/dist-esm/lib/Logger.js +139 -66
- package/dist-esm/lib/Logger.js.map +1 -1
- package/dist-esm/lib/ServiceResolver.js +52 -0
- package/dist-esm/lib/ServiceResolver.js.map +1 -0
- package/dist-esm/models/AppModel.js +17 -3
- package/dist-esm/models/AppModel.js.map +1 -1
- package/dist-esm/models/Application.js +52 -13
- package/dist-esm/models/Application.js.map +1 -1
- package/dist-esm/models/BaseModel.js.map +1 -1
- package/dist-esm/models/BuiltinModel.js +4 -0
- package/dist-esm/models/BuiltinModel.js.map +1 -0
- package/dist-esm/models/User.js +11 -2
- package/dist-esm/models/User.js.map +1 -1
- package/dist-types/common/BuiltinSchemas.d.ts +59 -5
- package/dist-types/common/FilterQuery.d.ts +3 -11
- package/dist-types/common/InferModel.d.ts +29 -0
- package/dist-types/common/JsonPatch.d.ts +4 -45
- package/dist-types/common/ModelTypes.d.ts +1 -0
- package/dist-types/common/QueuePayloads.d.ts +48 -26
- package/dist-types/common/SchemaValidator.d.ts +42 -2
- package/dist-types/index.d.ts +4 -0
- package/dist-types/lib/BaseService.d.ts +51 -1
- package/dist-types/lib/ConfigManager.d.ts +50 -13
- package/dist-types/lib/ConfigProvider.d.ts +6 -0
- package/dist-types/lib/Exceptions.d.ts +15 -2
- package/dist-types/lib/Logger.d.ts +84 -14
- package/dist-types/lib/ServiceResolver.d.ts +23 -0
- package/dist-types/models/AppModel.d.ts +31 -5
- package/dist-types/models/Application.d.ts +36 -8
- package/dist-types/models/BaseModel.d.ts +14 -12
- package/dist-types/models/BuiltinModel.d.ts +3 -0
- package/dist-types/models/User.d.ts +15 -13
- package/package.json +4 -4
- package/src/schemas/winston-logger.schema.json +51 -6
package/dist-cjs/lib/Logger.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WinstonNexxusLogger = exports.NexxusBaseLogger = exports.NexxusLoggerLevels = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const BaseService_1 = require("./BaseService");
|
|
6
|
+
const Exceptions_1 = require("./Exceptions");
|
|
6
7
|
const Winston = tslib_1.__importStar(require("winston"));
|
|
7
8
|
const path = tslib_1.__importStar(require("node:path"));
|
|
8
9
|
var NexxusLoggerLevels;
|
|
@@ -17,91 +18,114 @@ var NexxusLoggerLevels;
|
|
|
17
18
|
NexxusLoggerLevels["DEBUG"] = "debug";
|
|
18
19
|
})(NexxusLoggerLevels || (exports.NexxusLoggerLevels = NexxusLoggerLevels = {}));
|
|
19
20
|
class NexxusBaseLogger extends BaseService_1.NexxusBaseService {
|
|
21
|
+
static configRootKey = "logger";
|
|
20
22
|
constructor(services) {
|
|
21
23
|
super(services.configManager.getConfig('logger'));
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
static serializeError(err) {
|
|
26
|
+
const out = {
|
|
27
|
+
name: err.name,
|
|
28
|
+
message: err.message,
|
|
29
|
+
stack: err.stack,
|
|
30
|
+
};
|
|
31
|
+
if (err.cause !== undefined) {
|
|
32
|
+
out.cause = err.cause;
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
static makeSafeReplacer() {
|
|
37
|
+
const seen = new WeakSet();
|
|
38
|
+
return (_key, value) => {
|
|
39
|
+
if (value instanceof Error) {
|
|
40
|
+
return NexxusBaseLogger.serializeError(value);
|
|
41
|
+
}
|
|
42
|
+
if (value !== null && typeof value === 'object') {
|
|
43
|
+
if (seen.has(value)) {
|
|
44
|
+
return '[circular]';
|
|
45
|
+
}
|
|
46
|
+
seen.add(value);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
static safeStringify(value) {
|
|
52
|
+
return JSON.stringify(value, NexxusBaseLogger.makeSafeReplacer());
|
|
25
53
|
}
|
|
26
|
-
|
|
27
|
-
this.
|
|
54
|
+
debug(message, attributesOrLabel, label) {
|
|
55
|
+
this.dispatch("debug", message, attributesOrLabel, label);
|
|
28
56
|
}
|
|
29
|
-
|
|
30
|
-
this.
|
|
57
|
+
info(message, attributesOrLabel, label) {
|
|
58
|
+
this.dispatch("info", message, attributesOrLabel, label);
|
|
31
59
|
}
|
|
32
|
-
|
|
33
|
-
this.
|
|
60
|
+
warn(message, attributesOrLabel, label) {
|
|
61
|
+
this.dispatch("warn", message, attributesOrLabel, label);
|
|
34
62
|
}
|
|
35
|
-
|
|
36
|
-
this.
|
|
63
|
+
error(message, attributesOrLabel, label) {
|
|
64
|
+
this.dispatch("error", message, attributesOrLabel, label);
|
|
37
65
|
}
|
|
38
|
-
|
|
39
|
-
this.
|
|
66
|
+
critical(message, attributesOrLabel, label) {
|
|
67
|
+
this.dispatch("crit", message, attributesOrLabel, label);
|
|
40
68
|
}
|
|
41
|
-
|
|
42
|
-
this.
|
|
69
|
+
alert(message, attributesOrLabel, label) {
|
|
70
|
+
this.dispatch("alert", message, attributesOrLabel, label);
|
|
71
|
+
}
|
|
72
|
+
emerg(message, attributesOrLabel, label) {
|
|
73
|
+
this.dispatch("emerg", message, attributesOrLabel, label);
|
|
74
|
+
}
|
|
75
|
+
dispatch(level, message, attributesOrLabel, label) {
|
|
76
|
+
if (typeof attributesOrLabel === 'string') {
|
|
77
|
+
this.log(level, message, undefined, attributesOrLabel);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.log(level, message, attributesOrLabel, label);
|
|
81
|
+
}
|
|
43
82
|
}
|
|
44
83
|
}
|
|
45
84
|
exports.NexxusBaseLogger = NexxusBaseLogger;
|
|
46
85
|
class WinstonNexxusLogger extends NexxusBaseLogger {
|
|
47
86
|
winston;
|
|
48
87
|
static schemaPath = path.join(__dirname, "../../src/schemas/winston-logger.schema.json");
|
|
49
|
-
static envVars =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
location: "logger.level"
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
};
|
|
58
|
-
static cliArgs = {
|
|
59
|
-
source: this.name,
|
|
60
|
-
specs: []
|
|
61
|
-
};
|
|
62
|
-
constructor(services) {
|
|
88
|
+
static envVars = [
|
|
89
|
+
{ name: "LOG_LEVEL", location: "level" }
|
|
90
|
+
];
|
|
91
|
+
static cliArgs = [];
|
|
92
|
+
constructor(services, resolvedTransports) {
|
|
63
93
|
super(services);
|
|
64
94
|
let format;
|
|
65
95
|
if (this.config.logType === "json") {
|
|
66
|
-
format = Winston.format.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
info.message = msg;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
throw e;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
96
|
+
format = Winston.format.printf(info => {
|
|
97
|
+
const record = {};
|
|
98
|
+
if (info.timestamp) {
|
|
99
|
+
record.time = info.timestamp;
|
|
100
|
+
}
|
|
101
|
+
record.level = info.level;
|
|
102
|
+
record.label = info.label ?? "default-label";
|
|
103
|
+
record.msg = info.message;
|
|
104
|
+
const attrs = info.attrs;
|
|
105
|
+
if (attrs && typeof attrs === 'object' && Object.keys(attrs).length > 0) {
|
|
106
|
+
record.attrs = attrs;
|
|
83
107
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}), format);
|
|
108
|
+
return WinstonNexxusLogger.safeStringify(record);
|
|
109
|
+
});
|
|
87
110
|
if (this.config.timestamps) {
|
|
88
111
|
format = Winston.format.combine(Winston.format.timestamp(), format);
|
|
89
112
|
}
|
|
90
113
|
}
|
|
91
114
|
else {
|
|
92
115
|
format = Winston.format.printf(info => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
116
|
+
const label = info.label ?? "default-label";
|
|
117
|
+
const timestampPrefix = info.timestamp ? `[${info.timestamp}] ` : '';
|
|
118
|
+
const header = `${timestampPrefix}${info.level.toLocaleUpperCase()} [${label}]: ${info.message}`;
|
|
119
|
+
const attrs = info.attrs;
|
|
120
|
+
if (!attrs || typeof attrs !== 'object' || Object.keys(attrs).length === 0) {
|
|
121
|
+
return header;
|
|
97
122
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
123
|
+
const lines = [header];
|
|
124
|
+
for (const [k, v] of Object.entries(attrs)) {
|
|
125
|
+
lines.push(` ${k}: ${WinstonNexxusLogger.safeStringify(v)}`);
|
|
101
126
|
}
|
|
102
|
-
return
|
|
127
|
+
return lines.join('\n');
|
|
103
128
|
});
|
|
104
|
-
format = Winston.format.combine(Winston.format.metadata({ fillExcept: ['message', 'level', 'timestamp', 'label'] }), format);
|
|
105
129
|
if (this.config.timestamps) {
|
|
106
130
|
format = Winston.format.combine(Winston.format.timestamp(), format);
|
|
107
131
|
}
|
|
@@ -112,19 +136,68 @@ class WinstonNexxusLogger extends NexxusBaseLogger {
|
|
|
112
136
|
this.winston = Winston.createLogger({
|
|
113
137
|
level: this.config.level,
|
|
114
138
|
format,
|
|
115
|
-
transports:
|
|
116
|
-
new Winston.transports.Console()
|
|
117
|
-
]
|
|
139
|
+
transports: resolvedTransports
|
|
118
140
|
});
|
|
119
141
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
142
|
+
static async create(services) {
|
|
143
|
+
const config = services.configManager.getConfig('logger');
|
|
144
|
+
const resolvedTransports = await WinstonNexxusLogger.resolveTransports(config);
|
|
145
|
+
return new WinstonNexxusLogger(services, resolvedTransports);
|
|
146
|
+
}
|
|
147
|
+
static async resolveTransports(config) {
|
|
148
|
+
const entries = config.transports?.length
|
|
149
|
+
? config.transports
|
|
150
|
+
: [{ type: 'stdout' }];
|
|
151
|
+
const resolved = [];
|
|
152
|
+
for (const entry of entries) {
|
|
153
|
+
switch (entry.type) {
|
|
154
|
+
case 'stdout':
|
|
155
|
+
resolved.push(new Winston.transports.Console());
|
|
156
|
+
break;
|
|
157
|
+
case 'file': {
|
|
158
|
+
const fileEntry = entry;
|
|
159
|
+
resolved.push(new Winston.transports.File({
|
|
160
|
+
filename: fileEntry.filename,
|
|
161
|
+
maxsize: fileEntry.maxSize || 10485760,
|
|
162
|
+
maxFiles: fileEntry.maxFiles || 5,
|
|
163
|
+
zippedArchive: true
|
|
164
|
+
}));
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
default:
|
|
168
|
+
resolved.push(await WinstonNexxusLogger.loadCustomTransport(entry));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return resolved;
|
|
172
|
+
}
|
|
173
|
+
static async loadCustomTransport(transport) {
|
|
174
|
+
let mod;
|
|
175
|
+
try {
|
|
176
|
+
mod = await Promise.resolve(`${transport.type}`).then(s => tslib_1.__importStar(require(s)));
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
throw new Exceptions_1.InvalidConfigException(`Transport package "${transport.type}" could not be loaded — make sure it's installed in your deployment. Underlying error: ${e.message}`);
|
|
180
|
+
}
|
|
181
|
+
let TransportCtor;
|
|
182
|
+
if (transport.export) {
|
|
183
|
+
TransportCtor = mod[transport.export];
|
|
184
|
+
if (typeof TransportCtor !== 'function') {
|
|
185
|
+
throw new Exceptions_1.InvalidConfigException(`Transport package "${transport.type}" has no export named "${transport.export}" (or it isn't a class/function)`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else if (typeof mod.default === 'function') {
|
|
189
|
+
TransportCtor = mod.default;
|
|
190
|
+
}
|
|
191
|
+
else if (typeof mod === 'function') {
|
|
192
|
+
TransportCtor = mod;
|
|
123
193
|
}
|
|
124
194
|
else {
|
|
125
|
-
|
|
195
|
+
throw new Exceptions_1.InvalidConfigException(`Could not find a transport class in package "${transport.type}". Specify "export" in the transport config to name the class.`);
|
|
126
196
|
}
|
|
127
|
-
|
|
197
|
+
return new TransportCtor(transport.options ?? {});
|
|
198
|
+
}
|
|
199
|
+
log(level, message, attributes, label) {
|
|
200
|
+
this.winston.log(level, message, { label, attrs: attributes });
|
|
128
201
|
}
|
|
129
202
|
}
|
|
130
203
|
exports.WinstonNexxusLogger = WinstonNexxusLogger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/lib/Logger.ts"],"names":[],"mappings":";;;;AACA,+CAAuE;
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/lib/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveConstructableServiceClass = resolveConstructableServiceClass;
|
|
4
|
+
exports.resolveFactoryServiceClass = resolveFactoryServiceClass;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const BaseService_1 = require("./BaseService");
|
|
7
|
+
const Exceptions_1 = require("./Exceptions");
|
|
8
|
+
const node_module_1 = require("node:module");
|
|
9
|
+
const node_url_1 = require("node:url");
|
|
10
|
+
const path = tslib_1.__importStar(require("node:path"));
|
|
11
|
+
const requireFromApp = (0, node_module_1.createRequire)(path.join(process.cwd(), 'package.json'));
|
|
12
|
+
async function loadPackage(configuredName) {
|
|
13
|
+
let resolvedPath;
|
|
14
|
+
try {
|
|
15
|
+
resolvedPath = requireFromApp.resolve(configuredName);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
throw new Exceptions_1.InvalidConfigException(`Service package "${configuredName}" could not be resolved — make sure it's installed in your deployment. Underlying error: ${e.message}`);
|
|
19
|
+
}
|
|
20
|
+
return Promise.resolve(`${(0, node_url_1.pathToFileURL)(resolvedPath).href}`).then(s => tslib_1.__importStar(require(s)));
|
|
21
|
+
}
|
|
22
|
+
function assertNexxusService(cls, configuredName) {
|
|
23
|
+
if (typeof cls !== 'function' || !(cls.prototype instanceof BaseService_1.NexxusBaseService)) {
|
|
24
|
+
throw new Exceptions_1.InvalidConfigException(`Class resolved from "${configuredName}" does not extend NexxusBaseService. Make sure the adapter extends NexxusBaseService.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function pickDefaultExport(mod, configuredName) {
|
|
28
|
+
if (typeof mod.default === 'function') {
|
|
29
|
+
return mod.default;
|
|
30
|
+
}
|
|
31
|
+
if (typeof mod === 'function') {
|
|
32
|
+
return mod;
|
|
33
|
+
}
|
|
34
|
+
throw new Exceptions_1.InvalidConfigException(`Package "${configuredName}" does not default-export a class. Nexxus adapters must default-export the adapter class itself.`);
|
|
35
|
+
}
|
|
36
|
+
async function resolveConstructableServiceClass(configuredName, builtins) {
|
|
37
|
+
if (configuredName in builtins) {
|
|
38
|
+
return builtins[configuredName];
|
|
39
|
+
}
|
|
40
|
+
const mod = await loadPackage(configuredName);
|
|
41
|
+
const cls = pickDefaultExport(mod, configuredName);
|
|
42
|
+
assertNexxusService(cls, configuredName);
|
|
43
|
+
return cls;
|
|
44
|
+
}
|
|
45
|
+
async function resolveFactoryServiceClass(configuredName, builtins) {
|
|
46
|
+
if (configuredName in builtins) {
|
|
47
|
+
return builtins[configuredName];
|
|
48
|
+
}
|
|
49
|
+
const mod = await loadPackage(configuredName);
|
|
50
|
+
const cls = pickDefaultExport(mod, configuredName);
|
|
51
|
+
assertNexxusService(cls, configuredName);
|
|
52
|
+
if (typeof cls.create !== 'function') {
|
|
53
|
+
throw new Exceptions_1.InvalidConfigException(`Class resolved from "${configuredName}" does not expose a static create() method — required for factory-style services.`);
|
|
54
|
+
}
|
|
55
|
+
return cls;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ServiceResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceResolver.js","sourceRoot":"","sources":["../../src/lib/ServiceResolver.ts"],"names":[],"mappings":";;AAwFA,4EAcC;AAQD,gEAoBC;;AAlID,+CAIuB;AACvB,6CAAsD;AAEtD,6CAA4C;AAC5C,uCAAyC;AACzC,wDAAkC;AASlC,MAAM,cAAc,GAAG,IAAA,2BAAa,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AAQ/E,KAAK,UAAU,WAAW,CAAC,cAAsB;IAC/C,IAAI,YAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,mCAAsB,CAC9B,oBAAoB,cAAc,4FAA6F,CAAW,CAAC,OAAO,EAAE,CACrJ,CAAC;IACJ,CAAC;IAED,0BAAc,IAAA,wBAAa,EAAC,YAAY,CAAC,CAAC,IAAI,gDAAE;AAClD,CAAC;AAOD,SAAS,mBAAmB,CAAC,GAAY,EAAE,cAAsB;IAC/D,IAAI,OAAO,GAAG,KAAK,UAAU,IAAI,CAAC,CAAE,GAA8B,CAAC,SAAS,YAAY,+BAAiB,CAAC,EAAE,CAAC;QAC3G,MAAM,IAAI,mCAAsB,CAC9B,wBAAwB,cAAc,uFAAuF,CAC9H,CAAC;IACJ,CAAC;AACH,CAAC;AASD,SAAS,iBAAiB,CAAC,GAAQ,EAAE,cAAsB;IACzD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,IAAI,mCAAsB,CAC9B,YAAY,cAAc,kGAAkG,CAC7H,CAAC;AACJ,CAAC;AAgBM,KAAK,UAAU,gCAAgC,CACpD,cAAsB,EACtB,QAAyD;IAEzD,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEnD,mBAAmB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEzC,OAAO,GAAsC,CAAC;AAChD,CAAC;AAQM,KAAK,UAAU,0BAA0B,CAC9C,cAAsB,EACtB,QAAmD;IAEnD,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEnD,mBAAmB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEzC,IAAI,OAAQ,GAA4B,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/D,MAAM,IAAI,mCAAsB,CAC9B,wBAAwB,cAAc,mFAAmF,CAC1H,CAAC;IACJ,CAAC;IAED,OAAO,GAAgC,CAAC;AAC1C,CAAC"}
|
|
@@ -2,12 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NexxusAppModel = void 0;
|
|
4
4
|
const BaseModel_1 = require("./BaseModel");
|
|
5
|
+
const SchemaValidator_1 = require("../common/SchemaValidator");
|
|
6
|
+
const Exceptions_1 = require("../lib/Exceptions");
|
|
5
7
|
class NexxusAppModel extends BaseModel_1.NexxusBaseModel {
|
|
6
|
-
constructor(props) {
|
|
7
|
-
super(props);
|
|
8
|
+
constructor(props, appSchema) {
|
|
8
9
|
if (!props.appId) {
|
|
9
|
-
throw new Error('AppModel requires
|
|
10
|
+
throw new Error('AppModel requires AppId');
|
|
10
11
|
}
|
|
12
|
+
if (appSchema === null) {
|
|
13
|
+
super(props);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const modelDef = appSchema[props.type];
|
|
17
|
+
if (!modelDef) {
|
|
18
|
+
throw new Exceptions_1.InvalidSchemaDataException(`Unknown app model type "${props.type}" for app "${props.appId}"`);
|
|
19
|
+
}
|
|
20
|
+
const normalized = SchemaValidator_1.NexxusSchemaValidator.validateAgainstSchema(props, modelDef);
|
|
21
|
+
super(normalized);
|
|
22
|
+
}
|
|
23
|
+
static fromStorage(props) {
|
|
24
|
+
return new NexxusAppModel(props, null);
|
|
11
25
|
}
|
|
12
26
|
}
|
|
13
27
|
exports.NexxusAppModel = NexxusAppModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppModel.js","sourceRoot":"","sources":["../../src/models/AppModel.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AppModel.js","sourceRoot":"","sources":["../../src/models/AppModel.ts"],"names":[],"mappings":";;;AACA,2CAAgE;AAChE,+DAAkE;AAClE,kDAA+D;AAiB/D,MAAa,cAAe,SAAQ,2BAAgC;IAUlE,YAAY,KAAsB,EAAE,SAAyC;QAC3E,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAGvB,KAAK,CAAC,KAAK,CAAC,CAAC;YAEb,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,uCAA0B,CAAC,2BAA2B,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC1G,CAAC;QAMD,MAAM,UAAU,GAAG,uCAAqB,CAAC,qBAAqB,CAC5D,KAAgC,EAChC,QAAQ,CACT,CAAC;QAEF,KAAK,CAAC,UAA6B,CAAC,CAAC;IACvC,CAAC;IAQM,MAAM,CAAC,WAAW,CAAC,KAAsB;QAC9C,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AAlDD,wCAkDC"}
|
|
@@ -3,48 +3,87 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.NexxusApplication = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const BaseModel_1 = require("./BaseModel");
|
|
6
|
+
const BuiltinModel_1 = require("./BuiltinModel");
|
|
7
|
+
const BuiltinSchemas_1 = require("../common/BuiltinSchemas");
|
|
6
8
|
const Dot = tslib_1.__importStar(require("dot-prop"));
|
|
7
|
-
class NexxusApplication extends
|
|
9
|
+
class NexxusApplication extends BuiltinModel_1.NexxusBuiltinModel {
|
|
8
10
|
constructor(data) {
|
|
9
11
|
super({ ...data, type: BaseModel_1.MODEL_REGISTRY.application });
|
|
10
12
|
if (Object.keys(data.schema).length === 0) {
|
|
11
13
|
throw new Error("Application schema cannot be empty");
|
|
12
14
|
}
|
|
15
|
+
for (const [modelName, modelDef] of Object.entries(data.schema)) {
|
|
16
|
+
for (const fieldName of Object.keys(modelDef)) {
|
|
17
|
+
if (BuiltinSchemas_1.NEXXUS_RESERVED_FIELD_NAMES.has(fieldName)) {
|
|
18
|
+
throw new Error(`Application schema: model "${modelName}" declares a field "${fieldName}", ` +
|
|
19
|
+
`which is a Nexxus-reserved name. Reserved: ${[...BuiltinSchemas_1.NEXXUS_RESERVED_FIELD_NAMES].join(', ')}.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
13
23
|
if (data.description !== undefined && typeof data.description !== 'string') {
|
|
14
24
|
throw new Error("Application 'description' must be a string if provided");
|
|
15
25
|
}
|
|
16
26
|
if (data.name === undefined || typeof data.name !== 'string') {
|
|
17
27
|
throw new Error("Application 'name' is required and must be a string");
|
|
18
28
|
}
|
|
19
|
-
if (data.
|
|
20
|
-
throw new Error("Application '
|
|
29
|
+
if (data.defaultLimit !== undefined && (typeof data.defaultLimit !== 'number' || data.defaultLimit <= 10)) {
|
|
30
|
+
throw new Error("Application 'defaultLimit' must be a greater than 10 if provided");
|
|
31
|
+
}
|
|
32
|
+
data.defaultLimit = data.defaultLimit ?? 10;
|
|
33
|
+
if (data.maxLimit !== undefined && (typeof data.maxLimit !== 'number' || data.maxLimit <= 0 || data.maxLimit < data.defaultLimit)) {
|
|
34
|
+
throw new Error("Application 'maxLimit' must be a positive number if provided and must be greater than or equal to 'defaultLimit'");
|
|
21
35
|
}
|
|
22
|
-
|
|
36
|
+
data.maxLimit = data.maxLimit ?? 100;
|
|
37
|
+
if (data.auth) {
|
|
23
38
|
if (!data.userDetailSchema || typeof data.userDetailSchema !== 'object') {
|
|
24
39
|
throw new Error("Application 'userSchema' must be provided when 'authEnabled' is enabled");
|
|
25
40
|
}
|
|
26
|
-
if (typeof data.allowMultipleLogin !== 'boolean' && data.allowMultipleLogin !== undefined) {
|
|
27
|
-
throw new Error("Application 'allowMultipleLogin' must be a boolean when 'authEnabled' is enabled");
|
|
28
|
-
}
|
|
29
41
|
if (data.userTypes !== undefined && typeof data.userTypes !== 'object') {
|
|
30
42
|
throw new Error("Application 'userTypes' must be an object when 'authEnabled' is enabled");
|
|
31
43
|
}
|
|
32
|
-
|
|
44
|
+
if (!data.auth || typeof data.auth !== 'object') {
|
|
45
|
+
throw new Error("Application 'auth' must be provided when 'authEnabled' is enabled");
|
|
46
|
+
}
|
|
47
|
+
if (typeof data.auth.jwtSecret !== 'string' || data.auth.jwtSecret.length === 0) {
|
|
48
|
+
throw new Error("Application 'auth.jwtSecret' is required and must be a non-empty string when 'authEnabled' is enabled");
|
|
49
|
+
}
|
|
50
|
+
if (data.auth.jwtExpiresIn !== undefined && typeof data.auth.jwtExpiresIn !== 'string') {
|
|
51
|
+
throw new Error("Application 'auth.jwtExpiresIn' must be a string if provided");
|
|
52
|
+
}
|
|
53
|
+
if (!data.auth.strategies
|
|
54
|
+
|| typeof data.auth.strategies !== 'object'
|
|
55
|
+
|| Object.keys(data.auth.strategies).length === 0) {
|
|
56
|
+
throw new Error("Application 'auth.strategies' must be a non-empty object when 'authEnabled' is enabled");
|
|
57
|
+
}
|
|
33
58
|
this.data.userTypes = data.userTypes ? { ...data.userTypes, ...{ default: {} } } : { default: {} };
|
|
34
59
|
}
|
|
35
|
-
else {
|
|
36
|
-
this.data.allowMultipleLogin = null;
|
|
37
|
-
}
|
|
38
60
|
}
|
|
39
61
|
getSchema() {
|
|
40
62
|
return this.data.schema;
|
|
41
63
|
}
|
|
42
64
|
getUserDetailSchema(userType = 'default') {
|
|
43
|
-
if (!this.data.userDetailSchema) {
|
|
65
|
+
if (!this.hasAuthEnabled() || !this.data.userDetailSchema) {
|
|
44
66
|
return null;
|
|
45
67
|
}
|
|
46
68
|
return this.data.userDetailSchema[userType];
|
|
47
69
|
}
|
|
70
|
+
hasAuthEnabled() {
|
|
71
|
+
return !!this.data.auth;
|
|
72
|
+
}
|
|
73
|
+
getAppModelSchema(modelType) {
|
|
74
|
+
const appModelDef = this.data.schema[modelType];
|
|
75
|
+
if (!appModelDef) {
|
|
76
|
+
throw new Error(`Unknown app model type: ${modelType}`);
|
|
77
|
+
}
|
|
78
|
+
const appModelSchema = structuredClone(appModelDef);
|
|
79
|
+
if (this.hasAuthEnabled()) {
|
|
80
|
+
appModelSchema.userId = { type: 'string', required: true, filterable: true };
|
|
81
|
+
}
|
|
82
|
+
return appModelSchema;
|
|
83
|
+
}
|
|
84
|
+
static getModelSchema() {
|
|
85
|
+
return { ...BuiltinSchemas_1.NEXXUS_BUILTIN_MODEL_SCHEMAS.application };
|
|
86
|
+
}
|
|
48
87
|
getAppModelFieldType(modelType, fieldPath) {
|
|
49
88
|
const appModelFieldType = Dot.getProperty(this.getSchema(), `${modelType}.${fieldPath}.type`);
|
|
50
89
|
return appModelFieldType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/models/Application.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/models/Application.ts"],"names":[],"mappings":";;;;AAAA,2CAGqB;AACrB,iDAAoD;AAGpD,6DAAqG;AAGrG,sDAAgC;AAuChC,MAAa,iBAAkB,SAAQ,iCAAsC;IAC3E,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,0BAAc,CAAC,WAAW,EAAE,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAMD,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,IAAI,4CAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CACb,8BAA8B,SAAS,uBAAuB,SAAS,KAAK;wBAC5E,8CAA8C,CAAC,GAAG,4CAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1G,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAa,CAAC,EAAE,CAAC;YACnI,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;QACtI,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;QAErC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC7F,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC7F,CAAC;YAOD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACvF,CAAC;YAED,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChF,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAC;YAC3H,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACvF,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;YAED,IACE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;mBAClB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ;mBACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EACjD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;YAC5G,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACrG,CAAC;IAGH,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAEM,mBAAmB,CAAC,WAAmB,SAAS;QACrD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,CAAC;IAOM,iBAAiB,CAAC,SAAiB;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,cAAc,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAMM,MAAM,CAAC,cAAc;QAC1B,OAAO,EAAE,GAAG,6CAA4B,CAAC,WAAW,EAAE,CAAC;IACzD,CAAC;IAEM,oBAAoB,CAAC,SAAiB,EAAE,SAAiB;QAC9D,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,SAAS,IAAI,SAAS,OAAO,CAAC,CAAC;QAE9F,OAAO,iBAAuC,CAAC;IACjD,CAAC;IAEM,wBAAwB,CAAC,SAAiB;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAEhD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAGD,MAAM,uBAAuB,GAAG,CAC9B,MAAsC,EACtC,SAAiB,EAAE,EACb,EAAE;YACR,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEhE,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAE/B,uBAAuB,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC1D,CAAC;qBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAErC,SAAS;gBACX,CAAC;qBAAM,CAAC;oBAEN,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACxB,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAElC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF;AAzKD,8CAyKC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseModel.js","sourceRoot":"","sources":["../../src/models/BaseModel.ts"],"names":[],"mappings":";;;AAIA,6CAAwC;
|
|
1
|
+
{"version":3,"file":"BaseModel.js","sourceRoot":"","sources":["../../src/models/BaseModel.ts"],"names":[],"mappings":";;;AAIA,6CAAwC;AAE3B,QAAA,cAAc,GAAG;IAC5B,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;CACJ,CAAC;AAYX,MAAsB,eAAe;IACzB,IAAI,CAAI;IAEX,MAAM,CAAU,SAAS,CAAqB;IAErD,YAAY,IAAO;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAA,wBAAU,GAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AA9BD,0CA8BC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NexxusBuiltinModel = void 0;
|
|
4
|
+
const BaseModel_1 = require("./BaseModel");
|
|
5
|
+
class NexxusBuiltinModel extends BaseModel_1.NexxusBaseModel {
|
|
6
|
+
}
|
|
7
|
+
exports.NexxusBuiltinModel = NexxusBuiltinModel;
|
|
8
|
+
//# sourceMappingURL=BuiltinModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinModel.js","sourceRoot":"","sources":["../../src/models/BuiltinModel.ts"],"names":[],"mappings":";;;AAAA,2CAIqB;AAErB,MAAsB,kBAEpB,SAAQ,2BAAkB;CAAG;AAF/B,gDAE+B"}
|
package/dist-cjs/models/User.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.NexxusUser = void 0;
|
|
4
4
|
const BaseModel_1 = require("./BaseModel");
|
|
5
|
+
const BuiltinModel_1 = require("./BuiltinModel");
|
|
6
|
+
const BuiltinSchemas_1 = require("../common/BuiltinSchemas");
|
|
5
7
|
const Exceptions_1 = require("../lib/Exceptions");
|
|
6
|
-
class
|
|
8
|
+
class NexxusUser extends BuiltinModel_1.NexxusBuiltinModel {
|
|
9
|
+
static getModelSchema(userDetails) {
|
|
10
|
+
const base = { ...BuiltinSchemas_1.NEXXUS_BUILTIN_MODEL_SCHEMAS.user };
|
|
11
|
+
if (userDetails) {
|
|
12
|
+
base.details = { type: 'object', required: false, properties: userDetails };
|
|
13
|
+
}
|
|
14
|
+
return base;
|
|
15
|
+
}
|
|
7
16
|
constructor(data) {
|
|
8
17
|
super({ ...data, type: BaseModel_1.MODEL_REGISTRY.user });
|
|
9
18
|
if (this.data.appId === undefined || typeof this.data.appId !== 'string') {
|
|
@@ -35,5 +44,5 @@ class NexxusApplicationUser extends BaseModel_1.NexxusBaseModel {
|
|
|
35
44
|
}
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
|
-
exports.
|
|
47
|
+
exports.NexxusUser = NexxusUser;
|
|
39
48
|
//# sourceMappingURL=User.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":";;;AAAA,2CAGqB;AACrB,iDAAoD;AAGpD,6DAAwE;AACxE,kDAA8D;AAW9D,MAAa,UAAW,SAAQ,iCAA+B;IAKtD,MAAM,CAAC,cAAc,CAAC,WAA2C;QACtE,MAAM,IAAI,GAAmB,EAAE,GAAG,6CAA4B,CAAC,IAAI,EAAE,CAAC;QAEtE,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,IAAiB;QAC3B,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,0BAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzE,MAAM,IAAI,sCAAyB,CAAC,+CAA+C,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/E,MAAM,IAAI,sCAAyB,CAAC,kDAAkD,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChH,MAAM,IAAI,sCAAyB,CAAC,8CAA8C,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YACnJ,MAAM,IAAI,sCAAyB,CAAC,kEAAkE,CAAC,CAAC;QAC1G,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,sCAAyB,CAAC,4CAA4C,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAExF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,sCAAyB,CAAC,4CAA4C,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,IAAI,sCAAyB,CAAC,kCAAkC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7E,MAAM,IAAI,sCAAyB,CAAC,8CAA8C,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;CACF;AApDD,gCAoDC"}
|
|
@@ -3,17 +3,36 @@ export const NEXXUS_UNIVERSAL_FIELDS = {
|
|
|
3
3
|
createdAt: { type: 'date', required: true },
|
|
4
4
|
updatedAt: { type: 'date', required: true }
|
|
5
5
|
};
|
|
6
|
+
export const NEXXUS_RESERVED_FIELD_NAMES = new Set([
|
|
7
|
+
'id',
|
|
8
|
+
'createdAt',
|
|
9
|
+
'updatedAt',
|
|
10
|
+
'appId',
|
|
11
|
+
'userId',
|
|
12
|
+
'type',
|
|
13
|
+
'version'
|
|
14
|
+
]);
|
|
6
15
|
export const NEXXUS_BUILTIN_MODEL_SCHEMAS = {
|
|
7
16
|
user: {
|
|
8
|
-
|
|
17
|
+
appId: { type: 'string', required: true, filterable: true },
|
|
18
|
+
userType: { type: 'string', required: true, filterable: true },
|
|
9
19
|
username: { type: 'string', required: true, filterable: true },
|
|
10
|
-
password: { type: 'string', required:
|
|
20
|
+
password: { type: 'string', required: true, nullable: true },
|
|
11
21
|
authProviders: { type: 'array', required: true, arrayType: 'string' },
|
|
12
22
|
devices: { type: 'array', required: true, arrayType: 'string' },
|
|
13
|
-
details: { type: 'object', required: false, properties: {} }
|
|
23
|
+
details: { type: 'object', required: false, properties: {} },
|
|
14
24
|
},
|
|
15
25
|
application: {
|
|
16
|
-
name: { type: 'string', required: true, filterable: true }
|
|
26
|
+
name: { type: 'string', required: true, filterable: true },
|
|
27
|
+
description: { type: 'string', required: false },
|
|
28
|
+
auth: {
|
|
29
|
+
type: 'object', required: false, nullable: true,
|
|
30
|
+
properties: {
|
|
31
|
+
jwtSecret: { type: 'string', required: true },
|
|
32
|
+
jwtExpiresIn: { type: 'string', required: false },
|
|
33
|
+
strategies: { type: 'object', required: true, properties: {} },
|
|
34
|
+
},
|
|
35
|
+
},
|
|
17
36
|
}
|
|
18
37
|
};
|
|
19
38
|
export function isBuiltinModel(modelType) {
|