codama
Version:
A Solana framework for building standardised programs
1 lines • 3.17 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/codama.ts"],"sourcesContent":["export * from '@codama/errors';\nexport * from '@codama/nodes';\nexport * from '@codama/validators';\nexport * from '@codama/visitors';\n\nexport * from './codama';\n","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"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,2BAAd;AACA,0BAAc,0BADd;AAEA,0BAAc,+BAFd;AAGA,0BAAc,6BAHd;;;ACAA,oBAA+C;AAC/C,IAAAA,iBAA4B;AAC5B,mBAA4D;AAC5D,sBAA+B;AAUxB,SAAS,eAAe,MAAwB;AACnD,MAAI,cAAc;AAClB,wBAAsB,YAAY,OAAO;AACzC,SAAO;AAAA,IACH,OAAU,SAAoC;AAC1C,iBAAO,uBAAM,aAAa,OAAO;AAAA,IACrC;AAAA,IACA,QAAgB;AACZ,aAAO,eAAe,EAAE,GAAG,YAAY,CAAC;AAAA,IAC5C;AAAA,IACA,UAAkB;AACd,aAAO,KAAK,UAAU,WAAW;AAAA,IACrC;AAAA,IACA,UAAoB;AAChB,aAAO;AAAA,IACX;AAAA,IACA,OAAO,SAAiD;AACpD,YAAM,cAAU,uBAAM,aAAa,OAAO;AAC1C,qCAAa,SAAS,UAAU;AAChC,oBAAc;AAAA,IAClB;AAAA,EACJ;AACJ;AAEO,SAAS,eAAe,MAAsB;AACjD,SAAO,eAAe,KAAK,MAAM,IAAI,CAAa;AACtD;AAEO,SAAS,sBAAsB,aAAkC;AACpE,QAAM,gBAAgB;AACtB,MAAI,gBAAgB,cAAe;AACnC,QAAM,CAAC,WAAW,SAAS,IAAI,YAAY,MAAM,GAAG,EAAE,IAAI,MAAM;AAChE,QAAM,CAAC,aAAa,WAAW,IAAI,cAAc,MAAM,GAAG,EAAE,IAAI,MAAM;AACtE,QAAM,cAAc,cAAc,KAAK,gBAAgB;AACvD,MAAI,eAAe,cAAc,YAAa;AAC9C,MAAI,cAAc,YAAa;AAC/B,QAAM,IAAI,2BAAY,8CAAgC,EAAE,eAAe,YAAY,CAAC;AACxF;","names":["import_errors"]}