{"version":3,"file":"mongo-contract-view-DcJ35l0-.mjs","names":["MongoContractView"],"sources":["../src/core/ir/mongo-contract-view.ts"],"sourcesContent":["import {\n  buildMongoContractView,\n  type MongoContract,\n  type MongoContractView as MongoContractViewType,\n} from '@prisma-next/mongo-contract';\nimport { MongoContractSerializer } from './mongo-contract-serializer';\n\n/**\n * A Mongo contract view: the deserialized contract intersected with by-name\n * accessors. It is substitutable for `Contract` (carries `storage`, `domain`,\n * …) and also exposes the single default namespace unwrapped with the built-in\n * `collection` kind promoted:\n *\n * ```ts\n * const view = MongoContractView.fromJson<Contract>(contractJson);\n * view.collection.carts.validator // typed MongoCollection\n * view.entries.policy.X           // pack-contributed kind (singular key)\n * view.storage                    // the full contract is still present\n * ```\n */\nexport type MongoContractView<TContract extends MongoContract = MongoContract> =\n  MongoContractViewType<TContract>;\n\nexport const MongoContractView = {\n  /** Wrap an already-deserialized Mongo contract in a view. */\n  from<TContract extends MongoContract>(contract: TContract): MongoContractView<TContract> {\n    return buildMongoContractView(contract);\n  },\n\n  /** Deserialize a Mongo contract JSON envelope and wrap it in a view. */\n  fromJson<TContract extends MongoContract = MongoContract>(\n    json: unknown,\n  ): MongoContractView<TContract> {\n    const contract = new MongoContractSerializer().deserializeContract<TContract>(json);\n    return buildMongoContractView(contract);\n  },\n};\n"],"mappings":";;;AAuBA,MAAaA,sBAAoB;;CAE/B,KAAsC,UAAmD;EACvF,OAAO,uBAAuB,QAAQ;CACxC;;CAGA,SACE,MAC8B;EAE9B,OAAO,uBADU,IAAI,wBAAwB,CAAC,CAAC,oBAA+B,IACzC,CAAC;CACxC;AACF"}