@domain-first/types 3.0.5 → 3.0.7

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.
@@ -1,19 +1,12 @@
1
1
  export declare const AsyncSchemaInSyncParsingError: {
2
- new (details: Record<string, any>, options?: ErrorOptions): {
3
- readonly metadata: import("@domain-first/errors").PlainPrimitivesObject & {
4
- code: string;
5
- };
6
- readonly details: Record<string, any>;
2
+ new (details: Record<string, unknown>, options?: ErrorOptions): {
3
+ readonly code: string;
4
+ readonly metadata: {};
5
+ readonly details: Record<string, unknown>;
7
6
  readonly formattedDetails: import("@domain-first/errors").PlainPrimitivesObject;
8
- readonly serialized: import("@domain-first/errors").TransportedError<import("@domain-first/errors").PlainPrimitivesObject & {
9
- code: string;
10
- }>;
11
- readonly serializedWithNativeData: import("@domain-first/errors").TransportedErrorWithNativeData<import("@domain-first/errors").PlainPrimitivesObject & {
12
- code: string;
13
- }>;
14
- readonly serializedFull: import("@domain-first/errors").FullTransportedError<Record<string, any>, import("@domain-first/errors").PlainPrimitivesObject & {
15
- code: string;
16
- }>;
7
+ readonly serialized: import("@domain-first/errors").TransportedError<{}>;
8
+ readonly serializedWithNativeData: import("@domain-first/errors").TransportedErrorWithNativeData<{}>;
9
+ readonly serializedFull: import("@domain-first/errors").FullTransportedError<Record<string, unknown>, {}>;
17
10
  name: string;
18
11
  message: string;
19
12
  stack?: string;
@@ -21,20 +14,13 @@ export declare const AsyncSchemaInSyncParsingError: {
21
14
  };
22
15
  matches: (target: unknown) => boolean | null;
23
16
  is: (target: unknown) => target is {
24
- readonly metadata: import("@domain-first/errors").PlainPrimitivesObject & {
25
- code: string;
26
- };
27
- readonly details: Record<string, any>;
28
- readonly formattedDetails: import("@domain-first/errors").PlainPrimitivesObject;
29
- readonly serialized: import("@domain-first/errors").TransportedError<import("@domain-first/errors").PlainPrimitivesObject & {
30
- code: string;
31
- }>;
32
- readonly serializedWithNativeData: import("@domain-first/errors").TransportedErrorWithNativeData<import("@domain-first/errors").PlainPrimitivesObject & {
33
- code: string;
34
- }>;
35
- readonly serializedFull: import("@domain-first/errors").FullTransportedError<Record<string, any>, import("@domain-first/errors").PlainPrimitivesObject & {
36
- code: string;
37
- }>;
17
+ readonly code: string;
18
+ readonly metadata: Metadata;
19
+ readonly details: Details_1;
20
+ get formattedDetails(): import("@domain-first/errors").PlainPrimitivesObject;
21
+ get serialized(): import("@domain-first/errors").TransportedError<Metadata>;
22
+ get serializedWithNativeData(): import("@domain-first/errors").TransportedErrorWithNativeData<Metadata>;
23
+ get serializedFull(): import("@domain-first/errors").FullTransportedError<Details_1, Metadata>;
38
24
  name: string;
39
25
  message: string;
40
26
  stack?: string;
@@ -4,26 +4,19 @@ export declare const InvalidDataParsingError: {
4
4
  parsingIssues: readonly StandardSchemaV1.Issue[];
5
5
  value: unknown;
6
6
  }, options?: ErrorOptions): {
7
- readonly metadata: import("@domain-first/errors").PlainPrimitivesObject & {
8
- code: string;
9
- };
7
+ readonly code: string;
8
+ readonly metadata: {};
10
9
  readonly details: {
11
10
  parsingIssues: readonly StandardSchemaV1.Issue[];
12
11
  value: unknown;
13
12
  };
14
13
  readonly formattedDetails: import("@domain-first/errors").PlainPrimitivesObject;
15
- readonly serialized: import("@domain-first/errors").TransportedError<import("@domain-first/errors").PlainPrimitivesObject & {
16
- code: string;
17
- }>;
18
- readonly serializedWithNativeData: import("@domain-first/errors").TransportedErrorWithNativeData<import("@domain-first/errors").PlainPrimitivesObject & {
19
- code: string;
20
- }>;
14
+ readonly serialized: import("@domain-first/errors").TransportedError<{}>;
15
+ readonly serializedWithNativeData: import("@domain-first/errors").TransportedErrorWithNativeData<{}>;
21
16
  readonly serializedFull: import("@domain-first/errors").FullTransportedError<{
22
17
  parsingIssues: readonly StandardSchemaV1.Issue[];
23
18
  value: unknown;
24
- }, import("@domain-first/errors").PlainPrimitivesObject & {
25
- code: string;
26
- }>;
19
+ }, {}>;
27
20
  name: string;
28
21
  message: string;
29
22
  stack?: string;
@@ -31,26 +24,13 @@ export declare const InvalidDataParsingError: {
31
24
  };
32
25
  matches: (target: unknown) => boolean | null;
33
26
  is: (target: unknown) => target is {
34
- readonly metadata: import("@domain-first/errors").PlainPrimitivesObject & {
35
- code: string;
36
- };
37
- readonly details: {
38
- parsingIssues: readonly StandardSchemaV1.Issue[];
39
- value: unknown;
40
- };
27
+ readonly code: string;
28
+ readonly metadata: Metadata;
29
+ readonly details: Details_1;
41
30
  get formattedDetails(): import("@domain-first/errors").PlainPrimitivesObject;
42
- get serialized(): import("@domain-first/errors").TransportedError<import("@domain-first/errors").PlainPrimitivesObject & {
43
- code: string;
44
- }>;
45
- get serializedWithNativeData(): import("@domain-first/errors").TransportedErrorWithNativeData<import("@domain-first/errors").PlainPrimitivesObject & {
46
- code: string;
47
- }>;
48
- get serializedFull(): import("@domain-first/errors").FullTransportedError<{
49
- parsingIssues: readonly StandardSchemaV1.Issue[];
50
- value: unknown;
51
- }, import("@domain-first/errors").PlainPrimitivesObject & {
52
- code: string;
53
- }>;
31
+ get serialized(): import("@domain-first/errors").TransportedError<Metadata>;
32
+ get serializedWithNativeData(): import("@domain-first/errors").TransportedErrorWithNativeData<Metadata>;
33
+ get serializedFull(): import("@domain-first/errors").FullTransportedError<Details_1, Metadata>;
54
34
  name: string;
55
35
  message: string;
56
36
  stack?: string;
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,r,t)=>{var a=(r,t)=>{for(var a in r)__webpack_require__.o(r,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,[t]:r[a]})};a(r,"get"),a(t,"value")},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AsyncSchemaInSyncParsingError:()=>AsyncSchemaInSyncParsingError,InvalidDataParsingError:()=>InvalidDataParsingError,defineEntity:()=>defineEntity,defineRecursiveEntity:()=>defineRecursiveEntity,defineRecursiveValueObject:()=>defineRecursiveValueObject,defineValueObject:()=>defineValueObject});const errors_namespaceObject=require("@domain-first/errors"),AsyncSchemaInSyncParsingError=(0,errors_namespaceObject.defineErrorClass)({code:"ASYNC_SCHEMA_IN_SYNC_PARSING"}),InvalidDataParsingError=(0,errors_namespaceObject.defineErrorClass)({code:"INVALID_DATA_PARSING"});function parseSync(e,r){let t=e["~standard"].validate(r);if(t instanceof Promise)throw new AsyncSchemaInSyncParsingError({schema:e,value:r});if("issues"in t&&t.issues)throw new InvalidDataParsingError({parsingIssues:t.issues,value:r});return t.value}const createEntity=(e,r)=>{let t=Symbol(),a=Symbol(),n=Symbol(),i=e=>!!e&&"object"==typeof e&&n in e;class c{static idSchema=e;static modelSchema=r(i);constructor(e,r){const i=parseSync(c.idSchema,e),_=parseSync(c.modelSchema,r);Object.defineProperty(this,t,{value:i}),Object.defineProperty(this,a,{value:_}),Object.defineProperty(this,n,{value:!0})}get model(){return this[a]}get id(){return this[t]}}return c},defineEntity=(e,r)=>createEntity(e,()=>r),defineRecursiveEntity=(e,r)=>createEntity(e,r),createValueObject=e=>{let r=Symbol(),t=Symbol(),a=e=>!!e&&"object"==typeof e&&t in e;class n{static schema=e(a);constructor(e){Object.defineProperty(this,r,{value:parseSync(n.schema,e)}),Object.defineProperty(this,t,{value:!0})}get model(){return this[r]}}return n},defineValueObject=e=>createValueObject(()=>e),defineRecursiveValueObject=e=>createValueObject(e);for(var __rspack_i in exports.AsyncSchemaInSyncParsingError=__webpack_exports__.AsyncSchemaInSyncParsingError,exports.InvalidDataParsingError=__webpack_exports__.InvalidDataParsingError,exports.defineEntity=__webpack_exports__.defineEntity,exports.defineRecursiveEntity=__webpack_exports__.defineRecursiveEntity,exports.defineRecursiveValueObject=__webpack_exports__.defineRecursiveValueObject,exports.defineValueObject=__webpack_exports__.defineValueObject,__webpack_exports__)-1===["AsyncSchemaInSyncParsingError","InvalidDataParsingError","defineEntity","defineRecursiveEntity","defineRecursiveValueObject","defineValueObject"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,r,t)=>{var a=(r,t)=>{for(var a in r)__webpack_require__.o(r,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,[t]:r[a]})};a(r,"get"),a(t,"value")},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AsyncSchemaInSyncParsingError:()=>AsyncSchemaInSyncParsingError,InvalidDataParsingError:()=>InvalidDataParsingError,defineEntity:()=>defineEntity,defineRecursiveEntity:()=>defineRecursiveEntity,defineRecursiveValueObject:()=>defineRecursiveValueObject,defineValueObject:()=>defineValueObject});const errors_namespaceObject=require("@domain-first/errors"),SchemaErrors=(0,errors_namespaceObject.errorNamespace)("SCHEMA"),AsyncSchemaInSyncParsingError=SchemaErrors.error("ASYNC_LOGIC"),ParsingErrors=(0,errors_namespaceObject.errorNamespace)("PARSING"),InvalidDataParsingError=ParsingErrors.error("INVALID_DATA");function parseSync(e,r){let t=e["~standard"].validate(r);if(t instanceof Promise)throw new AsyncSchemaInSyncParsingError({schema:e,value:r});if("issues"in t&&t.issues)throw new InvalidDataParsingError({parsingIssues:t.issues,value:r});return t.value}const createEntity=(e,r)=>{let t=Symbol(),a=Symbol(),n=Symbol(),i=e=>!!e&&"object"==typeof e&&n in e;class c{static idSchema=e;static modelSchema=r(i);constructor(e,r){const i=parseSync(c.idSchema,e),_=parseSync(c.modelSchema,r);Object.defineProperty(this,t,{value:i}),Object.defineProperty(this,a,{value:_}),Object.defineProperty(this,n,{value:!0})}get model(){return this[a]}get id(){return this[t]}}return c},defineEntity=(e,r)=>createEntity(e,()=>r),defineRecursiveEntity=(e,r)=>createEntity(e,r),createValueObject=e=>{let r=Symbol(),t=Symbol(),a=e=>!!e&&"object"==typeof e&&t in e;class n{static schema=e(a);constructor(e){Object.defineProperty(this,r,{value:parseSync(n.schema,e)}),Object.defineProperty(this,t,{value:!0})}get model(){return this[r]}}return n},defineValueObject=e=>createValueObject(()=>e),defineRecursiveValueObject=e=>createValueObject(e);for(var __rspack_i in exports.AsyncSchemaInSyncParsingError=__webpack_exports__.AsyncSchemaInSyncParsingError,exports.InvalidDataParsingError=__webpack_exports__.InvalidDataParsingError,exports.defineEntity=__webpack_exports__.defineEntity,exports.defineRecursiveEntity=__webpack_exports__.defineRecursiveEntity,exports.defineRecursiveValueObject=__webpack_exports__.defineRecursiveValueObject,exports.defineValueObject=__webpack_exports__.defineValueObject,__webpack_exports__)-1===["AsyncSchemaInSyncParsingError","InvalidDataParsingError","defineEntity","defineRecursiveEntity","defineRecursiveValueObject","defineValueObject"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/errors/async-schema-in-sync-parsing-error.ts","../src/errors/invalid-data-parsing-error.ts","../src/utils/parse-sync.ts","../src/entity.ts","../src/value-object.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { defineErrorClass } from '@domain-first/errors';\n\nexport const AsyncSchemaInSyncParsingError = defineErrorClass({\n code: 'ASYNC_SCHEMA_IN_SYNC_PARSING'\n});\n","import { defineErrorClass } from '@domain-first/errors';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport const InvalidDataParsingError = defineErrorClass<{\n parsingIssues: readonly StandardSchemaV1.Issue[];\n value: unknown;\n}>({\n code: 'INVALID_DATA_PARSING'\n});\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport {\n AsyncSchemaInSyncParsingError,\n InvalidDataParsingError\n} from '../errors';\n\nexport function parseSync<S extends StandardSchemaV1>(\n schema: S,\n value: StandardSchemaV1.InferInput<S>\n): StandardSchemaV1.InferOutput<S> {\n const result = schema['~standard'].validate(value);\n\n if (result instanceof Promise) {\n throw new AsyncSchemaInSyncParsingError({ schema, value });\n }\n\n if ('issues' in result && result.issues) {\n throw new InvalidDataParsingError({ parsingIssues: result.issues, value });\n }\n\n return result.value;\n}\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n getModelSchema: (\n isCurrentEntity: (target: unknown) => boolean\n ) => ModelSchema\n) => {\n const idSymbol = Symbol();\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class Entity {\n public static readonly idSchema = idSchema;\n public static readonly modelSchema = getModelSchema(isThisClass);\n\n constructor(\n id: StandardSchemaV1.InferInput<IdSchema>,\n model: StandardSchemaV1.InferInput<ModelSchema>\n ) {\n const parsedId = parseSync(Entity.idSchema, id);\n const parsedModelData = parseSync(Entity.modelSchema, model);\n\n Object.defineProperty(this, idSymbol, {\n value: parsedId\n });\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedModelData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n return (this as any)[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<ModelSchema>\n >;\n }\n\n get id() {\n return (this as any)[idSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<IdSchema>\n >;\n }\n }\n\n return Entity;\n};\n\nexport const defineEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: ModelSchema\n) => {\n return createEntity(idSchema, () => modelSchema);\n};\n\nexport const defineRecursiveEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: (isCurrentEntity: (target: unknown) => boolean) => ModelSchema\n) => {\n return createEntity(idSchema, modelSchema);\n};\n\nexport type InferEntityModel<T> = T extends { modelSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['modelSchema']>\n : T extends { model: infer M }\n ? M\n : never;\n\nexport type InferEntityId<T> = T extends { idSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['idSchema']>\n : T extends { id: infer M }\n ? M\n : never;\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createValueObject = <Schema extends StandardSchemaV1>(\n getSchema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class ValueObject {\n public static readonly schema = getSchema(isThisClass);\n\n constructor(data: StandardSchemaV1.InferInput<Schema>) {\n const parsedData = parseSync(ValueObject.schema, data);\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n const thisWithSymbol = this as unknown as {\n [modelSymbol]: StandardSchemaV1.InferOutput<Schema>;\n };\n\n return thisWithSymbol[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<Schema>\n >;\n }\n }\n\n return ValueObject;\n};\n\nexport const defineValueObject = <Schema extends StandardSchemaV1>(\n schema: Schema\n) => {\n return createValueObject(() => schema);\n};\n\nexport const defineRecursiveValueObject = <Schema extends StandardSchemaV1>(\n schema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n return createValueObject(schema);\n};\n\nexport type InferValueObjectSchema<T> = T extends {\n schema: infer S extends StandardSchemaV1;\n}\n ? StandardSchemaV1.InferOutput<S>\n : T extends { model: infer M }\n ? M\n : never;\n"],"names":["__webpack_require__","e","Object","Symbol","AsyncSchemaInSyncParsingError","defineErrorClass","InvalidDataParsingError","parseSync","schema","value","result","Promise","createEntity","idSchema","getModelSchema","idSymbol","modelSymbol","classSymbol","isThisClass","target","Entity","id","model","parsedId","parsedModelData","defineEntity","modelSchema","defineRecursiveEntity","createValueObject","getSchema","ValueObject","data","thisWithSymbol","defineValueObject","defineRecursiveValueObject"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/errors/async-schema-in-sync-parsing-error.ts","../src/errors/invalid-data-parsing-error.ts","../src/utils/parse-sync.ts","../src/entity.ts","../src/value-object.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { errorNamespace } from '@domain-first/errors';\n\nconst SchemaErrors = errorNamespace('SCHEMA')\n\nexport const AsyncSchemaInSyncParsingError = SchemaErrors.error('ASYNC_LOGIC');\n","import { errorNamespace } from '@domain-first/errors';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nconst ParsingErrors = errorNamespace(\"PARSING\")\n\nexport const InvalidDataParsingError = ParsingErrors.error<{\n parsingIssues: readonly StandardSchemaV1.Issue[];\n value: unknown;\n}>('INVALID_DATA');\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport {\n AsyncSchemaInSyncParsingError,\n InvalidDataParsingError\n} from '../errors';\n\nexport function parseSync<S extends StandardSchemaV1>(\n schema: S,\n value: StandardSchemaV1.InferInput<S>\n): StandardSchemaV1.InferOutput<S> {\n const result = schema['~standard'].validate(value);\n\n if (result instanceof Promise) {\n throw new AsyncSchemaInSyncParsingError({ schema, value });\n }\n\n if ('issues' in result && result.issues) {\n throw new InvalidDataParsingError({ parsingIssues: result.issues, value });\n }\n\n return result.value;\n}\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n getModelSchema: (\n isCurrentEntity: (target: unknown) => boolean\n ) => ModelSchema\n) => {\n const idSymbol = Symbol();\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class Entity {\n public static readonly idSchema = idSchema;\n public static readonly modelSchema = getModelSchema(isThisClass);\n\n constructor(\n id: StandardSchemaV1.InferInput<IdSchema>,\n model: StandardSchemaV1.InferInput<ModelSchema>\n ) {\n const parsedId = parseSync(Entity.idSchema, id);\n const parsedModelData = parseSync(Entity.modelSchema, model);\n\n Object.defineProperty(this, idSymbol, {\n value: parsedId\n });\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedModelData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n return (this as any)[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<ModelSchema>\n >;\n }\n\n get id() {\n return (this as any)[idSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<IdSchema>\n >;\n }\n }\n\n return Entity;\n};\n\nexport const defineEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: ModelSchema\n) => {\n return createEntity(idSchema, () => modelSchema);\n};\n\nexport const defineRecursiveEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: (isCurrentEntity: (target: unknown) => boolean) => ModelSchema\n) => {\n return createEntity(idSchema, modelSchema);\n};\n\nexport type InferEntityModel<T> = T extends { modelSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['modelSchema']>\n : T extends { model: infer M }\n ? M\n : never;\n\nexport type InferEntityId<T> = T extends { idSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['idSchema']>\n : T extends { id: infer M }\n ? M\n : never;\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createValueObject = <Schema extends StandardSchemaV1>(\n getSchema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class ValueObject {\n public static readonly schema = getSchema(isThisClass);\n\n constructor(data: StandardSchemaV1.InferInput<Schema>) {\n const parsedData = parseSync(ValueObject.schema, data);\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n const thisWithSymbol = this as unknown as {\n [modelSymbol]: StandardSchemaV1.InferOutput<Schema>;\n };\n\n return thisWithSymbol[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<Schema>\n >;\n }\n }\n\n return ValueObject;\n};\n\nexport const defineValueObject = <Schema extends StandardSchemaV1>(\n schema: Schema\n) => {\n return createValueObject(() => schema);\n};\n\nexport const defineRecursiveValueObject = <Schema extends StandardSchemaV1>(\n schema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n return createValueObject(schema);\n};\n\nexport type InferValueObjectSchema<T> = T extends {\n schema: infer S extends StandardSchemaV1;\n}\n ? StandardSchemaV1.InferOutput<S>\n : T extends { model: infer M }\n ? M\n : never;\n"],"names":["__webpack_require__","e","Object","Symbol","SchemaErrors","errorNamespace","AsyncSchemaInSyncParsingError","ParsingErrors","InvalidDataParsingError","parseSync","schema","value","result","Promise","createEntity","idSchema","getModelSchema","idSymbol","modelSymbol","classSymbol","isThisClass","target","Entity","id","model","parsedId","parsedModelData","defineEntity","modelSchema","defineRecursiveEntity","createValueObject","getSchema","ValueObject","data","thisWithSymbol","defineValueObject","defineRecursiveValueObject"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{defineErrorClass as e}from"@domain-first/errors";let t=e({code:"ASYNC_SCHEMA_IN_SYNC_PARSING"}),r=e({code:"INVALID_DATA_PARSING"});function i(e,i){let s=e["~standard"].validate(i);if(s instanceof Promise)throw new t({schema:e,value:i});if("issues"in s&&s.issues)throw new r({parsingIssues:s.issues,value:i});return s.value}let s=(e,t)=>{let r=Symbol(),s=Symbol(),n=Symbol(),o=e=>!!e&&"object"==typeof e&&n in e;class c{static idSchema=e;static modelSchema=t(o);constructor(e,t){let o=i(c.idSchema,e),a=i(c.modelSchema,t);Object.defineProperty(this,r,{value:o}),Object.defineProperty(this,s,{value:a}),Object.defineProperty(this,n,{value:!0})}get model(){return this[s]}get id(){return this[r]}}return c},n=(e,t)=>s(e,()=>t),o=(e,t)=>s(e,t),c=e=>{let t=Symbol(),r=Symbol(),s=e=>!!e&&"object"==typeof e&&r in e;class n{static schema=e(s);constructor(e){Object.defineProperty(this,t,{value:i(n.schema,e)}),Object.defineProperty(this,r,{value:!0})}get model(){return this[t]}}return n},a=e=>c(()=>e),l=e=>c(e);export{t as AsyncSchemaInSyncParsingError,r as InvalidDataParsingError,n as defineEntity,o as defineRecursiveEntity,l as defineRecursiveValueObject,a as defineValueObject};
1
+ import{errorNamespace as e}from"@domain-first/errors";let t=e("SCHEMA").error("ASYNC_LOGIC"),r=e("PARSING").error("INVALID_DATA");function i(e,i){let s=e["~standard"].validate(i);if(s instanceof Promise)throw new t({schema:e,value:i});if("issues"in s&&s.issues)throw new r({parsingIssues:s.issues,value:i});return s.value}let s=(e,t)=>{let r=Symbol(),s=Symbol(),n=Symbol(),o=e=>!!e&&"object"==typeof e&&n in e;class a{static idSchema=e;static modelSchema=t(o);constructor(e,t){let o=i(a.idSchema,e),c=i(a.modelSchema,t);Object.defineProperty(this,r,{value:o}),Object.defineProperty(this,s,{value:c}),Object.defineProperty(this,n,{value:!0})}get model(){return this[s]}get id(){return this[r]}}return a},n=(e,t)=>s(e,()=>t),o=(e,t)=>s(e,t),a=e=>{let t=Symbol(),r=Symbol(),s=e=>!!e&&"object"==typeof e&&r in e;class n{static schema=e(s);constructor(e){Object.defineProperty(this,t,{value:i(n.schema,e)}),Object.defineProperty(this,r,{value:!0})}get model(){return this[t]}}return n},c=e=>a(()=>e),l=e=>a(e);export{t as AsyncSchemaInSyncParsingError,r as InvalidDataParsingError,n as defineEntity,o as defineRecursiveEntity,l as defineRecursiveValueObject,c as defineValueObject};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/errors/async-schema-in-sync-parsing-error.ts","../src/errors/invalid-data-parsing-error.ts","../src/utils/parse-sync.ts","../src/entity.ts","../src/value-object.ts"],"sourcesContent":["import { defineErrorClass } from '@domain-first/errors';\n\nexport const AsyncSchemaInSyncParsingError = defineErrorClass({\n code: 'ASYNC_SCHEMA_IN_SYNC_PARSING'\n});\n","import { defineErrorClass } from '@domain-first/errors';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport const InvalidDataParsingError = defineErrorClass<{\n parsingIssues: readonly StandardSchemaV1.Issue[];\n value: unknown;\n}>({\n code: 'INVALID_DATA_PARSING'\n});\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport {\n AsyncSchemaInSyncParsingError,\n InvalidDataParsingError\n} from '../errors';\n\nexport function parseSync<S extends StandardSchemaV1>(\n schema: S,\n value: StandardSchemaV1.InferInput<S>\n): StandardSchemaV1.InferOutput<S> {\n const result = schema['~standard'].validate(value);\n\n if (result instanceof Promise) {\n throw new AsyncSchemaInSyncParsingError({ schema, value });\n }\n\n if ('issues' in result && result.issues) {\n throw new InvalidDataParsingError({ parsingIssues: result.issues, value });\n }\n\n return result.value;\n}\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n getModelSchema: (\n isCurrentEntity: (target: unknown) => boolean\n ) => ModelSchema\n) => {\n const idSymbol = Symbol();\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class Entity {\n public static readonly idSchema = idSchema;\n public static readonly modelSchema = getModelSchema(isThisClass);\n\n constructor(\n id: StandardSchemaV1.InferInput<IdSchema>,\n model: StandardSchemaV1.InferInput<ModelSchema>\n ) {\n const parsedId = parseSync(Entity.idSchema, id);\n const parsedModelData = parseSync(Entity.modelSchema, model);\n\n Object.defineProperty(this, idSymbol, {\n value: parsedId\n });\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedModelData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n return (this as any)[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<ModelSchema>\n >;\n }\n\n get id() {\n return (this as any)[idSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<IdSchema>\n >;\n }\n }\n\n return Entity;\n};\n\nexport const defineEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: ModelSchema\n) => {\n return createEntity(idSchema, () => modelSchema);\n};\n\nexport const defineRecursiveEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: (isCurrentEntity: (target: unknown) => boolean) => ModelSchema\n) => {\n return createEntity(idSchema, modelSchema);\n};\n\nexport type InferEntityModel<T> = T extends { modelSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['modelSchema']>\n : T extends { model: infer M }\n ? M\n : never;\n\nexport type InferEntityId<T> = T extends { idSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['idSchema']>\n : T extends { id: infer M }\n ? M\n : never;\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createValueObject = <Schema extends StandardSchemaV1>(\n getSchema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class ValueObject {\n public static readonly schema = getSchema(isThisClass);\n\n constructor(data: StandardSchemaV1.InferInput<Schema>) {\n const parsedData = parseSync(ValueObject.schema, data);\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n const thisWithSymbol = this as unknown as {\n [modelSymbol]: StandardSchemaV1.InferOutput<Schema>;\n };\n\n return thisWithSymbol[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<Schema>\n >;\n }\n }\n\n return ValueObject;\n};\n\nexport const defineValueObject = <Schema extends StandardSchemaV1>(\n schema: Schema\n) => {\n return createValueObject(() => schema);\n};\n\nexport const defineRecursiveValueObject = <Schema extends StandardSchemaV1>(\n schema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n return createValueObject(schema);\n};\n\nexport type InferValueObjectSchema<T> = T extends {\n schema: infer S extends StandardSchemaV1;\n}\n ? StandardSchemaV1.InferOutput<S>\n : T extends { model: infer M }\n ? M\n : never;\n"],"names":["AsyncSchemaInSyncParsingError","defineErrorClass","InvalidDataParsingError","parseSync","schema","value","result","Promise","createEntity","idSchema","getModelSchema","idSymbol","Symbol","modelSymbol","classSymbol","isThisClass","target","Entity","id","model","parsedId","parsedModelData","Object","defineEntity","modelSchema","defineRecursiveEntity","createValueObject","getSchema","ValueObject","data","thisWithSymbol","defineValueObject","defineRecursiveValueObject"],"mappings":"wDAEO,IAAMA,EAAgCC,EAAiB,CAC1D,KAAM,8BACV,GCDaC,EAA0BD,EAGpC,CACC,KAAM,sBACV,GCFO,SAASE,EACZC,CAAS,CACTC,CAAqC,EAErC,IAAMC,EAASF,CAAM,CAAC,YAAY,CAAC,QAAQ,CAACC,GAE5C,GAAIC,aAAkBC,QAClB,MAAM,IAAIP,EAA8B,CAAEI,OAAAA,EAAQC,MAAAA,CAAM,GAG5D,GAAI,WAAYC,GAAUA,EAAO,MAAM,CACnC,MAAM,IAAIJ,EAAwB,CAAE,cAAeI,EAAO,MAAM,CAAED,MAAAA,CAAM,GAG5E,OAAOC,EAAO,KAAK,AACvB,CClBA,IAAME,EAAe,CAIjBC,EACAC,KAIA,IAAMC,EAAWC,SACXC,EAAcD,SACdE,EAAcF,SAEdG,EAAc,AAACC,GACV,CAAC,CAACA,GAAU,AAAkB,UAAlB,OAAOA,GAAuBF,KAAeE,CAGpE,OAAeC,EACX,OAAuB,SAAWR,CAAS,AAC3C,QAAuB,YAAcC,EAAeK,EAAa,AAEjE,aACIG,CAAyC,CACzCC,CAA+C,CACjD,CACE,IAAMC,EAAWjB,EAAUc,EAAO,QAAQ,CAAEC,GACtCG,EAAkBlB,EAAUc,EAAO,WAAW,CAAEE,GAEtDG,OAAO,cAAc,CAAC,IAAI,CAAEX,EAAU,CAClC,MAAOS,CACX,GAEAE,OAAO,cAAc,CAAC,IAAI,CAAET,EAAa,CACrC,MAAOQ,CACX,GAEAC,OAAO,cAAc,CAAC,IAAI,CAAER,EAAa,CACrC,MAAO,EACX,EACJ,CAEA,IAAI,OAAQ,CACR,OAAQ,IAAY,CAACD,EAAY,AAGrC,CAEA,IAAI,IAAK,CACL,OAAQ,IAAY,CAACF,EAAS,AAGlC,CACJ,CAEA,OAAOM,CACX,EAEaM,EAAe,CAIxBd,EACAe,IAEOhB,EAAaC,EAAU,IAAMe,GAG3BC,EAAwB,CAIjChB,EACAe,IAEOhB,EAAaC,EAAUe,GC1E5BE,EAAoB,AACtBC,IAEA,IAAMd,EAAcD,SACdE,EAAcF,SAEdG,EAAc,AAACC,GACV,CAAC,CAACA,GAAU,AAAkB,UAAlB,OAAOA,GAAuBF,KAAeE,CAGpE,OAAeY,EACX,OAAuB,OAASD,EAAUZ,EAAa,AAEvD,aAAYc,CAAyC,CAAE,CAGnDP,OAAO,cAAc,CAAC,IAAI,CAAET,EAAa,CACrC,MAHeV,EAAUyB,EAAY,MAAM,CAAEC,EAIjD,GAEAP,OAAO,cAAc,CAAC,IAAI,CAAER,EAAa,CACrC,MAAO,EACX,EACJ,CAEA,IAAI,OAAQ,CAKR,OAAOgB,AAJgB,IAAI,AAIN,CAACjB,EAAY,AAGtC,CACJ,CAEA,OAAOe,CACX,EAEaG,EAAoB,AAC7B3B,GAEOsB,EAAkB,IAAMtB,GAGtB4B,EAA6B,AACtC5B,GAEOsB,EAAkBtB,U"}
1
+ {"version":3,"file":"index.js","sources":["../src/errors/async-schema-in-sync-parsing-error.ts","../src/errors/invalid-data-parsing-error.ts","../src/utils/parse-sync.ts","../src/entity.ts","../src/value-object.ts"],"sourcesContent":["import { errorNamespace } from '@domain-first/errors';\n\nconst SchemaErrors = errorNamespace('SCHEMA')\n\nexport const AsyncSchemaInSyncParsingError = SchemaErrors.error('ASYNC_LOGIC');\n","import { errorNamespace } from '@domain-first/errors';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nconst ParsingErrors = errorNamespace(\"PARSING\")\n\nexport const InvalidDataParsingError = ParsingErrors.error<{\n parsingIssues: readonly StandardSchemaV1.Issue[];\n value: unknown;\n}>('INVALID_DATA');\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport {\n AsyncSchemaInSyncParsingError,\n InvalidDataParsingError\n} from '../errors';\n\nexport function parseSync<S extends StandardSchemaV1>(\n schema: S,\n value: StandardSchemaV1.InferInput<S>\n): StandardSchemaV1.InferOutput<S> {\n const result = schema['~standard'].validate(value);\n\n if (result instanceof Promise) {\n throw new AsyncSchemaInSyncParsingError({ schema, value });\n }\n\n if ('issues' in result && result.issues) {\n throw new InvalidDataParsingError({ parsingIssues: result.issues, value });\n }\n\n return result.value;\n}\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n getModelSchema: (\n isCurrentEntity: (target: unknown) => boolean\n ) => ModelSchema\n) => {\n const idSymbol = Symbol();\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class Entity {\n public static readonly idSchema = idSchema;\n public static readonly modelSchema = getModelSchema(isThisClass);\n\n constructor(\n id: StandardSchemaV1.InferInput<IdSchema>,\n model: StandardSchemaV1.InferInput<ModelSchema>\n ) {\n const parsedId = parseSync(Entity.idSchema, id);\n const parsedModelData = parseSync(Entity.modelSchema, model);\n\n Object.defineProperty(this, idSymbol, {\n value: parsedId\n });\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedModelData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n return (this as any)[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<ModelSchema>\n >;\n }\n\n get id() {\n return (this as any)[idSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<IdSchema>\n >;\n }\n }\n\n return Entity;\n};\n\nexport const defineEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: ModelSchema\n) => {\n return createEntity(idSchema, () => modelSchema);\n};\n\nexport const defineRecursiveEntity = <\n IdSchema extends StandardSchemaV1,\n ModelSchema extends StandardSchemaV1\n>(\n idSchema: IdSchema,\n modelSchema: (isCurrentEntity: (target: unknown) => boolean) => ModelSchema\n) => {\n return createEntity(idSchema, modelSchema);\n};\n\nexport type InferEntityModel<T> = T extends { modelSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['modelSchema']>\n : T extends { model: infer M }\n ? M\n : never;\n\nexport type InferEntityId<T> = T extends { idSchema: StandardSchemaV1 }\n ? StandardSchemaV1.InferOutput<T['idSchema']>\n : T extends { id: infer M }\n ? M\n : never;\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type DeepReadonly, parseSync } from './utils';\n\nconst createValueObject = <Schema extends StandardSchemaV1>(\n getSchema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n const modelSymbol = Symbol();\n const classSymbol = Symbol();\n\n const isThisClass = (target: unknown): boolean => {\n return !!target && typeof target === 'object' && classSymbol in target;\n };\n\n abstract class ValueObject {\n public static readonly schema = getSchema(isThisClass);\n\n constructor(data: StandardSchemaV1.InferInput<Schema>) {\n const parsedData = parseSync(ValueObject.schema, data);\n\n Object.defineProperty(this, modelSymbol, {\n value: parsedData\n });\n\n Object.defineProperty(this, classSymbol, {\n value: true\n });\n }\n\n get model() {\n const thisWithSymbol = this as unknown as {\n [modelSymbol]: StandardSchemaV1.InferOutput<Schema>;\n };\n\n return thisWithSymbol[modelSymbol] as DeepReadonly<\n StandardSchemaV1.InferOutput<Schema>\n >;\n }\n }\n\n return ValueObject;\n};\n\nexport const defineValueObject = <Schema extends StandardSchemaV1>(\n schema: Schema\n) => {\n return createValueObject(() => schema);\n};\n\nexport const defineRecursiveValueObject = <Schema extends StandardSchemaV1>(\n schema: (isCurrentValueObject: (target: unknown) => boolean) => Schema\n) => {\n return createValueObject(schema);\n};\n\nexport type InferValueObjectSchema<T> = T extends {\n schema: infer S extends StandardSchemaV1;\n}\n ? StandardSchemaV1.InferOutput<S>\n : T extends { model: infer M }\n ? M\n : never;\n"],"names":["AsyncSchemaInSyncParsingError","SchemaErrors","errorNamespace","InvalidDataParsingError","ParsingErrors","parseSync","schema","value","result","Promise","createEntity","idSchema","getModelSchema","idSymbol","Symbol","modelSymbol","classSymbol","isThisClass","target","Entity","id","model","parsedId","parsedModelData","Object","defineEntity","modelSchema","defineRecursiveEntity","createValueObject","getSchema","ValueObject","data","thisWithSymbol","defineValueObject","defineRecursiveValueObject"],"mappings":"sDAIO,IAAMA,EAAgCC,AAFxBC,EAAe,UAEsB,KAAK,CAAC,eCCnDC,EAA0BC,AAFjBF,EAAe,WAEgB,KAAK,CAGvD,gBCFI,SAASG,EACZC,CAAS,CACTC,CAAqC,EAErC,IAAMC,EAASF,CAAM,CAAC,YAAY,CAAC,QAAQ,CAACC,GAE5C,GAAIC,aAAkBC,QAClB,MAAM,IAAIT,EAA8B,CAAEM,OAAAA,EAAQC,MAAAA,CAAM,GAG5D,GAAI,WAAYC,GAAUA,EAAO,MAAM,CACnC,MAAM,IAAIL,EAAwB,CAAE,cAAeK,EAAO,MAAM,CAAED,MAAAA,CAAM,GAG5E,OAAOC,EAAO,KAAK,AACvB,CClBA,IAAME,EAAe,CAIjBC,EACAC,KAIA,IAAMC,EAAWC,SACXC,EAAcD,SACdE,EAAcF,SAEdG,EAAc,AAACC,GACV,CAAC,CAACA,GAAU,AAAkB,UAAlB,OAAOA,GAAuBF,KAAeE,CAGpE,OAAeC,EACX,OAAuB,SAAWR,CAAS,AAC3C,QAAuB,YAAcC,EAAeK,EAAa,AAEjE,aACIG,CAAyC,CACzCC,CAA+C,CACjD,CACE,IAAMC,EAAWjB,EAAUc,EAAO,QAAQ,CAAEC,GACtCG,EAAkBlB,EAAUc,EAAO,WAAW,CAAEE,GAEtDG,OAAO,cAAc,CAAC,IAAI,CAAEX,EAAU,CAClC,MAAOS,CACX,GAEAE,OAAO,cAAc,CAAC,IAAI,CAAET,EAAa,CACrC,MAAOQ,CACX,GAEAC,OAAO,cAAc,CAAC,IAAI,CAAER,EAAa,CACrC,MAAO,EACX,EACJ,CAEA,IAAI,OAAQ,CACR,OAAQ,IAAY,CAACD,EAAY,AAGrC,CAEA,IAAI,IAAK,CACL,OAAQ,IAAY,CAACF,EAAS,AAGlC,CACJ,CAEA,OAAOM,CACX,EAEaM,EAAe,CAIxBd,EACAe,IAEOhB,EAAaC,EAAU,IAAMe,GAG3BC,EAAwB,CAIjChB,EACAe,IAEOhB,EAAaC,EAAUe,GC1E5BE,EAAoB,AACtBC,IAEA,IAAMd,EAAcD,SACdE,EAAcF,SAEdG,EAAc,AAACC,GACV,CAAC,CAACA,GAAU,AAAkB,UAAlB,OAAOA,GAAuBF,KAAeE,CAGpE,OAAeY,EACX,OAAuB,OAASD,EAAUZ,EAAa,AAEvD,aAAYc,CAAyC,CAAE,CAGnDP,OAAO,cAAc,CAAC,IAAI,CAAET,EAAa,CACrC,MAHeV,EAAUyB,EAAY,MAAM,CAAEC,EAIjD,GAEAP,OAAO,cAAc,CAAC,IAAI,CAAER,EAAa,CACrC,MAAO,EACX,EACJ,CAEA,IAAI,OAAQ,CAKR,OAAOgB,AAJgB,IAAI,AAIN,CAACjB,EAAY,AAGtC,CACJ,CAEA,OAAOe,CACX,EAEaG,EAAoB,AAC7B3B,GAEOsB,EAAkB,IAAMtB,GAGtB4B,EAA6B,AACtC5B,GAEOsB,EAAkBtB,U"}
package/package.json CHANGED
@@ -15,8 +15,8 @@
15
15
  "zod",
16
16
  "valibot"
17
17
  ],
18
- "homepage": "https://codesandbox.io/p/devbox/practical-smoke-d8crnx?file=%2Findex.js%3A1%2C4",
19
- "version": "3.0.5",
18
+ "homepage": "https://codesandbox.io/p/devbox/async-cache-d8crnx?file=%2Findex.js%3A8%2C65",
19
+ "version": "3.0.7",
20
20
  "type": "module",
21
21
  "repository": {
22
22
  "type": "git",
@@ -61,7 +61,7 @@
61
61
  "zod": "^4.4.3"
62
62
  },
63
63
  "dependencies": {
64
- "@domain-first/errors": "^1.7.5",
64
+ "@domain-first/errors": "^3.0.0",
65
65
  "@standard-schema/spec": "^1.1.0"
66
66
  }
67
67
  }