@chevre/domain 25.1.0-alpha.1 → 25.1.0-alpha.2

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.
@@ -246,6 +246,15 @@ 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
+ }
249
258
  export interface ISetting {
250
259
  defaultSenderEmail?: string;
251
260
  jwt?: IJWTSetting;
@@ -284,6 +293,7 @@ export interface ISetting {
284
293
  */
285
294
  integration?: IIntegrationSettings;
286
295
  rateLimit?: IRateLimitSetting;
296
+ member?: IMemberSetting;
287
297
  }
288
298
  type IDocType = ISetting;
289
299
  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 MemberSetting = 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>;
@@ -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
- await (0, informTaskIfNeeded_1.informTaskIfNeeded)({ task, executionEndDate: endDate })(repos);
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
@@ -91,5 +91,5 @@
91
91
  "postversion": "git push origin --tags",
92
92
  "prepublishOnly": "npm run clean && npm run build"
93
93
  },
94
- "version": "25.1.0-alpha.1"
94
+ "version": "25.1.0-alpha.2"
95
95
  }