Traqula docs
    Preparing search index...
    mapOperationSubPreOrder: <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;
        },
        nodeSpecificCallBacks: {
            add?: {};
            alt?: {};
            ask?: {};
            bgp?: {};
            clear?: {};
            compositeupdate?: {};
            construct?: {};
            copy?: {};
            create?: {};
            deleteinsert?: {};
            describe?: {};
            distinct?: {};
            drop?: {};
            expression?: {
                aggregate?: (
                    op: SafeWrap<
                        Safe,
                        | Algebra.AggregateExpression
                        | Algebra.GroupConcatExpression
                        | Algebra.BoundAggregate,
                    >,
                ) => PreOrderMappingReturn;
                existence?: (
                    op: SafeWrap<Safe, Algebra.ExistenceExpression>,
                ) => PreOrderMappingReturn;
                named?: (
                    op: SafeWrap<Safe, Algebra.NamedExpression>,
                ) => PreOrderMappingReturn;
                operator?: (
                    op: SafeWrap<Safe, Algebra.OperatorExpression>,
                ) => PreOrderMappingReturn;
                term?: (
                    op: SafeWrap<Safe, Algebra.TermExpression>,
                ) => PreOrderMappingReturn;
                wildcard?: (
                    op: SafeWrap<Safe, Algebra.WildcardExpression>,
                ) => PreOrderMappingReturn;
            };
            extend?: {};
            filter?: {};
            from?: {};
            graph?: {};
            group?: {};
            inv?: {};
            join?: {};
            leftjoin?: {};
            link?: {};
            load?: {};
            minus?: {};
            move?: {};
            nop?: {};
            nps?: {};
            OneOrMorePath?: {};
            orderby?: {};
            path?: {};
            pattern?: {};
            project?: {};
            reduced?: {};
            seq?: {};
            service?: {};
            slice?: {};
            union?: {};
            values?: {};
            ZeroOrMorePath?: {};
            ZeroOrOnePath?: {};
        },
    ) => Safe extends "unsafe" ? OutType : unknown = ...

    Transform a single operation pre-order, similar to mapOperationPreOrder, but also allowing you to target subTypes - it is to mapOperationSub what mapOperationPreOrder is to mapOperation. e.g. replacing every aggregate expression, and iterating into the operator expression it becomes:

    mapOperationSubPreOrder(
    algebraFactory.createAggregateExpression('count', inner, false),
    {},
    { [Algebra.Types.EXPRESSION]: { [Algebra.ExpressionTypes.AGGREGATE]: copy =>
    ({ newValue: algebraFactory.createOperatorExpression('!', [ copy.expression ]) }),
    }},
    );

    Just like mapOperationSub, a callback registered for the subType of an operation takes precedence over the one registered for its type. The same caveats as on mapOperationPreOrder apply: the callback returns the value taking the place of the operation together with the TransformContext of that value, and the descendants it is handed are those of the input tree. They are documented in detail on TransformerSubTyped.transformNodeSpecificPreOrder.

    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;
            },
            nodeSpecificCallBacks: {
                add?: {};
                alt?: {};
                ask?: {};
                bgp?: {};
                clear?: {};
                compositeupdate?: {};
                construct?: {};
                copy?: {};
                create?: {};
                deleteinsert?: {};
                describe?: {};
                distinct?: {};
                drop?: {};
                expression?: {
                    aggregate?: (
                        op: SafeWrap<
                            Safe,
                            | Algebra.AggregateExpression
                            | Algebra.GroupConcatExpression
                            | Algebra.BoundAggregate,
                        >,
                    ) => PreOrderMappingReturn;
                    existence?: (
                        op: SafeWrap<Safe, Algebra.ExistenceExpression>,
                    ) => PreOrderMappingReturn;
                    named?: (
                        op: SafeWrap<Safe, Algebra.NamedExpression>,
                    ) => PreOrderMappingReturn;
                    operator?: (
                        op: SafeWrap<Safe, Algebra.OperatorExpression>,
                    ) => PreOrderMappingReturn;
                    term?: (
                        op: SafeWrap<Safe, Algebra.TermExpression>,
                    ) => PreOrderMappingReturn;
                    wildcard?: (
                        op: SafeWrap<Safe, Algebra.WildcardExpression>,
                    ) => PreOrderMappingReturn;
                };
                extend?: {};
                filter?: {};
                from?: {};
                graph?: {};
                group?: {};
                inv?: {};
                join?: {};
                leftjoin?: {};
                link?: {};
                load?: {};
                minus?: {};
                move?: {};
                nop?: {};
                nps?: {};
                OneOrMorePath?: {};
                orderby?: {};
                path?: {};
                pattern?: {};
                project?: {};
                reduced?: {};
                seq?: {};
                service?: {};
                slice?: {};
                union?: {};
                values?: {};
                ZeroOrMorePath?: {};
                ZeroOrOnePath?: {};
            },
        ): Safe extends "unsafe" ? OutType : unknown
      • Transform a single node pre-order, the dual of this.transformObjectPreOrder with the same type specification as this.transformNodeSpecific: Similar to TransformerTyped.transformNodePreOrder, but also allowing you to target the subTypes: the node is transformed before its descendants, and we iterate into the result of that transformation, making it the tool of choice for nodes that have to travel deeper into the tree, like a filter pushdown.

        Contrary to this.transformNodeSpecific, 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, so there is no separate preVisitor. Also contrary to this.transformNodeSpecific, 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.

        • nodeSpecificCallBacks: {
              add?: {};
              alt?: {};
              ask?: {};
              bgp?: {};
              clear?: {};
              compositeupdate?: {};
              construct?: {};
              copy?: {};
              create?: {};
              deleteinsert?: {};
              describe?: {};
              distinct?: {};
              drop?: {};
              expression?: {
                  aggregate?: (
                      op: SafeWrap<
                          Safe,
                          | Algebra.AggregateExpression
                          | Algebra.GroupConcatExpression
                          | Algebra.BoundAggregate,
                      >,
                  ) => PreOrderMappingReturn;
                  existence?: (
                      op: SafeWrap<Safe, Algebra.ExistenceExpression>,
                  ) => PreOrderMappingReturn;
                  named?: (
                      op: SafeWrap<Safe, Algebra.NamedExpression>,
                  ) => PreOrderMappingReturn;
                  operator?: (
                      op: SafeWrap<Safe, Algebra.OperatorExpression>,
                  ) => PreOrderMappingReturn;
                  term?: (
                      op: SafeWrap<Safe, Algebra.TermExpression>,
                  ) => PreOrderMappingReturn;
                  wildcard?: (
                      op: SafeWrap<Safe, Algebra.WildcardExpression>,
                  ) => PreOrderMappingReturn;
              };
              extend?: {};
              filter?: {};
              from?: {};
              graph?: {};
              group?: {};
              inv?: {};
              join?: {};
              leftjoin?: {};
              link?: {};
              load?: {};
              minus?: {};
              move?: {};
              nop?: {};
              nps?: {};
              OneOrMorePath?: {};
              orderby?: {};
              path?: {};
              pattern?: {};
              project?: {};
              reduced?: {};
              seq?: {};
              service?: {};
              slice?: {};
              union?: {};
              values?: {};
              ZeroOrMorePath?: {};
              ZeroOrOnePath?: {};
          }

          Same as nodeCallBacks but using an additional level of indirection to indicate the subType.

        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.

    Same as nodeCallBacks but using an additional level of indirection to indicate the subType.

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