@chevre/domain 23.2.0-alpha.17 → 23.2.0-alpha.19
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/place/adminEntranceGates.ts +68 -0
- package/example/src/chevre/place/checkEntranceGatesCount.ts +82 -0
- package/example/src/chevre/place/findSections.ts +28 -0
- package/example/src/chevre/roles/addAdminRoomReadPermissionIfNotExists.ts +34 -0
- package/example/src/chevre/roles/addAdminRoomWritePermissionIfNotExists.ts +34 -0
- package/lib/chevre/repo/aggregateOrder.js +0 -93
- package/lib/chevre/repo/aggregateReservation.d.ts +0 -1
- package/lib/chevre/repo/aggregateReservation.js +0 -2
- package/lib/chevre/repo/mongoose/schemas/aggregateReservation.js +0 -1
- package/lib/chevre/repo/place/entranceGate.d.ts +25 -0
- package/lib/chevre/repo/place/entranceGate.js +93 -0
- package/lib/chevre/repo/place/section.d.ts +8 -1
- package/lib/chevre/repo/place/section.js +132 -95
- package/package.json +2 -2
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
// import * as redis from 'redis';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../../lib/index';
|
|
6
|
+
|
|
7
|
+
const project = { typeOf: chevre.factory.organizationType.Project, id: String(process.env.PROJECT_ID) };
|
|
8
|
+
|
|
9
|
+
async function main() {
|
|
10
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
11
|
+
|
|
12
|
+
const entranceGateRepo =
|
|
13
|
+
await chevre.repository.place.EntranceGate.createInstance(mongoose.connection, { id: '5bfb841d5a78d7948369979a' });
|
|
14
|
+
|
|
15
|
+
const gates = await entranceGateRepo.findEntranceGates({
|
|
16
|
+
limit: 10,
|
|
17
|
+
page: 1,
|
|
18
|
+
project: { id: { $eq: project.id } }
|
|
19
|
+
});
|
|
20
|
+
console.log(gates);
|
|
21
|
+
console.log(gates.length);
|
|
22
|
+
|
|
23
|
+
let result = await entranceGateRepo.addEntranceGatesByIdentifierIfNotExist(
|
|
24
|
+
[
|
|
25
|
+
{
|
|
26
|
+
$set: {
|
|
27
|
+
identifier: 'sample001',
|
|
28
|
+
name: { ja: 'gateNameJa' }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
{
|
|
33
|
+
project: { id: project.id }
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
console.log(result);
|
|
37
|
+
|
|
38
|
+
result = await entranceGateRepo.updateEntranceGatesByIdentifier(
|
|
39
|
+
[
|
|
40
|
+
{
|
|
41
|
+
$set: {
|
|
42
|
+
identifier: 'sample001',
|
|
43
|
+
name: { ja: 'gateNameJaUpdated' }
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
{
|
|
48
|
+
project: { id: project.id }
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
console.log(result);
|
|
52
|
+
|
|
53
|
+
result = await entranceGateRepo.deleteEntranceGatesByIdentifier(
|
|
54
|
+
[
|
|
55
|
+
{
|
|
56
|
+
identifier: 'sample001'
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
{
|
|
60
|
+
project: { id: project.id }
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
console.log(result);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
main()
|
|
67
|
+
.then(console.log)
|
|
68
|
+
.catch(console.error);
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../../lib/index';
|
|
5
|
+
|
|
6
|
+
// const project = { id: String(process.env.PROJECT_ID) };
|
|
7
|
+
// const excludedProject = { id: String(process.env.EXCLUDED_PROJECT_ID) };
|
|
8
|
+
|
|
9
|
+
// tslint:disable-next-line:max-func-body-length
|
|
10
|
+
async function main() {
|
|
11
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
12
|
+
|
|
13
|
+
const movieTheaterRepo = await chevre.repository.place.MovieTheater.createInstance(mongoose.connection);
|
|
14
|
+
|
|
15
|
+
const cursor = movieTheaterRepo.getCursor(
|
|
16
|
+
{
|
|
17
|
+
// 'project.id': {
|
|
18
|
+
// $ne: 'sskts-development',
|
|
19
|
+
// $eq: 'ttts-development'
|
|
20
|
+
// }
|
|
21
|
+
// _id: { $eq: '67de46777ec0510590b68922' }
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
// _id: 1,
|
|
25
|
+
// about: 1,
|
|
26
|
+
// project: 1,
|
|
27
|
+
// typeOf: 1,
|
|
28
|
+
// issuedBy: 1
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
console.log('docs found');
|
|
32
|
+
|
|
33
|
+
let i = 0;
|
|
34
|
+
let updateCount = 0;
|
|
35
|
+
await cursor.eachAsync(async (doc) => {
|
|
36
|
+
const movieTheater: chevre.factory.place.movieTheater.IPlace = doc.toObject();
|
|
37
|
+
|
|
38
|
+
i += 1;
|
|
39
|
+
const { hasEntranceGate } = movieTheater;
|
|
40
|
+
if (!Array.isArray(hasEntranceGate)) {
|
|
41
|
+
throw new Error('hasEntranceGateLength must be an array');
|
|
42
|
+
}
|
|
43
|
+
const hasEntranceGateLength = hasEntranceGate?.length;
|
|
44
|
+
if (typeof hasEntranceGateLength !== 'number') {
|
|
45
|
+
throw new Error('hasEntranceGateLength undefined');
|
|
46
|
+
}
|
|
47
|
+
const uniqueIdentifiersByMovieTheater = hasEntranceGate.map(({ identifier }) => identifier);
|
|
48
|
+
|
|
49
|
+
const entranceGateRepo = await chevre.repository.place.EntranceGate.createInstance(mongoose.connection, { id: movieTheater.id });
|
|
50
|
+
const entranceGates = await entranceGateRepo.findEntranceGates({
|
|
51
|
+
limit: 100,
|
|
52
|
+
page: 1,
|
|
53
|
+
project: { id: { $eq: movieTheater.project.id } }
|
|
54
|
+
});
|
|
55
|
+
const entranceGateCount = entranceGates.length;
|
|
56
|
+
const uniqueIdentifiers = entranceGates.map(({ identifier }) => identifier);
|
|
57
|
+
|
|
58
|
+
const countMatched = hasEntranceGateLength === entranceGateCount;
|
|
59
|
+
const identifiersMatched = uniqueIdentifiersByMovieTheater.length === uniqueIdentifiers.length
|
|
60
|
+
&& uniqueIdentifiersByMovieTheater.every((identifier) => uniqueIdentifiers.includes(identifier));
|
|
61
|
+
console.log(uniqueIdentifiersByMovieTheater, uniqueIdentifiers);
|
|
62
|
+
|
|
63
|
+
console.log(
|
|
64
|
+
'checking...', movieTheater.project.id, movieTheater.id, hasEntranceGateLength, entranceGateCount, i);
|
|
65
|
+
if (countMatched && identifiersMatched) {
|
|
66
|
+
console.log(
|
|
67
|
+
'matched.', movieTheater.project.id, movieTheater.id, hasEntranceGateLength, entranceGateCount, i);
|
|
68
|
+
} else {
|
|
69
|
+
updateCount += 1;
|
|
70
|
+
console.log(
|
|
71
|
+
'unmatched.',
|
|
72
|
+
movieTheater.project.id, movieTheater.id, hasEntranceGateLength, entranceGateCount, i);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
console.log(i, 'docs checked');
|
|
77
|
+
console.log(updateCount, 'docs updated');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
main()
|
|
81
|
+
.then()
|
|
82
|
+
.catch(console.error);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../../lib/index';
|
|
5
|
+
|
|
6
|
+
const project = { id: String(process.env.PROJECT_ID) };
|
|
7
|
+
|
|
8
|
+
async function main() {
|
|
9
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
10
|
+
|
|
11
|
+
const sectionRepo = await chevre.repository.place.Section.createInstance(mongoose.connection);
|
|
12
|
+
|
|
13
|
+
const sections = await sectionRepo.findSections({
|
|
14
|
+
limit: 10,
|
|
15
|
+
page: 1,
|
|
16
|
+
project: { id: { $eq: project.id } },
|
|
17
|
+
containedInPlace: {
|
|
18
|
+
branchCode: { $eq: '10' },
|
|
19
|
+
containedInPlace: { id: { $eq: '5bfb841d5a78d7948369979a' } }
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
console.log(sections);
|
|
23
|
+
console.log(sections.length);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
main()
|
|
27
|
+
.then(console.log)
|
|
28
|
+
.catch(console.error);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../../lib/index';
|
|
5
|
+
|
|
6
|
+
async function main() {
|
|
7
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
8
|
+
|
|
9
|
+
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
10
|
+
|
|
11
|
+
const roleNames = [
|
|
12
|
+
// chevre.factory.role.organizationRole.RoleName.InventoryManager,
|
|
13
|
+
// chevre.factory.role.organizationRole.RoleName.SellersOwner,
|
|
14
|
+
// chevre.factory.role.organizationRole.RoleName.SellersInventoryManager,
|
|
15
|
+
chevre.factory.role.organizationRole.RoleName.TicketClerk
|
|
16
|
+
];
|
|
17
|
+
const permissions = [
|
|
18
|
+
'admin.sellers.rooms.read',
|
|
19
|
+
'admin.sellers.seatSections.read'
|
|
20
|
+
];
|
|
21
|
+
for (const roleName of roleNames) {
|
|
22
|
+
for (const permission of permissions) {
|
|
23
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
24
|
+
roleName: { $eq: roleName },
|
|
25
|
+
permission
|
|
26
|
+
});
|
|
27
|
+
console.log('permission added.', result, roleName);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
main()
|
|
33
|
+
.then()
|
|
34
|
+
.catch(console.error);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../../lib/index';
|
|
5
|
+
|
|
6
|
+
async function main() {
|
|
7
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
8
|
+
|
|
9
|
+
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
10
|
+
|
|
11
|
+
const roleNames = [
|
|
12
|
+
chevre.factory.role.organizationRole.RoleName.InventoryManager,
|
|
13
|
+
chevre.factory.role.organizationRole.RoleName.SellersOwner,
|
|
14
|
+
chevre.factory.role.organizationRole.RoleName.SellersInventoryManager
|
|
15
|
+
// chevre.factory.role.organizationRole.RoleName.TicketClerk
|
|
16
|
+
];
|
|
17
|
+
const permissions = [
|
|
18
|
+
'admin.sellers.rooms.*',
|
|
19
|
+
'admin.sellers.seatSections.*'
|
|
20
|
+
];
|
|
21
|
+
for (const roleName of roleNames) {
|
|
22
|
+
for (const permission of permissions) {
|
|
23
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
24
|
+
roleName: { $eq: roleName },
|
|
25
|
+
permission
|
|
26
|
+
});
|
|
27
|
+
console.log('permission added.', result, roleName);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
main()
|
|
33
|
+
.then()
|
|
34
|
+
.catch(console.error);
|
|
@@ -20,99 +20,6 @@ class AggregateOrderRepo {
|
|
|
20
20
|
constructor(connection) {
|
|
21
21
|
this.aggregateOrderModel = connection.model(aggregateOrder_1.modelName, (0, aggregateOrder_1.createSchema)());
|
|
22
22
|
}
|
|
23
|
-
// public static CREATE_MONGO_CONDITIONS(
|
|
24
|
-
// conditions: ISearchConditions
|
|
25
|
-
// ): IMatchStage[] {
|
|
26
|
-
// const matchStages: IMatchStage[] = [];
|
|
27
|
-
// const projectIdEq = conditions.project?.id?.$eq;
|
|
28
|
-
// if (typeof projectIdEq === 'string') {
|
|
29
|
-
// matchStages.push({
|
|
30
|
-
// $match: { 'project.id': { $eq: projectIdEq } }
|
|
31
|
-
// });
|
|
32
|
-
// }
|
|
33
|
-
// const typeOfEq = conditions.reservationFor?.typeOf;
|
|
34
|
-
// if (typeof typeOfEq === 'string') {
|
|
35
|
-
// matchStages.push({
|
|
36
|
-
// $match: { 'reservationFor.typeOf': { $eq: typeOfEq } }
|
|
37
|
-
// });
|
|
38
|
-
// }
|
|
39
|
-
// const idEq = conditions.reservationFor?.id?.$eq;
|
|
40
|
-
// if (typeof idEq === 'string') {
|
|
41
|
-
// matchStages.push({
|
|
42
|
-
// $match: { 'reservationFor.id': { $eq: idEq } }
|
|
43
|
-
// });
|
|
44
|
-
// }
|
|
45
|
-
// const idIn = conditions.reservationFor?.id?.$in;
|
|
46
|
-
// if (Array.isArray(idIn)) {
|
|
47
|
-
// matchStages.push({
|
|
48
|
-
// $match: { 'reservationFor.id': { $in: idIn } }
|
|
49
|
-
// });
|
|
50
|
-
// }
|
|
51
|
-
// const reservationForStartDateGte = conditions.reservationFor?.startFrom;
|
|
52
|
-
// if (reservationForStartDateGte instanceof Date) {
|
|
53
|
-
// matchStages.push({
|
|
54
|
-
// $match: { 'reservationFor.startDate': { $gte: reservationForStartDateGte } }
|
|
55
|
-
// });
|
|
56
|
-
// }
|
|
57
|
-
// const reservationForStartDateLte = conditions.reservationFor?.startThrough;
|
|
58
|
-
// if (reservationForStartDateLte instanceof Date) {
|
|
59
|
-
// matchStages.push({
|
|
60
|
-
// $match: { 'reservationFor.startDate': { $lte: reservationForStartDateLte } }
|
|
61
|
-
// });
|
|
62
|
-
// }
|
|
63
|
-
// return matchStages;
|
|
64
|
-
// }
|
|
65
|
-
// /**
|
|
66
|
-
// * 予約集計を検索する
|
|
67
|
-
// */
|
|
68
|
-
// public async searchWithReservationForId(
|
|
69
|
-
// params: ISearchConditions,
|
|
70
|
-
// inclusion: ('aggregateOffer')[]
|
|
71
|
-
// ): Promise<ISearchWithReservationForIdResult[]> {
|
|
72
|
-
// const matchStages = AggregateReservationRepo.CREATE_MONGO_CONDITIONS(params);
|
|
73
|
-
// let projectStage: { [field in IKeyOfProjection]?: AnyExpression } = {
|
|
74
|
-
// _id: 0,
|
|
75
|
-
// id: '$reservationFor.id'
|
|
76
|
-
// };
|
|
77
|
-
// if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
78
|
-
// inclusion.forEach((field) => {
|
|
79
|
-
// projectStage[field] = { $ifNull: [`$${field}`, '$false'] };
|
|
80
|
-
// // projectStage[field] = 1;
|
|
81
|
-
// });
|
|
82
|
-
// } else {
|
|
83
|
-
// projectStage = {
|
|
84
|
-
// _id: 0,
|
|
85
|
-
// id: '$reservationFor.id',
|
|
86
|
-
// // aggregateEntranceGate: 1, // discontinue(2024-12-23~)
|
|
87
|
-
// aggregateOffer: 1
|
|
88
|
-
// };
|
|
89
|
-
// }
|
|
90
|
-
// const sortByStartDate = params.sort?.['reservationFor.startDate'];
|
|
91
|
-
// const aggregate = this.aggregateReservationModel.aggregate<ISearchWithReservationForIdResult>([
|
|
92
|
-
// ...matchStages,
|
|
93
|
-
// ...(typeof sortByStartDate === 'number')
|
|
94
|
-
// ? [{ $sort: { 'reservationFor.startDate': sortByStartDate } }]
|
|
95
|
-
// : [],
|
|
96
|
-
// // 現時点でreservationFor.idへのunique indexがないので、重複ドキュメント対応として、$group
|
|
97
|
-
// {
|
|
98
|
-
// $group: {
|
|
99
|
-
// _id: '$reservationFor.id',
|
|
100
|
-
// reservationFor: { $first: '$reservationFor' },
|
|
101
|
-
// aggregateEntranceGate: { $first: '$aggregateEntranceGate' },
|
|
102
|
-
// aggregateOffer: { $first: '$aggregateOffer' }
|
|
103
|
-
// }
|
|
104
|
-
// },
|
|
105
|
-
// { $project: projectStage }
|
|
106
|
-
// ]);
|
|
107
|
-
// if (typeof params.limit === 'number' && params.limit > 0) {
|
|
108
|
-
// const page: number = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
109
|
-
// aggregate.limit(params.limit * page)
|
|
110
|
-
// .skip(params.limit * (page - 1));
|
|
111
|
-
// }
|
|
112
|
-
// return aggregate
|
|
113
|
-
// .option({ maxTimeMS: MONGO_MAX_TIME_MS })
|
|
114
|
-
// .exec();
|
|
115
|
-
// }
|
|
116
23
|
save(filter, update) {
|
|
117
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
118
25
|
const { $set } = update;
|
|
@@ -5,7 +5,6 @@ type IMatchStage = PipelineStage.Match;
|
|
|
5
5
|
export interface IUpdateAggregateReservationParams {
|
|
6
6
|
$set: {
|
|
7
7
|
aggregateOffer?: factory.event.screeningEvent.IAggregateOffer;
|
|
8
|
-
aggregateEntranceGate?: factory.event.screeningEvent.IAggregateEntranceGate;
|
|
9
8
|
};
|
|
10
9
|
}
|
|
11
10
|
type ISearchWithReservationForIdResult = Pick<IAggregateReservation, 'aggregateOffer'> & {
|
|
@@ -82,7 +82,6 @@ class AggregateReservationRepo {
|
|
|
82
82
|
projectStage = {
|
|
83
83
|
_id: 0,
|
|
84
84
|
id: '$reservationFor.id',
|
|
85
|
-
// aggregateEntranceGate: 1, // discontinue(2024-12-23~)
|
|
86
85
|
aggregateOffer: 1
|
|
87
86
|
};
|
|
88
87
|
}
|
|
@@ -97,7 +96,6 @@ class AggregateReservationRepo {
|
|
|
97
96
|
$group: {
|
|
98
97
|
_id: '$reservationFor.id',
|
|
99
98
|
reservationFor: { $first: '$reservationFor' },
|
|
100
|
-
aggregateEntranceGate: { $first: '$aggregateEntranceGate' },
|
|
101
99
|
aggregateOffer: { $first: '$aggregateOffer' }
|
|
102
100
|
}
|
|
103
101
|
},
|
|
@@ -11,7 +11,6 @@ const schemaDefinition = {
|
|
|
11
11
|
project: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
12
12
|
typeOf: { type: String, required: true },
|
|
13
13
|
reservationFor: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
14
|
-
// aggregateEntranceGate: SchemaTypes.Mixed, // discontinue(2024-12-23~)
|
|
15
14
|
aggregateOffer: mongoose_1.SchemaTypes.Mixed
|
|
16
15
|
};
|
|
17
16
|
const schemaOptions = {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BulkWriteResult } from 'mongodb';
|
|
1
2
|
import { Connection } from 'mongoose';
|
|
2
3
|
import * as factory from '../../factory';
|
|
3
4
|
/**
|
|
@@ -10,6 +11,12 @@ interface IOperator {
|
|
|
10
11
|
id: string;
|
|
11
12
|
}
|
|
12
13
|
type IEntranceGate = Pick<factory.place.movieTheater.IEntranceGate, 'identifier' | 'name'>;
|
|
14
|
+
type ICreatingEntranceGate = Pick<factory.place.movieTheater.IEntranceGate, 'identifier' | 'name'>;
|
|
15
|
+
interface IUpdateOptions {
|
|
16
|
+
project: {
|
|
17
|
+
id: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
13
20
|
/**
|
|
14
21
|
* 施設の入場ゲートリポジトリ
|
|
15
22
|
*/
|
|
@@ -26,5 +33,23 @@ export declare class EntranceGateRepo {
|
|
|
26
33
|
};
|
|
27
34
|
};
|
|
28
35
|
}): Promise<IEntranceGate[]>;
|
|
36
|
+
addEntranceGatesByIdentifierIfNotExist(params: {
|
|
37
|
+
$set: ICreatingEntranceGate;
|
|
38
|
+
}[], options: IUpdateOptions): Promise<{
|
|
39
|
+
bulkWriteResult?: BulkWriteResult;
|
|
40
|
+
}>;
|
|
41
|
+
updateEntranceGatesByIdentifier(params: {
|
|
42
|
+
$set: ICreatingEntranceGate;
|
|
43
|
+
}[], options: IUpdateOptions): Promise<{
|
|
44
|
+
bulkWriteResult?: BulkWriteResult;
|
|
45
|
+
}>;
|
|
46
|
+
deleteEntranceGatesByIdentifier(params: {
|
|
47
|
+
/**
|
|
48
|
+
* ゲートコード
|
|
49
|
+
*/
|
|
50
|
+
identifier: string;
|
|
51
|
+
}[], options: IUpdateOptions): Promise<{
|
|
52
|
+
bulkWriteResult?: BulkWriteResult;
|
|
53
|
+
}>;
|
|
29
54
|
}
|
|
30
55
|
export {};
|
|
@@ -58,5 +58,98 @@ class EntranceGateRepo {
|
|
|
58
58
|
.exec();
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
+
addEntranceGatesByIdentifierIfNotExist(params, options) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const { project } = options;
|
|
64
|
+
const movieTheaterId = new mongoose_1.Types.ObjectId(this.operator.id);
|
|
65
|
+
const bulkWriteOps = [];
|
|
66
|
+
if (Array.isArray(params)) {
|
|
67
|
+
params.forEach(({ $set }) => {
|
|
68
|
+
const { identifier, name } = $set;
|
|
69
|
+
// ゲートを含まない施設があれば
|
|
70
|
+
const filter = {
|
|
71
|
+
'project.id': { $eq: project.id },
|
|
72
|
+
_id: { $eq: movieTheaterId },
|
|
73
|
+
'hasEntranceGate.identifier': { $ne: identifier }
|
|
74
|
+
};
|
|
75
|
+
const creatingEntranceGate = Object.assign({ identifier, typeOf: factory.placeType.Place }, (typeof (name === null || name === void 0 ? void 0 : name.ja) === 'string' || typeof (name === null || name === void 0 ? void 0 : name.en) === 'string') ? { name } : undefined);
|
|
76
|
+
// ゲートをpush
|
|
77
|
+
const update = {
|
|
78
|
+
$push: { hasEntranceGate: creatingEntranceGate }
|
|
79
|
+
};
|
|
80
|
+
const updateOne = { filter, update };
|
|
81
|
+
bulkWriteOps.push({ updateOne });
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
if (bulkWriteOps.length > 0) {
|
|
85
|
+
const bulkWriteResult = yield this.civicStructureModel.bulkWrite(bulkWriteOps, { ordered: false });
|
|
86
|
+
return { bulkWriteResult };
|
|
87
|
+
}
|
|
88
|
+
return {};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
updateEntranceGatesByIdentifier(params, options) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
const { project } = options;
|
|
94
|
+
const movieTheaterId = new mongoose_1.Types.ObjectId(this.operator.id);
|
|
95
|
+
const bulkWriteOps = [];
|
|
96
|
+
if (Array.isArray(params)) {
|
|
97
|
+
params.forEach(({ $set }) => {
|
|
98
|
+
const { identifier, name } = $set;
|
|
99
|
+
// ゲートを含む施設があれば
|
|
100
|
+
const filter = {
|
|
101
|
+
'project.id': { $eq: project.id },
|
|
102
|
+
_id: { $eq: movieTheaterId },
|
|
103
|
+
'hasEntranceGate.identifier': { $eq: identifier }
|
|
104
|
+
};
|
|
105
|
+
const updatingEntranceGate = Object.assign({ identifier, typeOf: factory.placeType.Place }, (typeof (name === null || name === void 0 ? void 0 : name.ja) === 'string' || typeof (name === null || name === void 0 ? void 0 : name.en) === 'string') ? { name } : undefined);
|
|
106
|
+
const update = {
|
|
107
|
+
$set: {
|
|
108
|
+
'hasEntranceGate.$[entranceGate]': updatingEntranceGate
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
// ゲートコードで$set
|
|
112
|
+
const arrayFilters = [
|
|
113
|
+
{ 'entranceGate.identifier': { $eq: identifier } }
|
|
114
|
+
];
|
|
115
|
+
const updateOne = { filter, update, arrayFilters };
|
|
116
|
+
bulkWriteOps.push({ updateOne });
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (bulkWriteOps.length > 0) {
|
|
120
|
+
const bulkWriteResult = yield this.civicStructureModel.bulkWrite(bulkWriteOps, { ordered: false });
|
|
121
|
+
return { bulkWriteResult };
|
|
122
|
+
}
|
|
123
|
+
return {};
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
deleteEntranceGatesByIdentifier(params, options) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
const { project } = options;
|
|
129
|
+
const movieTheaterId = new mongoose_1.Types.ObjectId(this.operator.id);
|
|
130
|
+
const bulkWriteOps = [];
|
|
131
|
+
if (Array.isArray(params)) {
|
|
132
|
+
params.forEach(({ identifier }) => {
|
|
133
|
+
// ゲートを含む施設があれば
|
|
134
|
+
const filter = {
|
|
135
|
+
'project.id': { $eq: project.id },
|
|
136
|
+
_id: { $eq: movieTheaterId },
|
|
137
|
+
'hasEntranceGate.identifier': { $eq: identifier }
|
|
138
|
+
};
|
|
139
|
+
// ゲートをpull
|
|
140
|
+
const update = {
|
|
141
|
+
$pull: { hasEntranceGate: { identifier: { $eq: identifier } } }
|
|
142
|
+
};
|
|
143
|
+
const updateOne = { filter, update };
|
|
144
|
+
bulkWriteOps.push({ updateOne });
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (bulkWriteOps.length > 0) {
|
|
148
|
+
const bulkWriteResult = yield this.civicStructureModel.bulkWrite(bulkWriteOps, { ordered: false });
|
|
149
|
+
return { bulkWriteResult };
|
|
150
|
+
}
|
|
151
|
+
return {};
|
|
152
|
+
});
|
|
153
|
+
}
|
|
61
154
|
}
|
|
62
155
|
exports.EntranceGateRepo = EntranceGateRepo;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { Connection } from 'mongoose';
|
|
1
|
+
import type { Connection, PipelineStage } from 'mongoose';
|
|
2
2
|
import * as factory from '../../factory';
|
|
3
3
|
type IScreeningRoomSectionWithoutContainsPlace = Omit<factory.place.screeningRoomSection.IPlace, 'containsPlace'>;
|
|
4
4
|
type ICreatingSection = Pick<factory.place.screeningRoomSection.IPlace, 'additionalProperty' | 'branchCode' | 'name'>;
|
|
5
|
+
type IMatchStage = PipelineStage.Match;
|
|
5
6
|
interface IUpdateOptions {
|
|
6
7
|
project: {
|
|
7
8
|
id: string;
|
|
@@ -31,6 +32,7 @@ export declare class SectionRepo {
|
|
|
31
32
|
private readonly civicStructureModel;
|
|
32
33
|
private readonly placeModel;
|
|
33
34
|
constructor(connection: Connection);
|
|
35
|
+
static CREATE_SECTION_MONGO_CONDITIONS(searchConditions: Omit<factory.place.screeningRoomSection.ISearchConditions, '$projection' | 'limit' | 'page'>): IMatchStage[];
|
|
34
36
|
createSection(screeningRoomSection: ICreatingSection, options: IUpdateOptions): Promise<IUpdateSectionResult>;
|
|
35
37
|
/**
|
|
36
38
|
* セクションの名称と追加特性を編集する
|
|
@@ -53,6 +55,11 @@ export declare class SectionRepo {
|
|
|
53
55
|
};
|
|
54
56
|
};
|
|
55
57
|
}): Promise<IUpdateSectionResult>;
|
|
58
|
+
/**
|
|
59
|
+
* 最小限のprojectionでセクション検索を再定義
|
|
60
|
+
* 2026-01-08~
|
|
61
|
+
*/
|
|
62
|
+
findSections(params: Omit<factory.place.screeningRoomSection.ISearchConditions, '$projection'>): Promise<Pick<factory.place.screeningRoomSection.IPlace, 'additionalProperty' | 'branchCode' | 'name'>[]>;
|
|
56
63
|
searchScreeningRoomSections(searchConditions: factory.place.screeningRoomSection.ISearchConditions): Promise<IScreeningRoomSectionWithoutContainsPlace[]>;
|
|
57
64
|
/**
|
|
58
65
|
* ルーム指定のセクション検索として再定義(2025-12-07~)
|
|
@@ -23,6 +23,106 @@ class SectionRepo {
|
|
|
23
23
|
this.placeModel = connection.model(place_1.modelName, (0, place_1.createSchema)());
|
|
24
24
|
}
|
|
25
25
|
// tslint:disable-next-line:max-func-body-length
|
|
26
|
+
static CREATE_SECTION_MONGO_CONDITIONS(searchConditions) {
|
|
27
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
28
|
+
const matchStages = [{ $match: { typeOf: { $eq: factory.placeType.ScreeningRoom } } }];
|
|
29
|
+
const projectIdEq = (_b = (_a = searchConditions.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
|
|
30
|
+
if (typeof projectIdEq === 'string') {
|
|
31
|
+
matchStages.push({
|
|
32
|
+
$match: { 'project.id': { $eq: projectIdEq } }
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const parentOrganizationIdEq = (_d = (_c = searchConditions.parentOrganization) === null || _c === void 0 ? void 0 : _c.id) === null || _d === void 0 ? void 0 : _d.$eq;
|
|
36
|
+
if (typeof parentOrganizationIdEq === 'string') {
|
|
37
|
+
matchStages.push({
|
|
38
|
+
$match: { 'parentOrganization.id': { $exists: true, $eq: parentOrganizationIdEq } }
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// 施設ID
|
|
42
|
+
const movieTheaterIdEq = (_g = (_f = (_e = searchConditions.containedInPlace) === null || _e === void 0 ? void 0 : _e.containedInPlace) === null || _f === void 0 ? void 0 : _f.id) === null || _g === void 0 ? void 0 : _g.$eq;
|
|
43
|
+
if (typeof movieTheaterIdEq === 'string') {
|
|
44
|
+
matchStages.push({
|
|
45
|
+
$match: {
|
|
46
|
+
'containedInPlace.id': { $exists: true, $eq: movieTheaterIdEq }
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// 施設コード
|
|
51
|
+
const movieTheaterBranchCodeEq = (_k = (_j = (_h = searchConditions.containedInPlace) === null || _h === void 0 ? void 0 : _h.containedInPlace) === null || _j === void 0 ? void 0 : _j.branchCode) === null || _k === void 0 ? void 0 : _k.$eq;
|
|
52
|
+
if (typeof movieTheaterBranchCodeEq === 'string') {
|
|
53
|
+
matchStages.push({
|
|
54
|
+
$match: {
|
|
55
|
+
'containedInPlace.branchCode': { $exists: true, $eq: movieTheaterBranchCodeEq }
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// ルームコード
|
|
60
|
+
const containedInPlaceBranchCodeEq = (_m = (_l = searchConditions.containedInPlace) === null || _l === void 0 ? void 0 : _l.branchCode) === null || _m === void 0 ? void 0 : _m.$eq;
|
|
61
|
+
if (typeof containedInPlaceBranchCodeEq === 'string') {
|
|
62
|
+
matchStages.push({
|
|
63
|
+
$match: {
|
|
64
|
+
branchCode: { $eq: containedInPlaceBranchCodeEq }
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// セクションコード
|
|
69
|
+
const sectionBranchCodeEq = (_o = searchConditions === null || searchConditions === void 0 ? void 0 : searchConditions.branchCode) === null || _o === void 0 ? void 0 : _o.$eq;
|
|
70
|
+
if (typeof sectionBranchCodeEq === 'string') {
|
|
71
|
+
matchStages.push({
|
|
72
|
+
$match: {
|
|
73
|
+
'containsPlace.branchCode': {
|
|
74
|
+
$exists: true,
|
|
75
|
+
$eq: sectionBranchCodeEq
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const nameCodeRegex = (_p = searchConditions.name) === null || _p === void 0 ? void 0 : _p.$regex;
|
|
81
|
+
if (typeof nameCodeRegex === 'string') {
|
|
82
|
+
matchStages.push({
|
|
83
|
+
$match: {
|
|
84
|
+
$or: [
|
|
85
|
+
{
|
|
86
|
+
'containsPlace.name.ja': {
|
|
87
|
+
$exists: true,
|
|
88
|
+
$regex: new RegExp(nameCodeRegex)
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
'containsPlace.name.en': {
|
|
93
|
+
$exists: true,
|
|
94
|
+
$regex: new RegExp(nameCodeRegex)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
const branchCodeRegex = (_q = searchConditions.branchCode) === null || _q === void 0 ? void 0 : _q.$regex;
|
|
102
|
+
if (typeof branchCodeRegex === 'string') {
|
|
103
|
+
matchStages.push({
|
|
104
|
+
$match: {
|
|
105
|
+
'containsPlace.branchCode': {
|
|
106
|
+
$exists: true,
|
|
107
|
+
$regex: new RegExp(branchCodeRegex)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
const additionalPropertyElemMatch = (_r = searchConditions.additionalProperty) === null || _r === void 0 ? void 0 : _r.$elemMatch;
|
|
113
|
+
if (additionalPropertyElemMatch !== undefined && additionalPropertyElemMatch !== null) {
|
|
114
|
+
matchStages.push({
|
|
115
|
+
$match: {
|
|
116
|
+
'containsPlace.additionalProperty': {
|
|
117
|
+
$exists: true,
|
|
118
|
+
$elemMatch: additionalPropertyElemMatch
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return matchStages;
|
|
124
|
+
}
|
|
125
|
+
// tslint:disable-next-line:max-func-body-length
|
|
26
126
|
createSection(screeningRoomSection, options) {
|
|
27
127
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
128
|
const { project, parentOrganization, movieTheaterCode, roomCode } = options;
|
|
@@ -157,106 +257,43 @@ class SectionRepo {
|
|
|
157
257
|
return doc.toObject();
|
|
158
258
|
});
|
|
159
259
|
}
|
|
160
|
-
|
|
161
|
-
|
|
260
|
+
/**
|
|
261
|
+
* 最小限のprojectionでセクション検索を再定義
|
|
262
|
+
* 2026-01-08~
|
|
263
|
+
*/
|
|
264
|
+
findSections(params) {
|
|
162
265
|
return __awaiter(this, void 0, void 0, function* () {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (typeof parentOrganizationIdEq === 'string') {
|
|
173
|
-
matchStages.push({
|
|
174
|
-
$match: { 'parentOrganization.id': { $exists: true, $eq: parentOrganizationIdEq } }
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
// 施設コード
|
|
178
|
-
const movieTheaterBranchCodeEq = (_g = (_f = (_e = searchConditions.containedInPlace) === null || _e === void 0 ? void 0 : _e.containedInPlace) === null || _f === void 0 ? void 0 : _f.branchCode) === null || _g === void 0 ? void 0 : _g.$eq;
|
|
179
|
-
if (typeof movieTheaterBranchCodeEq === 'string') {
|
|
180
|
-
matchStages.push({
|
|
181
|
-
$match: {
|
|
182
|
-
'containedInPlace.branchCode': {
|
|
183
|
-
$exists: true,
|
|
184
|
-
$eq: movieTheaterBranchCodeEq
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
// ルームコード
|
|
190
|
-
const containedInPlaceBranchCodeEq = (_j = (_h = searchConditions.containedInPlace) === null || _h === void 0 ? void 0 : _h.branchCode) === null || _j === void 0 ? void 0 : _j.$eq;
|
|
191
|
-
if (typeof containedInPlaceBranchCodeEq === 'string') {
|
|
192
|
-
matchStages.push({
|
|
193
|
-
$match: {
|
|
194
|
-
branchCode: {
|
|
195
|
-
$eq: containedInPlaceBranchCodeEq
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
// セクションコード
|
|
201
|
-
const sectionBranchCodeEq = (_k = searchConditions === null || searchConditions === void 0 ? void 0 : searchConditions.branchCode) === null || _k === void 0 ? void 0 : _k.$eq;
|
|
202
|
-
if (typeof sectionBranchCodeEq === 'string') {
|
|
203
|
-
matchStages.push({
|
|
204
|
-
$match: {
|
|
205
|
-
'containsPlace.branchCode': {
|
|
206
|
-
$exists: true,
|
|
207
|
-
$eq: sectionBranchCodeEq
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
const nameCodeRegex = (_l = searchConditions.name) === null || _l === void 0 ? void 0 : _l.$regex;
|
|
213
|
-
if (typeof nameCodeRegex === 'string') {
|
|
214
|
-
matchStages.push({
|
|
215
|
-
$match: {
|
|
216
|
-
$or: [
|
|
217
|
-
{
|
|
218
|
-
'containsPlace.name.ja': {
|
|
219
|
-
$exists: true,
|
|
220
|
-
$regex: new RegExp(nameCodeRegex)
|
|
221
|
-
}
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
'containsPlace.name.en': {
|
|
225
|
-
$exists: true,
|
|
226
|
-
$regex: new RegExp(nameCodeRegex)
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
]
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
const branchCodeRegex = (_m = searchConditions.branchCode) === null || _m === void 0 ? void 0 : _m.$regex;
|
|
234
|
-
if (typeof branchCodeRegex === 'string') {
|
|
235
|
-
matchStages.push({
|
|
236
|
-
$match: {
|
|
237
|
-
'containsPlace.branchCode': {
|
|
238
|
-
$exists: true,
|
|
239
|
-
$regex: new RegExp(branchCodeRegex)
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
const additionalPropertyElemMatch = (_o = searchConditions.additionalProperty) === null || _o === void 0 ? void 0 : _o.$elemMatch;
|
|
245
|
-
if (additionalPropertyElemMatch !== undefined && additionalPropertyElemMatch !== null) {
|
|
246
|
-
matchStages.push({
|
|
247
|
-
$match: {
|
|
248
|
-
'containsPlace.additionalProperty': {
|
|
249
|
-
$exists: true,
|
|
250
|
-
$elemMatch: additionalPropertyElemMatch
|
|
251
|
-
}
|
|
266
|
+
const aggregate = this.placeModel.aggregate([
|
|
267
|
+
{ $unwind: '$containsPlace' },
|
|
268
|
+
...SectionRepo.CREATE_SECTION_MONGO_CONDITIONS(params),
|
|
269
|
+
{
|
|
270
|
+
$project: {
|
|
271
|
+
_id: 0,
|
|
272
|
+
branchCode: '$containsPlace.branchCode',
|
|
273
|
+
name: '$containsPlace.name',
|
|
274
|
+
additionalProperty: '$containsPlace.additionalProperty'
|
|
252
275
|
}
|
|
253
|
-
}
|
|
276
|
+
}
|
|
277
|
+
]);
|
|
278
|
+
const { limit, page } = params;
|
|
279
|
+
if (typeof limit === 'number' && limit > 0) {
|
|
280
|
+
const pageMustBePositive = (typeof page === 'number' && page > 0) ? page : 1;
|
|
281
|
+
aggregate.skip(limit * (pageMustBePositive - 1))
|
|
282
|
+
.limit(limit);
|
|
254
283
|
}
|
|
284
|
+
return aggregate
|
|
285
|
+
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
286
|
+
.exec();
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
searchScreeningRoomSections(searchConditions) {
|
|
290
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
291
|
+
var _a, _b;
|
|
255
292
|
const aggregate = this.placeModel.aggregate([
|
|
256
293
|
{ $unwind: '$containsPlace' },
|
|
257
|
-
...
|
|
294
|
+
...SectionRepo.CREATE_SECTION_MONGO_CONDITIONS(searchConditions),
|
|
258
295
|
{
|
|
259
|
-
$project: Object.assign(Object.assign({ _id: 0, typeOf: '$containsPlace.typeOf', branchCode: '$containsPlace.branchCode', identifier: '$containsPlace.identifier', name: '$containsPlace.name', additionalProperty: '$containsPlace.additionalProperty' }, (((
|
|
296
|
+
$project: Object.assign(Object.assign({ _id: 0, typeOf: '$containsPlace.typeOf', branchCode: '$containsPlace.branchCode', identifier: '$containsPlace.identifier', name: '$containsPlace.name', additionalProperty: '$containsPlace.additionalProperty' }, (((_a = searchConditions.$projection) === null || _a === void 0 ? void 0 : _a.containedInPlace) === 1)
|
|
260
297
|
? {
|
|
261
298
|
containedInPlace: {
|
|
262
299
|
typeOf: '$typeOf',
|
|
@@ -270,7 +307,7 @@ class SectionRepo {
|
|
|
270
307
|
}
|
|
271
308
|
}
|
|
272
309
|
}
|
|
273
|
-
: undefined), (((
|
|
310
|
+
: undefined), (((_b = searchConditions.$projection) === null || _b === void 0 ? void 0 : _b.seatCount) === 1)
|
|
274
311
|
? {
|
|
275
312
|
seatCount: {
|
|
276
313
|
$cond: {
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-cognito-identity-provider": "3.600.0",
|
|
13
13
|
"@aws-sdk/credential-providers": "3.600.0",
|
|
14
|
-
"@chevre/factory": "5.4.0-alpha.
|
|
14
|
+
"@chevre/factory": "5.4.0-alpha.12",
|
|
15
15
|
"@cinerino/sdk": "12.12.1",
|
|
16
16
|
"@motionpicture/coa-service": "9.6.0",
|
|
17
17
|
"@motionpicture/gmo-service": "5.4.0-alpha.1",
|
|
@@ -116,5 +116,5 @@
|
|
|
116
116
|
"postversion": "git push origin --tags",
|
|
117
117
|
"prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
|
|
118
118
|
},
|
|
119
|
-
"version": "23.2.0-alpha.
|
|
119
|
+
"version": "23.2.0-alpha.19"
|
|
120
120
|
}
|