Traqula docs
    Preparing search index...
    mapOperationPreOrder: <Safe extends Safeness = "safe", OutType = unknown>(
        startObject: object,
        nodeCallBacks: {
            add?: (
                copy: SafeWrap<Safe, Algebra.Add>,
                orig: Algebra.Add,
            ) => PreOrderMappingReturn;
            alt?: (
                copy: SafeWrap<Safe, Algebra.Alt>,
                orig: Algebra.Alt,
            ) => PreOrderMappingReturn;
            ask?: (
                copy: SafeWrap<Safe, Algebra.Ask>,
                orig: Algebra.Ask,
            ) => PreOrderMappingReturn;
            bgp?: (
                copy: SafeWrap<Safe, Algebra.Bgp>,
                orig: Algebra.Bgp,
            ) => PreOrderMappingReturn;
            clear?: (
                copy: SafeWrap<Safe, Algebra.Clear>,
                orig: Algebra.Clear,
            ) => PreOrderMappingReturn;
            compositeupdate?: (
                copy: SafeWrap<Safe, Algebra.CompositeUpdate>,
                orig: Algebra.CompositeUpdate,
            ) => PreOrderMappingReturn;
            construct?: (
                copy: SafeWrap<Safe, Algebra.Construct>,
                orig: Algebra.Construct,
            ) => PreOrderMappingReturn;
            copy?: (
                copy: SafeWrap<Safe, Algebra.Copy>,
                orig: Algebra.Copy,
            ) => PreOrderMappingReturn;
            create?: (
                copy: SafeWrap<Safe, Algebra.Create>,
                orig: Algebra.Create,
            ) => PreOrderMappingReturn;
            deleteinsert?: (
                copy: SafeWrap<Safe, Algebra.DeleteInsert>,
                orig: Algebra.DeleteInsert,
            ) => PreOrderMappingReturn;
            describe?: (
                copy: SafeWrap<Safe, Algebra.Describe>,
                orig: Algebra.Describe,
            ) => PreOrderMappingReturn;
            distinct?: (
                copy: SafeWrap<Safe, Algebra.Distinct>,
                orig: Algebra.Distinct,
            ) => PreOrderMappingReturn;
            drop?: (
                copy: SafeWrap<Safe, Algebra.Drop>,
                orig: Algebra.Drop,
            ) => PreOrderMappingReturn;
            expression?: (
                copy: SafeWrap<Safe, Algebra.Expression>,
                orig: Algebra.Expression,
            ) => PreOrderMappingReturn;
            extend?: (
                copy: SafeWrap<Safe, Algebra.Extend>,
                orig: Algebra.Extend,
            ) => PreOrderMappingReturn;
            filter?: (
                copy: SafeWrap<Safe, Algebra.Filter>,
                orig: Algebra.Filter,
            ) => PreOrderMappingReturn;
            from?: (
                copy: SafeWrap<Safe, Algebra.From>,
                orig: Algebra.From,
            ) => PreOrderMappingReturn;
            graph?: (
                copy: SafeWrap<Safe, Algebra.Graph>,
                orig: Algebra.Graph,
            ) => PreOrderMappingReturn;
            group?: (
                copy: SafeWrap<Safe, Algebra.Group>,
                orig: Algebra.Group,
            ) => PreOrderMappingReturn;
            inv?: (
                copy: SafeWrap<Safe, Algebra.Inv>,
                orig: Algebra.Inv,
            ) => PreOrderMappingReturn;
            join?: (
                copy: SafeWrap<Safe, Algebra.Join>,
                orig: Algebra.Join,
            ) => PreOrderMappingReturn;
            leftjoin?: (
                copy: SafeWrap<Safe, Algebra.LeftJoin>,
                orig: Algebra.LeftJoin,
            ) => PreOrderMappingReturn;
            link?: (
                copy: SafeWrap<Safe, Algebra.Link>,
                orig: Algebra.Link,
            ) => PreOrderMappingReturn;
            load?: (
                copy: SafeWrap<Safe, Algebra.Load>,
                orig: Algebra.Load,
            ) => PreOrderMappingReturn;
            minus?: (
                copy: SafeWrap<Safe, Algebra.Minus>,
                orig: Algebra.Minus,
            ) => PreOrderMappingReturn;
            move?: (
                copy: SafeWrap<Safe, Algebra.Move>,
                orig: Algebra.Move,
            ) => PreOrderMappingReturn;
            nop?: (
                copy: SafeWrap<Safe, Algebra.Nop>,
                orig: Algebra.Nop,
            ) => PreOrderMappingReturn;
            nps?: (
                copy: SafeWrap<Safe, Algebra.Nps>,
                orig: Algebra.Nps,
            ) => PreOrderMappingReturn;
            OneOrMorePath?: (
                copy: SafeWrap<Safe, Algebra.OneOrMorePath>,
                orig: Algebra.OneOrMorePath,
            ) => PreOrderMappingReturn;
            orderby?: (
                copy: SafeWrap<Safe, Algebra.OrderBy>,
                orig: Algebra.OrderBy,
            ) => PreOrderMappingReturn;
            path?: (
                copy: SafeWrap<Safe, Algebra.Path>,
                orig: Algebra.Path,
            ) => PreOrderMappingReturn;
            pattern?: (
                copy: SafeWrap<Safe, Algebra.Pattern>,
                orig: Algebra.Pattern,
            ) => PreOrderMappingReturn;
            project?: (
                copy: SafeWrap<Safe, Algebra.Project>,
                orig: Algebra.Project,
            ) => PreOrderMappingReturn;
            reduced?: (
                copy: SafeWrap<Safe, Algebra.Reduced>,
                orig: Algebra.Reduced,
            ) => PreOrderMappingReturn;
            seq?: (
                copy: SafeWrap<Safe, Algebra.Seq>,
                orig: Algebra.Seq,
            ) => PreOrderMappingReturn;
            service?: (
                copy: SafeWrap<Safe, Algebra.Service>,
                orig: Algebra.Service,
            ) => PreOrderMappingReturn;
            slice?: (
                copy: SafeWrap<Safe, Algebra.Slice>,
                orig: Algebra.Slice,
            ) => PreOrderMappingReturn;
            union?: (
                copy: SafeWrap<Safe, Algebra.Union>,
                orig: Algebra.Union,
            ) => PreOrderMappingReturn;
            values?: (
                copy: SafeWrap<Safe, Algebra.Values>,
                orig: Algebra.Values,
            ) => PreOrderMappingReturn;
            ZeroOrMorePath?: (
                copy: SafeWrap<Safe, Algebra.ZeroOrMorePath>,
                orig: Algebra.ZeroOrMorePath,
            ) => PreOrderMappingReturn;
            ZeroOrOnePath?: (
                copy: SafeWrap<Safe, Algebra.ZeroOrOnePath>,
                orig: Algebra.ZeroOrOnePath,
            ) => PreOrderMappingReturn;
        },
    ) => Safe extends "unsafe" ? OutType : unknown = ...

    Transform a single operation pre-order, the dual of mapOperation: an operation is mapped before its descendants, and we iterate into the result of that mapping. This is what you want for an operation that has to travel deeper into the tree, like a filter pushdown: the callback only describes how the filter swaps places with the operation right below it, and the filters it sank into are mapped in turn. e.g. sinking a filter into every branch of the unions below it:

    mapOperationPreOrder({
    type: Algebra.Types.FILTER,
    expression,
    input: {
    type: Algebra.Types.UNION,
    input: [{ type: Algebra.Types.BGP }, { type: Algebra.Types.BGP }],
    },
    }, {
    [Algebra.Types.FILTER]: (filter) => {
    if (filter.input.type === Algebra.Types.UNION) {
    return { newValue: algebraFactory.createUnion(
    filter.input.input.map(branch => algebraFactory.createFilter(branch, filter.expression)),
    false,
    ) };
    }
    // Any other operation is a barrier for this filter
    return { newValue: filter };
    },
    });
    const returns = {
    type: Algebra.Types.UNION,
    input: [
    { type: Algebra.Types.FILTER, expression, input: { type: Algebra.Types.BGP }},
    { type: Algebra.Types.FILTER, expression, input: { type: Algebra.Types.BGP }},
    ],
    };

    Contrary to mapOperation, a callback returns the value taking the place of the operation together with the TransformContext of that value, so there is no separate preVisitor. The descendants of the operation it is called on are not mapped yet either - they are the operations of the input tree itself - so changing the properties of a descendant writes straight into that tree. Both are documented in detail on TransformerTyped.transformNodePreOrder.

    Type Declaration

      • <Safe extends Safeness = "safe", OutType = unknown>(
            startObject: object,
            nodeCallBacks: {
                add?: (
                    copy: SafeWrap<Safe, Algebra.Add>,
                    orig: Algebra.Add,
                ) => PreOrderMappingReturn;
                alt?: (
                    copy: SafeWrap<Safe, Algebra.Alt>,
                    orig: Algebra.Alt,
                ) => PreOrderMappingReturn;
                ask?: (
                    copy: SafeWrap<Safe, Algebra.Ask>,
                    orig: Algebra.Ask,
                ) => PreOrderMappingReturn;
                bgp?: (
                    copy: SafeWrap<Safe, Algebra.Bgp>,
                    orig: Algebra.Bgp,
                ) => PreOrderMappingReturn;
                clear?: (
                    copy: SafeWrap<Safe, Algebra.Clear>,
                    orig: Algebra.Clear,
                ) => PreOrderMappingReturn;
                compositeupdate?: (
                    copy: SafeWrap<Safe, Algebra.CompositeUpdate>,
                    orig: Algebra.CompositeUpdate,
                ) => PreOrderMappingReturn;
                construct?: (
                    copy: SafeWrap<Safe, Algebra.Construct>,
                    orig: Algebra.Construct,
                ) => PreOrderMappingReturn;
                copy?: (
                    copy: SafeWrap<Safe, Algebra.Copy>,
                    orig: Algebra.Copy,
                ) => PreOrderMappingReturn;
                create?: (
                    copy: SafeWrap<Safe, Algebra.Create>,
                    orig: Algebra.Create,
                ) => PreOrderMappingReturn;
                deleteinsert?: (
                    copy: SafeWrap<Safe, Algebra.DeleteInsert>,
                    orig: Algebra.DeleteInsert,
                ) => PreOrderMappingReturn;
                describe?: (
                    copy: SafeWrap<Safe, Algebra.Describe>,
                    orig: Algebra.Describe,
                ) => PreOrderMappingReturn;
                distinct?: (
                    copy: SafeWrap<Safe, Algebra.Distinct>,
                    orig: Algebra.Distinct,
                ) => PreOrderMappingReturn;
                drop?: (
                    copy: SafeWrap<Safe, Algebra.Drop>,
                    orig: Algebra.Drop,
                ) => PreOrderMappingReturn;
                expression?: (
                    copy: SafeWrap<Safe, Algebra.Expression>,
                    orig: Algebra.Expression,
                ) => PreOrderMappingReturn;
                extend?: (
                    copy: SafeWrap<Safe, Algebra.Extend>,
                    orig: Algebra.Extend,
                ) => PreOrderMappingReturn;
                filter?: (
                    copy: SafeWrap<Safe, Algebra.Filter>,
                    orig: Algebra.Filter,
                ) => PreOrderMappingReturn;
                from?: (
                    copy: SafeWrap<Safe, Algebra.From>,
                    orig: Algebra.From,
                ) => PreOrderMappingReturn;
                graph?: (
                    copy: SafeWrap<Safe, Algebra.Graph>,
                    orig: Algebra.Graph,
                ) => PreOrderMappingReturn;
                group?: (
                    copy: SafeWrap<Safe, Algebra.Group>,
                    orig: Algebra.Group,
                ) => PreOrderMappingReturn;
                inv?: (
                    copy: SafeWrap<Safe, Algebra.Inv>,
                    orig: Algebra.Inv,
                ) => PreOrderMappingReturn;
                join?: (
                    copy: SafeWrap<Safe, Algebra.Join>,
                    orig: Algebra.Join,
                ) => PreOrderMappingReturn;
                leftjoin?: (
                    copy: SafeWrap<Safe, Algebra.LeftJoin>,
                    orig: Algebra.LeftJoin,
                ) => PreOrderMappingReturn;
                link?: (
                    copy: SafeWrap<Safe, Algebra.Link>,
                    orig: Algebra.Link,
                ) => PreOrderMappingReturn;
                load?: (
                    copy: SafeWrap<Safe, Algebra.Load>,
                    orig: Algebra.Load,
                ) => PreOrderMappingReturn;
                minus?: (
                    copy: SafeWrap<Safe, Algebra.Minus>,
                    orig: Algebra.Minus,
                ) => PreOrderMappingReturn;
                move?: (
                    copy: SafeWrap<Safe, Algebra.Move>,
                    orig: Algebra.Move,
                ) => PreOrderMappingReturn;
                nop?: (
                    copy: SafeWrap<Safe, Algebra.Nop>,
                    orig: Algebra.Nop,
                ) => PreOrderMappingReturn;
                nps?: (
                    copy: SafeWrap<Safe, Algebra.Nps>,
                    orig: Algebra.Nps,
                ) => PreOrderMappingReturn;
                OneOrMorePath?: (
                    copy: SafeWrap<Safe, Algebra.OneOrMorePath>,
                    orig: Algebra.OneOrMorePath,
                ) => PreOrderMappingReturn;
                orderby?: (
                    copy: SafeWrap<Safe, Algebra.OrderBy>,
                    orig: Algebra.OrderBy,
                ) => PreOrderMappingReturn;
                path?: (
                    copy: SafeWrap<Safe, Algebra.Path>,
                    orig: Algebra.Path,
                ) => PreOrderMappingReturn;
                pattern?: (
                    copy: SafeWrap<Safe, Algebra.Pattern>,
                    orig: Algebra.Pattern,
                ) => PreOrderMappingReturn;
                project?: (
                    copy: SafeWrap<Safe, Algebra.Project>,
                    orig: Algebra.Project,
                ) => PreOrderMappingReturn;
                reduced?: (
                    copy: SafeWrap<Safe, Algebra.Reduced>,
                    orig: Algebra.Reduced,
                ) => PreOrderMappingReturn;
                seq?: (
                    copy: SafeWrap<Safe, Algebra.Seq>,
                    orig: Algebra.Seq,
                ) => PreOrderMappingReturn;
                service?: (
                    copy: SafeWrap<Safe, Algebra.Service>,
                    orig: Algebra.Service,
                ) => PreOrderMappingReturn;
                slice?: (
                    copy: SafeWrap<Safe, Algebra.Slice>,
                    orig: Algebra.Slice,
                ) => PreOrderMappingReturn;
                union?: (
                    copy: SafeWrap<Safe, Algebra.Union>,
                    orig: Algebra.Union,
                ) => PreOrderMappingReturn;
                values?: (
                    copy: SafeWrap<Safe, Algebra.Values>,
                    orig: Algebra.Values,
                ) => PreOrderMappingReturn;
                ZeroOrMorePath?: (
                    copy: SafeWrap<Safe, Algebra.ZeroOrMorePath>,
                    orig: Algebra.ZeroOrMorePath,
                ) => PreOrderMappingReturn;
                ZeroOrOnePath?: (
                    copy: SafeWrap<Safe, Algebra.ZeroOrOnePath>,
                    orig: Algebra.ZeroOrOnePath,
                ) => PreOrderMappingReturn;
            },
        ): Safe extends "unsafe" ? OutType : unknown
      • Transform a single node (Typed) pre-order, the dual of this.transformObjectPreOrder with the same type specification as this.transformNode: a node is transformed before its descendants, and we iterate into the result of that transformation. This is what you want when a node has to travel deeper into the tree: the callback only describes how a node swaps places with the node right below it, the copy it sank into is dispatched in turn, and swaps places with the node below that one.

        Contrary to this.transformNode, a callback does not just return the value taking the place of the node, it returns a PreOrderMappingReturn: that value, plus the TransformContext of that value. Since the callback decides what we iterate into, it is the one telling us how to iterate into it, so there is no separate preVisitor - it only completes the per type defaults of this transformer, which are looked up using the type of the node it was called on. A node without a callback is left alone: it keeps those defaults, but is never re-transformed.

        Also contrary to this.transformNode, the descendants of the node given to the callback are not transformed yet: they are the nodes of the input tree itself.

        Type Parameters

        • Safe extends Safeness = "safe"
        • OutType = unknown

        Parameters

        • startObject: object

          the object from which we will start the transformation, potentially visiting and transforming its descendants along the way.

        • nodeCallBacks: {
              add?: (
                  copy: SafeWrap<Safe, Algebra.Add>,
                  orig: Algebra.Add,
              ) => PreOrderMappingReturn;
              alt?: (
                  copy: SafeWrap<Safe, Algebra.Alt>,
                  orig: Algebra.Alt,
              ) => PreOrderMappingReturn;
              ask?: (
                  copy: SafeWrap<Safe, Algebra.Ask>,
                  orig: Algebra.Ask,
              ) => PreOrderMappingReturn;
              bgp?: (
                  copy: SafeWrap<Safe, Algebra.Bgp>,
                  orig: Algebra.Bgp,
              ) => PreOrderMappingReturn;
              clear?: (
                  copy: SafeWrap<Safe, Algebra.Clear>,
                  orig: Algebra.Clear,
              ) => PreOrderMappingReturn;
              compositeupdate?: (
                  copy: SafeWrap<Safe, Algebra.CompositeUpdate>,
                  orig: Algebra.CompositeUpdate,
              ) => PreOrderMappingReturn;
              construct?: (
                  copy: SafeWrap<Safe, Algebra.Construct>,
                  orig: Algebra.Construct,
              ) => PreOrderMappingReturn;
              copy?: (
                  copy: SafeWrap<Safe, Algebra.Copy>,
                  orig: Algebra.Copy,
              ) => PreOrderMappingReturn;
              create?: (
                  copy: SafeWrap<Safe, Algebra.Create>,
                  orig: Algebra.Create,
              ) => PreOrderMappingReturn;
              deleteinsert?: (
                  copy: SafeWrap<Safe, Algebra.DeleteInsert>,
                  orig: Algebra.DeleteInsert,
              ) => PreOrderMappingReturn;
              describe?: (
                  copy: SafeWrap<Safe, Algebra.Describe>,
                  orig: Algebra.Describe,
              ) => PreOrderMappingReturn;
              distinct?: (
                  copy: SafeWrap<Safe, Algebra.Distinct>,
                  orig: Algebra.Distinct,
              ) => PreOrderMappingReturn;
              drop?: (
                  copy: SafeWrap<Safe, Algebra.Drop>,
                  orig: Algebra.Drop,
              ) => PreOrderMappingReturn;
              expression?: (
                  copy: SafeWrap<Safe, Algebra.Expression>,
                  orig: Algebra.Expression,
              ) => PreOrderMappingReturn;
              extend?: (
                  copy: SafeWrap<Safe, Algebra.Extend>,
                  orig: Algebra.Extend,
              ) => PreOrderMappingReturn;
              filter?: (
                  copy: SafeWrap<Safe, Algebra.Filter>,
                  orig: Algebra.Filter,
              ) => PreOrderMappingReturn;
              from?: (
                  copy: SafeWrap<Safe, Algebra.From>,
                  orig: Algebra.From,
              ) => PreOrderMappingReturn;
              graph?: (
                  copy: SafeWrap<Safe, Algebra.Graph>,
                  orig: Algebra.Graph,
              ) => PreOrderMappingReturn;
              group?: (
                  copy: SafeWrap<Safe, Algebra.Group>,
                  orig: Algebra.Group,
              ) => PreOrderMappingReturn;
              inv?: (
                  copy: SafeWrap<Safe, Algebra.Inv>,
                  orig: Algebra.Inv,
              ) => PreOrderMappingReturn;
              join?: (
                  copy: SafeWrap<Safe, Algebra.Join>,
                  orig: Algebra.Join,
              ) => PreOrderMappingReturn;
              leftjoin?: (
                  copy: SafeWrap<Safe, Algebra.LeftJoin>,
                  orig: Algebra.LeftJoin,
              ) => PreOrderMappingReturn;
              link?: (
                  copy: SafeWrap<Safe, Algebra.Link>,
                  orig: Algebra.Link,
              ) => PreOrderMappingReturn;
              load?: (
                  copy: SafeWrap<Safe, Algebra.Load>,
                  orig: Algebra.Load,
              ) => PreOrderMappingReturn;
              minus?: (
                  copy: SafeWrap<Safe, Algebra.Minus>,
                  orig: Algebra.Minus,
              ) => PreOrderMappingReturn;
              move?: (
                  copy: SafeWrap<Safe, Algebra.Move>,
                  orig: Algebra.Move,
              ) => PreOrderMappingReturn;
              nop?: (
                  copy: SafeWrap<Safe, Algebra.Nop>,
                  orig: Algebra.Nop,
              ) => PreOrderMappingReturn;
              nps?: (
                  copy: SafeWrap<Safe, Algebra.Nps>,
                  orig: Algebra.Nps,
              ) => PreOrderMappingReturn;
              OneOrMorePath?: (
                  copy: SafeWrap<Safe, Algebra.OneOrMorePath>,
                  orig: Algebra.OneOrMorePath,
              ) => PreOrderMappingReturn;
              orderby?: (
                  copy: SafeWrap<Safe, Algebra.OrderBy>,
                  orig: Algebra.OrderBy,
              ) => PreOrderMappingReturn;
              path?: (
                  copy: SafeWrap<Safe, Algebra.Path>,
                  orig: Algebra.Path,
              ) => PreOrderMappingReturn;
              pattern?: (
                  copy: SafeWrap<Safe, Algebra.Pattern>,
                  orig: Algebra.Pattern,
              ) => PreOrderMappingReturn;
              project?: (
                  copy: SafeWrap<Safe, Algebra.Project>,
                  orig: Algebra.Project,
              ) => PreOrderMappingReturn;
              reduced?: (
                  copy: SafeWrap<Safe, Algebra.Reduced>,
                  orig: Algebra.Reduced,
              ) => PreOrderMappingReturn;
              seq?: (
                  copy: SafeWrap<Safe, Algebra.Seq>,
                  orig: Algebra.Seq,
              ) => PreOrderMappingReturn;
              service?: (
                  copy: SafeWrap<Safe, Algebra.Service>,
                  orig: Algebra.Service,
              ) => PreOrderMappingReturn;
              slice?: (
                  copy: SafeWrap<Safe, Algebra.Slice>,
                  orig: Algebra.Slice,
              ) => PreOrderMappingReturn;
              union?: (
                  copy: SafeWrap<Safe, Algebra.Union>,
                  orig: Algebra.Union,
              ) => PreOrderMappingReturn;
              values?: (
                  copy: SafeWrap<Safe, Algebra.Values>,
                  orig: Algebra.Values,
              ) => PreOrderMappingReturn;
              ZeroOrMorePath?: (
                  copy: SafeWrap<Safe, Algebra.ZeroOrMorePath>,
                  orig: Algebra.ZeroOrMorePath,
              ) => PreOrderMappingReturn;
              ZeroOrOnePath?: (
                  copy: SafeWrap<Safe, Algebra.ZeroOrOnePath>,
                  orig: Algebra.ZeroOrOnePath,
              ) => PreOrderMappingReturn;
          }

          a dictionary mapping the various node types to a mapper. The mapper allows you to manipulate the copy of the current node, and expects you to return the value that should take the current nodes place, together with the context of that value. That context steers how we iterate into the returned value.

        Returns Safe extends "unsafe" ? OutType : unknown

        the result of transforming the startObject and the descendants of its rewrites.

    the object from which we will start the transformation, potentially visiting and transforming its descendants along the way.

    a dictionary mapping the various operation types to a mapper. The mapper allows you to manipulate the copy of the current operation, and expects you to return the value that should take the current operations place, together with the context of that value. That context steers how we iterate into the returned value.

    the result of transforming the startObject and the descendants of its rewrites.