@abtnode/models 1.16.8-next-d1e52353
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/README.md +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +21 -0
- package/lib/migrate.d.ts +13 -0
- package/lib/migrate.js +127 -0
- package/lib/migrations/blocklet/20230422000000-genesis.js +21 -0
- package/lib/migrations/certificate-manager/20230422000000-genesis.js +19 -0
- package/lib/migrations/connect/20230422000000-genesis.js +13 -0
- package/lib/migrations/server/20230422000000-genesis.js +45 -0
- package/lib/migrations/service/20230422000000-genesis.js +13 -0
- package/lib/models/access-key.d.ts +6 -0
- package/lib/models/access-key.js +56 -0
- package/lib/models/account.d.ts +11 -0
- package/lib/models/account.js +56 -0
- package/lib/models/audit-log.d.ts +7 -0
- package/lib/models/audit-log.js +79 -0
- package/lib/models/backup.d.ts +6 -0
- package/lib/models/backup.js +72 -0
- package/lib/models/blocklet-extra.d.ts +7 -0
- package/lib/models/blocklet-extra.js +63 -0
- package/lib/models/blocklet.d.ts +6 -0
- package/lib/models/blocklet.js +120 -0
- package/lib/models/cache.d.ts +8 -0
- package/lib/models/cache.js +44 -0
- package/lib/models/certificate.d.ts +7 -0
- package/lib/models/certificate.js +70 -0
- package/lib/models/connected-account.d.ts +8 -0
- package/lib/models/connected-account.js +59 -0
- package/lib/models/connection.d.ts +23 -0
- package/lib/models/connection.js +89 -0
- package/lib/models/http-challenge.d.ts +9 -0
- package/lib/models/http-challenge.js +49 -0
- package/lib/models/index.d.ts +63 -0
- package/lib/models/index.js +149 -0
- package/lib/models/job.d.ts +13 -0
- package/lib/models/job.js +62 -0
- package/lib/models/message.d.ts +9 -0
- package/lib/models/message.js +54 -0
- package/lib/models/migration.d.ts +6 -0
- package/lib/models/migration.js +53 -0
- package/lib/models/notification.d.ts +4 -0
- package/lib/models/notification.js +77 -0
- package/lib/models/passport.d.ts +8 -0
- package/lib/models/passport.js +89 -0
- package/lib/models/rbac.d.ts +13 -0
- package/lib/models/rbac.js +65 -0
- package/lib/models/server.d.ts +10 -0
- package/lib/models/server.js +130 -0
- package/lib/models/session.d.ts +10 -0
- package/lib/models/session.js +54 -0
- package/lib/models/site.d.ts +8 -0
- package/lib/models/site.js +62 -0
- package/lib/models/user.d.ts +6 -0
- package/lib/models/user.js +105 -0
- package/lib/models/webhook.d.ts +6 -0
- package/lib/models/webhook.js +47 -0
- package/lib/states/base.d.ts +40 -0
- package/lib/states/base.js +144 -0
- package/lib/states/factory.d.ts +1 -0
- package/lib/states/factory.js +21 -0
- package/lib/types.d.ts +49 -0
- package/lib/types.js +2 -0
- package/lib/util.d.ts +6 -0
- package/lib/util.js +108 -0
- package/package.json +58 -0
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ModelDefined } from 'sequelize';
|
|
2
|
+
export type DynamicModel<T> = ModelDefined<T, T> & {
|
|
3
|
+
initialize: (sequelize: any) => void;
|
|
4
|
+
GENESIS_ATTRIBUTES: {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export type QueryInterface = {
|
|
9
|
+
createTable: Function;
|
|
10
|
+
dropTable: Function;
|
|
11
|
+
};
|
|
12
|
+
export type UpdateOptions = {
|
|
13
|
+
returnUpdatedDocs?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type AnyObject = {
|
|
16
|
+
[x: string]: any;
|
|
17
|
+
};
|
|
18
|
+
export type SortOptions<T> = {
|
|
19
|
+
[x in keyof T]?: 1 | -1;
|
|
20
|
+
};
|
|
21
|
+
export type SelectOptions<T> = {
|
|
22
|
+
[x in keyof T]?: 0 | 1;
|
|
23
|
+
};
|
|
24
|
+
export type PagingOptions = {
|
|
25
|
+
pageSize?: number;
|
|
26
|
+
page?: number;
|
|
27
|
+
};
|
|
28
|
+
export type ApplyBasicQueryCasting<T> = T | T[] | (T extends (infer U)[] ? U : any) | any;
|
|
29
|
+
export type Condition<T> = ApplyBasicQueryCasting<T> | QuerySelector<ApplyBasicQueryCasting<T>>;
|
|
30
|
+
export type ConditionOptions<T> = {
|
|
31
|
+
[P in keyof T]?: Condition<T[P]>;
|
|
32
|
+
} & RootQuerySelector<T>;
|
|
33
|
+
export type QuerySelector<T> = {
|
|
34
|
+
$lt?: T;
|
|
35
|
+
$lte?: T;
|
|
36
|
+
$gt?: T;
|
|
37
|
+
$gte?: T;
|
|
38
|
+
$in?: T[];
|
|
39
|
+
$nin?: T[];
|
|
40
|
+
$ne?: T;
|
|
41
|
+
$exists?: boolean;
|
|
42
|
+
$regex?: T extends string ? RegExp | string : never;
|
|
43
|
+
};
|
|
44
|
+
export type RootQuerySelector<T> = {
|
|
45
|
+
$and?: Array<ConditionOptions<T>>;
|
|
46
|
+
$or?: Array<ConditionOptions<T>>;
|
|
47
|
+
$not?: Array<ConditionOptions<T>>;
|
|
48
|
+
[key: string]: any;
|
|
49
|
+
};
|
package/lib/types.js
ADDED
package/lib/util.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FindOptions, IncludeOptions, Order } from 'sequelize';
|
|
2
|
+
export declare function generateId(): string;
|
|
3
|
+
export declare function formatConditions(conditions: Record<string, any>): IncludeOptions;
|
|
4
|
+
export declare function formatOrder(sort: Record<string, any>): Order;
|
|
5
|
+
export declare function formatSelection(selection: Record<string, any>): string[];
|
|
6
|
+
export declare function formatParams(params: FindOptions): FindOptions;
|
package/lib/util.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
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.formatParams = exports.formatSelection = exports.formatOrder = exports.formatConditions = exports.generateId = void 0;
|
|
7
|
+
const uuid_1 = require("uuid");
|
|
8
|
+
const sequelize_1 = require("sequelize");
|
|
9
|
+
const lodash_isempty_1 = __importDefault(require("lodash.isempty"));
|
|
10
|
+
function generateId() {
|
|
11
|
+
return (0, uuid_1.v4)();
|
|
12
|
+
}
|
|
13
|
+
exports.generateId = generateId;
|
|
14
|
+
function formatConditions(conditions) {
|
|
15
|
+
if (conditions.where || conditions.include) {
|
|
16
|
+
return conditions;
|
|
17
|
+
}
|
|
18
|
+
const where = {};
|
|
19
|
+
for (const [field, value] of Object.entries(conditions)) {
|
|
20
|
+
if (field === '$or' && Array.isArray(value)) {
|
|
21
|
+
where[sequelize_1.Op.or] = value.map((x) => formatConditions(x).where);
|
|
22
|
+
}
|
|
23
|
+
else if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
24
|
+
const operators = [];
|
|
25
|
+
for (const [operator, operand] of Object.entries(value)) {
|
|
26
|
+
switch (operator) {
|
|
27
|
+
case '$lt':
|
|
28
|
+
operators.push({ [sequelize_1.Op.lt]: operand });
|
|
29
|
+
break;
|
|
30
|
+
case '$lte':
|
|
31
|
+
operators.push({ [sequelize_1.Op.lte]: operand });
|
|
32
|
+
break;
|
|
33
|
+
case '$gt':
|
|
34
|
+
operators.push({ [sequelize_1.Op.gt]: operand });
|
|
35
|
+
break;
|
|
36
|
+
case '$gte':
|
|
37
|
+
operators.push({ [sequelize_1.Op.gte]: operand });
|
|
38
|
+
break;
|
|
39
|
+
case '$ne':
|
|
40
|
+
operators.push({ [sequelize_1.Op.ne]: operand });
|
|
41
|
+
break;
|
|
42
|
+
case '$in':
|
|
43
|
+
operators.push({ [sequelize_1.Op.in]: operand });
|
|
44
|
+
break;
|
|
45
|
+
case '$nin':
|
|
46
|
+
operators.push({ [sequelize_1.Op.notIn]: operand });
|
|
47
|
+
break;
|
|
48
|
+
case '$exists':
|
|
49
|
+
operators.push(operand ? { [sequelize_1.Op.not]: null } : { [sequelize_1.Op.is]: null });
|
|
50
|
+
break;
|
|
51
|
+
case '$regex':
|
|
52
|
+
operators.push({ [sequelize_1.Op.like]: `%${operand}%` });
|
|
53
|
+
break;
|
|
54
|
+
default:
|
|
55
|
+
operators.push({ [operator]: operand });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (operators.length === 1) {
|
|
59
|
+
// eslint-disable-next-line prefer-destructuring
|
|
60
|
+
where[field] = operators[0];
|
|
61
|
+
}
|
|
62
|
+
else if (operators.length > 1) {
|
|
63
|
+
where[field] = { [sequelize_1.Op.and]: operators };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
where[field] = value;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return { where };
|
|
71
|
+
}
|
|
72
|
+
exports.formatConditions = formatConditions;
|
|
73
|
+
function formatOrder(sort) {
|
|
74
|
+
const order = [];
|
|
75
|
+
for (const [field, value] of Object.entries(sort)) {
|
|
76
|
+
if (value === 1) {
|
|
77
|
+
order.push([field, 'ASC']);
|
|
78
|
+
}
|
|
79
|
+
else if (value === -1) {
|
|
80
|
+
order.push([field, 'DESC']);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.warn(`Unsupported sort value for field "${field}": ${value}. Only -1 and 1 are supported.`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return order;
|
|
87
|
+
}
|
|
88
|
+
exports.formatOrder = formatOrder;
|
|
89
|
+
function formatSelection(selection) {
|
|
90
|
+
const attributes = [];
|
|
91
|
+
for (const [field, value] of Object.entries(selection)) {
|
|
92
|
+
if (value === 1) {
|
|
93
|
+
attributes.push(field);
|
|
94
|
+
}
|
|
95
|
+
else if (value !== 0) {
|
|
96
|
+
console.warn(`Unsupported projection value for field "${field}": ${value}. Only 0 and 1 are supported.`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return attributes;
|
|
100
|
+
}
|
|
101
|
+
exports.formatSelection = formatSelection;
|
|
102
|
+
function formatParams(params) {
|
|
103
|
+
if ((0, lodash_isempty_1.default)(params.attributes)) {
|
|
104
|
+
delete params.attributes;
|
|
105
|
+
}
|
|
106
|
+
return params;
|
|
107
|
+
}
|
|
108
|
+
exports.formatParams = formatParams;
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@abtnode/models",
|
|
3
|
+
"version": "1.16.8-next-d1e52353",
|
|
4
|
+
"description": "Sequelize models for blocklet server and blocklet service",
|
|
5
|
+
"homepage": "https://github.com/ArcBlock/blocklet-server#readme",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"main": "lib/index.js",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"lint": "eslint src",
|
|
12
|
+
"lint:fix": "eslint src --fix",
|
|
13
|
+
"test": "MIGRATION_SCRIPT_EXTENSION=ts node tools/jest.js",
|
|
14
|
+
"coverage": "npm run test -- --coverage",
|
|
15
|
+
"clean": "rm -fr lib",
|
|
16
|
+
"build": "npm run clean && tsc && rm -f lib/migrations/*/*.d.ts"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"lib"
|
|
20
|
+
],
|
|
21
|
+
"author": {
|
|
22
|
+
"name": "wangshijun",
|
|
23
|
+
"email": "shijun@arcblock.io",
|
|
24
|
+
"url": "https://github.com/wangshijun"
|
|
25
|
+
},
|
|
26
|
+
"license": "Apache-2.0",
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/ArcBlock/blocklet-server"
|
|
30
|
+
},
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/ArcBlock/blocklet-server/issues"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@abtnode/types": "1.16.8-next-d1e52353",
|
|
36
|
+
"@nedb/core": "^2.1.5",
|
|
37
|
+
"lodash.clonedeep": "^4.5.0",
|
|
38
|
+
"lodash.get": "^4.4.2",
|
|
39
|
+
"lodash.isempty": "^4.4.0",
|
|
40
|
+
"sequelize": "^6.31.0",
|
|
41
|
+
"sqlite3": "^5.1.6",
|
|
42
|
+
"umzug": "^3.2.1",
|
|
43
|
+
"uuid": "^8.3.2"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@arcblock/eslint-config-ts": "^0.2.3",
|
|
47
|
+
"@types/jest": "^29.2.0",
|
|
48
|
+
"@types/node": "^18.11.0",
|
|
49
|
+
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
|
50
|
+
"@typescript-eslint/parser": "^5.40.1",
|
|
51
|
+
"jest": "^27.5.1",
|
|
52
|
+
"ts-jest": "^27.1.5",
|
|
53
|
+
"ts-node": "^10.9.1",
|
|
54
|
+
"typescript": "^4.8.4"
|
|
55
|
+
},
|
|
56
|
+
"resolutions": {},
|
|
57
|
+
"gitHead": "d357376aa3df9ef789befc7f548629deecb04d96"
|
|
58
|
+
}
|