astQuery.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var ts = require("typescript");
  4. var function_1 = require("./function");
  5. var utils_1 = require("./utils");
  6. function callExpression(dec) {
  7. return function_1.Maybe.lift(dec.expression).fmap(function (expr) { return (expr && ts.isCallExpression(expr) ? expr : undefined); });
  8. }
  9. exports.callExpression = callExpression;
  10. function hasProperties(expr) {
  11. return !!(expr && expr.properties);
  12. }
  13. exports.hasProperties = hasProperties;
  14. function objectLiteralExpression(expr) {
  15. return function_1.Maybe.lift(expr.arguments[0]).fmap(function (arg0) { return (arg0 && ts.isObjectLiteralExpression(arg0) ? arg0 : undefined); });
  16. }
  17. exports.objectLiteralExpression = objectLiteralExpression;
  18. function withIdentifier(identifier) {
  19. return function_1.ifTrue(function (expr) { return ts.isIdentifier(expr.expression) && expr.expression.text === identifier; });
  20. }
  21. exports.withIdentifier = withIdentifier;
  22. function isProperty(propName, p) {
  23. return ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === propName;
  24. }
  25. exports.isProperty = isProperty;
  26. function getInitializer(p) {
  27. return function_1.Maybe.lift(p && ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) ? p.initializer : undefined);
  28. }
  29. exports.getInitializer = getInitializer;
  30. function getStringInitializerFromProperty(propertyName, ps) {
  31. var property = ps.find(function (p) { return isProperty(propertyName, p); });
  32. return (getInitializer(property)
  33. .fmap(function (expr) { return (expr && utils_1.isStringLiteralLike(expr) ? expr : undefined); }));
  34. }
  35. exports.getStringInitializerFromProperty = getStringInitializerFromProperty;
  36. function decoratorArgument(dec) {
  37. return function_1.Maybe.lift(dec)
  38. .bind(callExpression)
  39. .bind(objectLiteralExpression);
  40. }
  41. exports.decoratorArgument = decoratorArgument;