codama
Version:
A Solana framework for building standardised programs
1 lines • 3.21 kB
Source Map (JSON)
{"version":3,"sources":["../src/codama.ts"],"names":[],"mappings":";;;;;;;;;AAaO,SAAS,eAAe,IAAA,EAAwB;AACnD,EAAA,IAAI,WAAA,GAAc,IAAA;AAClB,EAAA,qBAAA,CAAsB,YAAY,OAAO,CAAA;AACzC,EAAA,OAAO;AAAA,IACH,OAAU,OAAA,EAAoC;AAC1C,MAAA,OAAO,KAAA,CAAM,aAAa,OAAO,CAAA;AAAA,IACrC,CAAA;AAAA,IACA,KAAA,GAAgB;AACZ,MAAA,OAAO,cAAA,CAAe,EAAE,GAAG,WAAA,EAAa,CAAA;AAAA,IAC5C,CAAA;AAAA,IACA,OAAA,GAAkB;AACd,MAAA,OAAO,IAAA,CAAK,UAAU,WAAW,CAAA;AAAA,IACrC,CAAA;AAAA,IACA,OAAA,GAAoB;AAChB,MAAA,OAAO,WAAA;AAAA,IACX,CAAA;AAAA,IACA,OAAO,OAAA,EAAiD;AACpD,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,WAAA,EAAa,OAAO,CAAA;AAC1C,MAAA,YAAA,CAAa,SAAS,UAAU,CAAA;AAChC,MAAA,WAAA,GAAc,OAAA;AAAA,IAClB;AAAA,GACJ;AACJ;AAEO,SAAS,eAAe,IAAA,EAAsB;AACjD,EAAA,OAAO,cAAA,CAAe,IAAA,CAAK,KAAA,CAAM,IAAI,CAAa,CAAA;AACtD;AAEO,SAAS,sBAAsB,WAAA,EAAkC;AACpE,EAAA,MAAM,aAAA,GAAgB,OAAA;AACtB,EAAA,IAAI,gBAAgB,aAAA,EAAe;AACnC,EAAA,MAAM,CAAC,WAAW,SAAS,CAAA,GAAI,YAAY,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAChE,EAAA,MAAM,CAAC,aAAa,WAAW,CAAA,GAAI,cAAc,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACtE,EAAA,MAAM,WAAA,GAAc,SAAA,KAAc,CAAA,IAAK,WAAA,KAAgB,CAAA;AACvD,EAAA,IAAI,WAAA,IAAe,cAAc,WAAA,EAAa;AAC9C,EAAA,IAAI,cAAc,WAAA,EAAa;AAC/B,EAAA,MAAM,IAAI,WAAA,CAAY,8BAAA,EAAgC,EAAE,aAAA,EAAe,aAAa,CAAA;AACxF","file":"index.react-native.mjs","sourcesContent":["import { CODAMA_ERROR__VERSION_MISMATCH } from '@codama/errors';\nimport { CodamaError } from '@codama/errors';\nimport { assertIsNode, CodamaVersion, Node, RootNode } from '@codama/nodes';\nimport { visit, Visitor } from '@codama/visitors';\n\nexport interface Codama {\n accept<T>(visitor: Visitor<T, 'rootNode'>): T;\n clone(): Codama;\n getJson(): string;\n getRoot(): RootNode;\n update(visitor: Visitor<Node | null, 'rootNode'>): void;\n}\n\nexport function createFromRoot(root: RootNode): Codama {\n let currentRoot = root;\n validateCodamaVersion(currentRoot.version);\n return {\n accept<T>(visitor: Visitor<T, 'rootNode'>): T {\n return visit(currentRoot, visitor);\n },\n clone(): Codama {\n return createFromRoot({ ...currentRoot });\n },\n getJson(): string {\n return JSON.stringify(currentRoot);\n },\n getRoot(): RootNode {\n return currentRoot;\n },\n update(visitor: Visitor<Node | null, 'rootNode'>): void {\n const newRoot = visit(currentRoot, visitor);\n assertIsNode(newRoot, 'rootNode');\n currentRoot = newRoot;\n },\n };\n}\n\nexport function createFromJson(json: string): Codama {\n return createFromRoot(JSON.parse(json) as RootNode);\n}\n\nexport function validateCodamaVersion(rootVersion: CodamaVersion): void {\n const codamaVersion = __VERSION__;\n if (rootVersion === codamaVersion) return;\n const [rootMajor, rootMinor] = rootVersion.split('.').map(Number);\n const [CodamaMajor, CodamaMinor] = codamaVersion.split('.').map(Number);\n const isZeroMajor = rootMajor === 0 && CodamaMajor === 0;\n if (isZeroMajor && rootMinor === CodamaMinor) return;\n if (rootMajor === CodamaMajor) return;\n throw new CodamaError(CODAMA_ERROR__VERSION_MISMATCH, { codamaVersion, rootVersion });\n}\n"]}