@akanjs/server 0.0.97 → 0.0.99
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/index.cjs +21 -0
- package/index.js +1 -21
- package/package.json +4 -4
- package/src/boot.cjs +200 -0
- package/src/boot.js +84 -94
- package/src/controller.cjs +102 -0
- package/src/controller.js +70 -63
- package/src/gql.cjs +152 -0
- package/src/gql.js +35 -64
- package/src/index.cjs +39 -0
- package/src/index.js +10 -39
- package/src/module.cjs +255 -0
- package/src/module.js +77 -103
- package/src/processor.cjs +92 -0
- package/src/processor.js +22 -41
- package/src/resolver.cjs +145 -0
- package/src/resolver.js +49 -76
- package/src/{schema.mjs → schema.cjs} +78 -54
- package/src/schema.js +54 -78
- package/src/{searchDaemon.mjs → searchDaemon.cjs} +45 -29
- package/src/searchDaemon.js +29 -45
- package/src/types.cjs +15 -0
- package/src/types.js +0 -15
- package/src/websocket.cjs +146 -0
- package/src/websocket.js +33 -55
- package/index.mjs +0 -1
- package/src/boot.mjs +0 -190
- package/src/controller.mjs +0 -109
- package/src/gql.mjs +0 -123
- package/src/index.mjs +0 -10
- package/src/module.mjs +0 -229
- package/src/processor.mjs +0 -73
- package/src/resolver.mjs +0 -118
- package/src/types.mjs +0 -0
- package/src/websocket.mjs +0 -124
|
@@ -1,19 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var schema_exports = {};
|
|
19
|
+
__export(schema_exports, {
|
|
20
|
+
addSchema: () => addSchema,
|
|
21
|
+
schemaOf: () => schemaOf
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(schema_exports);
|
|
24
|
+
var import_base = require("@akanjs/base");
|
|
25
|
+
var import_common = require("@akanjs/common");
|
|
26
|
+
var import_constant = require("@akanjs/constant");
|
|
27
|
+
var import_document = require("@akanjs/document");
|
|
28
|
+
var import_signal = require("@akanjs/signal");
|
|
29
|
+
var import_mongoose = require("mongoose");
|
|
30
|
+
var import__ = require(".");
|
|
8
31
|
class ScalarSchemaStorage {
|
|
9
32
|
}
|
|
10
33
|
class SchemaStorage {
|
|
11
34
|
}
|
|
12
35
|
const scalarMongoTypeMap = /* @__PURE__ */ new Map([
|
|
13
|
-
[ID, ObjectId],
|
|
14
|
-
[Int, Number],
|
|
15
|
-
[Float, Number],
|
|
16
|
-
[JSON, Schema.Types.Mixed],
|
|
36
|
+
[import_base.ID, import_document.ObjectId],
|
|
37
|
+
[import_base.Int, Number],
|
|
38
|
+
[import_base.Float, Number],
|
|
39
|
+
[import_base.JSON, import_mongoose.Schema.Types.Mixed],
|
|
17
40
|
[Map, Map],
|
|
18
41
|
[String, String],
|
|
19
42
|
[Boolean, Boolean],
|
|
@@ -22,13 +45,13 @@ const scalarMongoTypeMap = /* @__PURE__ */ new Map([
|
|
|
22
45
|
const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
23
46
|
if (["id", "createdAt", "updatedAt"].includes(fieldMeta.key) || fieldMeta.fieldType === "resolve")
|
|
24
47
|
return;
|
|
25
|
-
const type = fieldMeta.isClass ? fieldMeta.isScalar ? createSchema(fieldMeta.modelRef) : ObjectId : scalarMongoTypeMap.get(fieldMeta.modelRef) ?? fieldMeta.modelRef;
|
|
48
|
+
const type = fieldMeta.isClass ? fieldMeta.isScalar ? createSchema(fieldMeta.modelRef) : import_document.ObjectId : scalarMongoTypeMap.get(fieldMeta.modelRef) ?? fieldMeta.modelRef;
|
|
26
49
|
let prop = {};
|
|
27
50
|
if (fieldMeta.optArrDepth) {
|
|
28
51
|
prop.type = type;
|
|
29
52
|
prop.required = true;
|
|
30
53
|
if (fieldMeta.isClass && !fieldMeta.refPath)
|
|
31
|
-
prop.ref = getClassMeta(fieldMeta.modelRef).refName;
|
|
54
|
+
prop.ref = (0, import_constant.getClassMeta)(fieldMeta.modelRef).refName;
|
|
32
55
|
if (fieldMeta.refPath)
|
|
33
56
|
prop.refPath = fieldMeta.refPath;
|
|
34
57
|
if (typeof fieldMeta.min === "number")
|
|
@@ -43,20 +66,20 @@ const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
|
43
66
|
prop.maxlength = fieldMeta.maxlength;
|
|
44
67
|
if (fieldMeta.validate) {
|
|
45
68
|
prop.validate = function(value) {
|
|
46
|
-
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ? dayjs() : value, this) ?? true;
|
|
69
|
+
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ? (0, import_base.dayjs)() : value, this) ?? true;
|
|
47
70
|
};
|
|
48
71
|
}
|
|
49
|
-
prop = { type: arraiedModel(prop, fieldMeta.optArrDepth), default: [], required: true };
|
|
72
|
+
prop = { type: (0, import_base.arraiedModel)(prop, fieldMeta.optArrDepth), default: [], required: true };
|
|
50
73
|
if (fieldMeta.modelRef.prototype === Date.prototype) {
|
|
51
|
-
prop.get = (dates) => dates.map((date) => dayjs(date));
|
|
74
|
+
prop.get = (dates) => dates.map((date) => (0, import_base.dayjs)(date));
|
|
52
75
|
prop.set = (days) => days.map((day) => day.toDate());
|
|
53
76
|
}
|
|
54
|
-
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype === ID.prototype) {
|
|
77
|
+
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype === import_base.ID.prototype) {
|
|
55
78
|
prop.get = (ids) => ids.map((id) => id.toString());
|
|
56
|
-
prop.set = (ids) => ids.map((id) => new Types.ObjectId(id));
|
|
79
|
+
prop.set = (ids) => ids.map((id) => new import_mongoose.Types.ObjectId(id));
|
|
57
80
|
}
|
|
58
81
|
} else {
|
|
59
|
-
prop.type = arraiedModel(type, fieldMeta.arrDepth);
|
|
82
|
+
prop.type = (0, import_base.arraiedModel)(type, fieldMeta.arrDepth);
|
|
60
83
|
prop.required = !fieldMeta.nullable;
|
|
61
84
|
if (fieldMeta.isMap) {
|
|
62
85
|
prop.of = scalarMongoTypeMap.get(fieldMeta.of) ?? createSchema(fieldMeta.of);
|
|
@@ -67,15 +90,15 @@ const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
|
67
90
|
if (typeof fieldMeta.default === "function")
|
|
68
91
|
prop.default = function() {
|
|
69
92
|
const def = fieldMeta.default(this);
|
|
70
|
-
return isDayjs(def) ? def.toDate() : def;
|
|
93
|
+
return (0, import_common.isDayjs)(def) ? def.toDate() : def;
|
|
71
94
|
};
|
|
72
95
|
else
|
|
73
|
-
prop.default = isDayjs(fieldMeta.default) ? fieldMeta.default.toDate() : fieldMeta.default instanceof Enum ? [...fieldMeta.default.values] : fieldMeta.default;
|
|
96
|
+
prop.default = (0, import_common.isDayjs)(fieldMeta.default) ? fieldMeta.default.toDate() : fieldMeta.default instanceof import_base.Enum ? [...fieldMeta.default.values] : fieldMeta.default;
|
|
74
97
|
}
|
|
75
98
|
if (typeof fieldMeta.immutable !== "undefined")
|
|
76
99
|
prop.immutable = fieldMeta.immutable;
|
|
77
100
|
if (fieldMeta.isClass && !fieldMeta.refPath)
|
|
78
|
-
prop.ref = getClassMeta(fieldMeta.modelRef).refName;
|
|
101
|
+
prop.ref = (0, import_constant.getClassMeta)(fieldMeta.modelRef).refName;
|
|
79
102
|
if (fieldMeta.refPath)
|
|
80
103
|
prop.refPath = fieldMeta.refPath;
|
|
81
104
|
if (typeof fieldMeta.min === "number")
|
|
@@ -95,60 +118,60 @@ const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
|
95
118
|
prop.set = (v) => v === null ? void 0 : v;
|
|
96
119
|
}
|
|
97
120
|
if (fieldMeta.modelRef.prototype === Date.prototype) {
|
|
98
|
-
prop.get = (date) => date ? dayjs(date) : void 0;
|
|
99
|
-
prop.set = (day) => day ? dayjs(day).toDate() : void 0;
|
|
121
|
+
prop.get = (date) => date ? (0, import_base.dayjs)(date) : void 0;
|
|
122
|
+
prop.set = (day) => day ? (0, import_base.dayjs)(day).toDate() : void 0;
|
|
100
123
|
}
|
|
101
|
-
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype === ID.prototype) {
|
|
124
|
+
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype === import_base.ID.prototype) {
|
|
102
125
|
prop.get = (id) => id ? id.toString() : void 0;
|
|
103
|
-
prop.set = (id) => id ? new Types.ObjectId(id) : void 0;
|
|
126
|
+
prop.set = (id) => id ? new import_mongoose.Types.ObjectId(id) : void 0;
|
|
104
127
|
}
|
|
105
128
|
if (fieldMeta.isClass && fieldMeta.isScalar && fieldMeta.default === null && !fieldMeta.nullable) {
|
|
106
|
-
prop.default = makeDefault(fieldMeta.modelRef);
|
|
129
|
+
prop.default = (0, import_signal.makeDefault)(fieldMeta.modelRef);
|
|
107
130
|
}
|
|
108
131
|
if (fieldMeta.validate) {
|
|
109
132
|
prop.validate = function(value) {
|
|
110
|
-
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ? dayjs() : value, this) ?? true;
|
|
133
|
+
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ? (0, import_base.dayjs)() : value, this) ?? true;
|
|
111
134
|
};
|
|
112
135
|
}
|
|
113
136
|
}
|
|
114
137
|
schemaProps[fieldMeta.key] = prop;
|
|
115
138
|
};
|
|
116
139
|
const createSchema = (modelRef) => {
|
|
117
|
-
const classMeta = getClassMeta(modelRef);
|
|
140
|
+
const classMeta = (0, import_constant.getClassMeta)(modelRef);
|
|
118
141
|
const schemaMeta = Reflect.getMetadata(classMeta.refName, ScalarSchemaStorage.prototype);
|
|
119
142
|
if (schemaMeta)
|
|
120
143
|
return schemaMeta;
|
|
121
|
-
const fieldMetas = getFieldMetas(modelRef);
|
|
144
|
+
const fieldMetas = (0, import_constant.getFieldMetas)(modelRef);
|
|
122
145
|
const schemaProps = {};
|
|
123
146
|
fieldMetas.forEach((fieldMeta) => {
|
|
124
147
|
applyMongoProp(schemaProps, fieldMeta);
|
|
125
148
|
});
|
|
126
|
-
const schema = new Schema(schemaProps);
|
|
149
|
+
const schema = new import_mongoose.Schema(schemaProps);
|
|
127
150
|
Reflect.defineMetadata(classMeta.refName, schema, ScalarSchemaStorage.prototype);
|
|
128
151
|
return schema;
|
|
129
152
|
};
|
|
130
153
|
const schemaOf = (modelRef, docRef, middleware) => {
|
|
131
|
-
const classMeta = getClassMeta(docRef);
|
|
154
|
+
const classMeta = (0, import_constant.getClassMeta)(docRef);
|
|
132
155
|
const schemaMeta = Reflect.getMetadata(classMeta.refName, SchemaStorage.prototype);
|
|
133
156
|
if (schemaMeta)
|
|
134
157
|
return schemaMeta;
|
|
135
|
-
const fieldMetas = getFieldMetas(docRef);
|
|
158
|
+
const fieldMetas = (0, import_constant.getFieldMetas)(docRef);
|
|
136
159
|
const schemaProps = {
|
|
137
160
|
createdAt: {
|
|
138
161
|
type: Date,
|
|
139
|
-
get: (date) => date ? dayjs(date) : date,
|
|
140
|
-
set: (day) => day ? dayjs(day).toDate() : day
|
|
162
|
+
get: (date) => date ? (0, import_base.dayjs)(date) : date,
|
|
163
|
+
set: (day) => day ? (0, import_base.dayjs)(day).toDate() : day
|
|
141
164
|
},
|
|
142
165
|
updatedAt: {
|
|
143
166
|
type: Date,
|
|
144
|
-
get: (date) => date ? dayjs(date) : date,
|
|
145
|
-
set: (day) => day ? dayjs(day).toDate() : day
|
|
167
|
+
get: (date) => date ? (0, import_base.dayjs)(date) : date,
|
|
168
|
+
set: (day) => day ? (0, import_base.dayjs)(day).toDate() : day
|
|
146
169
|
}
|
|
147
170
|
};
|
|
148
171
|
fieldMetas.forEach((fieldMeta) => {
|
|
149
172
|
applyMongoProp(schemaProps, fieldMeta);
|
|
150
173
|
});
|
|
151
|
-
const schema = new Schema(schemaProps, getDefaultSchemaOptions());
|
|
174
|
+
const schema = new import_mongoose.Schema(schemaProps, (0, import_document.getDefaultSchemaOptions)());
|
|
152
175
|
schema.methods.refresh = async function() {
|
|
153
176
|
Object.assign(this, await this.constructor.findById(this._id));
|
|
154
177
|
return this;
|
|
@@ -173,36 +196,36 @@ const schemaOf = (modelRef, docRef, middleware) => {
|
|
|
173
196
|
return schema;
|
|
174
197
|
};
|
|
175
198
|
const addSchema = (modelRef, docRef, inputRef, middleware) => {
|
|
176
|
-
const originDocClassMeta = getClassMeta(docRef);
|
|
177
|
-
const originInputClassMeta = getClassMeta(inputRef);
|
|
178
|
-
const originDoc = getFullModelRef(originDocClassMeta.refName);
|
|
179
|
-
const originInput = getInputModelRef(originInputClassMeta.refName);
|
|
180
|
-
const classMeta = getClassMeta(docRef);
|
|
199
|
+
const originDocClassMeta = (0, import_constant.getClassMeta)(docRef);
|
|
200
|
+
const originInputClassMeta = (0, import_constant.getClassMeta)(inputRef);
|
|
201
|
+
const originDoc = (0, import_constant.getFullModelRef)(originDocClassMeta.refName);
|
|
202
|
+
const originInput = (0, import_constant.getInputModelRef)(originInputClassMeta.refName);
|
|
203
|
+
const classMeta = (0, import_constant.getClassMeta)(docRef);
|
|
181
204
|
const modelSchema = Reflect.getMetadata(classMeta.refName, SchemaStorage.prototype);
|
|
182
205
|
if (!modelSchema)
|
|
183
206
|
throw new Error(`Schema of ${classMeta.refName} not found`);
|
|
184
|
-
const fieldMetas = getFieldMetas(docRef);
|
|
207
|
+
const fieldMetas = (0, import_constant.getFieldMetas)(docRef);
|
|
185
208
|
const schemaProps = {
|
|
186
209
|
createdAt: {
|
|
187
210
|
type: Date,
|
|
188
|
-
get: (date) => date ? dayjs(date) : date,
|
|
189
|
-
set: (day) => day ? dayjs(day).toDate() : day
|
|
211
|
+
get: (date) => date ? (0, import_base.dayjs)(date) : date,
|
|
212
|
+
set: (day) => day ? (0, import_base.dayjs)(day).toDate() : day
|
|
190
213
|
},
|
|
191
214
|
updatedAt: {
|
|
192
215
|
type: Date,
|
|
193
|
-
get: (date) => date ? dayjs(date) : date,
|
|
194
|
-
set: (day) => day ? dayjs(day).toDate() : day
|
|
216
|
+
get: (date) => date ? (0, import_base.dayjs)(date) : date,
|
|
217
|
+
set: (day) => day ? (0, import_base.dayjs)(day).toDate() : day
|
|
195
218
|
}
|
|
196
219
|
};
|
|
197
220
|
fieldMetas.forEach((fieldMeta) => {
|
|
198
221
|
applyMongoProp(schemaProps, fieldMeta);
|
|
199
|
-
applyNestField(originDoc, fieldMeta);
|
|
222
|
+
(0, import__.applyNestField)(originDoc, fieldMeta);
|
|
200
223
|
});
|
|
201
|
-
const inputFieldMetas = getFieldMetas(inputRef);
|
|
224
|
+
const inputFieldMetas = (0, import_constant.getFieldMetas)(inputRef);
|
|
202
225
|
inputFieldMetas.forEach((fieldMeta) => {
|
|
203
|
-
applyNestField(originInput, fieldMeta, "input");
|
|
226
|
+
(0, import__.applyNestField)(originInput, fieldMeta, "input");
|
|
204
227
|
});
|
|
205
|
-
const schema = new Schema(schemaProps, getDefaultSchemaOptions());
|
|
228
|
+
const schema = new import_mongoose.Schema(schemaProps, (0, import_document.getDefaultSchemaOptions)());
|
|
206
229
|
modelSchema.add(schema);
|
|
207
230
|
Object.getOwnPropertyNames(docRef.prototype).forEach((name) => {
|
|
208
231
|
if (name === "constructor")
|
|
@@ -213,7 +236,8 @@ const addSchema = (modelRef, docRef, inputRef, middleware) => {
|
|
|
213
236
|
onSchema?.(modelSchema);
|
|
214
237
|
return modelSchema;
|
|
215
238
|
};
|
|
216
|
-
export
|
|
239
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
240
|
+
0 && (module.exports = {
|
|
217
241
|
addSchema,
|
|
218
242
|
schemaOf
|
|
219
|
-
};
|
|
243
|
+
});
|
package/src/schema.js
CHANGED
|
@@ -1,42 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var schema_exports = {};
|
|
19
|
-
__export(schema_exports, {
|
|
20
|
-
addSchema: () => addSchema,
|
|
21
|
-
schemaOf: () => schemaOf
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(schema_exports);
|
|
24
|
-
var import_base = require("@akanjs/base");
|
|
25
|
-
var import_common = require("@akanjs/common");
|
|
26
|
-
var import_constant = require("@akanjs/constant");
|
|
27
|
-
var import_document = require("@akanjs/document");
|
|
28
|
-
var import_signal = require("@akanjs/signal");
|
|
29
|
-
var import_mongoose = require("mongoose");
|
|
30
|
-
var import__ = require(".");
|
|
1
|
+
import { arraiedModel, dayjs, Enum, Float, ID, Int, JSON } from "@akanjs/base";
|
|
2
|
+
import { isDayjs } from "@akanjs/common";
|
|
3
|
+
import { getClassMeta, getFieldMetas, getFullModelRef, getInputModelRef } from "@akanjs/constant";
|
|
4
|
+
import { getDefaultSchemaOptions, ObjectId } from "@akanjs/document";
|
|
5
|
+
import { makeDefault } from "@akanjs/signal";
|
|
6
|
+
import { Schema, Types } from "mongoose";
|
|
7
|
+
import { applyNestField } from ".";
|
|
31
8
|
class ScalarSchemaStorage {
|
|
32
9
|
}
|
|
33
10
|
class SchemaStorage {
|
|
34
11
|
}
|
|
35
12
|
const scalarMongoTypeMap = /* @__PURE__ */ new Map([
|
|
36
|
-
[
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
13
|
+
[ID, ObjectId],
|
|
14
|
+
[Int, Number],
|
|
15
|
+
[Float, Number],
|
|
16
|
+
[JSON, Schema.Types.Mixed],
|
|
40
17
|
[Map, Map],
|
|
41
18
|
[String, String],
|
|
42
19
|
[Boolean, Boolean],
|
|
@@ -45,13 +22,13 @@ const scalarMongoTypeMap = /* @__PURE__ */ new Map([
|
|
|
45
22
|
const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
46
23
|
if (["id", "createdAt", "updatedAt"].includes(fieldMeta.key) || fieldMeta.fieldType === "resolve")
|
|
47
24
|
return;
|
|
48
|
-
const type = fieldMeta.isClass ? fieldMeta.isScalar ? createSchema(fieldMeta.modelRef) :
|
|
25
|
+
const type = fieldMeta.isClass ? fieldMeta.isScalar ? createSchema(fieldMeta.modelRef) : ObjectId : scalarMongoTypeMap.get(fieldMeta.modelRef) ?? fieldMeta.modelRef;
|
|
49
26
|
let prop = {};
|
|
50
27
|
if (fieldMeta.optArrDepth) {
|
|
51
28
|
prop.type = type;
|
|
52
29
|
prop.required = true;
|
|
53
30
|
if (fieldMeta.isClass && !fieldMeta.refPath)
|
|
54
|
-
prop.ref =
|
|
31
|
+
prop.ref = getClassMeta(fieldMeta.modelRef).refName;
|
|
55
32
|
if (fieldMeta.refPath)
|
|
56
33
|
prop.refPath = fieldMeta.refPath;
|
|
57
34
|
if (typeof fieldMeta.min === "number")
|
|
@@ -66,20 +43,20 @@ const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
|
66
43
|
prop.maxlength = fieldMeta.maxlength;
|
|
67
44
|
if (fieldMeta.validate) {
|
|
68
45
|
prop.validate = function(value) {
|
|
69
|
-
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ?
|
|
46
|
+
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ? dayjs() : value, this) ?? true;
|
|
70
47
|
};
|
|
71
48
|
}
|
|
72
|
-
prop = { type:
|
|
49
|
+
prop = { type: arraiedModel(prop, fieldMeta.optArrDepth), default: [], required: true };
|
|
73
50
|
if (fieldMeta.modelRef.prototype === Date.prototype) {
|
|
74
|
-
prop.get = (dates) => dates.map((date) =>
|
|
51
|
+
prop.get = (dates) => dates.map((date) => dayjs(date));
|
|
75
52
|
prop.set = (days) => days.map((day) => day.toDate());
|
|
76
53
|
}
|
|
77
|
-
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype ===
|
|
54
|
+
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype === ID.prototype) {
|
|
78
55
|
prop.get = (ids) => ids.map((id) => id.toString());
|
|
79
|
-
prop.set = (ids) => ids.map((id) => new
|
|
56
|
+
prop.set = (ids) => ids.map((id) => new Types.ObjectId(id));
|
|
80
57
|
}
|
|
81
58
|
} else {
|
|
82
|
-
prop.type =
|
|
59
|
+
prop.type = arraiedModel(type, fieldMeta.arrDepth);
|
|
83
60
|
prop.required = !fieldMeta.nullable;
|
|
84
61
|
if (fieldMeta.isMap) {
|
|
85
62
|
prop.of = scalarMongoTypeMap.get(fieldMeta.of) ?? createSchema(fieldMeta.of);
|
|
@@ -90,15 +67,15 @@ const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
|
90
67
|
if (typeof fieldMeta.default === "function")
|
|
91
68
|
prop.default = function() {
|
|
92
69
|
const def = fieldMeta.default(this);
|
|
93
|
-
return
|
|
70
|
+
return isDayjs(def) ? def.toDate() : def;
|
|
94
71
|
};
|
|
95
72
|
else
|
|
96
|
-
prop.default =
|
|
73
|
+
prop.default = isDayjs(fieldMeta.default) ? fieldMeta.default.toDate() : fieldMeta.default instanceof Enum ? [...fieldMeta.default.values] : fieldMeta.default;
|
|
97
74
|
}
|
|
98
75
|
if (typeof fieldMeta.immutable !== "undefined")
|
|
99
76
|
prop.immutable = fieldMeta.immutable;
|
|
100
77
|
if (fieldMeta.isClass && !fieldMeta.refPath)
|
|
101
|
-
prop.ref =
|
|
78
|
+
prop.ref = getClassMeta(fieldMeta.modelRef).refName;
|
|
102
79
|
if (fieldMeta.refPath)
|
|
103
80
|
prop.refPath = fieldMeta.refPath;
|
|
104
81
|
if (typeof fieldMeta.min === "number")
|
|
@@ -118,60 +95,60 @@ const applyMongoProp = (schemaProps, fieldMeta) => {
|
|
|
118
95
|
prop.set = (v) => v === null ? void 0 : v;
|
|
119
96
|
}
|
|
120
97
|
if (fieldMeta.modelRef.prototype === Date.prototype) {
|
|
121
|
-
prop.get = (date) => date ?
|
|
122
|
-
prop.set = (day) => day ?
|
|
98
|
+
prop.get = (date) => date ? dayjs(date) : void 0;
|
|
99
|
+
prop.set = (day) => day ? dayjs(day).toDate() : void 0;
|
|
123
100
|
}
|
|
124
|
-
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype ===
|
|
101
|
+
if (fieldMeta.isClass && !fieldMeta.isScalar || fieldMeta.modelRef.prototype === ID.prototype) {
|
|
125
102
|
prop.get = (id) => id ? id.toString() : void 0;
|
|
126
|
-
prop.set = (id) => id ? new
|
|
103
|
+
prop.set = (id) => id ? new Types.ObjectId(id) : void 0;
|
|
127
104
|
}
|
|
128
105
|
if (fieldMeta.isClass && fieldMeta.isScalar && fieldMeta.default === null && !fieldMeta.nullable) {
|
|
129
|
-
prop.default =
|
|
106
|
+
prop.default = makeDefault(fieldMeta.modelRef);
|
|
130
107
|
}
|
|
131
108
|
if (fieldMeta.validate) {
|
|
132
109
|
prop.validate = function(value) {
|
|
133
|
-
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ?
|
|
110
|
+
return fieldMeta.validate?.(fieldMeta.name === "Date" && !!value ? dayjs() : value, this) ?? true;
|
|
134
111
|
};
|
|
135
112
|
}
|
|
136
113
|
}
|
|
137
114
|
schemaProps[fieldMeta.key] = prop;
|
|
138
115
|
};
|
|
139
116
|
const createSchema = (modelRef) => {
|
|
140
|
-
const classMeta =
|
|
117
|
+
const classMeta = getClassMeta(modelRef);
|
|
141
118
|
const schemaMeta = Reflect.getMetadata(classMeta.refName, ScalarSchemaStorage.prototype);
|
|
142
119
|
if (schemaMeta)
|
|
143
120
|
return schemaMeta;
|
|
144
|
-
const fieldMetas =
|
|
121
|
+
const fieldMetas = getFieldMetas(modelRef);
|
|
145
122
|
const schemaProps = {};
|
|
146
123
|
fieldMetas.forEach((fieldMeta) => {
|
|
147
124
|
applyMongoProp(schemaProps, fieldMeta);
|
|
148
125
|
});
|
|
149
|
-
const schema = new
|
|
126
|
+
const schema = new Schema(schemaProps);
|
|
150
127
|
Reflect.defineMetadata(classMeta.refName, schema, ScalarSchemaStorage.prototype);
|
|
151
128
|
return schema;
|
|
152
129
|
};
|
|
153
130
|
const schemaOf = (modelRef, docRef, middleware) => {
|
|
154
|
-
const classMeta =
|
|
131
|
+
const classMeta = getClassMeta(docRef);
|
|
155
132
|
const schemaMeta = Reflect.getMetadata(classMeta.refName, SchemaStorage.prototype);
|
|
156
133
|
if (schemaMeta)
|
|
157
134
|
return schemaMeta;
|
|
158
|
-
const fieldMetas =
|
|
135
|
+
const fieldMetas = getFieldMetas(docRef);
|
|
159
136
|
const schemaProps = {
|
|
160
137
|
createdAt: {
|
|
161
138
|
type: Date,
|
|
162
|
-
get: (date) => date ?
|
|
163
|
-
set: (day) => day ?
|
|
139
|
+
get: (date) => date ? dayjs(date) : date,
|
|
140
|
+
set: (day) => day ? dayjs(day).toDate() : day
|
|
164
141
|
},
|
|
165
142
|
updatedAt: {
|
|
166
143
|
type: Date,
|
|
167
|
-
get: (date) => date ?
|
|
168
|
-
set: (day) => day ?
|
|
144
|
+
get: (date) => date ? dayjs(date) : date,
|
|
145
|
+
set: (day) => day ? dayjs(day).toDate() : day
|
|
169
146
|
}
|
|
170
147
|
};
|
|
171
148
|
fieldMetas.forEach((fieldMeta) => {
|
|
172
149
|
applyMongoProp(schemaProps, fieldMeta);
|
|
173
150
|
});
|
|
174
|
-
const schema = new
|
|
151
|
+
const schema = new Schema(schemaProps, getDefaultSchemaOptions());
|
|
175
152
|
schema.methods.refresh = async function() {
|
|
176
153
|
Object.assign(this, await this.constructor.findById(this._id));
|
|
177
154
|
return this;
|
|
@@ -196,36 +173,36 @@ const schemaOf = (modelRef, docRef, middleware) => {
|
|
|
196
173
|
return schema;
|
|
197
174
|
};
|
|
198
175
|
const addSchema = (modelRef, docRef, inputRef, middleware) => {
|
|
199
|
-
const originDocClassMeta =
|
|
200
|
-
const originInputClassMeta =
|
|
201
|
-
const originDoc =
|
|
202
|
-
const originInput =
|
|
203
|
-
const classMeta =
|
|
176
|
+
const originDocClassMeta = getClassMeta(docRef);
|
|
177
|
+
const originInputClassMeta = getClassMeta(inputRef);
|
|
178
|
+
const originDoc = getFullModelRef(originDocClassMeta.refName);
|
|
179
|
+
const originInput = getInputModelRef(originInputClassMeta.refName);
|
|
180
|
+
const classMeta = getClassMeta(docRef);
|
|
204
181
|
const modelSchema = Reflect.getMetadata(classMeta.refName, SchemaStorage.prototype);
|
|
205
182
|
if (!modelSchema)
|
|
206
183
|
throw new Error(`Schema of ${classMeta.refName} not found`);
|
|
207
|
-
const fieldMetas =
|
|
184
|
+
const fieldMetas = getFieldMetas(docRef);
|
|
208
185
|
const schemaProps = {
|
|
209
186
|
createdAt: {
|
|
210
187
|
type: Date,
|
|
211
|
-
get: (date) => date ?
|
|
212
|
-
set: (day) => day ?
|
|
188
|
+
get: (date) => date ? dayjs(date) : date,
|
|
189
|
+
set: (day) => day ? dayjs(day).toDate() : day
|
|
213
190
|
},
|
|
214
191
|
updatedAt: {
|
|
215
192
|
type: Date,
|
|
216
|
-
get: (date) => date ?
|
|
217
|
-
set: (day) => day ?
|
|
193
|
+
get: (date) => date ? dayjs(date) : date,
|
|
194
|
+
set: (day) => day ? dayjs(day).toDate() : day
|
|
218
195
|
}
|
|
219
196
|
};
|
|
220
197
|
fieldMetas.forEach((fieldMeta) => {
|
|
221
198
|
applyMongoProp(schemaProps, fieldMeta);
|
|
222
|
-
|
|
199
|
+
applyNestField(originDoc, fieldMeta);
|
|
223
200
|
});
|
|
224
|
-
const inputFieldMetas =
|
|
201
|
+
const inputFieldMetas = getFieldMetas(inputRef);
|
|
225
202
|
inputFieldMetas.forEach((fieldMeta) => {
|
|
226
|
-
|
|
203
|
+
applyNestField(originInput, fieldMeta, "input");
|
|
227
204
|
});
|
|
228
|
-
const schema = new
|
|
205
|
+
const schema = new Schema(schemaProps, getDefaultSchemaOptions());
|
|
229
206
|
modelSchema.add(schema);
|
|
230
207
|
Object.getOwnPropertyNames(docRef.prototype).forEach((name) => {
|
|
231
208
|
if (name === "constructor")
|
|
@@ -236,8 +213,7 @@ const addSchema = (modelRef, docRef, inputRef, middleware) => {
|
|
|
236
213
|
onSchema?.(modelSchema);
|
|
237
214
|
return modelSchema;
|
|
238
215
|
};
|
|
239
|
-
|
|
240
|
-
0 && (module.exports = {
|
|
216
|
+
export {
|
|
241
217
|
addSchema,
|
|
242
218
|
schemaOf
|
|
243
|
-
}
|
|
219
|
+
};
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
3
18
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
19
|
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
20
|
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
@@ -10,19 +25,19 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
10
25
|
return result;
|
|
11
26
|
};
|
|
12
27
|
var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
var searchDaemon_exports = {};
|
|
29
|
+
__export(searchDaemon_exports, {
|
|
30
|
+
SearchDaemonModule: () => SearchDaemonModule,
|
|
31
|
+
makeTextFilter: () => makeTextFilter
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(searchDaemon_exports);
|
|
34
|
+
var import_common = require("@akanjs/common");
|
|
35
|
+
var import_constant = require("@akanjs/constant");
|
|
36
|
+
var import_document = require("@akanjs/document");
|
|
37
|
+
var import_common2 = require("@nestjs/common");
|
|
38
|
+
var import_mongoose = require("@nestjs/mongoose");
|
|
24
39
|
const hasTextField = (modelRef) => {
|
|
25
|
-
const fieldMetas = getFieldMetas(modelRef);
|
|
40
|
+
const fieldMetas = (0, import_constant.getFieldMetas)(modelRef);
|
|
26
41
|
return fieldMetas.some(
|
|
27
42
|
(fieldMeta) => !!fieldMeta.text || fieldMeta.isScalar && fieldMeta.isClass && fieldMeta.select && hasTextField(fieldMeta.modelRef)
|
|
28
43
|
);
|
|
@@ -30,7 +45,7 @@ const hasTextField = (modelRef) => {
|
|
|
30
45
|
const getTextFieldKeys = (modelRef) => {
|
|
31
46
|
const allSearchFields = [];
|
|
32
47
|
const allFilterFields = [];
|
|
33
|
-
const fieldMetaMap = getFieldMetaMap(modelRef);
|
|
48
|
+
const fieldMetaMap = (0, import_constant.getFieldMetaMap)(modelRef);
|
|
34
49
|
const fieldMetas = [...fieldMetaMap.values()];
|
|
35
50
|
const stringTextFields = fieldMetas.filter((fieldMeta) => !!fieldMeta.text).map((fieldMeta) => {
|
|
36
51
|
if (fieldMeta.text === "filter")
|
|
@@ -65,7 +80,7 @@ const getTextFieldKeys = (modelRef) => {
|
|
|
65
80
|
};
|
|
66
81
|
};
|
|
67
82
|
const makeTextFilter = (modelRef) => {
|
|
68
|
-
const fieldMetaMap = getFieldMetaMap(modelRef);
|
|
83
|
+
const fieldMetaMap = (0, import_constant.getFieldMetaMap)(modelRef);
|
|
69
84
|
const { stringTextFields, scalarTextFields } = getTextFieldKeys(modelRef);
|
|
70
85
|
const filterData = (data, assignObj = {}) => {
|
|
71
86
|
if (Array.isArray(data))
|
|
@@ -87,8 +102,8 @@ const makeTextFilter = (modelRef) => {
|
|
|
87
102
|
return filterData;
|
|
88
103
|
};
|
|
89
104
|
const getSortableAttributes = (refName) => {
|
|
90
|
-
const cnst = getCnstMeta(refName);
|
|
91
|
-
const sortMap = getFilterSortMap(cnst.Filter);
|
|
105
|
+
const cnst = (0, import_constant.getCnstMeta)(refName);
|
|
106
|
+
const sortMap = (0, import_constant.getFilterSortMap)(cnst.Filter);
|
|
92
107
|
const sortFields = Object.values(sortMap).filter((val) => typeof val === "object").map((sort) => Object.keys(sort)).flat();
|
|
93
108
|
return [...new Set(sortFields)];
|
|
94
109
|
};
|
|
@@ -97,16 +112,16 @@ let SearchDaemon = class {
|
|
|
97
112
|
this.connection = connection;
|
|
98
113
|
this.meili = meili;
|
|
99
114
|
}
|
|
100
|
-
logger = new Logger("SearchDaemon");
|
|
115
|
+
logger = new import_common.Logger("SearchDaemon");
|
|
101
116
|
async onModuleInit() {
|
|
102
|
-
const databaseModelNames = getAllDatabaseModelNames();
|
|
117
|
+
const databaseModelNames = (0, import_document.getAllDatabaseModelNames)();
|
|
103
118
|
const indexes = (await this.meili.getIndexes({ limit: 1e3 })).results;
|
|
104
119
|
const indexMap = new Map(indexes.map((index) => [index.uid, index]));
|
|
105
120
|
const indexCreationNames = [];
|
|
106
121
|
const indexUpdateNames = [];
|
|
107
122
|
for (const modelName of databaseModelNames) {
|
|
108
|
-
const indexName = lowerlize(modelName);
|
|
109
|
-
const modelRef = getFullModelRef(modelName);
|
|
123
|
+
const indexName = (0, import_common.lowerlize)(modelName);
|
|
124
|
+
const modelRef = (0, import_constant.getFullModelRef)(modelName);
|
|
110
125
|
if (!hasTextField(modelRef))
|
|
111
126
|
continue;
|
|
112
127
|
const index = indexMap.get(indexName);
|
|
@@ -120,9 +135,9 @@ let SearchDaemon = class {
|
|
|
120
135
|
for (const indexName of indexUpdateNames)
|
|
121
136
|
await this.meili.updateIndex(indexName, { primaryKey: "id" });
|
|
122
137
|
for (const modelName of databaseModelNames) {
|
|
123
|
-
const indexName = lowerlize(modelName);
|
|
138
|
+
const indexName = (0, import_common.lowerlize)(modelName);
|
|
124
139
|
const model = this.connection.models[modelName];
|
|
125
|
-
const modelRef = getFullModelRef(modelName);
|
|
140
|
+
const modelRef = (0, import_constant.getFullModelRef)(modelName);
|
|
126
141
|
if (!hasTextField(modelRef))
|
|
127
142
|
continue;
|
|
128
143
|
const searchIndex = this.meili.index(indexName);
|
|
@@ -194,19 +209,20 @@ let SearchDaemon = class {
|
|
|
194
209
|
}
|
|
195
210
|
};
|
|
196
211
|
SearchDaemon = __decorateClass([
|
|
197
|
-
Injectable(),
|
|
198
|
-
__decorateParam(0, InjectConnection()),
|
|
199
|
-
__decorateParam(1, Inject("MEILI_CLIENT"))
|
|
212
|
+
(0, import_common2.Injectable)(),
|
|
213
|
+
__decorateParam(0, (0, import_mongoose.InjectConnection)()),
|
|
214
|
+
__decorateParam(1, (0, import_common2.Inject)("MEILI_CLIENT"))
|
|
200
215
|
], SearchDaemon);
|
|
201
216
|
let SearchDaemonModule = class {
|
|
202
217
|
};
|
|
203
218
|
SearchDaemonModule = __decorateClass([
|
|
204
|
-
Global(),
|
|
205
|
-
Module({
|
|
219
|
+
(0, import_common2.Global)(),
|
|
220
|
+
(0, import_common2.Module)({
|
|
206
221
|
providers: [SearchDaemon]
|
|
207
222
|
})
|
|
208
223
|
], SearchDaemonModule);
|
|
209
|
-
export
|
|
224
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
225
|
+
0 && (module.exports = {
|
|
210
226
|
SearchDaemonModule,
|
|
211
227
|
makeTextFilter
|
|
212
|
-
};
|
|
228
|
+
});
|