@longzai-intelligence/shared-kernel 0.0.2 → 0.0.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/dist/index.cjs +1 -1
- package/dist/index.d.cts +14 -76
- package/dist/index.d.mts +14 -76
- package/dist/index.mjs +1 -1
- package/package.json +4 -3
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`zod`);var t=class{_id;_props;_events=[];constructor(e,t){this._id=e,this._props=t}get id(){return this._id}get props(){return this._props}updateProps(e,t){this._props[e]=t}addEvent(e){this._events.push(e)}pullEvents(){let e=[...this._events];return this._events=[],e}hasEvents(){return this._events.length>0}equals(e){return this._id===e._id}},n=class extends t{_version=1;_isDirty=!1;get version(){return this._version}get isDirty(){return this._isDirty}markAsDirty(){this._isDirty=!0,this._version++}},r=class{static TYPE;eventId;occurredAt;traceContext;constructor(e,t){this.eventId=e,this.occurredAt=new Date,this.traceContext=t}toJSON(){return{eventId:this.eventId,type:this.type,occurredAt:this.occurredAt.toISOString(),traceContext:this.traceContext}}},i=class extends r{type=`entity:created`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}},a=class extends r{type=`entity:updated`;constructor(e,t,n,r){super(e),this.entityType=t,this.entityId=n,this.changes=r}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId,changes:this.changes}}},o=class extends r{type=`entity:deleted`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}}
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`zod`);var t=class{_id;_props;_events=[];constructor(e,t){this._id=e,this._props=t}get id(){return this._id}get props(){return this._props}updateProps(e,t){this._props[e]=t}addEvent(e){this._events.push(e)}pullEvents(){let e=[...this._events];return this._events=[],e}hasEvents(){return this._events.length>0}equals(e){return this._id===e._id}},n=class extends t{_version=1;_isDirty=!1;get version(){return this._version}get isDirty(){return this._isDirty}markAsDirty(){this._isDirty=!0,this._version++}},r=class{static TYPE;eventId;occurredAt;traceContext;constructor(e,t){this.eventId=e,this.occurredAt=new Date,this.traceContext=t}toJSON(){return{eventId:this.eventId,type:this.type,occurredAt:this.occurredAt.toISOString(),traceContext:this.traceContext}}},i=class extends r{type=`entity:created`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}},a=class extends r{type=`entity:updated`;constructor(e,t,n,r){super(e),this.entityType=t,this.entityId=n,this.changes=r}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId,changes:this.changes}}},o=class extends r{type=`entity:deleted`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}};const s=Symbol(`UnitOfWork`);var c=class{_value;constructor(e){this._value=Object.freeze(e)}get value(){return this._value}valueOf(){return this._value}toString(){return String(this._value)}},l=class extends Error{constructor(e,t=`DOMAIN_ERROR`,n){super(e),this.code=t,this.context=n,this.name=`DomainError`}toJSON(){return{name:this.name,code:this.code,message:this.message,context:this.context,stack:this.stack}}},u=class extends l{constructor(e,t,n){super(e,`VALIDATION_ERROR`,{field:t,value:n}),this.field=t,this.value=n,this.name=`ValidationError`}},d=class extends l{constructor(e,t,n){super(e,`REPOSITORY_ERROR`,n),this.cause=t,this.name=`RepositoryError`}toJSON(){return{...super.toJSON(),cause:this.cause?.message}}};function f(e){return e instanceof l?e:e instanceof Error?new d(e.message,e):new d(String(e))}var p=class{isSuccess=!0;isFailure=!1;constructor(e){this.value=e}map(e){return h(e(this.value))}flatMap(e){return e(this.value)}mapError(e){return h(this.value)}getOrElse(e){return this.value}match(e){return e.success(this.value)}},m=class{isSuccess=!1;isFailure=!0;constructor(e){this.error=e}map(e){return g(this.error)}flatMap(e){return g(this.error)}mapError(e){return g(e(this.error))}getOrElse(e){return e}match(e){return e.failure(this.error)}};function h(e){return new p(e)}function g(e){return new m(e)}function _(e){let t=[];for(let n of e){if(n.isFailure)return g(n.error);t.push(n.value)}return h(t)}function v(e){return e.isSuccess}function y(e){return e.isFailure}function b(e){if(e.isFailure)throw f(e.error);return e.value}var x=class e extends c{static UUID_V4_REGEX=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;constructor(e){super(e)}static fromUUID(t){return!t||t.trim().length===0?g(new u(`实体 ID 不能为空`,`id`,t)):this.UUID_V4_REGEX.test(t)?h(new e(t)):g(new u(`无效的 UUID 格式`,`id`,t))}static generate(){return new e(crypto.randomUUID())}static fromString(t){if(!t||t.trim().length===0)throw Error(`实体 ID 不能为空`);return new e(t)}equals(e){return this._value===e._value}},S=class e extends c{constructor(e){super(e)}static now(){return new e(Date.now())}static fromDate(t){return new e(t.getTime())}static fromMillis(t){return new e(t)}toDate(){return new Date(this._value)}equals(e){return this._value===e._value}},C=class e extends c{constructor(e){super(e)}static initial(){return new e(0)}static fromNumber(t){if(!Number.isInteger(t)||t<0)throw Error(`版本号必须是非负整数`);return new e(t)}increment(){return new e(this._value+1)}equals(e){return this._value===e._value}isInitial(){return this._value===0}};let w=function(e){return e.LOCAL=`local`,e.PENDING=`pending`,e.SYNCED=`synced`,e.CONFLICT=`conflict`,e}({});var T=class e extends c{constructor(e){super(e)}static local(){return new e(w.LOCAL)}static pending(){return new e(w.PENDING)}static synced(){return new e(w.SYNCED)}static conflict(){return new e(w.CONFLICT)}static fromString(t){switch(t){case`local`:return e.local();case`pending`:return e.pending();case`synced`:return e.synced();case`conflict`:return e.conflict();default:throw Error(`未知的同步状态: ${t}`)}}needsSync(){return this._value===w.LOCAL||this._value===w.PENDING}equals(e){return this._value===e._value}};const E=e.z.number().int().positive(),D=e.z.number().int().nonnegative(),O=e.z.enum([`create`,`update`,`delete`]),k=e.z.enum([`local-wins`,`remote-wins`,`merge`,`manual`]),A=e.z.object({id:e.z.string(),type:e.z.string()}),j=e.z.object({start:e.z.coerce.date(),end:e.z.coerce.date()}),M=e.z.object({id:e.z.string(),type:e.z.string(),version:D,data:e.z.record(e.z.string(),e.z.unknown()),timestamp:E}),N=e.z.object({entityId:e.z.string(),entityType:e.z.string(),changeType:O,data:e.z.record(e.z.string(),e.z.unknown()).optional(),timestamp:E,version:D}),P=e.z.object({id:e.z.string(),entityType:e.z.string(),entityId:e.z.string(),localVersion:D,remoteVersion:D,localData:e.z.record(e.z.string(),e.z.unknown()),remoteData:e.z.record(e.z.string(),e.z.unknown()),conflictedAt:E}),F=e.z.object({conflictId:e.z.string(),strategy:k,resolvedData:e.z.record(e.z.string(),e.z.unknown()),resolvedAt:E});exports.AggregateRoot=n,exports.AggregateRootEntity=n,exports.ChangeTypeSchema=O,exports.ConflictDataSchema=P,exports.ConflictResolutionSchema=F,exports.ConflictResolutionStrategySchema=k,exports.DomainEvent=r,exports.Entity=t,exports.EntityChangeSchema=N,exports.EntityCreatedEvent=i,exports.EntityDeletedEvent=o,exports.EntityIdVO=x,exports.EntityUpdatedEvent=a,exports.Failure=m,exports.IdReferenceSchema=A,exports.Success=p,exports.SyncDataSchema=M,exports.SyncStatus=w,exports.SyncStatusVO=T,exports.TimeRangeSchema=j,exports.TimestampSchema=E,exports.TimestampVO=S,exports.UNIT_OF_WORK_TOKEN=s,exports.ValueObject=c,exports.VersionSchema=D,exports.VersionVO=C,exports.combine=_,exports.failure=g,exports.isFailure=y,exports.isSuccess=v,exports.success=h,exports.unwrapResult=b;
|
package/dist/index.d.cts
CHANGED
|
@@ -94,81 +94,6 @@ type TracingContextManager = {
|
|
|
94
94
|
runWithChildSpan<T>(fn: () => T): T;
|
|
95
95
|
};
|
|
96
96
|
//#endregion
|
|
97
|
-
//#region src/domain/exception/domain-exception.errors.d.ts
|
|
98
|
-
declare abstract class DomainError extends Error {
|
|
99
|
-
readonly code: string;
|
|
100
|
-
readonly context?: Record<string, unknown> | undefined;
|
|
101
|
-
constructor(message: string, code?: string, context?: Record<string, unknown> | undefined);
|
|
102
|
-
toJSON(): object;
|
|
103
|
-
}
|
|
104
|
-
declare class ValidationError extends DomainError {
|
|
105
|
-
readonly field?: string | undefined;
|
|
106
|
-
readonly value?: unknown | undefined;
|
|
107
|
-
constructor(message: string, field?: string | undefined, value?: unknown | undefined);
|
|
108
|
-
}
|
|
109
|
-
declare class BusinessRuleError extends DomainError {
|
|
110
|
-
constructor(message: string, rule?: string);
|
|
111
|
-
}
|
|
112
|
-
declare class EntityNotFoundError extends DomainError {
|
|
113
|
-
readonly entityType: string;
|
|
114
|
-
readonly entityId: string;
|
|
115
|
-
constructor(entityType: string, entityId: string);
|
|
116
|
-
}
|
|
117
|
-
declare class RepositoryError extends DomainError {
|
|
118
|
-
readonly cause?: Error | undefined;
|
|
119
|
-
constructor(message: string, cause?: Error | undefined, context?: Record<string, unknown>);
|
|
120
|
-
toJSON(): object;
|
|
121
|
-
}
|
|
122
|
-
declare class ConcurrencyError extends DomainError {
|
|
123
|
-
constructor(message?: string);
|
|
124
|
-
}
|
|
125
|
-
declare class PermissionDeniedError extends DomainError {
|
|
126
|
-
readonly resource: string;
|
|
127
|
-
readonly action: string;
|
|
128
|
-
constructor(resource: string, action: string);
|
|
129
|
-
}
|
|
130
|
-
declare class ConfigurationError extends DomainError {
|
|
131
|
-
readonly key?: string | undefined;
|
|
132
|
-
constructor(message: string, key?: string | undefined);
|
|
133
|
-
}
|
|
134
|
-
declare class ExternalServiceError extends DomainError {
|
|
135
|
-
readonly service: string;
|
|
136
|
-
constructor(service: string, message: string, cause?: Error);
|
|
137
|
-
}
|
|
138
|
-
//#endregion
|
|
139
|
-
//#region ../logger/core/dist/index.d.mts
|
|
140
|
-
//#endregion
|
|
141
|
-
//#region src/tracing/context.types.d.ts
|
|
142
|
-
type TraceContext$1 = {
|
|
143
|
-
traceId: string;
|
|
144
|
-
spanId: string;
|
|
145
|
-
parentSpanId?: string;
|
|
146
|
-
};
|
|
147
|
-
//#endregion
|
|
148
|
-
//#region src/log/logger.types.d.ts
|
|
149
|
-
type Logger = {
|
|
150
|
-
debug(message: string, metadata?: Record<string, unknown>): void;
|
|
151
|
-
info(message: string, metadata?: Record<string, unknown>): void;
|
|
152
|
-
warn(message: string, metadata?: Record<string, unknown>): void;
|
|
153
|
-
error(message: string, error?: Error, metadata?: Record<string, unknown>): void;
|
|
154
|
-
withOperation(operation: string): Logger;
|
|
155
|
-
withTrace(trace: TraceContext$1): Logger;
|
|
156
|
-
};
|
|
157
|
-
//#endregion
|
|
158
|
-
//#region src/domain/exception/error-utils.d.ts
|
|
159
|
-
declare function toDomainError(error: unknown): DomainError;
|
|
160
|
-
declare function logError(error: DomainError, logger: Logger, operation?: string): void;
|
|
161
|
-
declare function isRetryableError(error: DomainError): boolean;
|
|
162
|
-
declare function isClientError(error: DomainError): boolean;
|
|
163
|
-
declare function isValidationError(error: DomainError): error is ValidationError;
|
|
164
|
-
declare function isBusinessRuleError(error: DomainError): error is BusinessRuleError;
|
|
165
|
-
declare function isEntityNotFoundError(error: DomainError): error is EntityNotFoundError;
|
|
166
|
-
declare function isRepositoryError(error: DomainError): error is RepositoryError;
|
|
167
|
-
declare function isConcurrencyError(error: DomainError): error is ConcurrencyError;
|
|
168
|
-
declare function isPermissionDeniedError(error: DomainError): error is PermissionDeniedError;
|
|
169
|
-
declare function isConfigurationError(error: DomainError): error is ConfigurationError;
|
|
170
|
-
declare function isExternalServiceError(error: DomainError): error is ExternalServiceError;
|
|
171
|
-
//#endregion
|
|
172
97
|
//#region src/domain/repositories/repository.types.d.ts
|
|
173
98
|
type PaginationParams = {
|
|
174
99
|
page: number;
|
|
@@ -192,6 +117,19 @@ type Repository<T extends Entity<unknown>> = {
|
|
|
192
117
|
exists(id: string): Promise<boolean>;
|
|
193
118
|
};
|
|
194
119
|
//#endregion
|
|
120
|
+
//#region src/domain/exception/domain-exception.errors.d.ts
|
|
121
|
+
declare abstract class DomainError extends Error {
|
|
122
|
+
readonly code: string;
|
|
123
|
+
readonly context?: Record<string, unknown> | undefined;
|
|
124
|
+
constructor(message: string, code?: string, context?: Record<string, unknown> | undefined);
|
|
125
|
+
toJSON(): object;
|
|
126
|
+
}
|
|
127
|
+
declare class ValidationError extends DomainError {
|
|
128
|
+
readonly field?: string | undefined;
|
|
129
|
+
readonly value?: unknown | undefined;
|
|
130
|
+
constructor(message: string, field?: string | undefined, value?: unknown | undefined);
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
195
133
|
//#region src/domain/result/result.types.d.ts
|
|
196
134
|
type MapFunction<T, U> = (value: T) => U;
|
|
197
135
|
type FlatMapFunction<T, U, E> = (value: T) => Result<U, E>;
|
|
@@ -406,4 +344,4 @@ type Version = z.infer<typeof VersionSchema>;
|
|
|
406
344
|
type ChangeType = z.infer<typeof ChangeTypeSchema>;
|
|
407
345
|
type IdReference = z.infer<typeof IdReferenceSchema>;
|
|
408
346
|
//#endregion
|
|
409
|
-
export { AggregateRootEntity as AggregateRoot, AggregateRootEntity,
|
|
347
|
+
export { AggregateRootEntity as AggregateRoot, AggregateRootEntity, type ChangeType, ChangeTypeSchema, type ConflictData, ConflictDataSchema, type ConflictResolution, ConflictResolutionSchema, type ConflictResolutionStrategy, ConflictResolutionStrategySchema, DomainEvent, type DomainEventConstructor, type DomainEventHandler, Entity, type EntityChange, EntityChangeSchema, EntityCreatedEvent, EntityDeletedEvent, EntityIdVO, EntityUpdatedEvent, type EventConstructor, Failure, type IdReference, IdReferenceSchema, type QueryOptions, type Reference, type Repository, type Result, type SortParams, Success, type SyncData, SyncDataSchema, SyncStatus, SyncStatusVO, type TimeRange, TimeRangeSchema, type Timestamp, TimestampSchema, TimestampVO, type TraceContext, type TracingContextManager, UNIT_OF_WORK_TOKEN, type UnitOfWork, ValueObject, type Version, VersionSchema, VersionVO, combine, failure, isFailure, isSuccess, success, unwrapResult };
|
package/dist/index.d.mts
CHANGED
|
@@ -94,81 +94,6 @@ type TracingContextManager = {
|
|
|
94
94
|
runWithChildSpan<T>(fn: () => T): T;
|
|
95
95
|
};
|
|
96
96
|
//#endregion
|
|
97
|
-
//#region src/domain/exception/domain-exception.errors.d.ts
|
|
98
|
-
declare abstract class DomainError extends Error {
|
|
99
|
-
readonly code: string;
|
|
100
|
-
readonly context?: Record<string, unknown> | undefined;
|
|
101
|
-
constructor(message: string, code?: string, context?: Record<string, unknown> | undefined);
|
|
102
|
-
toJSON(): object;
|
|
103
|
-
}
|
|
104
|
-
declare class ValidationError extends DomainError {
|
|
105
|
-
readonly field?: string | undefined;
|
|
106
|
-
readonly value?: unknown | undefined;
|
|
107
|
-
constructor(message: string, field?: string | undefined, value?: unknown | undefined);
|
|
108
|
-
}
|
|
109
|
-
declare class BusinessRuleError extends DomainError {
|
|
110
|
-
constructor(message: string, rule?: string);
|
|
111
|
-
}
|
|
112
|
-
declare class EntityNotFoundError extends DomainError {
|
|
113
|
-
readonly entityType: string;
|
|
114
|
-
readonly entityId: string;
|
|
115
|
-
constructor(entityType: string, entityId: string);
|
|
116
|
-
}
|
|
117
|
-
declare class RepositoryError extends DomainError {
|
|
118
|
-
readonly cause?: Error | undefined;
|
|
119
|
-
constructor(message: string, cause?: Error | undefined, context?: Record<string, unknown>);
|
|
120
|
-
toJSON(): object;
|
|
121
|
-
}
|
|
122
|
-
declare class ConcurrencyError extends DomainError {
|
|
123
|
-
constructor(message?: string);
|
|
124
|
-
}
|
|
125
|
-
declare class PermissionDeniedError extends DomainError {
|
|
126
|
-
readonly resource: string;
|
|
127
|
-
readonly action: string;
|
|
128
|
-
constructor(resource: string, action: string);
|
|
129
|
-
}
|
|
130
|
-
declare class ConfigurationError extends DomainError {
|
|
131
|
-
readonly key?: string | undefined;
|
|
132
|
-
constructor(message: string, key?: string | undefined);
|
|
133
|
-
}
|
|
134
|
-
declare class ExternalServiceError extends DomainError {
|
|
135
|
-
readonly service: string;
|
|
136
|
-
constructor(service: string, message: string, cause?: Error);
|
|
137
|
-
}
|
|
138
|
-
//#endregion
|
|
139
|
-
//#region ../logger/core/dist/index.d.mts
|
|
140
|
-
//#endregion
|
|
141
|
-
//#region src/tracing/context.types.d.ts
|
|
142
|
-
type TraceContext$1 = {
|
|
143
|
-
traceId: string;
|
|
144
|
-
spanId: string;
|
|
145
|
-
parentSpanId?: string;
|
|
146
|
-
};
|
|
147
|
-
//#endregion
|
|
148
|
-
//#region src/log/logger.types.d.ts
|
|
149
|
-
type Logger = {
|
|
150
|
-
debug(message: string, metadata?: Record<string, unknown>): void;
|
|
151
|
-
info(message: string, metadata?: Record<string, unknown>): void;
|
|
152
|
-
warn(message: string, metadata?: Record<string, unknown>): void;
|
|
153
|
-
error(message: string, error?: Error, metadata?: Record<string, unknown>): void;
|
|
154
|
-
withOperation(operation: string): Logger;
|
|
155
|
-
withTrace(trace: TraceContext$1): Logger;
|
|
156
|
-
};
|
|
157
|
-
//#endregion
|
|
158
|
-
//#region src/domain/exception/error-utils.d.ts
|
|
159
|
-
declare function toDomainError(error: unknown): DomainError;
|
|
160
|
-
declare function logError(error: DomainError, logger: Logger, operation?: string): void;
|
|
161
|
-
declare function isRetryableError(error: DomainError): boolean;
|
|
162
|
-
declare function isClientError(error: DomainError): boolean;
|
|
163
|
-
declare function isValidationError(error: DomainError): error is ValidationError;
|
|
164
|
-
declare function isBusinessRuleError(error: DomainError): error is BusinessRuleError;
|
|
165
|
-
declare function isEntityNotFoundError(error: DomainError): error is EntityNotFoundError;
|
|
166
|
-
declare function isRepositoryError(error: DomainError): error is RepositoryError;
|
|
167
|
-
declare function isConcurrencyError(error: DomainError): error is ConcurrencyError;
|
|
168
|
-
declare function isPermissionDeniedError(error: DomainError): error is PermissionDeniedError;
|
|
169
|
-
declare function isConfigurationError(error: DomainError): error is ConfigurationError;
|
|
170
|
-
declare function isExternalServiceError(error: DomainError): error is ExternalServiceError;
|
|
171
|
-
//#endregion
|
|
172
97
|
//#region src/domain/repositories/repository.types.d.ts
|
|
173
98
|
type PaginationParams = {
|
|
174
99
|
page: number;
|
|
@@ -192,6 +117,19 @@ type Repository<T extends Entity<unknown>> = {
|
|
|
192
117
|
exists(id: string): Promise<boolean>;
|
|
193
118
|
};
|
|
194
119
|
//#endregion
|
|
120
|
+
//#region src/domain/exception/domain-exception.errors.d.ts
|
|
121
|
+
declare abstract class DomainError extends Error {
|
|
122
|
+
readonly code: string;
|
|
123
|
+
readonly context?: Record<string, unknown> | undefined;
|
|
124
|
+
constructor(message: string, code?: string, context?: Record<string, unknown> | undefined);
|
|
125
|
+
toJSON(): object;
|
|
126
|
+
}
|
|
127
|
+
declare class ValidationError extends DomainError {
|
|
128
|
+
readonly field?: string | undefined;
|
|
129
|
+
readonly value?: unknown | undefined;
|
|
130
|
+
constructor(message: string, field?: string | undefined, value?: unknown | undefined);
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
195
133
|
//#region src/domain/result/result.types.d.ts
|
|
196
134
|
type MapFunction<T, U> = (value: T) => U;
|
|
197
135
|
type FlatMapFunction<T, U, E> = (value: T) => Result<U, E>;
|
|
@@ -406,4 +344,4 @@ type Version = z.infer<typeof VersionSchema>;
|
|
|
406
344
|
type ChangeType = z.infer<typeof ChangeTypeSchema>;
|
|
407
345
|
type IdReference = z.infer<typeof IdReferenceSchema>;
|
|
408
346
|
//#endregion
|
|
409
|
-
export { AggregateRootEntity as AggregateRoot, AggregateRootEntity,
|
|
347
|
+
export { AggregateRootEntity as AggregateRoot, AggregateRootEntity, type ChangeType, ChangeTypeSchema, type ConflictData, ConflictDataSchema, type ConflictResolution, ConflictResolutionSchema, type ConflictResolutionStrategy, ConflictResolutionStrategySchema, DomainEvent, type DomainEventConstructor, type DomainEventHandler, Entity, type EntityChange, EntityChangeSchema, EntityCreatedEvent, EntityDeletedEvent, EntityIdVO, EntityUpdatedEvent, type EventConstructor, Failure, type IdReference, IdReferenceSchema, type QueryOptions, type Reference, type Repository, type Result, type SortParams, Success, type SyncData, SyncDataSchema, SyncStatus, SyncStatusVO, type TimeRange, TimeRangeSchema, type Timestamp, TimestampSchema, TimestampVO, type TraceContext, type TracingContextManager, UNIT_OF_WORK_TOKEN, type UnitOfWork, ValueObject, type Version, VersionSchema, VersionVO, combine, failure, isFailure, isSuccess, success, unwrapResult };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as e}from"zod";var t=class{_id;_props;_events=[];constructor(e,t){this._id=e,this._props=t}get id(){return this._id}get props(){return this._props}updateProps(e,t){this._props[e]=t}addEvent(e){this._events.push(e)}pullEvents(){let e=[...this._events];return this._events=[],e}hasEvents(){return this._events.length>0}equals(e){return this._id===e._id}},n=class extends t{_version=1;_isDirty=!1;get version(){return this._version}get isDirty(){return this._isDirty}markAsDirty(){this._isDirty=!0,this._version++}},r=class{static TYPE;eventId;occurredAt;traceContext;constructor(e,t){this.eventId=e,this.occurredAt=new Date,this.traceContext=t}toJSON(){return{eventId:this.eventId,type:this.type,occurredAt:this.occurredAt.toISOString(),traceContext:this.traceContext}}},i=class extends r{type=`entity:created`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}},a=class extends r{type=`entity:updated`;constructor(e,t,n,r){super(e),this.entityType=t,this.entityId=n,this.changes=r}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId,changes:this.changes}}},o=class extends r{type=`entity:deleted`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}}
|
|
1
|
+
import{z as e}from"zod";var t=class{_id;_props;_events=[];constructor(e,t){this._id=e,this._props=t}get id(){return this._id}get props(){return this._props}updateProps(e,t){this._props[e]=t}addEvent(e){this._events.push(e)}pullEvents(){let e=[...this._events];return this._events=[],e}hasEvents(){return this._events.length>0}equals(e){return this._id===e._id}},n=class extends t{_version=1;_isDirty=!1;get version(){return this._version}get isDirty(){return this._isDirty}markAsDirty(){this._isDirty=!0,this._version++}},r=class{static TYPE;eventId;occurredAt;traceContext;constructor(e,t){this.eventId=e,this.occurredAt=new Date,this.traceContext=t}toJSON(){return{eventId:this.eventId,type:this.type,occurredAt:this.occurredAt.toISOString(),traceContext:this.traceContext}}},i=class extends r{type=`entity:created`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}},a=class extends r{type=`entity:updated`;constructor(e,t,n,r){super(e),this.entityType=t,this.entityId=n,this.changes=r}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId,changes:this.changes}}},o=class extends r{type=`entity:deleted`;constructor(e,t,n){super(e),this.entityType=t,this.entityId=n}toJSON(){return{...super.toJSON(),entityType:this.entityType,entityId:this.entityId}}};const s=Symbol(`UnitOfWork`);var c=class{_value;constructor(e){this._value=Object.freeze(e)}get value(){return this._value}valueOf(){return this._value}toString(){return String(this._value)}},l=class extends Error{constructor(e,t=`DOMAIN_ERROR`,n){super(e),this.code=t,this.context=n,this.name=`DomainError`}toJSON(){return{name:this.name,code:this.code,message:this.message,context:this.context,stack:this.stack}}},u=class extends l{constructor(e,t,n){super(e,`VALIDATION_ERROR`,{field:t,value:n}),this.field=t,this.value=n,this.name=`ValidationError`}},d=class extends l{constructor(e,t,n){super(e,`REPOSITORY_ERROR`,n),this.cause=t,this.name=`RepositoryError`}toJSON(){return{...super.toJSON(),cause:this.cause?.message}}};function f(e){return e instanceof l?e:e instanceof Error?new d(e.message,e):new d(String(e))}var p=class{isSuccess=!0;isFailure=!1;constructor(e){this.value=e}map(e){return h(e(this.value))}flatMap(e){return e(this.value)}mapError(e){return h(this.value)}getOrElse(e){return this.value}match(e){return e.success(this.value)}},m=class{isSuccess=!1;isFailure=!0;constructor(e){this.error=e}map(e){return g(this.error)}flatMap(e){return g(this.error)}mapError(e){return g(e(this.error))}getOrElse(e){return e}match(e){return e.failure(this.error)}};function h(e){return new p(e)}function g(e){return new m(e)}function _(e){let t=[];for(let n of e){if(n.isFailure)return g(n.error);t.push(n.value)}return h(t)}function v(e){return e.isSuccess}function y(e){return e.isFailure}function b(e){if(e.isFailure)throw f(e.error);return e.value}var x=class e extends c{static UUID_V4_REGEX=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;constructor(e){super(e)}static fromUUID(t){return!t||t.trim().length===0?g(new u(`实体 ID 不能为空`,`id`,t)):this.UUID_V4_REGEX.test(t)?h(new e(t)):g(new u(`无效的 UUID 格式`,`id`,t))}static generate(){return new e(crypto.randomUUID())}static fromString(t){if(!t||t.trim().length===0)throw Error(`实体 ID 不能为空`);return new e(t)}equals(e){return this._value===e._value}},S=class e extends c{constructor(e){super(e)}static now(){return new e(Date.now())}static fromDate(t){return new e(t.getTime())}static fromMillis(t){return new e(t)}toDate(){return new Date(this._value)}equals(e){return this._value===e._value}},C=class e extends c{constructor(e){super(e)}static initial(){return new e(0)}static fromNumber(t){if(!Number.isInteger(t)||t<0)throw Error(`版本号必须是非负整数`);return new e(t)}increment(){return new e(this._value+1)}equals(e){return this._value===e._value}isInitial(){return this._value===0}};let w=function(e){return e.LOCAL=`local`,e.PENDING=`pending`,e.SYNCED=`synced`,e.CONFLICT=`conflict`,e}({});var T=class e extends c{constructor(e){super(e)}static local(){return new e(w.LOCAL)}static pending(){return new e(w.PENDING)}static synced(){return new e(w.SYNCED)}static conflict(){return new e(w.CONFLICT)}static fromString(t){switch(t){case`local`:return e.local();case`pending`:return e.pending();case`synced`:return e.synced();case`conflict`:return e.conflict();default:throw Error(`未知的同步状态: ${t}`)}}needsSync(){return this._value===w.LOCAL||this._value===w.PENDING}equals(e){return this._value===e._value}};const E=e.number().int().positive(),D=e.number().int().nonnegative(),O=e.enum([`create`,`update`,`delete`]),k=e.enum([`local-wins`,`remote-wins`,`merge`,`manual`]),A=e.object({id:e.string(),type:e.string()}),j=e.object({start:e.coerce.date(),end:e.coerce.date()}),M=e.object({id:e.string(),type:e.string(),version:D,data:e.record(e.string(),e.unknown()),timestamp:E}),N=e.object({entityId:e.string(),entityType:e.string(),changeType:O,data:e.record(e.string(),e.unknown()).optional(),timestamp:E,version:D}),P=e.object({id:e.string(),entityType:e.string(),entityId:e.string(),localVersion:D,remoteVersion:D,localData:e.record(e.string(),e.unknown()),remoteData:e.record(e.string(),e.unknown()),conflictedAt:E}),F=e.object({conflictId:e.string(),strategy:k,resolvedData:e.record(e.string(),e.unknown()),resolvedAt:E});export{n as AggregateRoot,n as AggregateRootEntity,O as ChangeTypeSchema,P as ConflictDataSchema,F as ConflictResolutionSchema,k as ConflictResolutionStrategySchema,r as DomainEvent,t as Entity,N as EntityChangeSchema,i as EntityCreatedEvent,o as EntityDeletedEvent,x as EntityIdVO,a as EntityUpdatedEvent,m as Failure,A as IdReferenceSchema,p as Success,M as SyncDataSchema,w as SyncStatus,T as SyncStatusVO,j as TimeRangeSchema,E as TimestampSchema,S as TimestampVO,s as UNIT_OF_WORK_TOKEN,c as ValueObject,D as VersionSchema,C as VersionVO,_ as combine,g as failure,y as isFailure,v as isSuccess,h as success,b as unwrapResult};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@longzai-intelligence/shared-kernel",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./dist/index.d.mts",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"typecheck": "bun run typecheck:app && bun run typecheck:node && bun run typecheck:test",
|
|
32
32
|
"typecheck:app": "tsc --noEmit -p tsconfig/app.json",
|
|
33
33
|
"typecheck:node": "tsc --noEmit -p tsconfig/node.json",
|
|
34
|
-
"typecheck:test": "tsc --noEmit -p tsconfig/test.json"
|
|
34
|
+
"typecheck:test": "tsc --noEmit -p tsconfig/test.json",
|
|
35
|
+
"upgrade-deps": "ncu -u"
|
|
35
36
|
},
|
|
36
37
|
"dependencies": {
|
|
37
38
|
"reflect-metadata": "^0.2.2",
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
"rimraf": "^6.1.3",
|
|
46
47
|
"typescript": "^6.0.2",
|
|
47
48
|
"vitest": "^4.1.3",
|
|
48
|
-
"@longzai-intelligence/eslint-preset-library": "0.0.
|
|
49
|
+
"@longzai-intelligence/eslint-preset-library": "0.0.5",
|
|
49
50
|
"@longzai-intelligence/vitest-config": "0.0.3",
|
|
50
51
|
"@longzai-intelligence/typescript-config": "0.0.2",
|
|
51
52
|
"tsdown": "^0.21.7",
|