codama
Version:
A Solana framework for building standardised programs
74 lines (71 loc) • 2.51 kB
JavaScript
;
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