@akanjs/constant 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 +17 -0
- package/index.js +1 -17
- package/package.json +4 -4
- package/src/baseGql.cjs +164 -0
- package/src/baseGql.js +52 -62
- package/src/{classMeta.mjs → classMeta.cjs} +50 -31
- package/src/classMeta.js +31 -50
- package/src/constantDecorator.cjs +40 -0
- package/src/constantDecorator.js +5 -24
- package/src/fieldMeta.cjs +82 -0
- package/src/fieldMeta.js +17 -32
- package/src/{filterMeta.mjs → filterMeta.cjs} +39 -24
- package/src/filterMeta.js +24 -39
- package/src/index.cjs +23 -0
- package/src/index.js +7 -23
- package/src/scalar.cjs +87 -0
- package/src/scalar.js +34 -45
- package/src/types.cjs +29 -0
- package/src/types.js +4 -23
- package/index.mjs +0 -1
- package/src/baseGql.mjs +0 -154
- package/src/constantDecorator.mjs +0 -21
- package/src/fieldMeta.mjs +0 -67
- package/src/index.mjs +0 -7
- package/src/scalar.mjs +0 -76
- package/src/types.mjs +0 -10
package/src/scalar.cjs
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
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 scalar_exports = {};
|
|
19
|
+
__export(scalar_exports, {
|
|
20
|
+
fieldTypes: () => fieldTypes,
|
|
21
|
+
getClassMeta: () => getClassMeta,
|
|
22
|
+
getFieldMetaMap: () => getFieldMetaMap,
|
|
23
|
+
getFieldMetaMapOnPrototype: () => getFieldMetaMapOnPrototype,
|
|
24
|
+
getFieldMetas: () => getFieldMetas,
|
|
25
|
+
getGqlTypeStr: () => getGqlTypeStr,
|
|
26
|
+
getQueryMap: () => getQueryMap,
|
|
27
|
+
getScalarExample: () => getScalarExample,
|
|
28
|
+
isConstantModel: () => isConstantModel,
|
|
29
|
+
scalarExampleMap: () => scalarExampleMap,
|
|
30
|
+
setFieldMetaMap: () => setFieldMetaMap,
|
|
31
|
+
setFieldMetaMapOnPrototype: () => setFieldMetaMapOnPrototype
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(scalar_exports);
|
|
34
|
+
var import_reflect_metadata = require("reflect-metadata");
|
|
35
|
+
var import_base = require("@akanjs/base");
|
|
36
|
+
const scalarExampleMap = /* @__PURE__ */ new Map([
|
|
37
|
+
[import_base.ID, "1234567890abcdef12345678"],
|
|
38
|
+
[import_base.Int, 0],
|
|
39
|
+
[import_base.Float, 0],
|
|
40
|
+
[String, "String"],
|
|
41
|
+
[Boolean, true],
|
|
42
|
+
[Date, (/* @__PURE__ */ new Date()).toISOString()],
|
|
43
|
+
[import_base.Upload, "FileUpload"],
|
|
44
|
+
[import_base.JSON, {}],
|
|
45
|
+
[Map, {}]
|
|
46
|
+
]);
|
|
47
|
+
const getScalarExample = (ref) => scalarExampleMap.get(ref) ?? null;
|
|
48
|
+
const getGqlTypeStr = (ref) => import_base.scalarNameMap.get(ref) ?? getClassMeta(ref).refName;
|
|
49
|
+
const fieldTypes = ["email", "password", "url"];
|
|
50
|
+
const getClassMeta = (modelRef) => {
|
|
51
|
+
const [target] = (0, import_base.getNonArrayModel)(modelRef);
|
|
52
|
+
const classMeta = Reflect.getMetadata("class", target.prototype);
|
|
53
|
+
if (!classMeta)
|
|
54
|
+
throw new Error(`No ClassMeta for this target ${target.name}`);
|
|
55
|
+
return classMeta;
|
|
56
|
+
};
|
|
57
|
+
const getFieldMetas = (modelRef) => {
|
|
58
|
+
const [target] = (0, import_base.getNonArrayModel)(modelRef);
|
|
59
|
+
const metadataMap = Reflect.getMetadata("fields", target.prototype) ?? /* @__PURE__ */ new Map();
|
|
60
|
+
const keySortMap = { id: -1, createdAt: 1, updatedAt: 2, removedAt: 3 };
|
|
61
|
+
return [...metadataMap.values()].sort((a, b) => (keySortMap[a.key] ?? 0) - (keySortMap[b.key] ?? 0));
|
|
62
|
+
};
|
|
63
|
+
const isConstantModel = (modelRef) => {
|
|
64
|
+
return Reflect.getMetadata("class", modelRef.prototype) !== void 0;
|
|
65
|
+
};
|
|
66
|
+
const getFieldMetaMap = (modelRef) => {
|
|
67
|
+
const [target] = (0, import_base.getNonArrayModel)(modelRef);
|
|
68
|
+
const metadataMap = Reflect.getMetadata("fields", target.prototype) ?? /* @__PURE__ */ new Map();
|
|
69
|
+
return new Map(metadataMap);
|
|
70
|
+
};
|
|
71
|
+
const setFieldMetaMap = (modelRef, metadataMap) => {
|
|
72
|
+
const [target] = (0, import_base.getNonArrayModel)(modelRef);
|
|
73
|
+
Reflect.defineMetadata("fields", new Map(metadataMap), target.prototype);
|
|
74
|
+
};
|
|
75
|
+
const getFieldMetaMapOnPrototype = (prototype) => {
|
|
76
|
+
const metadataMap = Reflect.getMetadata("fields", prototype) ?? /* @__PURE__ */ new Map();
|
|
77
|
+
return new Map(metadataMap);
|
|
78
|
+
};
|
|
79
|
+
const setFieldMetaMapOnPrototype = (prototype, metadataMap) => {
|
|
80
|
+
Reflect.defineMetadata("fields", new Map(metadataMap), prototype);
|
|
81
|
+
};
|
|
82
|
+
const getQueryMap = (modelRef) => {
|
|
83
|
+
const fieldMetas = getFieldMetas(modelRef);
|
|
84
|
+
return Object.fromEntries(
|
|
85
|
+
fieldMetas.filter((fieldMeta) => !!fieldMeta.query).map((fieldMeta) => [fieldMeta.key, fieldMeta.query])
|
|
86
|
+
);
|
|
87
|
+
};
|
package/src/scalar.js
CHANGED
|
@@ -1,61 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 scalar_exports = {};
|
|
19
|
-
__export(scalar_exports, {
|
|
20
|
-
fieldTypes: () => fieldTypes,
|
|
21
|
-
getClassMeta: () => getClassMeta,
|
|
22
|
-
getFieldMetaMap: () => getFieldMetaMap,
|
|
23
|
-
getFieldMetaMapOnPrototype: () => getFieldMetaMapOnPrototype,
|
|
24
|
-
getFieldMetas: () => getFieldMetas,
|
|
25
|
-
getGqlTypeStr: () => getGqlTypeStr,
|
|
26
|
-
getQueryMap: () => getQueryMap,
|
|
27
|
-
getScalarExample: () => getScalarExample,
|
|
28
|
-
isConstantModel: () => isConstantModel,
|
|
29
|
-
scalarExampleMap: () => scalarExampleMap,
|
|
30
|
-
setFieldMetaMap: () => setFieldMetaMap,
|
|
31
|
-
setFieldMetaMapOnPrototype: () => setFieldMetaMapOnPrototype
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(scalar_exports);
|
|
34
|
-
var import_reflect_metadata = require("reflect-metadata");
|
|
35
|
-
var import_base = require("@akanjs/base");
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import {
|
|
3
|
+
Float,
|
|
4
|
+
getNonArrayModel,
|
|
5
|
+
ID,
|
|
6
|
+
Int,
|
|
7
|
+
JSON,
|
|
8
|
+
scalarNameMap,
|
|
9
|
+
Upload
|
|
10
|
+
} from "@akanjs/base";
|
|
36
11
|
const scalarExampleMap = /* @__PURE__ */ new Map([
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
12
|
+
[ID, "1234567890abcdef12345678"],
|
|
13
|
+
[Int, 0],
|
|
14
|
+
[Float, 0],
|
|
40
15
|
[String, "String"],
|
|
41
16
|
[Boolean, true],
|
|
42
17
|
[Date, (/* @__PURE__ */ new Date()).toISOString()],
|
|
43
|
-
[
|
|
44
|
-
[
|
|
18
|
+
[Upload, "FileUpload"],
|
|
19
|
+
[JSON, {}],
|
|
45
20
|
[Map, {}]
|
|
46
21
|
]);
|
|
47
22
|
const getScalarExample = (ref) => scalarExampleMap.get(ref) ?? null;
|
|
48
|
-
const getGqlTypeStr = (ref) =>
|
|
23
|
+
const getGqlTypeStr = (ref) => scalarNameMap.get(ref) ?? getClassMeta(ref).refName;
|
|
49
24
|
const fieldTypes = ["email", "password", "url"];
|
|
50
25
|
const getClassMeta = (modelRef) => {
|
|
51
|
-
const [target] =
|
|
26
|
+
const [target] = getNonArrayModel(modelRef);
|
|
52
27
|
const classMeta = Reflect.getMetadata("class", target.prototype);
|
|
53
28
|
if (!classMeta)
|
|
54
29
|
throw new Error(`No ClassMeta for this target ${target.name}`);
|
|
55
30
|
return classMeta;
|
|
56
31
|
};
|
|
57
32
|
const getFieldMetas = (modelRef) => {
|
|
58
|
-
const [target] =
|
|
33
|
+
const [target] = getNonArrayModel(modelRef);
|
|
59
34
|
const metadataMap = Reflect.getMetadata("fields", target.prototype) ?? /* @__PURE__ */ new Map();
|
|
60
35
|
const keySortMap = { id: -1, createdAt: 1, updatedAt: 2, removedAt: 3 };
|
|
61
36
|
return [...metadataMap.values()].sort((a, b) => (keySortMap[a.key] ?? 0) - (keySortMap[b.key] ?? 0));
|
|
@@ -64,12 +39,12 @@ const isConstantModel = (modelRef) => {
|
|
|
64
39
|
return Reflect.getMetadata("class", modelRef.prototype) !== void 0;
|
|
65
40
|
};
|
|
66
41
|
const getFieldMetaMap = (modelRef) => {
|
|
67
|
-
const [target] =
|
|
42
|
+
const [target] = getNonArrayModel(modelRef);
|
|
68
43
|
const metadataMap = Reflect.getMetadata("fields", target.prototype) ?? /* @__PURE__ */ new Map();
|
|
69
44
|
return new Map(metadataMap);
|
|
70
45
|
};
|
|
71
46
|
const setFieldMetaMap = (modelRef, metadataMap) => {
|
|
72
|
-
const [target] =
|
|
47
|
+
const [target] = getNonArrayModel(modelRef);
|
|
73
48
|
Reflect.defineMetadata("fields", new Map(metadataMap), target.prototype);
|
|
74
49
|
};
|
|
75
50
|
const getFieldMetaMapOnPrototype = (prototype) => {
|
|
@@ -85,3 +60,17 @@ const getQueryMap = (modelRef) => {
|
|
|
85
60
|
fieldMetas.filter((fieldMeta) => !!fieldMeta.query).map((fieldMeta) => [fieldMeta.key, fieldMeta.query])
|
|
86
61
|
);
|
|
87
62
|
};
|
|
63
|
+
export {
|
|
64
|
+
fieldTypes,
|
|
65
|
+
getClassMeta,
|
|
66
|
+
getFieldMetaMap,
|
|
67
|
+
getFieldMetaMapOnPrototype,
|
|
68
|
+
getFieldMetas,
|
|
69
|
+
getGqlTypeStr,
|
|
70
|
+
getQueryMap,
|
|
71
|
+
getScalarExample,
|
|
72
|
+
isConstantModel,
|
|
73
|
+
scalarExampleMap,
|
|
74
|
+
setFieldMetaMap,
|
|
75
|
+
setFieldMetaMapOnPrototype
|
|
76
|
+
};
|
package/src/types.cjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
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 types_exports = {};
|
|
19
|
+
__export(types_exports, {
|
|
20
|
+
DEFAULT_PAGE_SIZE: () => DEFAULT_PAGE_SIZE,
|
|
21
|
+
defaultListOption: () => defaultListOption
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(types_exports);
|
|
24
|
+
const defaultListOption = {
|
|
25
|
+
limit: 20,
|
|
26
|
+
skip: 0,
|
|
27
|
+
sort: "latest"
|
|
28
|
+
};
|
|
29
|
+
const DEFAULT_PAGE_SIZE = 20;
|
package/src/types.js
CHANGED
|
@@ -1,29 +1,10 @@
|
|
|
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 types_exports = {};
|
|
19
|
-
__export(types_exports, {
|
|
20
|
-
DEFAULT_PAGE_SIZE: () => DEFAULT_PAGE_SIZE,
|
|
21
|
-
defaultListOption: () => defaultListOption
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(types_exports);
|
|
24
1
|
const defaultListOption = {
|
|
25
2
|
limit: 20,
|
|
26
3
|
skip: 0,
|
|
27
4
|
sort: "latest"
|
|
28
5
|
};
|
|
29
6
|
const DEFAULT_PAGE_SIZE = 20;
|
|
7
|
+
export {
|
|
8
|
+
DEFAULT_PAGE_SIZE,
|
|
9
|
+
defaultListOption
|
|
10
|
+
};
|
package/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src";
|
package/src/baseGql.mjs
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import "reflect-metadata";
|
|
2
|
-
import { ID } from "@akanjs/base";
|
|
3
|
-
import { applyMixins } from "@akanjs/common";
|
|
4
|
-
import {
|
|
5
|
-
getFilterArgMetas,
|
|
6
|
-
getFilterMeta,
|
|
7
|
-
getFilterQueryMap,
|
|
8
|
-
getFilterSortMap,
|
|
9
|
-
isFilterModel,
|
|
10
|
-
setFilterArgMetasOnPrototype,
|
|
11
|
-
setFilterKeyMetaMapOnPrototype,
|
|
12
|
-
setFilterMeta
|
|
13
|
-
} from "./filterMeta";
|
|
14
|
-
import { getFieldMetaMap, isConstantModel, setFieldMetaMap } from "./scalar";
|
|
15
|
-
const defaultFieldMeta = {
|
|
16
|
-
fieldType: "property",
|
|
17
|
-
immutable: false,
|
|
18
|
-
select: true,
|
|
19
|
-
isClass: false,
|
|
20
|
-
isScalar: true,
|
|
21
|
-
nullable: false,
|
|
22
|
-
isArray: false,
|
|
23
|
-
arrDepth: 0,
|
|
24
|
-
optArrDepth: 0,
|
|
25
|
-
default: null,
|
|
26
|
-
isMap: false
|
|
27
|
-
};
|
|
28
|
-
const idFieldMeta = { ...defaultFieldMeta, key: "id", name: "ID", modelRef: ID };
|
|
29
|
-
const createdAtFieldMeta = { ...defaultFieldMeta, key: "createdAt", name: "Date", modelRef: Date };
|
|
30
|
-
const updatedAtFieldMeta = { ...defaultFieldMeta, key: "updatedAt", name: "Date", modelRef: Date };
|
|
31
|
-
const removedAtFieldMeta = {
|
|
32
|
-
...defaultFieldMeta,
|
|
33
|
-
key: "removedAt",
|
|
34
|
-
name: "Date",
|
|
35
|
-
modelRef: Date,
|
|
36
|
-
nullable: true,
|
|
37
|
-
default: null
|
|
38
|
-
};
|
|
39
|
-
const extendModel = (modelRef) => {
|
|
40
|
-
class BaseModel {
|
|
41
|
-
}
|
|
42
|
-
const metadataMap = getFieldMetaMap(modelRef);
|
|
43
|
-
setFieldMetaMap(BaseModel, metadataMap);
|
|
44
|
-
return BaseModel;
|
|
45
|
-
};
|
|
46
|
-
const as = extendModel;
|
|
47
|
-
const baseModelOf = (modelRef) => {
|
|
48
|
-
class BaseModel {
|
|
49
|
-
__ModelType__ = "full";
|
|
50
|
-
}
|
|
51
|
-
const metadataMap = getFieldMetaMap(modelRef);
|
|
52
|
-
metadataMap.set("id", idFieldMeta);
|
|
53
|
-
metadataMap.set("createdAt", createdAtFieldMeta);
|
|
54
|
-
metadataMap.set("updatedAt", updatedAtFieldMeta);
|
|
55
|
-
metadataMap.set("removedAt", removedAtFieldMeta);
|
|
56
|
-
Reflect.defineMetadata("fields", metadataMap, BaseModel.prototype);
|
|
57
|
-
return BaseModel;
|
|
58
|
-
};
|
|
59
|
-
const lightModelOf = (objectRef, fields) => {
|
|
60
|
-
const map = /* @__PURE__ */ new Map();
|
|
61
|
-
const metadataMap = getFieldMetaMap(objectRef);
|
|
62
|
-
class BaseGql {
|
|
63
|
-
__ModelType__ = "light";
|
|
64
|
-
}
|
|
65
|
-
["id", ...fields, "createdAt", "updatedAt", "removedAt"].forEach((key) => map.set(key, metadataMap.get(key)));
|
|
66
|
-
Reflect.defineMetadata("fields", map, BaseGql.prototype);
|
|
67
|
-
return BaseGql;
|
|
68
|
-
};
|
|
69
|
-
const fullModelOf = (modelRef, lightRef, overwriteRef, overwriteLightRef) => {
|
|
70
|
-
const modelFieldMetaMap = getFieldMetaMap(modelRef);
|
|
71
|
-
const lightFieldMetaMap = getFieldMetaMap(lightRef);
|
|
72
|
-
applyMixins(modelRef, [lightRef]);
|
|
73
|
-
if (overwriteRef) {
|
|
74
|
-
applyMixins(overwriteRef, [modelRef]);
|
|
75
|
-
setFieldMetaMap(overwriteRef, modelFieldMetaMap);
|
|
76
|
-
}
|
|
77
|
-
if (overwriteLightRef) {
|
|
78
|
-
applyMixins(overwriteLightRef, [lightRef]);
|
|
79
|
-
setFieldMetaMap(overwriteLightRef, lightFieldMetaMap);
|
|
80
|
-
}
|
|
81
|
-
setFieldMetaMap(modelRef, new Map([...modelFieldMetaMap, ...lightFieldMetaMap]));
|
|
82
|
-
return modelRef;
|
|
83
|
-
};
|
|
84
|
-
const via = (modelRef, fieldsOrLightModelRef, overwriteRef, overwriteLightRef) => {
|
|
85
|
-
if (!fieldsOrLightModelRef)
|
|
86
|
-
return baseModelOf(modelRef);
|
|
87
|
-
else if (Array.isArray(fieldsOrLightModelRef))
|
|
88
|
-
return lightModelOf(modelRef, fieldsOrLightModelRef);
|
|
89
|
-
else
|
|
90
|
-
return fullModelOf(modelRef, fieldsOrLightModelRef, overwriteRef, overwriteLightRef);
|
|
91
|
-
};
|
|
92
|
-
const addModelOf = (modelRef, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => {
|
|
93
|
-
const modelMetadataMap = getFieldMetaMap(modelRef);
|
|
94
|
-
const metadataMap = new Map(
|
|
95
|
-
[t1, t2, t3, t4, t5, t6, t7, t8, t9, t10].filter((t) => !!t).reduce((acc, writeRef) => {
|
|
96
|
-
const writeMetadataMap = getFieldMetaMap(writeRef);
|
|
97
|
-
applyMixins(modelRef, [writeRef]);
|
|
98
|
-
return new Map([...acc, ...writeMetadataMap]);
|
|
99
|
-
}, modelMetadataMap)
|
|
100
|
-
);
|
|
101
|
-
setFieldMetaMap(modelRef, metadataMap);
|
|
102
|
-
return modelRef;
|
|
103
|
-
};
|
|
104
|
-
const addFilterOf = (filterRef, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => {
|
|
105
|
-
const filterMeta = getFilterMeta(filterRef);
|
|
106
|
-
const filterQueryMap = getFilterQueryMap(filterRef);
|
|
107
|
-
const metadataMap = new Map(
|
|
108
|
-
[t1, t2, t3, t4, t5, t6, t7, t8, t9, t10].filter((t) => !!t).reduce((acc, writeRef) => {
|
|
109
|
-
const writeMetadataMap = getFilterQueryMap(writeRef);
|
|
110
|
-
applyMixins(filterRef, [writeRef]);
|
|
111
|
-
writeMetadataMap.forEach((value, key) => {
|
|
112
|
-
const filterArgMetas = getFilterArgMetas(writeRef, key);
|
|
113
|
-
setFilterArgMetasOnPrototype(filterRef.prototype, key, filterArgMetas);
|
|
114
|
-
});
|
|
115
|
-
return new Map([...acc, ...writeMetadataMap]);
|
|
116
|
-
}, filterQueryMap)
|
|
117
|
-
);
|
|
118
|
-
const filterSort = [t1, t2, t3, t4, t5, t6, t7, t8, t9, t10].filter((t) => !!t).map((t) => getFilterSortMap(t)).reduce((acc, sort) => {
|
|
119
|
-
Object.assign(acc, sort);
|
|
120
|
-
return acc;
|
|
121
|
-
}, filterMeta.sort);
|
|
122
|
-
setFilterKeyMetaMapOnPrototype(filterRef.prototype, metadataMap);
|
|
123
|
-
setFilterMeta(filterRef, { ...filterMeta, sort: filterSort });
|
|
124
|
-
return filterRef;
|
|
125
|
-
};
|
|
126
|
-
const from = (modelRef, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => {
|
|
127
|
-
if (isConstantModel(modelRef))
|
|
128
|
-
return addModelOf(modelRef, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
|
|
129
|
-
else if (isFilterModel(modelRef))
|
|
130
|
-
return addFilterOf(modelRef, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
|
|
131
|
-
else
|
|
132
|
-
throw new Error("Invalid modelRef");
|
|
133
|
-
};
|
|
134
|
-
const mixModelOf = (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) => {
|
|
135
|
-
class Mix {
|
|
136
|
-
}
|
|
137
|
-
const metadataMap = new Map(
|
|
138
|
-
[t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20].filter((t) => !!t).reduce((acc, modelRef) => {
|
|
139
|
-
const modelMetadataMap = getFieldMetaMap(modelRef);
|
|
140
|
-
applyMixins(Mix, [modelRef]);
|
|
141
|
-
return [...acc, ...modelMetadataMap];
|
|
142
|
-
}, [])
|
|
143
|
-
);
|
|
144
|
-
setFieldMetaMap(Mix, metadataMap);
|
|
145
|
-
return Mix;
|
|
146
|
-
};
|
|
147
|
-
const over = mixModelOf;
|
|
148
|
-
export {
|
|
149
|
-
as,
|
|
150
|
-
from,
|
|
151
|
-
mixModelOf,
|
|
152
|
-
over,
|
|
153
|
-
via
|
|
154
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import "reflect-metadata";
|
|
2
|
-
class CnstStorage {
|
|
3
|
-
}
|
|
4
|
-
const setCnstMeta = (refName, cnst) => {
|
|
5
|
-
Reflect.defineMetadata(refName, cnst, CnstStorage.prototype);
|
|
6
|
-
};
|
|
7
|
-
const getCnstMeta = (refName) => {
|
|
8
|
-
const cnst = Reflect.getMetadata(refName, CnstStorage.prototype);
|
|
9
|
-
if (!cnst)
|
|
10
|
-
throw new Error(`No cnst meta for ${refName}`);
|
|
11
|
-
return cnst;
|
|
12
|
-
};
|
|
13
|
-
const cnstOf = (refName, Input, Full, Light, Insight, Filter, Summary) => {
|
|
14
|
-
const cnst = { refName, Input, Full, Light, Insight, Filter, Summary };
|
|
15
|
-
setCnstMeta(refName, cnst);
|
|
16
|
-
return cnst;
|
|
17
|
-
};
|
|
18
|
-
export {
|
|
19
|
-
cnstOf,
|
|
20
|
-
getCnstMeta
|
|
21
|
-
};
|
package/src/fieldMeta.mjs
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { getNonArrayModel, isGqlMap, isGqlScalar, scalarNameMap } from "@akanjs/base";
|
|
2
|
-
import {
|
|
3
|
-
getClassMeta,
|
|
4
|
-
getFieldMetaMapOnPrototype,
|
|
5
|
-
setFieldMetaMapOnPrototype
|
|
6
|
-
} from "./scalar";
|
|
7
|
-
const applyFieldMeta = (modelRef, arrDepth, option, optionArrDepth) => {
|
|
8
|
-
const isArray = arrDepth > 0;
|
|
9
|
-
const isClass = !isGqlScalar(modelRef);
|
|
10
|
-
const isMap = isGqlMap(modelRef);
|
|
11
|
-
const { refName, type } = isClass ? getClassMeta(modelRef) : { refName: "", type: "scalar" };
|
|
12
|
-
const name = isClass ? refName : scalarNameMap.get(modelRef) ?? "Unknown";
|
|
13
|
-
if (isMap && !option.of)
|
|
14
|
-
throw new Error("Map type must have 'of' option");
|
|
15
|
-
return (prototype, key) => {
|
|
16
|
-
const metadata = {
|
|
17
|
-
nullable: option.nullable ?? false,
|
|
18
|
-
ref: option.ref,
|
|
19
|
-
refPath: option.refPath,
|
|
20
|
-
refType: option.refType,
|
|
21
|
-
default: option.default ?? (isArray ? [] : null),
|
|
22
|
-
type: option.type,
|
|
23
|
-
fieldType: option.fieldType ?? "property",
|
|
24
|
-
immutable: option.immutable ?? false,
|
|
25
|
-
min: option.min,
|
|
26
|
-
max: option.max,
|
|
27
|
-
enum: option.enum,
|
|
28
|
-
select: option.select ?? true,
|
|
29
|
-
minlength: option.minlength,
|
|
30
|
-
maxlength: option.maxlength,
|
|
31
|
-
query: option.query,
|
|
32
|
-
accumulate: option.accumulate,
|
|
33
|
-
example: option.example,
|
|
34
|
-
validate: option.validate,
|
|
35
|
-
key,
|
|
36
|
-
name,
|
|
37
|
-
isClass,
|
|
38
|
-
isScalar: type === "scalar",
|
|
39
|
-
modelRef,
|
|
40
|
-
arrDepth,
|
|
41
|
-
isArray,
|
|
42
|
-
optArrDepth: optionArrDepth,
|
|
43
|
-
isMap,
|
|
44
|
-
of: option.of,
|
|
45
|
-
text: option.text
|
|
46
|
-
};
|
|
47
|
-
const metadataMap = getFieldMetaMapOnPrototype(prototype);
|
|
48
|
-
metadataMap.set(key, metadata);
|
|
49
|
-
setFieldMetaMapOnPrototype(prototype, metadataMap);
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
const makeField = (customOption) => (returns, fieldOption) => {
|
|
53
|
-
const [modelRef, arrDepth] = getNonArrayModel(returns());
|
|
54
|
-
if (!fieldOption)
|
|
55
|
-
return applyFieldMeta(modelRef, arrDepth, { ...customOption }, arrDepth);
|
|
56
|
-
const [opt, optArrDepth] = getNonArrayModel(fieldOption);
|
|
57
|
-
return applyFieldMeta(modelRef, arrDepth, { ...opt, ...customOption }, optArrDepth);
|
|
58
|
-
};
|
|
59
|
-
const Field = {
|
|
60
|
-
Prop: makeField({ fieldType: "property" }),
|
|
61
|
-
Hidden: makeField({ fieldType: "hidden", nullable: true }),
|
|
62
|
-
Secret: makeField({ fieldType: "hidden", select: false, nullable: true }),
|
|
63
|
-
Resolve: makeField({ fieldType: "resolve" })
|
|
64
|
-
};
|
|
65
|
-
export {
|
|
66
|
-
Field
|
|
67
|
-
};
|
package/src/index.mjs
DELETED
package/src/scalar.mjs
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import "reflect-metadata";
|
|
2
|
-
import {
|
|
3
|
-
Float,
|
|
4
|
-
getNonArrayModel,
|
|
5
|
-
ID,
|
|
6
|
-
Int,
|
|
7
|
-
JSON,
|
|
8
|
-
scalarNameMap,
|
|
9
|
-
Upload
|
|
10
|
-
} from "@akanjs/base";
|
|
11
|
-
const scalarExampleMap = /* @__PURE__ */ new Map([
|
|
12
|
-
[ID, "1234567890abcdef12345678"],
|
|
13
|
-
[Int, 0],
|
|
14
|
-
[Float, 0],
|
|
15
|
-
[String, "String"],
|
|
16
|
-
[Boolean, true],
|
|
17
|
-
[Date, (/* @__PURE__ */ new Date()).toISOString()],
|
|
18
|
-
[Upload, "FileUpload"],
|
|
19
|
-
[JSON, {}],
|
|
20
|
-
[Map, {}]
|
|
21
|
-
]);
|
|
22
|
-
const getScalarExample = (ref) => scalarExampleMap.get(ref) ?? null;
|
|
23
|
-
const getGqlTypeStr = (ref) => scalarNameMap.get(ref) ?? getClassMeta(ref).refName;
|
|
24
|
-
const fieldTypes = ["email", "password", "url"];
|
|
25
|
-
const getClassMeta = (modelRef) => {
|
|
26
|
-
const [target] = getNonArrayModel(modelRef);
|
|
27
|
-
const classMeta = Reflect.getMetadata("class", target.prototype);
|
|
28
|
-
if (!classMeta)
|
|
29
|
-
throw new Error(`No ClassMeta for this target ${target.name}`);
|
|
30
|
-
return classMeta;
|
|
31
|
-
};
|
|
32
|
-
const getFieldMetas = (modelRef) => {
|
|
33
|
-
const [target] = getNonArrayModel(modelRef);
|
|
34
|
-
const metadataMap = Reflect.getMetadata("fields", target.prototype) ?? /* @__PURE__ */ new Map();
|
|
35
|
-
const keySortMap = { id: -1, createdAt: 1, updatedAt: 2, removedAt: 3 };
|
|
36
|
-
return [...metadataMap.values()].sort((a, b) => (keySortMap[a.key] ?? 0) - (keySortMap[b.key] ?? 0));
|
|
37
|
-
};
|
|
38
|
-
const isConstantModel = (modelRef) => {
|
|
39
|
-
return Reflect.getMetadata("class", modelRef.prototype) !== void 0;
|
|
40
|
-
};
|
|
41
|
-
const getFieldMetaMap = (modelRef) => {
|
|
42
|
-
const [target] = getNonArrayModel(modelRef);
|
|
43
|
-
const metadataMap = Reflect.getMetadata("fields", target.prototype) ?? /* @__PURE__ */ new Map();
|
|
44
|
-
return new Map(metadataMap);
|
|
45
|
-
};
|
|
46
|
-
const setFieldMetaMap = (modelRef, metadataMap) => {
|
|
47
|
-
const [target] = getNonArrayModel(modelRef);
|
|
48
|
-
Reflect.defineMetadata("fields", new Map(metadataMap), target.prototype);
|
|
49
|
-
};
|
|
50
|
-
const getFieldMetaMapOnPrototype = (prototype) => {
|
|
51
|
-
const metadataMap = Reflect.getMetadata("fields", prototype) ?? /* @__PURE__ */ new Map();
|
|
52
|
-
return new Map(metadataMap);
|
|
53
|
-
};
|
|
54
|
-
const setFieldMetaMapOnPrototype = (prototype, metadataMap) => {
|
|
55
|
-
Reflect.defineMetadata("fields", new Map(metadataMap), prototype);
|
|
56
|
-
};
|
|
57
|
-
const getQueryMap = (modelRef) => {
|
|
58
|
-
const fieldMetas = getFieldMetas(modelRef);
|
|
59
|
-
return Object.fromEntries(
|
|
60
|
-
fieldMetas.filter((fieldMeta) => !!fieldMeta.query).map((fieldMeta) => [fieldMeta.key, fieldMeta.query])
|
|
61
|
-
);
|
|
62
|
-
};
|
|
63
|
-
export {
|
|
64
|
-
fieldTypes,
|
|
65
|
-
getClassMeta,
|
|
66
|
-
getFieldMetaMap,
|
|
67
|
-
getFieldMetaMapOnPrototype,
|
|
68
|
-
getFieldMetas,
|
|
69
|
-
getGqlTypeStr,
|
|
70
|
-
getQueryMap,
|
|
71
|
-
getScalarExample,
|
|
72
|
-
isConstantModel,
|
|
73
|
-
scalarExampleMap,
|
|
74
|
-
setFieldMetaMap,
|
|
75
|
-
setFieldMetaMapOnPrototype
|
|
76
|
-
};
|