@nextage/nx-frame-be 1.0.34 → 1.0.35

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.
@@ -15,13 +15,14 @@
15
15
  /// <reference types="mongoose/types/populate" />
16
16
  /// <reference types="mongoose/types/query" />
17
17
  /// <reference types="mongoose/types/schemaoptions" />
18
- /// <reference types="mongoose/types/schematypes" />
19
18
  /// <reference types="mongoose/types/session" />
20
19
  /// <reference types="mongoose/types/types" />
21
20
  /// <reference types="mongoose/types/utility" />
22
21
  /// <reference types="mongoose/types/validation" />
23
22
  /// <reference types="mongoose/types/virtuals" />
23
+ /// <reference types="mongoose/types/schematypes" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
25
26
  /// <reference types="mongoose/types/inferrawdoctype" />
26
27
  import mongoose from 'mongoose';
27
28
  import { NxContext, NxObject } from '../interfaces';
@@ -15,13 +15,14 @@
15
15
  /// <reference types="mongoose/types/populate" />
16
16
  /// <reference types="mongoose/types/query" />
17
17
  /// <reference types="mongoose/types/schemaoptions" />
18
- /// <reference types="mongoose/types/schematypes" />
19
18
  /// <reference types="mongoose/types/session" />
20
19
  /// <reference types="mongoose/types/types" />
21
20
  /// <reference types="mongoose/types/utility" />
22
21
  /// <reference types="mongoose/types/validation" />
23
22
  /// <reference types="mongoose/types/virtuals" />
23
+ /// <reference types="mongoose/types/schematypes" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
25
26
  /// <reference types="mongoose/types/inferrawdoctype" />
26
27
  import mongoose from 'mongoose';
27
28
  import { ModelCrudEventType } from '../enums';
@@ -16,13 +16,14 @@
16
16
  /// <reference types="mongoose/types/populate" />
17
17
  /// <reference types="mongoose/types/query" />
18
18
  /// <reference types="mongoose/types/schemaoptions" />
19
- /// <reference types="mongoose/types/schematypes" />
20
19
  /// <reference types="mongoose/types/session" />
21
20
  /// <reference types="mongoose/types/types" />
22
21
  /// <reference types="mongoose/types/utility" />
23
22
  /// <reference types="mongoose/types/validation" />
24
23
  /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/schematypes" />
25
25
  /// <reference types="mongoose/types/inferschematype" />
26
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
26
27
  /// <reference types="mongoose/types/inferrawdoctype" />
27
28
  import mongoose from 'mongoose';
28
29
  import { EventEmitter } from 'events';
@@ -42,11 +43,7 @@ export declare class BaseModel<TAttrs, TDoc extends BaseMongoDoc, TMongoModel ex
42
43
  /**
43
44
  *
44
45
  */
45
- get schema(): {
46
- id?: mongoose.SchemaDefinitionProperty<string | undefined, BaseMongoDoc> | undefined;
47
- _id?: mongoose.SchemaDefinitionProperty<unknown, BaseMongoDoc> | undefined;
48
- __v?: mongoose.SchemaDefinitionProperty<any, BaseMongoDoc> | undefined;
49
- };
46
+ get schema(): any;
50
47
  /**
51
48
  * Get mongodb collection name
52
49
  */
@@ -95,9 +92,13 @@ export declare class BaseModel<TAttrs, TDoc extends BaseMongoDoc, TMongoModel ex
95
92
  * @param {*} fields
96
93
  * @param {*} options
97
94
  */
98
- find(params: FilterParams, fields: NxObject, options: mongoose.QueryOptions<TDoc>): Promise<(mongoose.Document<unknown, {}, BaseMongoDoc> & BaseMongoDoc & Required<{
99
- _id: unknown;
100
- }>)[]>;
95
+ find(params: FilterParams, fields: NxObject, options: mongoose.QueryOptions<TDoc>): Promise<(mongoose.Document<unknown, {}, BaseMongoDoc, {}, mongoose.DefaultSchemaOptions> & BaseMongoDoc & Required<{
96
+ _id: mongoose.Types.ObjectId;
97
+ }> & {
98
+ __v: number;
99
+ } & {
100
+ id: string;
101
+ })[]>;
101
102
  list(params?: FilterParams, fields?: mongoose.ProjectionType<BaseMongoDoc>, pagination?: QueryPagination, context?: NxContext): Promise<TDoc[]>;
102
103
  list(params: FilterParams, fields: mongoose.ProjectionType<BaseMongoDoc>, pagination: QueryPagination, queryActions: NxObject, context: NxContext): Promise<TDoc[]>;
103
104
  /**
@@ -106,7 +107,7 @@ export declare class BaseModel<TAttrs, TDoc extends BaseMongoDoc, TMongoModel ex
106
107
  * @param {*} params
107
108
  * @param {*} callback
108
109
  */
109
- listNative(params?: FilterParams, options?: mongoose.mongo.FindOptions<mongoose.mongo.BSON.Document>): mongoose.mongo.FindCursor<mongoose.mongo.WithId<mongoose.mongo.BSON.Document>>;
110
+ listNative(params?: FilterParams, options?: mongoose.mongo.FindOptions): mongoose.mongo.FindCursor<mongoose.mongo.WithId<mongoose.mongo.BSON.Document>>;
110
111
  /**
111
112
  *
112
113
  * @param params
@@ -8,6 +8,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
11
22
  Object.defineProperty(exports, "__esModule", { value: true });
12
23
  exports.BaseModel = void 0;
13
24
  const events_1 = require("events");
@@ -517,8 +528,9 @@ class BaseModel extends events_1.EventEmitter {
517
528
  return null;
518
529
  const fiAttrs = foundItem.toObject();
519
530
  delete fiAttrs.id;
520
- delete fiAttrs._id;
521
- item = Object.assign(fiAttrs, item);
531
+ // delete fiAttrs._id;
532
+ const { _id } = fiAttrs, cleanAttrs = __rest(fiAttrs, ["_id"]);
533
+ item = Object.assign(cleanAttrs, item);
522
534
  item = yield this.beforeCopy(item, context);
523
535
  const newItem = this.mgModel.build(item);
524
536
  const res = yield (newItem === null || newItem === void 0 ? void 0 : newItem.save());
@@ -15,13 +15,14 @@
15
15
  /// <reference types="mongoose/types/populate" />
16
16
  /// <reference types="mongoose/types/query" />
17
17
  /// <reference types="mongoose/types/schemaoptions" />
18
- /// <reference types="mongoose/types/schematypes" />
19
18
  /// <reference types="mongoose/types/session" />
20
19
  /// <reference types="mongoose/types/types" />
21
20
  /// <reference types="mongoose/types/utility" />
22
21
  /// <reference types="mongoose/types/validation" />
23
22
  /// <reference types="mongoose/types/virtuals" />
23
+ /// <reference types="mongoose/types/schematypes" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
25
26
  /// <reference types="mongoose/types/inferrawdoctype" />
26
27
  import mongoose from 'mongoose';
27
28
  import { BaseDBItem } from '../types';
@@ -0,0 +1,38 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="mongoose/types/aggregate" />
4
+ /// <reference types="mongoose/types/callback" />
5
+ /// <reference types="mongoose/types/collection" />
6
+ /// <reference types="mongoose/types/connection" />
7
+ /// <reference types="mongoose/types/cursor" />
8
+ /// <reference types="mongoose/types/document" />
9
+ /// <reference types="mongoose/types/error" />
10
+ /// <reference types="mongoose/types/expressions" />
11
+ /// <reference types="mongoose/types/helpers" />
12
+ /// <reference types="mongoose/types/middlewares" />
13
+ /// <reference types="mongoose/types/indexes" />
14
+ /// <reference types="mongoose/types/models" />
15
+ /// <reference types="mongoose/types/mongooseoptions" />
16
+ /// <reference types="mongoose/types/pipelinestage" />
17
+ /// <reference types="mongoose/types/populate" />
18
+ /// <reference types="mongoose/types/query" />
19
+ /// <reference types="mongoose/types/schemaoptions" />
20
+ /// <reference types="mongoose/types/session" />
21
+ /// <reference types="mongoose/types/types" />
22
+ /// <reference types="mongoose/types/utility" />
23
+ /// <reference types="mongoose/types/validation" />
24
+ /// <reference types="mongoose/types/virtuals" />
25
+ /// <reference types="mongoose/types/schematypes" />
26
+ /// <reference types="mongoose/types/inferschematype" />
27
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
28
+ /// <reference types="mongoose/types/inferrawdoctype" />
29
+ import { Schema } from 'mongoose';
30
+ type Path = string;
31
+ interface EncryptionPluginOptions {
32
+ fields: Path[];
33
+ getKey: (keyId?: string) => Buffer;
34
+ currentKeyId: string;
35
+ algorithm?: string;
36
+ }
37
+ export declare function encryptionPlugin(schema: Schema, options: EncryptionPluginOptions): void;
38
+ export {};
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.encryptionPlugin = void 0;
7
+ // encryptionPlugin.ts
8
+ const node_crypto_1 = __importDefault(require("node:crypto"));
9
+ function encryptionPlugin(schema, options) {
10
+ const { fields, getKey, currentKeyId, algorithm = 'aes-256-cbc' } = options;
11
+ // --- utils nested ---
12
+ const getNested = (obj, path) => path.split('.').reduce((o, k) => (o ? o[k] : undefined), obj);
13
+ const setNested = (obj, path, value) => {
14
+ const keys = path.split('.');
15
+ const last = keys.pop();
16
+ const target = keys.reduce((o, k) => {
17
+ if (!o[k])
18
+ o[k] = {};
19
+ return o[k];
20
+ }, obj);
21
+ target[last] = value;
22
+ };
23
+ // --- crypto ---
24
+ const encrypt = (data) => {
25
+ const iv = node_crypto_1.default.randomBytes(16);
26
+ const key = getKey(currentKeyId);
27
+ const cipher = node_crypto_1.default.createCipheriv(algorithm, key, iv);
28
+ const json = JSON.stringify(data);
29
+ let encrypted = cipher.update(json);
30
+ encrypted = Buffer.concat([encrypted, cipher.final()]);
31
+ return {
32
+ _enc: true,
33
+ v: encrypted.toString('hex'),
34
+ iv: iv.toString('hex'),
35
+ k: currentKeyId
36
+ };
37
+ };
38
+ const decrypt = (payload) => {
39
+ const key = getKey(payload.k);
40
+ const iv = Buffer.from(payload.iv, 'hex');
41
+ const encryptedText = Buffer.from(payload.v, 'hex');
42
+ const decipher = node_crypto_1.default.createDecipheriv(algorithm, key, iv);
43
+ let decrypted = decipher.update(encryptedText);
44
+ decrypted = Buffer.concat([decrypted, decipher.final()]);
45
+ return JSON.parse(decrypted.toString());
46
+ };
47
+ const isEncrypted = (val) => (val === null || val === void 0 ? void 0 : val._enc) === true;
48
+ // --- encrypt fields ---
49
+ const encryptFields = (obj) => {
50
+ for (const path of fields) {
51
+ const value = getNested(obj, path);
52
+ if (value && !isEncrypted(value))
53
+ setNested(obj, path, encrypt(value));
54
+ }
55
+ };
56
+ // --- decrypt fields ---
57
+ const decryptFields = (obj) => {
58
+ for (const path of fields) {
59
+ const value = getNested(obj, path);
60
+ if (isEncrypted(value)) {
61
+ try {
62
+ setNested(obj, path, decrypt(value));
63
+ }
64
+ catch (e) {
65
+ //console.log(e);
66
+ // fallback safe
67
+ }
68
+ }
69
+ }
70
+ };
71
+ // --- hooks ---
72
+ // schema.pre('save', function (next) {
73
+ // encryptFields(this);
74
+ // next();
75
+ // });
76
+ // schema.post('init', function (doc) {
77
+ // decryptFields(doc);
78
+ // });
79
+ // schema.post('save', function (doc) {
80
+ // decryptFields(doc);
81
+ // });
82
+ // // update hooks
83
+ // schema.pre(['updateOne', 'findOneAndUpdate'], (next: Function) => {
84
+ // const update: any = this.getUpdate();
85
+ // if (!update) return next();
86
+ // // support $set
87
+ // if (update.$set)
88
+ // encryptFields(update.$set);
89
+ // else
90
+ // encryptFields(update);
91
+ // next();
92
+ // });
93
+ }
94
+ exports.encryptionPlugin = encryptionPlugin;
@@ -1,3 +1,4 @@
1
1
  export * from './crypto.interfaces';
2
2
  export * from './crypto.classes';
3
3
  export * from './crypto.utils';
4
+ export * from './encryption.plugin';
@@ -17,3 +17,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./crypto.interfaces"), exports);
18
18
  __exportStar(require("./crypto.classes"), exports);
19
19
  __exportStar(require("./crypto.utils"), exports);
20
+ __exportStar(require("./encryption.plugin"), exports);
@@ -16,13 +16,14 @@
16
16
  /// <reference types="mongoose/types/populate" />
17
17
  /// <reference types="mongoose/types/query" />
18
18
  /// <reference types="mongoose/types/schemaoptions" />
19
- /// <reference types="mongoose/types/schematypes" />
20
19
  /// <reference types="mongoose/types/session" />
21
20
  /// <reference types="mongoose/types/types" />
22
21
  /// <reference types="mongoose/types/utility" />
23
22
  /// <reference types="mongoose/types/validation" />
24
23
  /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/schematypes" />
25
25
  /// <reference types="mongoose/types/inferschematype" />
26
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
26
27
  /// <reference types="mongoose/types/inferrawdoctype" />
27
28
  import mongoose from 'mongoose';
28
29
  import { Stream } from 'stream';
@@ -32,7 +32,7 @@ class GridFsBaseModel {
32
32
  throw new Error('Error, you need to open mongo connection');
33
33
  const promise = connection.db ? Promise.resolve(connection) : connection.asPromise();
34
34
  promise.then((conn) => {
35
- if (!conn)
35
+ if (!(conn === null || conn === void 0 ? void 0 : conn.db))
36
36
  return;
37
37
  this.bucket = new mongodb_1.GridFSBucket(conn.db, bucketOptions);
38
38
  });
@@ -15,13 +15,14 @@
15
15
  /// <reference types="mongoose/types/populate" />
16
16
  /// <reference types="mongoose/types/query" />
17
17
  /// <reference types="mongoose/types/schemaoptions" />
18
- /// <reference types="mongoose/types/schematypes" />
19
18
  /// <reference types="mongoose/types/session" />
20
19
  /// <reference types="mongoose/types/types" />
21
20
  /// <reference types="mongoose/types/utility" />
22
21
  /// <reference types="mongoose/types/validation" />
23
22
  /// <reference types="mongoose/types/virtuals" />
23
+ /// <reference types="mongoose/types/schematypes" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
25
26
  /// <reference types="mongoose/types/inferrawdoctype" />
26
27
  import mongoose from 'mongoose';
27
28
  import { NxObject } from '../interfaces';
@@ -15,13 +15,14 @@
15
15
  /// <reference types="mongoose/types/populate" />
16
16
  /// <reference types="mongoose/types/query" />
17
17
  /// <reference types="mongoose/types/schemaoptions" />
18
- /// <reference types="mongoose/types/schematypes" />
19
18
  /// <reference types="mongoose/types/session" />
20
19
  /// <reference types="mongoose/types/types" />
21
20
  /// <reference types="mongoose/types/utility" />
22
21
  /// <reference types="mongoose/types/validation" />
23
22
  /// <reference types="mongoose/types/virtuals" />
23
+ /// <reference types="mongoose/types/schematypes" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
25
26
  /// <reference types="mongoose/types/inferrawdoctype" />
26
27
  import mongoose from 'mongoose';
27
28
  import { ClassElement } from 'typescript';
@@ -15,13 +15,14 @@
15
15
  /// <reference types="mongoose/types/populate" />
16
16
  /// <reference types="mongoose/types/query" />
17
17
  /// <reference types="mongoose/types/schemaoptions" />
18
- /// <reference types="mongoose/types/schematypes" />
19
18
  /// <reference types="mongoose/types/session" />
20
19
  /// <reference types="mongoose/types/types" />
21
20
  /// <reference types="mongoose/types/utility" />
22
21
  /// <reference types="mongoose/types/validation" />
23
22
  /// <reference types="mongoose/types/virtuals" />
23
+ /// <reference types="mongoose/types/schematypes" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferhydrateddoctype" />
25
26
  /// <reference types="mongoose/types/inferrawdoctype" />
26
27
  import { Mongoose } from 'mongoose';
27
28
  import { Sequelize } from 'sequelize';
@@ -29,9 +29,10 @@ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
29
29
  yield mongoose_1.default.connect(mongoUri, {});
30
30
  }));
31
31
  beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
32
+ var _a;
32
33
  jest.clearAllMocks();
33
- const collections = yield mongoose_1.default.connection.db.collections();
34
- for (let collection of collections) {
34
+ const collections = yield ((_a = mongoose_1.default.connection.db) === null || _a === void 0 ? void 0 : _a.collections());
35
+ for (let collection of collections !== null && collections !== void 0 ? collections : []) {
35
36
  yield collection.deleteMany({});
36
37
  }
37
38
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextage/nx-frame-be",
3
- "version": "1.0.34",
3
+ "version": "1.0.35",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -24,9 +24,9 @@
24
24
  "author": "",
25
25
  "license": "ISC",
26
26
  "dependencies": {
27
- "@apollo/server": "^4.10.4",
28
- "@apollo/server-plugin-landing-page-graphql-playground": "^4.0.1",
27
+ "@apollo/server": "^5.5.0",
29
28
  "@apollo/subgraph": "^2.11.2",
29
+ "@as-integrations/express5": "^1.1.2",
30
30
  "@aws-sdk/client-ecs": "^3.592.0",
31
31
  "@aws-sdk/client-s3": "^3.1017.0",
32
32
  "@aws-sdk/client-ses": "^3.592.0",
@@ -35,14 +35,14 @@
35
35
  "@types/async": "^3.2.24",
36
36
  "@types/cookie-session": "^2.0.49",
37
37
  "@types/crypto-js": "^4.2.2",
38
- "@types/express": "^4.17.21",
38
+ "@types/express": "^5.0.6",
39
39
  "@types/express-validator": "^3.0.0",
40
40
  "@types/graphql": "^14.5.0",
41
41
  "@types/jsonwebtoken": "^9.0.6",
42
42
  "@types/jszip": "^3.4.1",
43
43
  "@types/lodash": "^4.17.4",
44
44
  "@types/moment": "^2.13.0",
45
- "@types/mongoose": "^5.11.97",
45
+ "@types/mongoose": "^5.11.96",
46
46
  "@types/node-schedule": "^2.1.7",
47
47
  "@types/sequelize": "^4.28.20",
48
48
  "@types/socket.io": "^3.0.2",
@@ -52,9 +52,9 @@
52
52
  "@types/ua-parser-js": "^0.7.39",
53
53
  "@types/uuid": "^9.0.8",
54
54
  "async": "^3.2.5",
55
- "cookie": "^0.6.0",
55
+ "cookie": "^1.1.1",
56
56
  "crypto-js": "^4.2.0",
57
- "express": "^4.19.2",
57
+ "express": "^5.2.1",
58
58
  "express-validator": "^7.1.0",
59
59
  "graphql": "^16.11.0",
60
60
  "graphql-constraint-directive": "^5.4.3",
@@ -67,7 +67,7 @@
67
67
  "jszip": "^3.10.1",
68
68
  "lodash": "^4.17.21",
69
69
  "moment": "^2.30.1",
70
- "mongoose": "^8.4.0",
70
+ "mongoose": "^9.3.3",
71
71
  "mongoose-update-if-current": "^1.4.0",
72
72
  "node-schedule": "^2.1.1",
73
73
  "sequelize": "^6.37.3",