flowGraphPathConverter.js 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * @experimental
  3. * A path converter that converts a path on the flow graph context variables to an object accessor.
  4. */
  5. export class FlowGraphPathConverter {
  6. constructor(_context, _separator = "/") {
  7. this._context = _context;
  8. this._separator = _separator;
  9. }
  10. convert(path) {
  11. const parts = path.split(this._separator);
  12. if (parts.length < 2) {
  13. throw new Error(`Path ${path} is invalid`);
  14. }
  15. let currentObject = this._context.getVariable(parts[0]);
  16. const property = parts[parts.length - 1];
  17. for (let i = 1; i < parts.length - 1; i++) {
  18. currentObject = currentObject[parts[i]];
  19. }
  20. return {
  21. object: currentObject,
  22. info: {
  23. type: "object",
  24. get: () => currentObject[property],
  25. set: (value) => (currentObject[property] = value),
  26. getObject: () => currentObject,
  27. },
  28. };
  29. }
  30. }
  31. //# sourceMappingURL=flowGraphPathConverter.js.map