tsledge 0.1.4 → 0.1.6
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/fluent-interface/fluent-pattern-handler.d.ts +10 -0
- package/dist/fluent-interface/fluent-pattern-handler.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1017 -24
- package/dist/middleware/authentication/index.d.ts +4 -0
- package/dist/middleware/authentication/index.d.ts.map +1 -0
- package/dist/middleware/authentication/session.d.ts +74 -0
- package/dist/middleware/authentication/session.d.ts.map +1 -0
- package/dist/middleware/authentication/types.d.ts +12 -0
- package/dist/middleware/authentication/types.d.ts.map +1 -0
- package/dist/middleware/authentication/validation.d.ts +55 -0
- package/dist/middleware/authentication/validation.d.ts.map +1 -0
- package/dist/middleware/index.d.ts +2 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/types.d.ts +2 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/models/auth-user.d.ts +14 -0
- package/dist/models/auth-user.d.ts.map +1 -0
- package/dist/models/index.d.ts +3 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/token-blocklist.d.ts +12 -0
- package/dist/models/token-blocklist.d.ts.map +1 -0
- package/dist/src/index.js +1000 -0
- package/dist/tests/main.js +932 -0
- package/dist/utils/encoding.d.ts +7 -0
- package/dist/utils/encoding.d.ts.map +1 -0
- package/dist/utils/env.d.ts +9 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/validation.d.ts +9 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/package.json +16 -6
- package/dist/app.js +0 -30
- package/dist/app.js.map +0 -1
- package/dist/core/http.js +0 -79
- package/dist/core/http.js.map +0 -1
- package/dist/core/index.js +0 -20
- package/dist/core/index.js.map +0 -1
- package/dist/core/query-builder.js +0 -271
- package/dist/core/query-builder.js.map +0 -1
- package/dist/core/types.js +0 -49
- package/dist/core/types.js.map +0 -1
- package/dist/db/index.js +0 -18
- package/dist/db/index.js.map +0 -1
- package/dist/db/mongodb.js +0 -28
- package/dist/db/mongodb.js.map +0 -1
- package/dist/exitCodes.js +0 -7
- package/dist/exitCodes.js.map +0 -1
- package/dist/fluent-interface/fluent-pattern-executor.d.ts +0 -45
- package/dist/fluent-interface/fluent-pattern-executor.d.ts.map +0 -1
- package/dist/fluent-interface/fluent-pattern-executor.js +0 -137
- package/dist/fluent-interface/fluent-pattern-executor.js.map +0 -1
- package/dist/fluent-interface/fluent-pattern-handler.js +0 -166
- package/dist/fluent-interface/fluent-pattern-handler.js.map +0 -1
- package/dist/fluent-interface/index.js +0 -19
- package/dist/fluent-interface/index.js.map +0 -1
- package/dist/fluent-interface/types.js +0 -16
- package/dist/fluent-interface/types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/middleware/file-storage.js +0 -26
- package/dist/middleware/file-storage.js.map +0 -1
- package/dist/middleware/index.js +0 -19
- package/dist/middleware/index.js.map +0 -1
- package/dist/middleware/logger.js +0 -30
- package/dist/middleware/logger.js.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/utils/date.js +0 -8
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/index.js +0 -20
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/mongo-relation.js +0 -89
- package/dist/utils/mongo-relation.js.map +0 -1
- package/dist/utils/validation.js +0 -17
- package/dist/utils/validation.js.map +0 -1
package/dist/exitCodes.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EXIT_CODE_INVALID_CONFIG = exports.EXIT_CODE_GENERAL_ERROR = exports.EXIT_CODE_SUCCESS = void 0;
|
|
4
|
-
exports.EXIT_CODE_SUCCESS = 0;
|
|
5
|
-
exports.EXIT_CODE_GENERAL_ERROR = 1; // Ein unspezifischer Fehler ist aufgetreten
|
|
6
|
-
exports.EXIT_CODE_INVALID_CONFIG = 2; // falsche Befehlszeilenargumente oder Syntaxfehler.
|
|
7
|
-
//# sourceMappingURL=exitCodes.js.map
|
package/dist/exitCodes.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../src/exitCodes.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,CAAC,CAAC;AACtB,QAAA,uBAAuB,GAAG,CAAC,CAAC,CAAC,4CAA4C;AACzE,QAAA,wBAAwB,GAAG,CAAC,CAAC,CAAC,oDAAoD"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { FluentAPIPath, FluentExpressRequest } from './types';
|
|
2
|
-
import { PromiseDefaultCodec, QueryBuilder } from '../core/index';
|
|
3
|
-
export declare class FluentPatternExecutor {
|
|
4
|
-
private static _singleton;
|
|
5
|
-
private _paths;
|
|
6
|
-
/**
|
|
7
|
-
* Constructor for QueryPatternExecutor.
|
|
8
|
-
* @param paths - Array of query pattern paths for filtering.
|
|
9
|
-
*/
|
|
10
|
-
constructor(paths?: FluentAPIPath[]);
|
|
11
|
-
static getInstance(): FluentPatternExecutor;
|
|
12
|
-
/**
|
|
13
|
-
* Parses and validates query parameters from the request.
|
|
14
|
-
* @param query - The query object from the request.
|
|
15
|
-
* @returns Parsed query parameters.
|
|
16
|
-
*/
|
|
17
|
-
private _parseFluentRequestQuery;
|
|
18
|
-
/**
|
|
19
|
-
* Applies filters to the query builder based on parsed parameters and options.
|
|
20
|
-
* @param queryBuilder - The QueryBuilder instance.
|
|
21
|
-
* @param params - Parsed query parameters.
|
|
22
|
-
* @param config - Query request configuration.
|
|
23
|
-
*/
|
|
24
|
-
private _applyFilters;
|
|
25
|
-
/**
|
|
26
|
-
* Retrieves filter fields for the given model from the paths configuration.
|
|
27
|
-
* @param model - The Mongoose model.
|
|
28
|
-
* @returns Array of filter fields.
|
|
29
|
-
*/
|
|
30
|
-
private _getFilterFieldsForModel;
|
|
31
|
-
/**
|
|
32
|
-
* Builds execution parameters for the query builder.
|
|
33
|
-
* @param params - Parsed query parameters.
|
|
34
|
-
* @returns Execution parameters.
|
|
35
|
-
*/
|
|
36
|
-
private _buildExecutionConfig;
|
|
37
|
-
/**
|
|
38
|
-
* Executes the query builder with the applied filters and execution parameters.
|
|
39
|
-
* @param req
|
|
40
|
-
* @param queryBuilder
|
|
41
|
-
* @returns
|
|
42
|
-
*/
|
|
43
|
-
exec<T = any>(req: FluentExpressRequest, queryBuilder: QueryBuilder): PromiseDefaultCodec;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=fluent-pattern-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fluent-pattern-executor.d.ts","sourceRoot":"","sources":["../../src/fluent-interface/fluent-pattern-executor.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,EACb,oBAAoB,EACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAA8B,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE9F,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAwB;IACjD,OAAO,CAAC,MAAM,CAAkB;IAEhC;;;OAGG;gBACS,KAAK,GAAE,aAAa,EAAO;WAUzB,WAAW,IAAI,qBAAqB;IASlD;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAiChC;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2BrB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;;;;OAKG;IACU,IAAI,CAAC,CAAC,GAAG,GAAG,EACvB,GAAG,EAAE,oBAAoB,EACzB,YAAY,EAAE,YAAY,GACzB,mBAAmB;CAYvB"}
|
|
@@ -1,137 +0,0 @@
|
|
|
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.FluentPatternExecutor = void 0;
|
|
7
|
-
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
|
-
const index_1 = require("../core/index");
|
|
9
|
-
class FluentPatternExecutor {
|
|
10
|
-
static _singleton;
|
|
11
|
-
_paths;
|
|
12
|
-
/**
|
|
13
|
-
* Constructor for QueryPatternExecutor.
|
|
14
|
-
* @param paths - Array of query pattern paths for filtering.
|
|
15
|
-
*/
|
|
16
|
-
constructor(paths = []) {
|
|
17
|
-
if (FluentPatternExecutor._singleton) {
|
|
18
|
-
throw new Error('FluentPatternExecutor is a singleton class. Use FluentPatternExecutor.getInstance() to access the instance.');
|
|
19
|
-
}
|
|
20
|
-
this._paths = paths;
|
|
21
|
-
FluentPatternExecutor._singleton = this;
|
|
22
|
-
}
|
|
23
|
-
static getInstance() {
|
|
24
|
-
if (FluentPatternExecutor._singleton == undefined) {
|
|
25
|
-
throw new Error('FluentPatternExecutor instance has not been created yet. Please create an instance before calling getInstance().');
|
|
26
|
-
}
|
|
27
|
-
return FluentPatternExecutor._singleton;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Parses and validates query parameters from the request.
|
|
31
|
-
* @param query - The query object from the request.
|
|
32
|
-
* @returns Parsed query parameters.
|
|
33
|
-
*/
|
|
34
|
-
_parseFluentRequestQuery(query) {
|
|
35
|
-
const { filter, limit = '5', offset = '0', id, excluded: excludedJSON, ids: idsJSON } = query;
|
|
36
|
-
let excluded;
|
|
37
|
-
if (excludedJSON) {
|
|
38
|
-
try {
|
|
39
|
-
excluded = JSON.parse(excludedJSON);
|
|
40
|
-
if (!Array.isArray(excluded))
|
|
41
|
-
throw new Error('Excluded must be an array');
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
console.warn('[QueryPatternExecutor] Invalid excluded parameter:', error);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
let ids;
|
|
48
|
-
if (idsJSON) {
|
|
49
|
-
try {
|
|
50
|
-
ids = JSON.parse(idsJSON);
|
|
51
|
-
if (!Array.isArray(ids))
|
|
52
|
-
throw new Error('Ids must be an array');
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
console.warn('[QueryPatternExecutor] Invalid ids parameter:', error);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return { filter, limit, offset, id, excluded, ids };
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Applies filters to the query builder based on parsed parameters and options.
|
|
62
|
-
* @param queryBuilder - The QueryBuilder instance.
|
|
63
|
-
* @param params - Parsed query parameters.
|
|
64
|
-
* @param config - Query request configuration.
|
|
65
|
-
*/
|
|
66
|
-
_applyFilters(queryBuilder, params) {
|
|
67
|
-
const { id, ids, filter, excluded } = params;
|
|
68
|
-
if (id) {
|
|
69
|
-
queryBuilder.match({ _id: new mongoose_1.default.Types.ObjectId(id) });
|
|
70
|
-
}
|
|
71
|
-
else if (ids && ids.length > 0) {
|
|
72
|
-
const objectIds = ids.map((id) => new mongoose_1.default.Types.ObjectId(id));
|
|
73
|
-
queryBuilder.match({ _id: { $in: objectIds } });
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
// Apply general filters
|
|
77
|
-
const filterFields = this._getFilterFieldsForModel(queryBuilder.getConfig().model);
|
|
78
|
-
if (filter && filterFields.length > 0) {
|
|
79
|
-
const ors = filterFields.map((field) => ({
|
|
80
|
-
[field]: { $regex: filter, $options: 'i' },
|
|
81
|
-
}));
|
|
82
|
-
queryBuilder.match({ $or: ors });
|
|
83
|
-
}
|
|
84
|
-
if (excluded && excluded.length > 0) {
|
|
85
|
-
const objectIds = excluded.map((id) => new mongoose_1.default.Types.ObjectId(id));
|
|
86
|
-
queryBuilder.match({ _id: { $nin: objectIds } });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Retrieves filter fields for the given model from the paths configuration.
|
|
92
|
-
* @param model - The Mongoose model.
|
|
93
|
-
* @returns Array of filter fields.
|
|
94
|
-
*/
|
|
95
|
-
_getFilterFieldsForModel(model) {
|
|
96
|
-
for (const path of this._paths) {
|
|
97
|
-
if (path.model.collection.name === model.collection.name) {
|
|
98
|
-
// Assuming filters are defined in the path; adjust as needed
|
|
99
|
-
return path.filters ? Object.keys(path.filters) : [];
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return [];
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Builds execution parameters for the query builder.
|
|
106
|
-
* @param params - Parsed query parameters.
|
|
107
|
-
* @returns Execution parameters.
|
|
108
|
-
*/
|
|
109
|
-
_buildExecutionConfig(params) {
|
|
110
|
-
const { id, limit, offset } = params;
|
|
111
|
-
return {
|
|
112
|
-
isOne: Boolean(id),
|
|
113
|
-
limit: limit === 'full' ? undefined : parseInt(limit || '5', 10),
|
|
114
|
-
skip: parseInt(offset || '0', 10),
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Executes the query builder with the applied filters and execution parameters.
|
|
119
|
-
* @param req
|
|
120
|
-
* @param queryBuilder
|
|
121
|
-
* @returns
|
|
122
|
-
*/
|
|
123
|
-
async exec(req, queryBuilder) {
|
|
124
|
-
try {
|
|
125
|
-
const queryParams = this._parseFluentRequestQuery(req.query);
|
|
126
|
-
this._applyFilters(queryBuilder, queryParams);
|
|
127
|
-
const execConfig = this._buildExecutionConfig(queryParams);
|
|
128
|
-
return await queryBuilder.exec(execConfig);
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
console.error('[ERROR - QueryPatternExecutor]', err);
|
|
132
|
-
return new index_1.Codec({ data: [], meta: { total: 0 } }, 500);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
exports.FluentPatternExecutor = FluentPatternExecutor;
|
|
137
|
-
//# sourceMappingURL=fluent-pattern-executor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fluent-pattern-executor.js","sourceRoot":"","sources":["../../src/fluent-interface/fluent-pattern-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,166 +0,0 @@
|
|
|
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.FluentPatternHandler = void 0;
|
|
7
|
-
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
|
-
const types_1 = require("./types");
|
|
9
|
-
const index_1 = require("../core/index");
|
|
10
|
-
class FluentPatternHandler {
|
|
11
|
-
static _singleton;
|
|
12
|
-
_paths;
|
|
13
|
-
/**
|
|
14
|
-
* Constructor for QueryPatternExecutor.
|
|
15
|
-
* @param paths - Array of query pattern paths for filtering.
|
|
16
|
-
*/
|
|
17
|
-
constructor(paths = []) {
|
|
18
|
-
if (FluentPatternHandler._singleton) {
|
|
19
|
-
throw new Error('FluentPatternHandler is a singleton class. Use FluentPatternHandler.getInstance() to access the instance.');
|
|
20
|
-
}
|
|
21
|
-
this._paths = paths;
|
|
22
|
-
FluentPatternHandler._singleton = this;
|
|
23
|
-
}
|
|
24
|
-
static getInstance() {
|
|
25
|
-
if (FluentPatternHandler._singleton == undefined) {
|
|
26
|
-
throw new Error('FluentPatternHandler instance has not been created yet. Please create an instance before calling getInstance().');
|
|
27
|
-
}
|
|
28
|
-
return FluentPatternHandler._singleton;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Parses and validates query parameters from the request.
|
|
32
|
-
* @param query - The query object from the request.
|
|
33
|
-
* @returns Parsed query parameters.
|
|
34
|
-
*/
|
|
35
|
-
_parseFluentRequestQuery(query) {
|
|
36
|
-
const { filter, limit = '5', offset = '0', id, excluded: excludedJSON, ids: idsJSON } = query;
|
|
37
|
-
const queryKeys = Object.keys(types_1.fluentRequestQueryAttributes);
|
|
38
|
-
let filterFields = {};
|
|
39
|
-
for (const [key, value] of Object.entries(query)) {
|
|
40
|
-
if (queryKeys.includes(key))
|
|
41
|
-
continue;
|
|
42
|
-
if (value == undefined)
|
|
43
|
-
continue;
|
|
44
|
-
try {
|
|
45
|
-
filterFields[key] = typeof value === 'string' ? value : JSON.stringify(value);
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
filterFields[key] = String(value);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
let excluded;
|
|
52
|
-
if (excludedJSON) {
|
|
53
|
-
try {
|
|
54
|
-
excluded = JSON.parse(excludedJSON);
|
|
55
|
-
if (!Array.isArray(excluded))
|
|
56
|
-
throw new Error('Excluded must be an array');
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
console.warn('[QueryPatternExecutor] Invalid excluded parameter:', error);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
let ids;
|
|
63
|
-
if (idsJSON) {
|
|
64
|
-
try {
|
|
65
|
-
ids = JSON.parse(idsJSON);
|
|
66
|
-
if (!Array.isArray(ids))
|
|
67
|
-
throw new Error('Ids must be an array');
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
console.warn('[QueryPatternExecutor] Invalid ids parameter:', error);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return { filter, limit, offset, id, excluded, ids, filterFields };
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Applies filters to the query builder based on parsed parameters and options.
|
|
77
|
-
* @param queryBuilder - The QueryBuilder instance.
|
|
78
|
-
* @param params - Parsed query parameters.
|
|
79
|
-
* @param config - Query request configuration.
|
|
80
|
-
*/
|
|
81
|
-
_applyParameters(queryBuilder, params) {
|
|
82
|
-
const { id, ids, filter, excluded } = params;
|
|
83
|
-
if (id) {
|
|
84
|
-
queryBuilder.match({ _id: new mongoose_1.default.Types.ObjectId(id) });
|
|
85
|
-
}
|
|
86
|
-
else if (ids && ids.length > 0) {
|
|
87
|
-
const objectIds = ids.map((id) => new mongoose_1.default.Types.ObjectId(id));
|
|
88
|
-
queryBuilder.match({ _id: { $in: objectIds } });
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
// get allowed filter fields
|
|
92
|
-
const modelFilterFields = this._getFilterFieldsForModel(queryBuilder.getConfig().model);
|
|
93
|
-
// possible fields filtered by parameter "?filter="
|
|
94
|
-
if (filter && modelFilterFields.length > 0) {
|
|
95
|
-
const ors = modelFilterFields.map((field) => ({
|
|
96
|
-
[field]: { $regex: filter, $options: 'i' },
|
|
97
|
-
}));
|
|
98
|
-
queryBuilder.match({ $or: ors });
|
|
99
|
-
}
|
|
100
|
-
// custom filter, but only for allowed fields specified via query parameters (e.g. '?username=')
|
|
101
|
-
if (params.filterFields && Object.keys(params.filterFields).length > 0) {
|
|
102
|
-
for (const [field, value] of Object.entries(params.filterFields)) {
|
|
103
|
-
if (!modelFilterFields.includes(field)) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
const match = {};
|
|
107
|
-
match[field] = { $regex: value, $options: 'i' };
|
|
108
|
-
queryBuilder.match(match);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (excluded && excluded.length > 0) {
|
|
112
|
-
const objectIds = excluded.map((id) => new mongoose_1.default.Types.ObjectId(id));
|
|
113
|
-
queryBuilder.match({ _id: { $nin: objectIds } });
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Retrieves filter fields for the given model from the paths configuration.
|
|
119
|
-
* @param model - The Mongoose model.
|
|
120
|
-
* @returns Array of filter fields.
|
|
121
|
-
*/
|
|
122
|
-
_getFilterFieldsForModel(model) {
|
|
123
|
-
for (const path of this._paths) {
|
|
124
|
-
if (path.model.collection.name === model.collection.name) {
|
|
125
|
-
if (path.filters) {
|
|
126
|
-
return path.filters;
|
|
127
|
-
}
|
|
128
|
-
return [];
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return [];
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Builds execution parameters for the query builder.
|
|
135
|
-
* @param params - Parsed query parameters.
|
|
136
|
-
* @returns Execution parameters.
|
|
137
|
-
*/
|
|
138
|
-
_buildExecutionConfig(params) {
|
|
139
|
-
const { id, limit, offset } = params;
|
|
140
|
-
return {
|
|
141
|
-
isOne: Boolean(id),
|
|
142
|
-
limit: limit === 'full' ? undefined : parseInt(limit || '5', 10),
|
|
143
|
-
skip: parseInt(offset || '0', 10),
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Executes the query builder with the applied filters and execution parameters.
|
|
148
|
-
* @param req
|
|
149
|
-
* @param queryBuilder
|
|
150
|
-
* @returns
|
|
151
|
-
*/
|
|
152
|
-
async exec(req, queryBuilder) {
|
|
153
|
-
try {
|
|
154
|
-
const queryParams = this._parseFluentRequestQuery(req.query);
|
|
155
|
-
this._applyParameters(queryBuilder, queryParams);
|
|
156
|
-
const execConfig = this._buildExecutionConfig(queryParams);
|
|
157
|
-
return await queryBuilder.exec(execConfig);
|
|
158
|
-
}
|
|
159
|
-
catch (err) {
|
|
160
|
-
console.error('[ERROR - QueryPatternExecutor]', err);
|
|
161
|
-
return new index_1.Codec({ data: [], meta: { total: 0 } }, 500);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
exports.FluentPatternHandler = FluentPatternHandler;
|
|
166
|
-
//# sourceMappingURL=fluent-pattern-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fluent-pattern-handler.js","sourceRoot":"","sources":["../../src/fluent-interface/fluent-pattern-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./fluent-pattern-handler"), exports);
|
|
18
|
-
__exportStar(require("./types"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fluent-interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0CAAwB"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fluentRequestQueryAttributes = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Attributes of FluentRequestQuery used for validation and parsing.
|
|
6
|
-
*/
|
|
7
|
-
exports.fluentRequestQueryAttributes = {
|
|
8
|
-
id: '',
|
|
9
|
-
ids: '',
|
|
10
|
-
filter: '',
|
|
11
|
-
offset: '',
|
|
12
|
-
limit: '',
|
|
13
|
-
order: '',
|
|
14
|
-
excluded: '',
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fluent-interface/types.ts"],"names":[],"mappings":";;;AAoBA;;GAEG;AACU,QAAA,4BAA4B,GAAiC;IACxE,EAAE,EAAE,EAAE;IACN,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;CACb,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,qDAAmC;AACnC,2DAAyC;AACzC,+CAA6B;AAC7B,gDAA8B;AAC9B,wCAAsB;AACtB,0CAAwB;AACxB,8CAA4B"}
|
|
@@ -1,26 +0,0 @@
|
|
|
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.memoryFileUpload = exports.diskFileUpload = void 0;
|
|
7
|
-
const multer_1 = __importDefault(require("multer"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
|
-
const uploadDir = node_path_1.default.resolve(process.cwd(), 'src', 'files');
|
|
11
|
-
node_fs_1.default.mkdirSync(uploadDir, { recursive: true });
|
|
12
|
-
const sanitizeFilename = (name) => name.replace(/[^a-zA-Z0-9._-]/g, '_');
|
|
13
|
-
const diskStorage = multer_1.default.diskStorage({
|
|
14
|
-
destination: (_req, _file, next) => next(null, uploadDir),
|
|
15
|
-
filename: (_req, file, next) => {
|
|
16
|
-
const ext = node_path_1.default.extname(file.originalname);
|
|
17
|
-
const base = node_path_1.default.basename(file.originalname, ext);
|
|
18
|
-
const safe = sanitizeFilename(base);
|
|
19
|
-
const unique = Date.now() + '-' + Math.round(Math.random() * 1e9);
|
|
20
|
-
next(null, `${safe}-${unique}${ext}`);
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
const memoryStorage = multer_1.default.memoryStorage();
|
|
24
|
-
exports.diskFileUpload = (0, multer_1.default)({ storage: diskStorage });
|
|
25
|
-
exports.memoryFileUpload = (0, multer_1.default)({ storage: memoryStorage });
|
|
26
|
-
//# sourceMappingURL=file-storage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../../src/middleware/file-storage.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,0DAA6B;AAC7B,sDAAyB;AAEzB,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9D,iBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7C,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAEzF,MAAM,WAAW,GAAG,gBAAM,CAAC,WAAW,CAAC;IACrC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;IACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,gBAAM,CAAC,aAAa,EAAE,CAAC;AAEhC,QAAA,cAAc,GAAG,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AAClD,QAAA,gBAAgB,GAAG,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC"}
|
package/dist/middleware/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./file-storage"), exports);
|
|
18
|
-
__exportStar(require("./logger"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,2CAAyB"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requestLogger = requestLogger;
|
|
4
|
-
exports.errorLogger = errorLogger;
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
function requestLogger(req, res, next) {
|
|
7
|
-
res.on('finish', () => {
|
|
8
|
-
const now = new Date().toISOString();
|
|
9
|
-
let emoji = '';
|
|
10
|
-
if (res.statusCode >= 100 && res.statusCode < 200)
|
|
11
|
-
emoji = '💡';
|
|
12
|
-
else if (res.statusCode >= 200 && res.statusCode < 300)
|
|
13
|
-
emoji = '✅';
|
|
14
|
-
else if (res.statusCode >= 300 && res.statusCode < 400)
|
|
15
|
-
emoji = '🚦';
|
|
16
|
-
else if (res.statusCode == 401)
|
|
17
|
-
emoji = '🔁';
|
|
18
|
-
else if (res.statusCode >= 400 && res.statusCode < 500)
|
|
19
|
-
emoji = '⚠️';
|
|
20
|
-
else if (res.statusCode >= 500)
|
|
21
|
-
emoji = '🔥';
|
|
22
|
-
console.log(`${emoji} [${now}] ${req.method} ${req.originalUrl} - ${res.statusCode}`);
|
|
23
|
-
});
|
|
24
|
-
next();
|
|
25
|
-
}
|
|
26
|
-
function errorLogger(err, req, res, next) {
|
|
27
|
-
console.error(`🛑 [${(0, utils_1.getCurrentDateString)()}] Error in ${req.method} ${req.originalUrl}:`, err);
|
|
28
|
-
res.status(500).json();
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/middleware/logger.ts"],"names":[],"mappings":";;AAGA,sCAcC;AAED,kCAGC;AArBD,oCAAgD;AAEhD,SAAgB,aAAa,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IAC3E,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC;aAC3D,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG;YAAE,KAAK,GAAG,GAAG,CAAC;aAC/D,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC;aAChE,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC;aACxC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC;aAChE,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC;QAE7C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,IAAI,EAAE,CAAC;AACT,CAAC;AAED,SAAgB,WAAW,CAAC,GAAQ,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAkB;IAC1E,OAAO,CAAC,KAAK,CAAC,OAAO,IAAA,4BAAoB,GAAE,cAAc,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;IAChG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils/date.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getCurrentDateString = getCurrentDateString;
|
|
4
|
-
function getCurrentDateString() {
|
|
5
|
-
let date = new Date();
|
|
6
|
-
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=date.js.map
|
package/dist/utils/date.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";;AAAA,oDAGC;AAHD,SAAgB,oBAAoB;IAClC,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC5H,CAAC"}
|
package/dist/utils/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./date"), exports);
|
|
18
|
-
__exportStar(require("./mongo-relation"), exports);
|
|
19
|
-
__exportStar(require("./validation"), exports);
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,mDAAiC;AACjC,+CAA6B"}
|