@chevre/domain 21.4.0-alpha.24 → 21.4.0-alpha.25
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/example/src/chevre/migrateIAMMemberMemberOf.ts +59 -0
- package/example/src/chevre/migrateReservationProvider.ts +5 -3
- package/example/src/chevre/searchPermissions.ts +7 -15
- package/lib/chevre/repo/member.d.ts +37 -0
- package/lib/chevre/repo/member.js +22 -6
- package/lib/chevre/repo/mongoose/schemas/member.d.ts +7 -7
- package/lib/chevre/repo/mongoose/schemas/member.js +12 -6
- package/lib/chevre/service/iam.d.ts +5 -0
- package/lib/chevre/service/iam.js +7 -19
- package/package.json +3 -3
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
// import * as moment from 'moment';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../lib/index';
|
|
6
|
+
|
|
7
|
+
// const project = { id: String(process.env.PROJECT_ID) };
|
|
8
|
+
// const EXCLUDED_PROJECT_ID = process.env.EXCLUDED_PROJECT_ID;
|
|
9
|
+
|
|
10
|
+
// tslint:disable-next-line:max-func-body-length
|
|
11
|
+
async function main() {
|
|
12
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: true });
|
|
13
|
+
|
|
14
|
+
const memberRepo = new chevre.repository.Member(mongoose.connection);
|
|
15
|
+
|
|
16
|
+
const cursor = memberRepo.getCursor(
|
|
17
|
+
{},
|
|
18
|
+
{
|
|
19
|
+
// _id: 1,
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
console.log('members found');
|
|
23
|
+
|
|
24
|
+
let i = 0;
|
|
25
|
+
let updateCount = 0;
|
|
26
|
+
await cursor.eachAsync(async (doc) => {
|
|
27
|
+
i += 1;
|
|
28
|
+
const iamMember: chevre.factory.iam.IMember = doc.toObject();
|
|
29
|
+
|
|
30
|
+
const memberOfId = iamMember.member.memberOf?.id;
|
|
31
|
+
const alreadyMigrated = typeof memberOfId === 'string';
|
|
32
|
+
|
|
33
|
+
if (alreadyMigrated) {
|
|
34
|
+
console.log('already exist...', iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, memberOfId, i);
|
|
35
|
+
} else {
|
|
36
|
+
console.log(
|
|
37
|
+
'updating reservation...', iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, memberOfId, i);
|
|
38
|
+
await memberRepo.updateByMemberId({
|
|
39
|
+
project: { id: iamMember.project.id },
|
|
40
|
+
member: {
|
|
41
|
+
id: iamMember.member.id,
|
|
42
|
+
memberOf: {
|
|
43
|
+
id: iamMember.project.id,
|
|
44
|
+
typeOf: chevre.factory.organizationType.Project
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
updateCount += 1;
|
|
49
|
+
console.log('updated.', iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, memberOfId, i);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
console.log(i, 'members checked');
|
|
54
|
+
console.log(updateCount, 'members updated');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
main()
|
|
58
|
+
.then()
|
|
59
|
+
.catch(console.error);
|
|
@@ -9,7 +9,7 @@ import { chevre } from '../../../lib/index';
|
|
|
9
9
|
|
|
10
10
|
// tslint:disable-next-line:max-func-body-length
|
|
11
11
|
async function main() {
|
|
12
|
-
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex:
|
|
12
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
13
13
|
|
|
14
14
|
const reservationRepo = new chevre.repository.Reservation(mongoose.connection);
|
|
15
15
|
const placeRepo = new chevre.repository.Place(mongoose.connection);
|
|
@@ -22,9 +22,11 @@ async function main() {
|
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
// bookingTime: {
|
|
25
|
-
// $gte: moment('
|
|
25
|
+
// $gte: moment('2022-07-01T00:00:00Z')
|
|
26
|
+
// .toDate(),
|
|
27
|
+
// $lte: moment('2022-03-01T00:00:00Z')
|
|
26
28
|
// .toDate()
|
|
27
|
-
// }
|
|
29
|
+
// },
|
|
28
30
|
'provider.id': { $exists: false }
|
|
29
31
|
},
|
|
30
32
|
{
|
|
@@ -15,24 +15,16 @@ async function main() {
|
|
|
15
15
|
|
|
16
16
|
let now: Date;
|
|
17
17
|
|
|
18
|
-
// let now = new Date();
|
|
19
|
-
// const aggregateRoleNamesResult = await memberRepo.aggregateRoleNames({
|
|
20
|
-
// project: { id: { $eq: PROJECT_ID } },
|
|
21
|
-
// member: { id: { $eq: memberId } }
|
|
22
|
-
// });
|
|
23
|
-
|
|
24
|
-
// const aggregatePermissionsResult = await roleRepo.aggregatePermissions({
|
|
25
|
-
// roleName: {
|
|
26
|
-
// $in: aggregateRoleNamesResult.map((r) => r.roleName)
|
|
27
|
-
// }
|
|
28
|
-
// });
|
|
29
|
-
// console.log('time cost:', moment()
|
|
30
|
-
// .diff(now));
|
|
31
|
-
|
|
32
18
|
now = new Date();
|
|
33
19
|
const searchPermissionsResult = await chevre.service.iam.searchPermissions({
|
|
34
20
|
project: { id: PROJECT_ID },
|
|
35
|
-
member: {
|
|
21
|
+
member: {
|
|
22
|
+
id: memberId,
|
|
23
|
+
memberOf: {
|
|
24
|
+
id: PROJECT_ID,
|
|
25
|
+
typeOf: chevre.factory.organizationType.Project
|
|
26
|
+
}
|
|
27
|
+
}
|
|
36
28
|
})({
|
|
37
29
|
member: memberRepo,
|
|
38
30
|
role: roleRepo
|
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
1
25
|
import { Connection } from 'mongoose';
|
|
2
26
|
import * as factory from '../factory';
|
|
3
27
|
/**
|
|
@@ -19,6 +43,14 @@ export declare class MongoRepository {
|
|
|
19
43
|
id: {
|
|
20
44
|
$eq: string;
|
|
21
45
|
};
|
|
46
|
+
memberOf: {
|
|
47
|
+
id: {
|
|
48
|
+
$eq: string;
|
|
49
|
+
};
|
|
50
|
+
typeOf: {
|
|
51
|
+
$eq: factory.organizationType.Project;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
22
54
|
};
|
|
23
55
|
}): Promise<{
|
|
24
56
|
roleName: string;
|
|
@@ -47,6 +79,10 @@ export declare class MongoRepository {
|
|
|
47
79
|
id: string;
|
|
48
80
|
image?: string;
|
|
49
81
|
name?: string;
|
|
82
|
+
memberOf?: {
|
|
83
|
+
id: string;
|
|
84
|
+
typeOf: factory.organizationType.Project;
|
|
85
|
+
};
|
|
50
86
|
};
|
|
51
87
|
}): Promise<void>;
|
|
52
88
|
/**
|
|
@@ -75,4 +111,5 @@ export declare class MongoRepository {
|
|
|
75
111
|
limit: number;
|
|
76
112
|
page: number;
|
|
77
113
|
}): Promise<string[]>;
|
|
114
|
+
getCursor(conditions: any, projection: any): import("mongoose").Cursor<any, import("mongoose").QueryOptions<any>>;
|
|
78
115
|
}
|
|
@@ -22,7 +22,7 @@ class MongoRepository {
|
|
|
22
22
|
}
|
|
23
23
|
// tslint:disable-next-line:cyclomatic-complexity max-func-body-length
|
|
24
24
|
static CREATE_MONGO_CONDITIONS(params) {
|
|
25
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
25
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
26
26
|
const andConditions = [];
|
|
27
27
|
// tslint:disable-next-line:no-single-line-block-comment
|
|
28
28
|
/* istanbul ignore else */
|
|
@@ -48,6 +48,14 @@ class MongoRepository {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
+
const memberMemberOfTypeOfEq = (_c = (_b = (_a = params.member) === null || _a === void 0 ? void 0 : _a.memberOf) === null || _b === void 0 ? void 0 : _b.typeOf) === null || _c === void 0 ? void 0 : _c.$eq;
|
|
52
|
+
if (typeof memberMemberOfTypeOfEq === 'string') {
|
|
53
|
+
andConditions.push({ 'member.memberOf.typeOf': { $eq: memberMemberOfTypeOfEq } });
|
|
54
|
+
}
|
|
55
|
+
const memberMemberOfIdEq = (_f = (_e = (_d = params.member) === null || _d === void 0 ? void 0 : _d.memberOf) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.$eq;
|
|
56
|
+
if (typeof memberMemberOfIdEq === 'string') {
|
|
57
|
+
andConditions.push({ 'member.memberOf.id': { $eq: memberMemberOfIdEq } });
|
|
58
|
+
}
|
|
51
59
|
// tslint:disable-next-line:no-single-line-block-comment
|
|
52
60
|
/* istanbul ignore else */
|
|
53
61
|
if (params.member !== undefined && params.member !== null) {
|
|
@@ -71,7 +79,7 @@ class MongoRepository {
|
|
|
71
79
|
}
|
|
72
80
|
}
|
|
73
81
|
}
|
|
74
|
-
const memberIdIn = (
|
|
82
|
+
const memberIdIn = (_h = (_g = params.member) === null || _g === void 0 ? void 0 : _g.id) === null || _h === void 0 ? void 0 : _h.$in;
|
|
75
83
|
if (Array.isArray(memberIdIn)) {
|
|
76
84
|
andConditions.push({
|
|
77
85
|
'member.id': {
|
|
@@ -79,7 +87,7 @@ class MongoRepository {
|
|
|
79
87
|
}
|
|
80
88
|
});
|
|
81
89
|
}
|
|
82
|
-
const memberNameRegex = (
|
|
90
|
+
const memberNameRegex = (_k = (_j = params.member) === null || _j === void 0 ? void 0 : _j.name) === null || _k === void 0 ? void 0 : _k.$regex;
|
|
83
91
|
if (typeof memberNameRegex === 'string' && memberNameRegex.length > 0) {
|
|
84
92
|
andConditions.push({
|
|
85
93
|
'member.name': {
|
|
@@ -88,7 +96,7 @@ class MongoRepository {
|
|
|
88
96
|
}
|
|
89
97
|
});
|
|
90
98
|
}
|
|
91
|
-
const memberHasRoleRoleNameEq = (
|
|
99
|
+
const memberHasRoleRoleNameEq = (_o = (_m = (_l = params.member) === null || _l === void 0 ? void 0 : _l.hasRole) === null || _m === void 0 ? void 0 : _m.roleName) === null || _o === void 0 ? void 0 : _o.$eq;
|
|
92
100
|
if (typeof memberHasRoleRoleNameEq === 'string') {
|
|
93
101
|
andConditions.push({
|
|
94
102
|
'member.hasRole.roleName': {
|
|
@@ -136,7 +144,9 @@ class MongoRepository {
|
|
|
136
144
|
return __awaiter(this, void 0, void 0, function* () {
|
|
137
145
|
const matchStages = [
|
|
138
146
|
{ $match: { 'project.id': { $eq: params.project.id.$eq } } },
|
|
139
|
-
{ $match: { 'member.id': { $eq: params.member.id.$eq } } }
|
|
147
|
+
{ $match: { 'member.id': { $eq: params.member.id.$eq } } },
|
|
148
|
+
{ $match: { 'member.memberOf.id': { $eq: params.member.memberOf.id.$eq } } },
|
|
149
|
+
{ $match: { 'member.memberOf.typeOf': { $eq: params.member.memberOf.typeOf.$eq } } }
|
|
140
150
|
];
|
|
141
151
|
const aggregate = this.memberModel.aggregate([
|
|
142
152
|
// ...(typeof params.sort?.productID === 'number')
|
|
@@ -212,11 +222,12 @@ class MongoRepository {
|
|
|
212
222
|
* メンバー更新
|
|
213
223
|
*/
|
|
214
224
|
updateByMemberId(params) {
|
|
225
|
+
var _a;
|
|
215
226
|
return __awaiter(this, void 0, void 0, function* () {
|
|
216
227
|
const doc = yield this.memberModel.findOneAndUpdate({
|
|
217
228
|
'project.id': { $eq: params.project.id },
|
|
218
229
|
'member.id': { $eq: params.member.id }
|
|
219
|
-
}, Object.assign(Object.assign(Object.assign({ updatedAt: new Date() }, (Array.isArray(params.member.hasRole)) ? { 'member.hasRole': params.member.hasRole } : undefined), (typeof params.member.image === 'string') ? { 'member.image': params.member.image } : undefined), (typeof params.member.name === 'string') ? { 'member.name': params.member.name } : undefined))
|
|
230
|
+
}, Object.assign(Object.assign(Object.assign(Object.assign({ updatedAt: new Date() }, (Array.isArray(params.member.hasRole)) ? { 'member.hasRole': params.member.hasRole } : undefined), (typeof params.member.image === 'string') ? { 'member.image': params.member.image } : undefined), (typeof params.member.name === 'string') ? { 'member.name': params.member.name } : undefined), (typeof ((_a = params.member.memberOf) === null || _a === void 0 ? void 0 : _a.id) === 'string') ? { 'member.memberOf': params.member.memberOf } : undefined))
|
|
220
231
|
.exec();
|
|
221
232
|
if (doc === null) {
|
|
222
233
|
throw new factory.errors.NotFound(this.memberModel.modelName);
|
|
@@ -261,5 +272,10 @@ class MongoRepository {
|
|
|
261
272
|
return projectMembers.map((m) => m.project.id);
|
|
262
273
|
});
|
|
263
274
|
}
|
|
275
|
+
getCursor(conditions, projection) {
|
|
276
|
+
return this.memberModel.find(conditions, projection)
|
|
277
|
+
.sort({ 'member.id': factory.sortType.Ascending })
|
|
278
|
+
.cursor();
|
|
279
|
+
}
|
|
264
280
|
}
|
|
265
281
|
exports.MongoRepository = MongoRepository;
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
import { Schema } from 'mongoose';
|
|
26
26
|
declare const modelName = "Member";
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* IAMメンバースキーマ
|
|
29
29
|
*/
|
|
30
30
|
declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
|
|
31
31
|
collection: string;
|
|
@@ -53,16 +53,16 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
|
|
|
53
53
|
};
|
|
54
54
|
}, {
|
|
55
55
|
typeOf: string;
|
|
56
|
-
project
|
|
57
|
-
member
|
|
56
|
+
project: any;
|
|
57
|
+
member: any;
|
|
58
58
|
}, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
|
|
59
59
|
typeOf: string;
|
|
60
|
-
project
|
|
61
|
-
member
|
|
60
|
+
project: any;
|
|
61
|
+
member: any;
|
|
62
62
|
}>> & Omit<import("mongoose").FlatRecord<{
|
|
63
63
|
typeOf: string;
|
|
64
|
-
project
|
|
65
|
-
member
|
|
64
|
+
project: any;
|
|
65
|
+
member: any;
|
|
66
66
|
}> & {
|
|
67
67
|
_id: import("mongoose").Types.ObjectId;
|
|
68
68
|
}, never>>;
|
|
@@ -6,15 +6,21 @@ const writeConcern_1 = require("../writeConcern");
|
|
|
6
6
|
const modelName = 'Member';
|
|
7
7
|
exports.modelName = modelName;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* IAMメンバースキーマ
|
|
10
10
|
*/
|
|
11
11
|
const schema = new mongoose_1.Schema({
|
|
12
|
-
project:
|
|
12
|
+
project: {
|
|
13
|
+
type: mongoose_1.SchemaTypes.Mixed,
|
|
14
|
+
required: true
|
|
15
|
+
},
|
|
13
16
|
typeOf: {
|
|
14
17
|
type: String,
|
|
15
18
|
required: true
|
|
16
19
|
},
|
|
17
|
-
member:
|
|
20
|
+
member: {
|
|
21
|
+
type: mongoose_1.SchemaTypes.Mixed,
|
|
22
|
+
required: true
|
|
23
|
+
}
|
|
18
24
|
}, {
|
|
19
25
|
collection: 'members',
|
|
20
26
|
id: true,
|
|
@@ -43,9 +49,7 @@ const schema = new mongoose_1.Schema({
|
|
|
43
49
|
exports.schema = schema;
|
|
44
50
|
schema.index({ createdAt: 1 }, { name: 'searchByCreatedAt' });
|
|
45
51
|
schema.index({ updatedAt: 1 }, { name: 'searchByUpdatedAt' });
|
|
46
|
-
schema.index({ 'member.id': 1 }, {
|
|
47
|
-
name: 'searchByMemberId'
|
|
48
|
-
});
|
|
52
|
+
schema.index({ 'member.id': 1 }, { name: 'searchByMemberId' });
|
|
49
53
|
schema.index({ 'project.id': 1, 'member.id': 1 }, {
|
|
50
54
|
name: 'uniqueProjectMember',
|
|
51
55
|
unique: true
|
|
@@ -62,3 +66,5 @@ schema.index({ 'member.hasRole.roleName': 1, 'member.id': 1 }, {
|
|
|
62
66
|
'member.hasRole.roleName': { $exists: true }
|
|
63
67
|
}
|
|
64
68
|
});
|
|
69
|
+
schema.index({ 'member.memberOf.typeOf': 1, 'member.id': 1 }, { name: 'searchByMemberMemberOfTypeOf' });
|
|
70
|
+
schema.index({ 'member.memberOf.id': 1, 'member.id': 1 }, { name: 'searchByMemberMemberOfId' });
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { MongoRepository as MemberRepo } from '../repo/member';
|
|
5
5
|
import { MongoRepository as RoleRepo } from '../repo/role';
|
|
6
|
+
import * as factory from '../factory';
|
|
6
7
|
export type IPermission = string;
|
|
7
8
|
/**
|
|
8
9
|
* プロジェクトメンバーの権限を検索する
|
|
@@ -13,6 +14,10 @@ export declare function searchPermissions(params: {
|
|
|
13
14
|
};
|
|
14
15
|
member: {
|
|
15
16
|
id: string;
|
|
17
|
+
memberOf: {
|
|
18
|
+
id: string;
|
|
19
|
+
typeOf: factory.organizationType.Project;
|
|
20
|
+
};
|
|
16
21
|
};
|
|
17
22
|
}): (repos: {
|
|
18
23
|
member: MemberRepo;
|
|
@@ -18,30 +18,18 @@ function searchPermissions(params) {
|
|
|
18
18
|
let permissions = [];
|
|
19
19
|
const hasRole = yield repos.member.aggregateRoleNames({
|
|
20
20
|
project: { id: { $eq: params.project.id } },
|
|
21
|
-
member: {
|
|
21
|
+
member: {
|
|
22
|
+
id: { $eq: params.member.id },
|
|
23
|
+
memberOf: {
|
|
24
|
+
id: { $eq: params.member.memberOf.id },
|
|
25
|
+
typeOf: { $eq: params.member.memberOf.typeOf }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
22
28
|
});
|
|
23
29
|
if (hasRole.length > 0) {
|
|
24
30
|
permissions = yield repos.role.aggregatePermissions({ roleName: { $in: hasRole.map((r) => r.roleName) } });
|
|
25
31
|
}
|
|
26
32
|
return { hasRole, permissions };
|
|
27
|
-
// let permissions: IPermission[] = [];
|
|
28
|
-
// const projectMembers = await repos.member.search({
|
|
29
|
-
// project: { id: { $eq: params.project.id } },
|
|
30
|
-
// member: { id: { $eq: params.member.id } }
|
|
31
|
-
// });
|
|
32
|
-
// // 持っているロールを検索
|
|
33
|
-
// const roleNames = projectMembers.reduce<string[]>(
|
|
34
|
-
// (a, b) => [...a, ...(Array.isArray(b.member.hasRole)) ? b.member.hasRole.map((r) => r.roleName) : []],
|
|
35
|
-
// []
|
|
36
|
-
// );
|
|
37
|
-
// const roles = await repos.role.search({ roleName: { $in: roleNames } });
|
|
38
|
-
// // 権限をまとめる
|
|
39
|
-
// permissions = roles.reduce<string[]>(
|
|
40
|
-
// (a, b) => [...a, ...b.permissions],
|
|
41
|
-
// []
|
|
42
|
-
// );
|
|
43
|
-
// permissions = [...new Set(permissions)];
|
|
44
|
-
// return { roleNames, permissions };
|
|
45
33
|
});
|
|
46
34
|
}
|
|
47
35
|
exports.searchPermissions = searchPermissions;
|
package/package.json
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
}
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@chevre/factory": "4.316.0-alpha.
|
|
13
|
-
"@cinerino/sdk": "3.
|
|
12
|
+
"@chevre/factory": "4.316.0-alpha.5",
|
|
13
|
+
"@cinerino/sdk": "3.162.0-alpha.1",
|
|
14
14
|
"@motionpicture/coa-service": "9.2.0",
|
|
15
15
|
"@motionpicture/gmo-service": "5.2.0",
|
|
16
16
|
"@sendgrid/mail": "6.4.0",
|
|
@@ -117,5 +117,5 @@
|
|
|
117
117
|
"postversion": "git push origin --tags",
|
|
118
118
|
"prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
|
|
119
119
|
},
|
|
120
|
-
"version": "21.4.0-alpha.
|
|
120
|
+
"version": "21.4.0-alpha.25"
|
|
121
121
|
}
|