express-model-binding 1.0.0 → 1.1.0
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/{BaseAdapter-BjvLQijd.d.mts → BaseAdapter-Dr9a8ZUY.d.mts} +17 -1
- package/dist/{BaseAdapter-BjvLQijd.d.ts → BaseAdapter-Dr9a8ZUY.d.ts} +17 -1
- package/dist/adapters/KnexAdapter.d.mts +1 -1
- package/dist/adapters/KnexAdapter.d.ts +1 -1
- package/dist/adapters/KnexAdapter.js +1 -257
- package/dist/adapters/KnexAdapter.mjs +1 -229
- package/dist/adapters/MongooseAdapter.d.mts +1 -1
- package/dist/adapters/MongooseAdapter.d.ts +1 -1
- package/dist/adapters/MongooseAdapter.js +1 -245
- package/dist/adapters/MongooseAdapter.mjs +1 -225
- package/dist/adapters/PrismaAdapter.d.mts +1 -1
- package/dist/adapters/PrismaAdapter.d.ts +1 -1
- package/dist/adapters/PrismaAdapter.js +1 -247
- package/dist/adapters/PrismaAdapter.mjs +1 -220
- package/dist/adapters/SequelizeAdapter.d.mts +1 -1
- package/dist/adapters/SequelizeAdapter.d.ts +1 -1
- package/dist/adapters/SequelizeAdapter.js +1 -280
- package/dist/adapters/SequelizeAdapter.mjs +1 -260
- package/dist/adapters/TypeORMAdapter.d.mts +1 -1
- package/dist/adapters/TypeORMAdapter.d.ts +1 -1
- package/dist/adapters/TypeORMAdapter.js +1 -294
- package/dist/adapters/TypeORMAdapter.mjs +1 -267
- package/dist/chunk-7I3EYD6K.js +1 -0
- package/dist/chunk-7OR75DD2.mjs +1 -0
- package/dist/chunk-A7LUHNSI.mjs +1 -0
- package/dist/chunk-B3DBSP2J.mjs +1 -0
- package/dist/chunk-CKT6LD2K.js +1 -0
- package/dist/chunk-DBYMXDVA.mjs +1 -0
- package/dist/chunk-EEPSARTF.js +1 -0
- package/dist/chunk-ISSVD3WP.js +1 -0
- package/dist/chunk-LLYCNTZ7.mjs +1 -0
- package/dist/chunk-OKPAWWZN.js +1 -0
- package/dist/chunk-Z6WU7X3A.mjs +1 -0
- package/dist/chunk-ZJ2WW53U.js +1 -0
- package/dist/index.d.mts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +1 -1514
- package/dist/index.mjs +1 -1450
- package/package.json +5 -3
- package/dist/adapters/KnexAdapter.js.map +0 -1
- package/dist/adapters/KnexAdapter.mjs.map +0 -1
- package/dist/adapters/MongooseAdapter.js.map +0 -1
- package/dist/adapters/MongooseAdapter.mjs.map +0 -1
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.mjs.map +0 -1
- package/dist/adapters/SequelizeAdapter.js.map +0 -1
- package/dist/adapters/SequelizeAdapter.mjs.map +0 -1
- package/dist/adapters/TypeORMAdapter.js.map +0 -1
- package/dist/adapters/TypeORMAdapter.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -1,245 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/adapters/MongooseAdapter.ts
|
|
21
|
-
var MongooseAdapter_exports = {};
|
|
22
|
-
__export(MongooseAdapter_exports, {
|
|
23
|
-
MongooseAdapter: () => MongooseAdapter
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(MongooseAdapter_exports);
|
|
26
|
-
|
|
27
|
-
// src/errors/index.ts
|
|
28
|
-
var BindingError = class extends Error {
|
|
29
|
-
constructor(message, originalError) {
|
|
30
|
-
super(message);
|
|
31
|
-
this.name = "BindingError";
|
|
32
|
-
this.originalError = originalError;
|
|
33
|
-
Error.captureStackTrace(this, this.constructor);
|
|
34
|
-
}
|
|
35
|
-
toJSON() {
|
|
36
|
-
return {
|
|
37
|
-
name: this.name,
|
|
38
|
-
message: this.message,
|
|
39
|
-
originalError: this.originalError?.message
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
var InvalidModelError = class extends Error {
|
|
44
|
-
constructor(message, model) {
|
|
45
|
-
super(message);
|
|
46
|
-
this.name = "InvalidModelError";
|
|
47
|
-
this.model = model;
|
|
48
|
-
Error.captureStackTrace(this, this.constructor);
|
|
49
|
-
}
|
|
50
|
-
toJSON() {
|
|
51
|
-
return {
|
|
52
|
-
name: this.name,
|
|
53
|
-
message: this.message,
|
|
54
|
-
model: typeof this.model === "string" ? this.model : String(this.model)
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// src/core/BaseAdapter.ts
|
|
60
|
-
var BaseAdapter = class {
|
|
61
|
-
transformValue(_model, _key, value) {
|
|
62
|
-
if (/^\d+$/.test(value)) {
|
|
63
|
-
const num = parseInt(value, 10);
|
|
64
|
-
if (!isNaN(num) && Number.isSafeInteger(num)) {
|
|
65
|
-
return num;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return value;
|
|
69
|
-
}
|
|
70
|
-
supportsSoftDeletes(_model) {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
getModelMetadata(model) {
|
|
74
|
-
return {
|
|
75
|
-
name: this.getModelName(model),
|
|
76
|
-
primaryKey: this.getPrimaryKeyName(model),
|
|
77
|
-
softDeletes: this.supportsSoftDeletes(model),
|
|
78
|
-
adapter: this.name
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
validateModel(model) {
|
|
82
|
-
if (!this.isValidModel(model)) {
|
|
83
|
-
throw new InvalidModelError(`Invalid model for ${this.name} adapter`, model);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
getModelName(model) {
|
|
87
|
-
if (typeof model === "string") {
|
|
88
|
-
return model;
|
|
89
|
-
}
|
|
90
|
-
if (model && typeof model === "object") {
|
|
91
|
-
const obj = model;
|
|
92
|
-
if (typeof obj.name === "string") return obj.name;
|
|
93
|
-
if (typeof obj.modelName === "string") return obj.modelName;
|
|
94
|
-
if (typeof obj.tableName === "string") return obj.tableName;
|
|
95
|
-
}
|
|
96
|
-
if (model && typeof model === "function") {
|
|
97
|
-
return model.name || "Unknown";
|
|
98
|
-
}
|
|
99
|
-
return "Unknown";
|
|
100
|
-
}
|
|
101
|
-
applySoftDeleteFilter(queryBuilder, _options) {
|
|
102
|
-
return queryBuilder;
|
|
103
|
-
}
|
|
104
|
-
applyIncludes(queryBuilder, _includes) {
|
|
105
|
-
return queryBuilder;
|
|
106
|
-
}
|
|
107
|
-
applySelect(queryBuilder, _select) {
|
|
108
|
-
return queryBuilder;
|
|
109
|
-
}
|
|
110
|
-
applyWhereConditions(queryBuilder, _where) {
|
|
111
|
-
return queryBuilder;
|
|
112
|
-
}
|
|
113
|
-
applyCustomQuery(queryBuilder, queryFn) {
|
|
114
|
-
if (queryFn) {
|
|
115
|
-
return queryFn(queryBuilder);
|
|
116
|
-
}
|
|
117
|
-
return queryBuilder;
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
// src/utils/validators.ts
|
|
122
|
-
var OBJECT_ID_REGEX = /^[0-9a-f]{24}$/i;
|
|
123
|
-
function isObjectId(value) {
|
|
124
|
-
return OBJECT_ID_REGEX.test(value);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// src/adapters/MongooseAdapter.ts
|
|
128
|
-
function isSchemaPathType(value) {
|
|
129
|
-
return typeof value === "object" && value !== null && "instance" in value;
|
|
130
|
-
}
|
|
131
|
-
var MongooseAdapter = class extends BaseAdapter {
|
|
132
|
-
constructor() {
|
|
133
|
-
super(...arguments);
|
|
134
|
-
this.name = "mongoose";
|
|
135
|
-
}
|
|
136
|
-
async findByKey(model, key, value, options = {}) {
|
|
137
|
-
this.validateModel(model);
|
|
138
|
-
try {
|
|
139
|
-
const transformedValue = this.transformValue(model, key, value);
|
|
140
|
-
let query = model.findOne({ [key]: transformedValue });
|
|
141
|
-
if (options.select && options.select.length > 0) {
|
|
142
|
-
query = query.select(options.select.join(" "));
|
|
143
|
-
}
|
|
144
|
-
if (options.include) {
|
|
145
|
-
query = this.applyIncludes(query, options.include);
|
|
146
|
-
}
|
|
147
|
-
if (options.where) {
|
|
148
|
-
Object.entries(options.where).forEach(([field, val]) => {
|
|
149
|
-
query = query.where(field).equals(val);
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
if (options.query) {
|
|
153
|
-
query = this.applyCustomQuery(query, options.query);
|
|
154
|
-
}
|
|
155
|
-
const result = await query.exec();
|
|
156
|
-
if (result && this.supportsSoftDeletes(model)) {
|
|
157
|
-
const doc = result;
|
|
158
|
-
const isDeleted = doc.deleted || doc.deletedAt || doc.isDeleted;
|
|
159
|
-
if (!options.withTrashed && !options.onlyTrashed && isDeleted) {
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
|
-
if (options.onlyTrashed && !isDeleted) {
|
|
163
|
-
return null;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return result;
|
|
167
|
-
} catch (error) {
|
|
168
|
-
throw new BindingError(
|
|
169
|
-
`Failed to fetch ${model.modelName}: ${error.message}`,
|
|
170
|
-
error
|
|
171
|
-
);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
getPrimaryKeyName(_model) {
|
|
175
|
-
return "_id";
|
|
176
|
-
}
|
|
177
|
-
isValidModel(model) {
|
|
178
|
-
if (!model || typeof model !== "function") {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
const m = model;
|
|
182
|
-
return typeof m.findOne === "function" && typeof m.modelName === "string" && m.schema !== void 0;
|
|
183
|
-
}
|
|
184
|
-
transformValue(model, key, value) {
|
|
185
|
-
if (key === "_id" || key === "id") {
|
|
186
|
-
if (isObjectId(value)) {
|
|
187
|
-
try {
|
|
188
|
-
const mongoose = require("mongoose");
|
|
189
|
-
return new mongoose.Types.ObjectId(value);
|
|
190
|
-
} catch {
|
|
191
|
-
return value;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return value;
|
|
195
|
-
}
|
|
196
|
-
const schemaType = model.schema.path(key);
|
|
197
|
-
if (isSchemaPathType(schemaType) && schemaType.instance === "Number") {
|
|
198
|
-
const num = parseInt(value, 10);
|
|
199
|
-
if (!isNaN(num)) {
|
|
200
|
-
return num;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return value;
|
|
204
|
-
}
|
|
205
|
-
supportsSoftDeletes(model) {
|
|
206
|
-
const schema = model.schema;
|
|
207
|
-
return schema.path("deleted") !== void 0 || schema.path("deletedAt") !== void 0 || schema.path("isDeleted") !== void 0;
|
|
208
|
-
}
|
|
209
|
-
getModelMetadata(model) {
|
|
210
|
-
const schema = model.schema;
|
|
211
|
-
const paths = Object.keys(schema.paths);
|
|
212
|
-
return {
|
|
213
|
-
name: model.modelName,
|
|
214
|
-
primaryKey: "_id",
|
|
215
|
-
tableName: model.collection.name,
|
|
216
|
-
softDeletes: this.supportsSoftDeletes(model),
|
|
217
|
-
fields: paths,
|
|
218
|
-
adapter: this.name
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
applyIncludes(query, includes) {
|
|
222
|
-
if (Array.isArray(includes)) {
|
|
223
|
-
includes.forEach((relation) => {
|
|
224
|
-
query = query.populate(relation);
|
|
225
|
-
});
|
|
226
|
-
} else {
|
|
227
|
-
Object.entries(includes).forEach(([relation, options]) => {
|
|
228
|
-
if (typeof options === "boolean" && options) {
|
|
229
|
-
query = query.populate(relation);
|
|
230
|
-
} else if (typeof options === "object" && options !== null) {
|
|
231
|
-
query = query.populate({
|
|
232
|
-
path: relation,
|
|
233
|
-
...options
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
return query;
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
242
|
-
0 && (module.exports = {
|
|
243
|
-
MongooseAdapter
|
|
244
|
-
});
|
|
245
|
-
//# sourceMappingURL=MongooseAdapter.js.map
|
|
1
|
+
'use strict';var chunkCKT6LD2K_js=require('../chunk-CKT6LD2K.js');require('../chunk-7I3EYD6K.js');Object.defineProperty(exports,"MongooseAdapter",{enumerable:true,get:function(){return chunkCKT6LD2K_js.a}});
|
|
@@ -1,225 +1 @@
|
|
|
1
|
-
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/errors/index.ts
|
|
9
|
-
var BindingError = class extends Error {
|
|
10
|
-
constructor(message, originalError) {
|
|
11
|
-
super(message);
|
|
12
|
-
this.name = "BindingError";
|
|
13
|
-
this.originalError = originalError;
|
|
14
|
-
Error.captureStackTrace(this, this.constructor);
|
|
15
|
-
}
|
|
16
|
-
toJSON() {
|
|
17
|
-
return {
|
|
18
|
-
name: this.name,
|
|
19
|
-
message: this.message,
|
|
20
|
-
originalError: this.originalError?.message
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
var InvalidModelError = class extends Error {
|
|
25
|
-
constructor(message, model) {
|
|
26
|
-
super(message);
|
|
27
|
-
this.name = "InvalidModelError";
|
|
28
|
-
this.model = model;
|
|
29
|
-
Error.captureStackTrace(this, this.constructor);
|
|
30
|
-
}
|
|
31
|
-
toJSON() {
|
|
32
|
-
return {
|
|
33
|
-
name: this.name,
|
|
34
|
-
message: this.message,
|
|
35
|
-
model: typeof this.model === "string" ? this.model : String(this.model)
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
// src/core/BaseAdapter.ts
|
|
41
|
-
var BaseAdapter = class {
|
|
42
|
-
transformValue(_model, _key, value) {
|
|
43
|
-
if (/^\d+$/.test(value)) {
|
|
44
|
-
const num = parseInt(value, 10);
|
|
45
|
-
if (!isNaN(num) && Number.isSafeInteger(num)) {
|
|
46
|
-
return num;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return value;
|
|
50
|
-
}
|
|
51
|
-
supportsSoftDeletes(_model) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
getModelMetadata(model) {
|
|
55
|
-
return {
|
|
56
|
-
name: this.getModelName(model),
|
|
57
|
-
primaryKey: this.getPrimaryKeyName(model),
|
|
58
|
-
softDeletes: this.supportsSoftDeletes(model),
|
|
59
|
-
adapter: this.name
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
validateModel(model) {
|
|
63
|
-
if (!this.isValidModel(model)) {
|
|
64
|
-
throw new InvalidModelError(`Invalid model for ${this.name} adapter`, model);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
getModelName(model) {
|
|
68
|
-
if (typeof model === "string") {
|
|
69
|
-
return model;
|
|
70
|
-
}
|
|
71
|
-
if (model && typeof model === "object") {
|
|
72
|
-
const obj = model;
|
|
73
|
-
if (typeof obj.name === "string") return obj.name;
|
|
74
|
-
if (typeof obj.modelName === "string") return obj.modelName;
|
|
75
|
-
if (typeof obj.tableName === "string") return obj.tableName;
|
|
76
|
-
}
|
|
77
|
-
if (model && typeof model === "function") {
|
|
78
|
-
return model.name || "Unknown";
|
|
79
|
-
}
|
|
80
|
-
return "Unknown";
|
|
81
|
-
}
|
|
82
|
-
applySoftDeleteFilter(queryBuilder, _options) {
|
|
83
|
-
return queryBuilder;
|
|
84
|
-
}
|
|
85
|
-
applyIncludes(queryBuilder, _includes) {
|
|
86
|
-
return queryBuilder;
|
|
87
|
-
}
|
|
88
|
-
applySelect(queryBuilder, _select) {
|
|
89
|
-
return queryBuilder;
|
|
90
|
-
}
|
|
91
|
-
applyWhereConditions(queryBuilder, _where) {
|
|
92
|
-
return queryBuilder;
|
|
93
|
-
}
|
|
94
|
-
applyCustomQuery(queryBuilder, queryFn) {
|
|
95
|
-
if (queryFn) {
|
|
96
|
-
return queryFn(queryBuilder);
|
|
97
|
-
}
|
|
98
|
-
return queryBuilder;
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// src/utils/validators.ts
|
|
103
|
-
var OBJECT_ID_REGEX = /^[0-9a-f]{24}$/i;
|
|
104
|
-
function isObjectId(value) {
|
|
105
|
-
return OBJECT_ID_REGEX.test(value);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// src/adapters/MongooseAdapter.ts
|
|
109
|
-
function isSchemaPathType(value) {
|
|
110
|
-
return typeof value === "object" && value !== null && "instance" in value;
|
|
111
|
-
}
|
|
112
|
-
var MongooseAdapter = class extends BaseAdapter {
|
|
113
|
-
constructor() {
|
|
114
|
-
super(...arguments);
|
|
115
|
-
this.name = "mongoose";
|
|
116
|
-
}
|
|
117
|
-
async findByKey(model, key, value, options = {}) {
|
|
118
|
-
this.validateModel(model);
|
|
119
|
-
try {
|
|
120
|
-
const transformedValue = this.transformValue(model, key, value);
|
|
121
|
-
let query = model.findOne({ [key]: transformedValue });
|
|
122
|
-
if (options.select && options.select.length > 0) {
|
|
123
|
-
query = query.select(options.select.join(" "));
|
|
124
|
-
}
|
|
125
|
-
if (options.include) {
|
|
126
|
-
query = this.applyIncludes(query, options.include);
|
|
127
|
-
}
|
|
128
|
-
if (options.where) {
|
|
129
|
-
Object.entries(options.where).forEach(([field, val]) => {
|
|
130
|
-
query = query.where(field).equals(val);
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
if (options.query) {
|
|
134
|
-
query = this.applyCustomQuery(query, options.query);
|
|
135
|
-
}
|
|
136
|
-
const result = await query.exec();
|
|
137
|
-
if (result && this.supportsSoftDeletes(model)) {
|
|
138
|
-
const doc = result;
|
|
139
|
-
const isDeleted = doc.deleted || doc.deletedAt || doc.isDeleted;
|
|
140
|
-
if (!options.withTrashed && !options.onlyTrashed && isDeleted) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
if (options.onlyTrashed && !isDeleted) {
|
|
144
|
-
return null;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return result;
|
|
148
|
-
} catch (error) {
|
|
149
|
-
throw new BindingError(
|
|
150
|
-
`Failed to fetch ${model.modelName}: ${error.message}`,
|
|
151
|
-
error
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
getPrimaryKeyName(_model) {
|
|
156
|
-
return "_id";
|
|
157
|
-
}
|
|
158
|
-
isValidModel(model) {
|
|
159
|
-
if (!model || typeof model !== "function") {
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
const m = model;
|
|
163
|
-
return typeof m.findOne === "function" && typeof m.modelName === "string" && m.schema !== void 0;
|
|
164
|
-
}
|
|
165
|
-
transformValue(model, key, value) {
|
|
166
|
-
if (key === "_id" || key === "id") {
|
|
167
|
-
if (isObjectId(value)) {
|
|
168
|
-
try {
|
|
169
|
-
const mongoose = __require("mongoose");
|
|
170
|
-
return new mongoose.Types.ObjectId(value);
|
|
171
|
-
} catch {
|
|
172
|
-
return value;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return value;
|
|
176
|
-
}
|
|
177
|
-
const schemaType = model.schema.path(key);
|
|
178
|
-
if (isSchemaPathType(schemaType) && schemaType.instance === "Number") {
|
|
179
|
-
const num = parseInt(value, 10);
|
|
180
|
-
if (!isNaN(num)) {
|
|
181
|
-
return num;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
return value;
|
|
185
|
-
}
|
|
186
|
-
supportsSoftDeletes(model) {
|
|
187
|
-
const schema = model.schema;
|
|
188
|
-
return schema.path("deleted") !== void 0 || schema.path("deletedAt") !== void 0 || schema.path("isDeleted") !== void 0;
|
|
189
|
-
}
|
|
190
|
-
getModelMetadata(model) {
|
|
191
|
-
const schema = model.schema;
|
|
192
|
-
const paths = Object.keys(schema.paths);
|
|
193
|
-
return {
|
|
194
|
-
name: model.modelName,
|
|
195
|
-
primaryKey: "_id",
|
|
196
|
-
tableName: model.collection.name,
|
|
197
|
-
softDeletes: this.supportsSoftDeletes(model),
|
|
198
|
-
fields: paths,
|
|
199
|
-
adapter: this.name
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
applyIncludes(query, includes) {
|
|
203
|
-
if (Array.isArray(includes)) {
|
|
204
|
-
includes.forEach((relation) => {
|
|
205
|
-
query = query.populate(relation);
|
|
206
|
-
});
|
|
207
|
-
} else {
|
|
208
|
-
Object.entries(includes).forEach(([relation, options]) => {
|
|
209
|
-
if (typeof options === "boolean" && options) {
|
|
210
|
-
query = query.populate(relation);
|
|
211
|
-
} else if (typeof options === "object" && options !== null) {
|
|
212
|
-
query = query.populate({
|
|
213
|
-
path: relation,
|
|
214
|
-
...options
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
return query;
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
export {
|
|
223
|
-
MongooseAdapter
|
|
224
|
-
};
|
|
225
|
-
//# sourceMappingURL=MongooseAdapter.mjs.map
|
|
1
|
+
export{a as MongooseAdapter}from'../chunk-B3DBSP2J.mjs';import'../chunk-DBYMXDVA.mjs';
|