Sha256: 0f35884514ed6d6ad305efcc6e24586988817a77feb9473ec47daec51e7a8a2a

Contents?: true

Size: 1.59 KB

Versions: 56

Compression:

Stored size: 1.59 KB

Contents

module.exports = function stringifyValidator(validator, nodePrefix) {
  if (validator === undefined) {
    return "any";
  }

  if (validator.each) {
    return `Array<${stringifyValidator(validator.each, nodePrefix)}>`;
  }

  if (validator.chainOf) {
    return stringifyValidator(validator.chainOf[1], nodePrefix);
  }

  if (validator.oneOf) {
    return validator.oneOf.map(JSON.stringify).join(" | ");
  }

  if (validator.oneOfNodeTypes) {
    return validator.oneOfNodeTypes.map(_ => nodePrefix + _).join(" | ");
  }

  if (validator.oneOfNodeOrValueTypes) {
    return validator.oneOfNodeOrValueTypes
      .map(_ => {
        return isValueType(_) ? _ : nodePrefix + _;
      })
      .join(" | ");
  }

  if (validator.type) {
    return validator.type;
  }

  if (validator.shapeOf) {
    return (
      "{ " +
      Object.keys(validator.shapeOf)
        .map(shapeKey => {
          const propertyDefinition = validator.shapeOf[shapeKey];
          if (propertyDefinition.validate) {
            const isOptional =
              propertyDefinition.optional || propertyDefinition.default != null;
            return (
              shapeKey +
              (isOptional ? "?: " : ": ") +
              stringifyValidator(propertyDefinition.validate)
            );
          }
          return null;
        })
        .filter(Boolean)
        .join(", ") +
      " }"
    );
  }

  return ["any"];
};

/**
 * Heuristic to decide whether or not the given type is a value type (eg. "null")
 * or a Node type (eg. "Expression").
 */
function isValueType(type) {
  return type.charAt(0).toLowerCase() === type.charAt(0);
}

Version data entries

56 entries across 56 versions & 9 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.18.0 test/dummy/node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.18.2 test/dummy/node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.7 node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.6 node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.5 node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.4 node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.16.1 test/dummy/node_modules/@babel/preset-modules/node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.15.2 test/dummy/node_modules/@babel/preset-modules/node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.3 node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.2 node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.18.4 test/dummy/node_modules/@babel/preset-modules/node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.18.1 test/dummy/node_modules/@babel/preset-modules/node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/@babel/preset-modules/node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.14.0 test/dummy/node_modules/@babel/preset-modules/node_modules/@babel/types/scripts/utils/stringifyValidator.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/@babel/preset-modules/node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.1 node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-4.3.5 node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-5.0.0 node_modules/@babel/types/scripts/utils/stringifyValidator.js
trusty-cms-4.3.4 node_modules/@babel/types/scripts/utils/stringifyValidator.js