{"version":3,"file":"block_description.cjs","names":["z","BlockComponentsDescriptionRaw","BlockPackMetaDescriptionRaw","BlockPackId"],"sources":["../../src/block_meta/block_description.ts"],"sourcesContent":["import type { ZodTypeAny } from \"zod\";\nimport { z } from \"zod\";\nimport { BlockComponentsDescriptionRaw } from \"./block_components\";\nimport { BlockPackMetaDescriptionRaw } from \"./block_meta\";\nimport { BlockPackId } from \"./block_id\";\nimport { toMerged } from \"es-toolkit\";\nimport type { BlockCodeKnownFeatureFlags } from \"@milaboratories/pl-model-common\";\n\n/**\n * Block-pack description: a `BlockPackId`, the typed `components` and `meta`\n * payloads, and optional `featureFlags`. The two type parameters let the same\n * shape carry every form a description travels in — `package.json` source,\n * relative-path manifest, absolute-path resolved.\n */\nexport type BlockPackDescription<Components, Meta> = {\n  id: BlockPackId;\n  components: Components;\n  meta: Meta;\n  featureFlags?: BlockCodeKnownFeatureFlags;\n};\n\n/**\n * Description as it appears in the root block `package.json`. `file:`-prefixed\n * strings become `ContentRelative`; bare text strings become\n * `ContentExplicitString`. See `DescriptionContentText`/`DescriptionContentBinary`.\n */\nexport const BlockPackDescriptionFromPackageJsonRaw = z.object({\n  components: BlockComponentsDescriptionRaw,\n  meta: BlockPackMetaDescriptionRaw,\n});\n\nexport const FeatureFlags = z\n  .record(z.string(), z.union([z.boolean(), z.number()]))\n  .transform((flags) => flags as BlockCodeKnownFeatureFlags);\n\nexport function CreateBlockPackDescriptionSchema<\n  Components extends ZodTypeAny,\n  Meta extends ZodTypeAny,\n>(components: Components, meta: Meta) {\n  return z\n    .object({\n      id: BlockPackId,\n      components,\n      meta,\n      featureFlags: FeatureFlags.optional(),\n    })\n    .passthrough();\n}\n\nexport const BlockPackDescriptionRaw = CreateBlockPackDescriptionSchema(\n  BlockComponentsDescriptionRaw,\n  BlockPackMetaDescriptionRaw,\n);\nexport type BlockPackDescriptionRaw = z.infer<typeof BlockPackDescriptionRaw>;\n\nexport function overrideDescriptionVersion<T extends { id: BlockPackId }>(\n  manifest: T,\n  newVersion: string,\n): T {\n  return toMerged(manifest, { id: { version: newVersion } }) as T;\n}\n"],"mappings":";;;;;;;;;;;AA0BA,MAAa,yCAAyCA,IAAAA,EAAE,OAAO;CAC7D,YAAYC,yBAAAA;CACZ,MAAMC,mBAAAA;AACR,CAAC;AAED,MAAa,eAAeF,IAAAA,EACzB,OAAOA,IAAAA,EAAE,OAAO,GAAGA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,QAAQ,GAAGA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CACtD,WAAW,UAAU,KAAmC;AAE3D,SAAgB,iCAGd,YAAwB,MAAY;CACpC,OAAOA,IAAAA,EACJ,OAAO;EACN,IAAIG,iBAAAA;EACJ;EACA;EACA,cAAc,aAAa,SAAS;CACtC,CAAC,CAAC,CACD,YAAY;AACjB;AAEA,MAAa,0BAA0B,iCACrCF,yBAAAA,+BACAC,mBAAAA,2BACF;AAGA,SAAgB,2BACd,UACA,YACG;CACH,QAAA,GAAA,WAAA,SAAA,CAAgB,UAAU,EAAE,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;AAC3D"}