UNPKG

@patchworkdev/common

Version:

Patchwork Development Kit

57 lines (56 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseJson = parseJson; const types_1 = require("../types"); /** * Parse raw JSON object to a ContractConfig which can be fed to a ContractSchemaImpl */ function parseJson(jsonData) { let contractConfig = { scopeName: jsonData.scopeName, name: jsonData.name, symbol: jsonData.symbol, baseURI: jsonData.baseURI, schemaURI: jsonData.schemaURI, imageURI: jsonData.imageURI, fields: parseFieldEntries(jsonData), features: parseFeatures(jsonData), fragments: parseFragments(jsonData), }; return contractConfig; } function parseFeatures(jsonData) { let features = []; if (jsonData.features && Array.isArray(jsonData.features)) { features = jsonData.features.map((featureName) => { // Convert the feature name to uppercase for case-insensitive comparison const normalizedFeatureName = featureName.toUpperCase(); // Find the matching enum key, considering case-insensitivity const matchingKey = Object.keys(types_1.Feature).find((key) => types_1.Feature[key].toUpperCase() === normalizedFeatureName); if (!matchingKey) { throw new Error(`Feature not found: ${featureName}`); } return types_1.Feature[matchingKey]; }); } return features; } function parseFieldEntries(jsonData) { return jsonData.fields.map((field, index) => { const fieldArrayLength = field.arrayLength === undefined ? 1 : field.arrayLength; const entry = { id: field.id, permissionId: field.permissionId, type: field.type, arrayLength: fieldArrayLength, visibility: "public", key: field.key, description: field.description, functionConfig: field.functionConfig ? field.functionConfig.toUpperCase() : undefined, }; return entry; }); } function parseFragments(jsonData) { return jsonData.fragments ? jsonData.fragments : []; }