UNPKG

codama

Version:

A Solana framework for building standardised programs

74 lines (71 loc) 2.51 kB
'use strict'; var errors = require('@codama/errors'); var nodes = require('@codama/nodes'); var validators = require('@codama/validators'); var visitors = require('@codama/visitors'); // src/index.ts function createFromRoot(root) { let currentRoot = root; validateCodamaVersion(currentRoot.version); return { accept(visitor) { return visitors.visit(currentRoot, visitor); }, clone() { return createFromRoot({ ...currentRoot }); }, getJson() { return JSON.stringify(currentRoot); }, getRoot() { return currentRoot; }, update(visitor) { const newRoot = visitors.visit(currentRoot, visitor); nodes.assertIsNode(newRoot, "rootNode"); currentRoot = newRoot; } }; } function createFromJson(json) { return createFromRoot(JSON.parse(json)); } function validateCodamaVersion(rootVersion) { const codamaVersion = "1.5.0"; if (rootVersion === codamaVersion) return; const [rootMajor, rootMinor] = rootVersion.split(".").map(Number); const [CodamaMajor, CodamaMinor] = codamaVersion.split(".").map(Number); const isZeroMajor = rootMajor === 0 && CodamaMajor === 0; if (isZeroMajor && rootMinor === CodamaMinor) return; if (rootMajor === CodamaMajor) return; throw new errors.CodamaError(errors.CODAMA_ERROR__VERSION_MISMATCH, { codamaVersion, rootVersion }); } exports.createFromJson = createFromJson; exports.createFromRoot = createFromRoot; exports.validateCodamaVersion = validateCodamaVersion; Object.keys(errors).forEach(function (k) { if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: function () { return errors[k]; } }); }); Object.keys(nodes).forEach(function (k) { if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: function () { return nodes[k]; } }); }); Object.keys(validators).forEach(function (k) { if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: function () { return validators[k]; } }); }); Object.keys(visitors).forEach(function (k) { if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: function () { return visitors[k]; } }); }); //# sourceMappingURL=index.node.cjs.map //# sourceMappingURL=index.node.cjs.map