@chevre/domain
Version:
Chevre Domain Library for Node.js
137 lines (136 loc) • 3.78 kB
TypeScript
import type { Algorithm } from 'jsonwebtoken';
import { IndexDefinition, IndexOptions, Model, Schema, SchemaDefinition } from 'mongoose';
import * as factory from '../../../factory';
interface IOnOrderStatusChanged {
/**
* AggService通知先
*/
informOrder?: factory.project.IInformParams[];
}
interface IOnReservationStatusChanged {
/**
* AggService通知先
*/
informReservation?: factory.project.IInformParams[];
}
interface IOnEventChanged {
informEvent2agg?: factory.project.IInformParams[];
}
interface IOnTransactionStatusChanged {
/**
* AggService通知先
*/
informTransaction?: factory.project.IInformParams[];
}
interface IStorageSettings {
/**
* 取引保管期間(Confirmed)
* default:365
*/
transactionConfirmedInDays?: number;
/**
* 取引保管期間(Canceled)
* default:7
*/
transactionCanceledInDays?: number;
authorizationInDays?: number;
actionInDays?: number;
assetTransactionInDays?: number;
taskInDays?: number;
eventInDays?: number;
/**
* イベント終了日時からn日後まで座席をロックする
*/
stockHoldAfterEventEndInDays?: number;
}
interface IQuotaSettings {
codeExpiresInSecondsDefault?: number;
codeExpiresInSecondsMax?: number;
placeOrderExpiresInSecondsMax?: number;
placeOrderExpiresInSecondsMin?: number;
}
interface ITriggerWebhookSettings {
/**
* リクエストタイムアウト
*/
timeout?: number;
useFetchAPI?: boolean;
/**
* 通知署名の鍵
*/
secretKey?: string;
/**
* 固有署名ヘッダー識別子
*/
headerIdentifier?: string;
retryCountMax?: number;
retryIntervalInMS?: number;
}
interface IWaiterSettings {
disabled?: boolean;
passportUnavailable?: boolean;
passportIssuers: string[];
secret: string;
}
export interface IJWTSetting {
/**
* トークン生成鍵
*/
secret: string;
/**
* トークン検証時の発行者リスト
*/
issuers: string[];
version: string;
payloadTypPrefix: string;
/**
* auth.apisによるトークン発行時のissuer
*/
issuer: string;
/**
* auth.apisのトークン発行エンドポイント
*/
issueEndpoint: string;
/**
* トークン署名アルゴリズム
*/
algorithm: Algorithm;
}
export interface ISetting {
defaultSenderEmail?: string;
jwt?: IJWTSetting;
onEventChanged?: IOnEventChanged;
onOrderStatusChanged: IOnOrderStatusChanged;
onReservationStatusChanged?: IOnReservationStatusChanged;
onResourceUpdated?: {
informResource?: factory.project.IInformParams[];
};
onTransactionStatusChanged?: IOnTransactionStatusChanged;
project: {
id: string;
typeOf: factory.organizationType.Project;
};
quota?: IQuotaSettings;
storage?: IStorageSettings;
/**
* 通知設定
*/
triggerWebhook?: ITriggerWebhookSettings;
useInformResourceTypes?: string[];
userPoolIdOld?: string;
userPoolIdNew?: string;
waiter?: IWaiterSettings;
useMongoAsStockHolder?: boolean;
useMongoAsStockHolderProjects?: string[];
useMongo4confirmationNumberFrom?: Date;
useMongo4orderNumberFrom?: Date;
useMongo4transactionNumberFrom?: Date;
}
type IDocType = ISetting;
type IModel = Model<IDocType>;
type ISchemaDefinition = SchemaDefinition<IDocType>;
type ISchema = Schema<IDocType, IModel, {}, {}, {}, {}, ISchemaDefinition, IDocType>;
declare const modelName = "Setting";
declare const indexes: [d: IndexDefinition, o: IndexOptions][];
declare function createSchema(): ISchema;
export { createSchema, IModel, indexes, modelName };