@airoom/nextmin-node 2.0.1 → 2.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/README.md +151 -0
- package/dist/api/apiRouter.d.ts +28 -1
- package/dist/api/apiRouter.js +138 -8
- package/dist/api/router/mountBatchRoutes.d.ts +2 -0
- package/dist/api/router/mountBatchRoutes.js +90 -0
- package/dist/api/router/mountCrudRoutes.js +79 -20
- package/dist/api/router/setupAuthRoutes.js +475 -38
- package/dist/api/router/setupChatWidgetRoutes.d.ts +3 -0
- package/dist/api/router/setupChatWidgetRoutes.js +207 -0
- package/dist/api/router/setupFileRoutes.js +258 -12
- package/dist/api/router/utils.d.ts +4 -1
- package/dist/api/router/utils.js +25 -7
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +145 -64
- package/dist/database/DatabaseAdapter.d.ts +2 -0
- package/dist/database/NMAdapter.d.ts +11 -0
- package/dist/database/NMAdapter.js +688 -73
- package/dist/database/QueryEngine.js +7 -4
- package/dist/files/FileStorageAdapter.d.ts +6 -0
- package/dist/files/LocalFileStorageAdapter.d.ts +6 -0
- package/dist/files/LocalFileStorageAdapter.js +39 -3
- package/dist/files/S3FileStorageAdapter.d.ts +8 -1
- package/dist/files/S3FileStorageAdapter.js +86 -11
- package/dist/files/filename.js +6 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/models/BaseModel.d.ts +19 -2
- package/dist/models/BaseModel.js +4 -4
- package/dist/policy/authorize.d.ts +1 -1
- package/dist/policy/authorize.js +64 -13
- package/dist/schemas/Users.json +20 -10
- package/dist/services/AggregateService.d.ts +8 -0
- package/dist/services/AggregateService.js +87 -0
- package/dist/services/IndexingService.d.ts +24 -0
- package/dist/services/IndexingService.js +555 -0
- package/dist/services/LocalAIService.d.ts +34 -0
- package/dist/services/LocalAIService.js +471 -0
- package/dist/services/OpenAIService.d.ts +16 -0
- package/dist/services/OpenAIService.js +586 -0
- package/dist/utils/Events.js +1 -1
- package/dist/utils/Logger.d.ts +2 -1
- package/dist/utils/Logger.js +15 -6
- package/dist/utils/SchemaLoader.d.ts +2 -2
- package/dist/utils/SchemaLoader.js +44 -6
- package/package.json +12 -4
|
@@ -58,6 +58,10 @@ function validateSchema(obj) {
|
|
|
58
58
|
return missing;
|
|
59
59
|
}
|
|
60
60
|
class SchemaLoader {
|
|
61
|
+
get isDevelopment() {
|
|
62
|
+
return (process.env.APP_MODE?.toLowerCase() !== 'production' &&
|
|
63
|
+
process.env.NODE_ENV?.toLowerCase() !== 'production');
|
|
64
|
+
}
|
|
61
65
|
// Singleton instance
|
|
62
66
|
static getInstance() {
|
|
63
67
|
if (!SchemaLoader._instance) {
|
|
@@ -68,10 +72,8 @@ class SchemaLoader {
|
|
|
68
72
|
constructor() {
|
|
69
73
|
this.emitter = new events_1.EventEmitter();
|
|
70
74
|
this.schemas = {};
|
|
71
|
-
this.
|
|
72
|
-
this.nonOverridableSchemas = new Set(['User', 'Role']);
|
|
75
|
+
this.nonOverridableSchemas = new Set(['Users', 'Roles']);
|
|
73
76
|
this.watcher = null; // <-- TS-safe
|
|
74
|
-
this.isDevelopment = process.env.APP_MODE !== 'production';
|
|
75
77
|
const baseDir = process.cwd();
|
|
76
78
|
const basePackageDir = path_1.default.resolve(__dirname, '..');
|
|
77
79
|
this.packageSchemasDir = path_1.default.join(basePackageDir, 'schemas');
|
|
@@ -275,7 +277,7 @@ class SchemaLoader {
|
|
|
275
277
|
// Instead of blocking, MERGE user changes into package default
|
|
276
278
|
const base = schemas[modelName];
|
|
277
279
|
if (base) {
|
|
278
|
-
// shallow merge + attributes deep merge with delete support
|
|
280
|
+
// shallow merge + attributes deep merge with delete support + deep access merge
|
|
279
281
|
const merged = {
|
|
280
282
|
...base,
|
|
281
283
|
...schema,
|
|
@@ -284,6 +286,42 @@ class SchemaLoader {
|
|
|
284
286
|
...base.allowedMethods,
|
|
285
287
|
...schema.allowedMethods,
|
|
286
288
|
},
|
|
289
|
+
access: base.access || schema.access ? {
|
|
290
|
+
...(base.access || {}),
|
|
291
|
+
...(schema.access || {}),
|
|
292
|
+
public: {
|
|
293
|
+
...(base.access?.public || {}),
|
|
294
|
+
...(schema.access?.public || {}),
|
|
295
|
+
},
|
|
296
|
+
authenticated: {
|
|
297
|
+
...(base.access?.authenticated || {}),
|
|
298
|
+
...(schema.access?.authenticated || {}),
|
|
299
|
+
},
|
|
300
|
+
roles: {
|
|
301
|
+
...(base.access?.roles || {}),
|
|
302
|
+
...(schema.access?.roles || {}),
|
|
303
|
+
},
|
|
304
|
+
queryFilter: {
|
|
305
|
+
...(base.access?.queryFilter || {}),
|
|
306
|
+
...(schema.access?.queryFilter || {}),
|
|
307
|
+
},
|
|
308
|
+
createDefaults: {
|
|
309
|
+
...(base.access?.createDefaults || {}),
|
|
310
|
+
...(schema.access?.createDefaults || {}),
|
|
311
|
+
},
|
|
312
|
+
restrictions: {
|
|
313
|
+
...(base.access?.restrictions || {}),
|
|
314
|
+
...(schema.access?.restrictions || {}),
|
|
315
|
+
},
|
|
316
|
+
bypassPrivacy: base.access?.bypassPrivacy || schema.access?.bypassPrivacy ? {
|
|
317
|
+
...(base.access?.bypassPrivacy || {}),
|
|
318
|
+
...(schema.access?.bypassPrivacy || {}),
|
|
319
|
+
roles: Array.from(new Set([
|
|
320
|
+
...(base.access?.bypassPrivacy?.roles || []),
|
|
321
|
+
...(schema.access?.bypassPrivacy?.roles || [])
|
|
322
|
+
]))
|
|
323
|
+
} : undefined
|
|
324
|
+
} : undefined
|
|
287
325
|
};
|
|
288
326
|
schemas[modelName] = merged;
|
|
289
327
|
}
|
|
@@ -395,9 +433,9 @@ class SchemaLoader {
|
|
|
395
433
|
}
|
|
396
434
|
return out;
|
|
397
435
|
}
|
|
398
|
-
closeWatcher() {
|
|
436
|
+
async closeWatcher() {
|
|
399
437
|
if (this.watcher) {
|
|
400
|
-
this.watcher.close();
|
|
438
|
+
await this.watcher.close();
|
|
401
439
|
}
|
|
402
440
|
}
|
|
403
441
|
coerceIndexDir(val) {
|
package/package.json
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@airoom/nextmin-node",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"nextmin-node": "./dist/cli.js",
|
|
9
|
+
"nextmin": "./dist/cli.js",
|
|
10
|
+
"netmin": "./dist/cli.js"
|
|
11
|
+
},
|
|
7
12
|
"scripts": {
|
|
8
|
-
"build": "rm -rf dist && tsc --project tsconfig.json && copyfiles -u 2 \"src/schemas/**/*\" dist/schemas",
|
|
13
|
+
"build": "rm -rf dist && tsc --project tsconfig.json && copyfiles -u 2 \"src/schemas/**/*\" dist/schemas && chmod +x dist/cli.js",
|
|
9
14
|
"watch": "tsc --project tsconfig.json --watch",
|
|
10
15
|
"test": "vitest run",
|
|
11
16
|
"test:watch": "vitest",
|
|
@@ -15,22 +20,25 @@
|
|
|
15
20
|
"dependencies": {
|
|
16
21
|
"@aws-sdk/client-s3": "^3.864.0",
|
|
17
22
|
"@aws-sdk/s3-request-presigner": "^3.864.0",
|
|
23
|
+
"@keyv/redis": "^4.0.1",
|
|
18
24
|
"bcrypt": "^6.0.0",
|
|
19
25
|
"body-parser": "^2.2.0",
|
|
20
26
|
"chokidar": "^4.0.3",
|
|
27
|
+
"dotenv": "^16.4.5",
|
|
21
28
|
"fast-glob": "^3.3.1",
|
|
22
29
|
"jsonwebtoken": "^9.0.2",
|
|
23
30
|
"keyv": "^5.2.3",
|
|
24
31
|
"kleur": "^4.1.5",
|
|
25
|
-
"@keyv/redis": "^4.0.1",
|
|
26
32
|
"mongodb": "^6.21.0",
|
|
27
33
|
"mongoose": "^8.18.0",
|
|
28
34
|
"mongoose-autopopulate": "^1.1.0",
|
|
29
35
|
"mssql": "^12.2.0",
|
|
30
36
|
"multer": "^2.0.2",
|
|
31
37
|
"mysql2": "^3.16.1",
|
|
38
|
+
"node-llama-cpp": "^3.18.1",
|
|
32
39
|
"pg": "^8.17.2",
|
|
33
40
|
"reflect-metadata": "^0.2.2",
|
|
41
|
+
"sharp": "^0.33.5",
|
|
34
42
|
"socket.io": "^4.7.5",
|
|
35
43
|
"sqlite3": "^5.1.7",
|
|
36
44
|
"typeorm": "^0.3.28"
|
|
@@ -57,4 +65,4 @@
|
|
|
57
65
|
"publishConfig": {
|
|
58
66
|
"access": "public"
|
|
59
67
|
}
|
|
60
|
-
}
|
|
68
|
+
}
|