{"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/namespace.ts","../src/errors/async-schema-in-sync-parsing-error.ts","../src/errors/type-parsing-error.ts","../src/utils/parse-sync.ts","../src/domain-type.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\nexport const DomainFirstTypesError = errorNamespace(\"@DOMAIN-FIRST/TYPES\")\n","import { DomainFirstTypesError } from './namespace';\n\nexport const AsyncSchemaInSyncParsingError = DomainFirstTypesError.error('ASYNC_LOGIC');\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { DomainFirstTypesError } from './namespace';\n\nexport const TypeParsingError = DomainFirstTypesError.error<{\n    parsingIssues: readonly StandardSchemaV1.Issue[];\n    value: unknown;\n}>('INVALID_DATA');\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport {\n    AsyncSchemaInSyncParsingError,\n    TypeParsingError\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 TypeParsingError({ 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 createDomainType = <ModelSchema extends StandardSchemaV1>(\n    getModelSchema: (\n        isCurrentEntity: (target: unknown) => boolean\n    ) => ModelSchema\n) => {\n    const classSymbol = Symbol();\n\n    const isInstanceOfThisType = (target: unknown): boolean => {\n        return !!target && typeof target === 'object' && classSymbol in target;\n    };\n\n    class DomainType {\n        public static readonly schema = getModelSchema(isInstanceOfThisType);\n\n        constructor(model: StandardSchemaV1.InferInput<ModelSchema>) {\n            const schema = (this.constructor as typeof DomainType).schema;\n\n            const parsedModelData = parseSync(schema, model);\n\n            if (parsedModelData && typeof parsedModelData === 'object') {\n                for (const [key, value] of Object.entries(parsedModelData)) {\n                    Object.defineProperty(this, key, {\n                        value,\n                        writable: false,\n                        configurable: false,\n                        enumerable: true\n                    });\n                }\n            } else {\n                Object.defineProperty(this, 'value', {\n                    value: parsedModelData,\n                    writable: false,\n                    configurable: false,\n                    enumerable: true\n                });\n            }\n\n            Object.defineProperty(this, classSymbol, {\n                value: true,\n                writable: false,\n                configurable: false\n            });\n        }\n    }\n\n    return DomainType as unknown as (abstract new (\n        model: StandardSchemaV1.InferInput<ModelSchema>\n    ) => DeepReadonly<\n        StandardSchemaV1.InferOutput<ModelSchema> extends object\n            ? StandardSchemaV1.InferOutput<ModelSchema>\n            : {\n                  value: StandardSchemaV1.InferOutput<ModelSchema>;\n              }\n    >) & { schema: ModelSchema };\n};\n\nexport const domainType = <ModelSchema extends StandardSchemaV1>(\n    modelSchema: ModelSchema\n) => {\n    return createDomainType(() => modelSchema);\n};\n\nexport const recursiveDomainType = <ModelSchema extends StandardSchemaV1>(\n    modelSchema: (isCurrentType: (target: unknown) => boolean) => ModelSchema\n) => {\n    return createDomainType(modelSchema);\n};\n"],"names":["__webpack_require__","e","Object","Symbol","DomainFirstTypesError","errorNamespace","AsyncSchemaInSyncParsingError","TypeParsingError","parseSync","schema","value","result","Promise","createDomainType","getModelSchema","classSymbol","isInstanceOfThisType","target","DomainType","model","parsedModelData","key","domainType","modelSchema","recursiveDomainType"],"mappings":"wPAAAA,CAAAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFF,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOE,QAA0BA,OAAO,WAAW,EACrDD,OAAO,cAAc,CAACD,EAASE,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtED,OAAO,cAAc,CAACD,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,4VCJaG,sBAAwBC,AAAAA,GAAAA,uBAAAA,cAAAA,AAAAA,EAAe,uBCAvCC,8BAAgCF,sBAAsB,KAAK,CAAC,eCC5DG,iBAAmBH,sBAAsB,KAAK,CAGxD,gBCAI,SAASI,UACZC,CAAS,CACTC,CAAqC,EAErC,IAAMC,EAASF,CAAM,CAAC,YAAY,CAAC,QAAQ,CAACC,GAE5C,GAAIC,aAAkBC,QAClB,MAAM,IAAIN,8BAA8B,CAAEG,OAAAA,EAAQC,MAAAA,CAAM,GAG5D,GAAI,WAAYC,GAAUA,EAAO,MAAM,CACnC,MAAM,IAAIJ,iBAAiB,CAAE,cAAeI,EAAO,MAAM,CAAED,MAAAA,CAAM,GAGrE,OAAOC,EAAO,KAAK,AACvB,CClBA,MAAME,iBAAmB,AACrBC,IAIA,IAAMC,EAAcZ,SAEda,EAAuB,AAACC,GACnB,CAAC,CAACA,GAAU,AAAkB,UAAlB,OAAOA,GAAuBF,KAAeE,CAGpE,OAAMC,EACF,OAAuB,OAASJ,EAAeE,EAAsB,AAErE,aAAYG,CAA+C,CAAE,CAGzD,MAAMC,EAAkBZ,UAFR,IAAI,CAAC,WAAW,CAAuB,MAAM,CAEnBW,GAE1C,GAAIC,GAAmB,AAA2B,UAA3B,OAAOA,EAC1B,IAAK,KAAM,CAACC,EAAKX,EAAM,GAAIR,OAAO,OAAO,CAACkB,GACtClB,OAAO,cAAc,CAAC,IAAI,CAAEmB,EAAK,CAC7BX,MAAAA,EACA,SAAU,GACV,aAAc,GACd,WAAY,EAChB,QAGJR,OAAO,cAAc,CAAC,IAAI,CAAE,QAAS,CACjC,MAAOkB,EACP,SAAU,GACV,aAAc,GACd,WAAY,EAChB,GAGJlB,OAAO,cAAc,CAAC,IAAI,CAAEa,EAAa,CACrC,MAAO,GACP,SAAU,GACV,aAAc,EAClB,EACJ,CACJ,CAEA,OAAOG,CASX,EAEaI,WAAa,AACtBC,GAEOV,iBAAiB,IAAMU,GAGrBC,oBAAsB,AAC/BD,GAEOV,iBAAiBU,G"}