@chevre/domain 25.1.0-alpha.1 → 25.1.0-alpha.3
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/lib/chevre/repo/mongoose/schemas/setting.d.ts +15 -0
- package/lib/chevre/repo/mongoose/schemas/setting.js +2 -1
- package/lib/chevre/repo/setting/member.d.ts +18 -0
- package/lib/chevre/repo/setting/member.js +48 -0
- package/lib/chevre/repository.d.ts +5 -0
- package/lib/chevre/repository.js +11 -0
- package/lib/chevre/service/taskHandler/onOperationFailed.js +4 -5
- package/package.json +1 -1
|
@@ -246,6 +246,20 @@ export interface IRateLimitSetting {
|
|
|
246
246
|
*/
|
|
247
247
|
transactionThresholdGet: number;
|
|
248
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* 2026-07-01~
|
|
251
|
+
*/
|
|
252
|
+
export interface IMemberSetting {
|
|
253
|
+
consoleClientIds: string[];
|
|
254
|
+
txnClientId: string;
|
|
255
|
+
tvmClientIds: string[];
|
|
256
|
+
requireSellerIdExceptionClientIds: string[];
|
|
257
|
+
/**
|
|
258
|
+
* グローバルトークン発行者
|
|
259
|
+
* サービスとしての共通IDP(管理者ユーザープールのIDPなど)
|
|
260
|
+
*/
|
|
261
|
+
tokenIssuers: string[];
|
|
262
|
+
}
|
|
249
263
|
export interface ISetting {
|
|
250
264
|
defaultSenderEmail?: string;
|
|
251
265
|
jwt?: IJWTSetting;
|
|
@@ -284,6 +298,7 @@ export interface ISetting {
|
|
|
284
298
|
*/
|
|
285
299
|
integration?: IIntegrationSettings;
|
|
286
300
|
rateLimit?: IRateLimitSetting;
|
|
301
|
+
member?: IMemberSetting;
|
|
287
302
|
}
|
|
288
303
|
type IDocType = ISetting;
|
|
289
304
|
type IModel = Model<IDocType, Record<string, never>, Record<string, never>, IVirtuals>;
|
|
@@ -33,7 +33,8 @@ const schemaDefinition = {
|
|
|
33
33
|
useMongo4orderNumberFrom: { type: Date, required: false },
|
|
34
34
|
useMongo4transactionNumberFrom: { type: Date, required: false },
|
|
35
35
|
integration: { type: mongoose_1.SchemaTypes.Mixed, required: false }, // 2026-05-23~
|
|
36
|
-
rateLimit: { type: mongoose_1.SchemaTypes.Mixed, required: false } // 2026-06-30~
|
|
36
|
+
rateLimit: { type: mongoose_1.SchemaTypes.Mixed, required: false }, // 2026-06-30~
|
|
37
|
+
member: { type: mongoose_1.SchemaTypes.Mixed, required: false } // 2026-07-01~
|
|
37
38
|
};
|
|
38
39
|
const schemaOptions = {
|
|
39
40
|
autoIndex: settings_1.MONGO_AUTO_INDEX,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Connection } from 'mongoose';
|
|
2
|
+
import { IMemberSetting } from '../mongoose/schemas/setting';
|
|
3
|
+
interface IDBOptions {
|
|
4
|
+
connection: Connection;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* メンバー(WebApplicationメンバー)設定リポジトリ
|
|
8
|
+
*/
|
|
9
|
+
export declare class MemberSettingRepo {
|
|
10
|
+
private readonly settingModel;
|
|
11
|
+
private static cachedSettings;
|
|
12
|
+
private static cacheExpiry;
|
|
13
|
+
private static readonly CACHE_TTL_MS;
|
|
14
|
+
constructor(options: IDBOptions);
|
|
15
|
+
findMemberSetting(): Promise<IMemberSetting>;
|
|
16
|
+
addMemberSetting(params: IMemberSetting): Promise<import("mongoose").UpdateWriteOpResult>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemberSettingRepo = void 0;
|
|
4
|
+
const factory_1 = require("../../factory");
|
|
5
|
+
const setting_1 = require("../mongoose/schemas/setting");
|
|
6
|
+
/**
|
|
7
|
+
* メンバー(WebApplicationメンバー)設定リポジトリ
|
|
8
|
+
*/
|
|
9
|
+
class MemberSettingRepo {
|
|
10
|
+
settingModel;
|
|
11
|
+
// static にすることで、クラスが何回 new されてもメモリ上で1つだけ保持される
|
|
12
|
+
static cachedSettings;
|
|
13
|
+
static cacheExpiry = 0;
|
|
14
|
+
static CACHE_TTL_MS = 10 * 60 * 1000; // 10分
|
|
15
|
+
constructor(options) {
|
|
16
|
+
const { connection } = options;
|
|
17
|
+
this.settingModel = connection.model(setting_1.modelName, (0, setting_1.createSchema)());
|
|
18
|
+
}
|
|
19
|
+
async findMemberSetting() {
|
|
20
|
+
const now = Date.now();
|
|
21
|
+
// キャッシュ参照
|
|
22
|
+
if (MemberSettingRepo.cachedSettings !== undefined && now < MemberSettingRepo.cacheExpiry) {
|
|
23
|
+
return MemberSettingRepo.cachedSettings;
|
|
24
|
+
}
|
|
25
|
+
const settingDoc = await this.settingModel.findOne({ 'project.id': { $eq: '*' } }, {
|
|
26
|
+
_id: 0,
|
|
27
|
+
member: 1
|
|
28
|
+
})
|
|
29
|
+
.lean()
|
|
30
|
+
.exec();
|
|
31
|
+
if (settingDoc?.member === undefined) {
|
|
32
|
+
throw new factory_1.factory.errors.NotFound('memberSetting');
|
|
33
|
+
}
|
|
34
|
+
// キャッシュを更新
|
|
35
|
+
MemberSettingRepo.cachedSettings = settingDoc.member;
|
|
36
|
+
MemberSettingRepo.cacheExpiry = now + MemberSettingRepo.CACHE_TTL_MS;
|
|
37
|
+
return MemberSettingRepo.cachedSettings;
|
|
38
|
+
}
|
|
39
|
+
async addMemberSetting(params) {
|
|
40
|
+
return this.settingModel.updateOne({ 'project.id': { $eq: '*' } }, {
|
|
41
|
+
$set: {
|
|
42
|
+
member: params
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
.exec();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.MemberSettingRepo = MemberSettingRepo;
|
|
@@ -81,6 +81,7 @@ import type { ServiceAvailableHourRepo } from './repo/service/availableHour';
|
|
|
81
81
|
import type { SettingRepo } from './repo/setting';
|
|
82
82
|
import type { IntegrationSettingRepo } from './repo/setting/integration';
|
|
83
83
|
import type { JWTSettingRepo } from './repo/setting/jwt';
|
|
84
|
+
import type { MemberSettingRepo } from './repo/setting/member';
|
|
84
85
|
import type { RateLimitSettingRepo } from './repo/setting/rateLimit';
|
|
85
86
|
import type { WaiterSettingRepo } from './repo/setting/waiter';
|
|
86
87
|
import type { StockHolderRepo } from './repo/stockHolder';
|
|
@@ -448,6 +449,10 @@ export declare namespace setting {
|
|
|
448
449
|
namespace JWT {
|
|
449
450
|
function createInstance(...params: ConstructorParameters<typeof JWTSettingRepo>): Promise<JWTSettingRepo>;
|
|
450
451
|
}
|
|
452
|
+
type Member = MemberSettingRepo;
|
|
453
|
+
namespace Member {
|
|
454
|
+
function createInstance(...params: ConstructorParameters<typeof MemberSettingRepo>): Promise<MemberSettingRepo>;
|
|
455
|
+
}
|
|
451
456
|
type RateLimit = RateLimitSettingRepo;
|
|
452
457
|
namespace RateLimit {
|
|
453
458
|
function createInstance(...params: ConstructorParameters<typeof RateLimitSettingRepo>): Promise<RateLimitSettingRepo>;
|
package/lib/chevre/repository.js
CHANGED
|
@@ -933,6 +933,17 @@ var setting;
|
|
|
933
933
|
}
|
|
934
934
|
JWT.createInstance = createInstance;
|
|
935
935
|
})(JWT = setting.JWT || (setting.JWT = {}));
|
|
936
|
+
let Member;
|
|
937
|
+
(function (Member) {
|
|
938
|
+
let repo;
|
|
939
|
+
async function createInstance(...params) {
|
|
940
|
+
if (repo === undefined) {
|
|
941
|
+
repo = (await import('./repo/setting/member.js')).MemberSettingRepo;
|
|
942
|
+
}
|
|
943
|
+
return new repo(...params);
|
|
944
|
+
}
|
|
945
|
+
Member.createInstance = createInstance;
|
|
946
|
+
})(Member = setting.Member || (setting.Member = {}));
|
|
936
947
|
let RateLimit;
|
|
937
948
|
(function (RateLimit) {
|
|
938
949
|
let repo;
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.onOperationFailed = onOperationFailed;
|
|
4
4
|
const factory_1 = require("../../factory");
|
|
5
5
|
const informTaskIfNeeded_1 = require("./onOperationFailed/informTaskIfNeeded");
|
|
6
|
-
const USE_INFORM_TASK_RUNNING = process.env.USE_INFORM_TASK_RUNNING === '1';
|
|
7
6
|
/**
|
|
8
7
|
* タスク実行失敗時処理
|
|
9
8
|
*/
|
|
@@ -18,10 +17,10 @@ function onOperationFailed(params) {
|
|
|
18
17
|
// remainingNumberOfTries<=0ならAborted(2025-08-04~)
|
|
19
18
|
const isRetryable = task.remainingNumberOfTries > 0;
|
|
20
19
|
if (isRetryable) {
|
|
21
|
-
//
|
|
22
|
-
if (USE_INFORM_TASK_RUNNING) {
|
|
23
|
-
|
|
24
|
-
}
|
|
20
|
+
// 実験的に実行中タスク連携をしてみたが、ひとまず廃止(2026-07-01~)
|
|
21
|
+
// if (USE_INFORM_TASK_RUNNING) {
|
|
22
|
+
// await informTaskIfNeeded({ task, executionEndDate: endDate })(repos);
|
|
23
|
+
// }
|
|
25
24
|
const result = {
|
|
26
25
|
executedAt: now,
|
|
27
26
|
endDate,
|
package/package.json
CHANGED