🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →

@microsoft/powerquery-parser

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@microsoft/powerquery-parser - npm Package Compare versions

Comparing version

to
0.6.2

@@ -6,3 +6,3 @@ export declare function all<T>(collection: ReadonlyArray<T>, predicateFn?: (value: T) => boolean): boolean;

export declare function assertNonZeroLength<T>(collection: ReadonlyArray<T>, maybeMessage?: string, maybeDetails?: object): void;
export declare function asyncMap<T, U>(collection: ReadonlyArray<T>, mapFn: (value: T) => Promise<U>): Promise<ReadonlyArray<U>>;
export declare function mapAsync<T, U>(collection: ReadonlyArray<T>, mapFn: (value: T) => Promise<U>): Promise<ReadonlyArray<U>>;
export declare function concatUnique<T>(left: ReadonlyArray<T>, right: ReadonlyArray<T>): ReadonlyArray<T>;

@@ -9,0 +9,0 @@ export declare function enumerate<T>(collection: ReadonlyArray<T>): ReadonlyArray<[number, T]>;

@@ -14,3 +14,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.split = exports.removeAtIndex = exports.replaceFirstInstance = exports.removeFirstInstance = exports.replaceAtIndex = exports.range = exports.isSubset = exports.indexOfPredicate = exports.includesUnique = exports.includesPredicate = exports.findReverse = exports.enumerate = exports.concatUnique = exports.asyncMap = exports.assertNonZeroLength = exports.assertIndexOfPredicate = exports.assertGet = exports.assertIn = exports.all = void 0;
exports.split = exports.removeAtIndex = exports.replaceFirstInstance = exports.removeFirstInstance = exports.replaceAtIndex = exports.range = exports.isSubset = exports.indexOfPredicate = exports.includesUnique = exports.includesPredicate = exports.findReverse = exports.enumerate = exports.concatUnique = exports.mapAsync = exports.assertNonZeroLength = exports.assertIndexOfPredicate = exports.assertGet = exports.assertIn = exports.all = void 0;
const _1 = require(".");

@@ -48,3 +48,3 @@ function all(collection, predicateFn = (value) => Boolean(value)) {

exports.assertNonZeroLength = assertNonZeroLength;
function asyncMap(collection, mapFn) {
function mapAsync(collection, mapFn) {
return __awaiter(this, void 0, void 0, function* () {

@@ -55,3 +55,3 @@ const tasks = collection.map(mapFn);

}
exports.asyncMap = asyncMap;
exports.mapAsync = mapAsync;
function concatUnique(left, right) {

@@ -58,0 +58,0 @@ const partial = [...left];

@@ -8,2 +8,2 @@ import { CommonError } from "..";

export declare function ensureResult<T>(locale: string, callbackFn: () => T): Result<T, CommonError.CommonError>;
export declare function ensureAsyncResult<T>(locale: string, callbackFn: () => Promise<T>): Promise<Result<T, CommonError.CommonError>>;
export declare function ensureResultAsync<T>(locale: string, callbackFn: () => Promise<T>): Promise<Result<T, CommonError.CommonError>>;

@@ -14,3 +14,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.ensureAsyncResult = exports.ensureResult = exports.isError = exports.isOk = exports.boxError = exports.boxOk = void 0;
exports.ensureResultAsync = exports.ensureResult = exports.isError = exports.isOk = exports.boxError = exports.boxOk = void 0;
const __1 = require("..");

@@ -49,3 +49,3 @@ function boxOk(value) {

exports.ensureResult = ensureResult;
function ensureAsyncResult(locale, callbackFn) {
function ensureResultAsync(locale, callbackFn) {
return __awaiter(this, void 0, void 0, function* () {

@@ -61,3 +61,3 @@ try {

}
exports.ensureAsyncResult = ensureAsyncResult;
exports.ensureResultAsync = ensureResultAsync;
//# sourceMappingURL=resultUtils.js.map
import { CommonError, Result } from ".";
import { NodeIdMap, TXorNode } from "../parser";
import { Ast } from "../language";
import { Settings } from "..";
export declare type TriedTraverse<ResultType> = Result<ResultType, CommonError.CommonError>;
export declare type TVisitNodeFn<State extends ITraversalState<ResultType>, ResultType, Node, Return> = (state: State, node: Node) => Return;
export declare type TVisitChildNodeFn<State extends ITraversalState<ResultType>, ResultType, Node, Return> = (state: State, parent: Node, node: Node) => Return;
export declare type TVisitNodeFn<State extends ITraversalState<ResultType>, ResultType, Node, Return> = (state: State, node: Node) => Promise<Return>;
export declare type TEarlyExitFn<State extends ITraversalState<ResultType>, ResultType, Node> = TVisitNodeFn<State, ResultType, Node, boolean>;
export declare type TExpandNodesFn<State extends ITraversalState<ResultType>, ResultType, Node, NodesById> = (state: State, node: Node, collection: NodesById) => ReadonlyArray<Node>;
export declare type TExpandNodesFn<State extends ITraversalState<ResultType>, ResultType, Node, NodesById> = (state: State, node: Node, collection: NodesById) => Promise<ReadonlyArray<Node>>;
export declare const enum VisitNodeStrategy {

@@ -13,11 +13,10 @@ BreadthFirst = "BreadthFirst",

}
export interface ITraversalState<T> {
readonly locale: string;
export interface ITraversalState<T> extends Pick<Settings, "locale" | "maybeCancellationToken" | "traceManager"> {
result: T;
}
export declare function tryTraverseAst<State extends ITraversalState<ResultType>, ResultType>(state: State, nodeIdMapCollection: NodeIdMap.Collection, root: Ast.TNode, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn<State, ResultType, Ast.TNode, void>, expandNodesFn: TExpandNodesFn<State, ResultType, Ast.TNode, NodeIdMap.Collection>, maybeEarlyExitFn: TEarlyExitFn<State, ResultType, Ast.TNode> | undefined): TriedTraverse<ResultType>;
export declare function tryTraverseXor<State extends ITraversalState<ResultType>, ResultType>(state: State, nodeIdMapCollection: NodeIdMap.Collection, root: TXorNode, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn<State, ResultType, TXorNode, void>, expandNodesFn: TExpandNodesFn<State, ResultType, TXorNode, NodeIdMap.Collection>, maybeEarlyExitFn: TEarlyExitFn<State, ResultType, TXorNode> | undefined): TriedTraverse<ResultType>;
export declare function tryTraverse<State extends ITraversalState<ResultType>, ResultType, Node, NodesById>(state: State, nodesById: NodesById, root: Node, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn<State, ResultType, Node, void>, expandNodesFn: TExpandNodesFn<State, ResultType, Node, NodesById>, maybeEarlyExitFn: TEarlyExitFn<State, ResultType, Node> | undefined): TriedTraverse<ResultType>;
export declare function assertGetAllAstChildren<State extends ITraversalState<ResultType>, ResultType>(_state: State, astNode: Ast.TNode, nodeIdMapCollection: NodeIdMap.Collection): ReadonlyArray<Ast.TNode>;
export declare function assertGetAllXorChildren<State extends ITraversalState<ResultType>, ResultType>(_state: State, xorNode: TXorNode, nodeIdMapCollection: NodeIdMap.Collection): ReadonlyArray<TXorNode>;
export declare function maybeExpandXorParent<T>(_state: T, xorNode: TXorNode, nodeIdMapCollection: NodeIdMap.Collection): ReadonlyArray<TXorNode>;
export declare function tryTraverseAst<State extends ITraversalState<ResultType>, ResultType>(state: State, nodeIdMapCollection: NodeIdMap.Collection, root: Ast.TNode, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn<State, ResultType, Ast.TNode, void>, expandNodesFn: TExpandNodesFn<State, ResultType, Ast.TNode, NodeIdMap.Collection>, maybeEarlyExitFn: TEarlyExitFn<State, ResultType, Ast.TNode> | undefined): Promise<TriedTraverse<ResultType>>;
export declare function tryTraverseXor<State extends ITraversalState<ResultType>, ResultType>(state: State, nodeIdMapCollection: NodeIdMap.Collection, root: TXorNode, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn<State, ResultType, TXorNode, void>, expandNodesFn: TExpandNodesFn<State, ResultType, TXorNode, NodeIdMap.Collection>, maybeEarlyExitFn: TEarlyExitFn<State, ResultType, TXorNode> | undefined): Promise<TriedTraverse<ResultType>>;
export declare function tryTraverse<State extends ITraversalState<ResultType>, ResultType, Node, NodesById>(state: State, nodesById: NodesById, root: Node, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn<State, ResultType, Node, void>, expandNodesFn: TExpandNodesFn<State, ResultType, Node, NodesById>, maybeEarlyExitFn: TEarlyExitFn<State, ResultType, Node> | undefined): Promise<TriedTraverse<ResultType>>;
export declare function assertGetAllAstChildren<State extends ITraversalState<ResultType>, ResultType>(_state: State, astNode: Ast.TNode, nodeIdMapCollection: NodeIdMap.Collection): Promise<ReadonlyArray<Ast.TNode>>;
export declare function assertGetAllXorChildren<State extends ITraversalState<ResultType>, ResultType>(_state: State, xorNode: TXorNode, nodeIdMapCollection: NodeIdMap.Collection): Promise<ReadonlyArray<TXorNode>>;
export declare function maybeExpandXorParent<T>(_state: T, xorNode: TXorNode, nodeIdMapCollection: NodeIdMap.Collection): Promise<ReadonlyArray<TXorNode>>;
"use strict";
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -20,42 +29,49 @@ exports.maybeExpandXorParent = exports.assertGetAllXorChildren = exports.assertGetAllAstChildren = exports.tryTraverse = exports.tryTraverseXor = exports.tryTraverseAst = void 0;

function tryTraverse(state, nodesById, root, strategy, visitNodeFn, expandNodesFn, maybeEarlyExitFn) {
return result_1.ResultUtils.ensureResult(state.locale, () => {
traverseRecursion(state, nodesById, root, strategy, visitNodeFn, expandNodesFn, maybeEarlyExitFn);
return result_1.ResultUtils.ensureResultAsync(state.locale, () => __awaiter(this, void 0, void 0, function* () {
yield traverseRecursion(state, nodesById, root, strategy, visitNodeFn, expandNodesFn, maybeEarlyExitFn);
return state.result;
});
}));
}
exports.tryTraverse = tryTraverse;
// a TExpandNodesFn usable by tryTraverseAst which visits all nodes.
// eslint-disable-next-line require-await
function assertGetAllAstChildren(_state, astNode, nodeIdMapCollection) {
const maybeChildIds = nodeIdMapCollection.childIdsById.get(astNode.id);
if (maybeChildIds) {
const childIds = maybeChildIds;
return childIds.map((nodeId) => parser_1.NodeIdMapUtils.assertUnboxAst(nodeIdMapCollection.astNodeById, nodeId));
}
else {
return [];
}
return __awaiter(this, void 0, void 0, function* () {
const maybeChildIds = nodeIdMapCollection.childIdsById.get(astNode.id);
if (maybeChildIds) {
const childIds = maybeChildIds;
return childIds.map((nodeId) => parser_1.NodeIdMapUtils.assertUnboxAst(nodeIdMapCollection.astNodeById, nodeId));
}
else {
return [];
}
});
}
exports.assertGetAllAstChildren = assertGetAllAstChildren;
// a TExpandNodesFn usable by tryTraverseXor which visits all nodes.
// eslint-disable-next-line require-await
function assertGetAllXorChildren(_state, xorNode, nodeIdMapCollection) {
switch (xorNode.kind) {
case "Ast" /* Ast */: {
const astNode = xorNode.node;
return assertGetAllAstChildren(_state, astNode, nodeIdMapCollection).map(parser_1.XorNodeUtils.boxAst);
}
case "Context" /* Context */: {
const result = [];
const contextNode = xorNode.node;
const maybeChildIds = nodeIdMapCollection.childIdsById.get(contextNode.id);
if (maybeChildIds !== undefined) {
const childIds = maybeChildIds;
for (const childId of childIds) {
result.push(parser_1.NodeIdMapUtils.assertGetXor(nodeIdMapCollection, childId));
return __awaiter(this, void 0, void 0, function* () {
switch (xorNode.kind) {
case "Ast" /* Ast */: {
const astNode = xorNode.node;
const children = yield assertGetAllAstChildren(_state, astNode, nodeIdMapCollection);
return _1.ArrayUtils.mapAsync(children, (value) => Promise.resolve(parser_1.XorNodeUtils.boxAst(value)));
}
case "Context" /* Context */: {
const result = [];
const contextNode = xorNode.node;
const maybeChildIds = nodeIdMapCollection.childIdsById.get(contextNode.id);
if (maybeChildIds !== undefined) {
const childIds = maybeChildIds;
for (const childId of childIds) {
result.push(parser_1.NodeIdMapUtils.assertGetXor(nodeIdMapCollection, childId));
}
}
return result;
}
return result;
default:
throw _1.Assert.isNever(xorNode);
}
default:
throw _1.Assert.isNever(xorNode);
}
});
}

@@ -66,19 +82,26 @@ exports.assertGetAllXorChildren = assertGetAllXorChildren;

const maybeParent = parser_1.NodeIdMapUtils.maybeParentXor(nodeIdMapCollection, xorNode.node.id);
return maybeParent !== undefined ? [maybeParent] : [];
return Promise.resolve(maybeParent !== undefined ? [maybeParent] : []);
}
exports.maybeExpandXorParent = maybeExpandXorParent;
function traverseRecursion(state, nodesById, node, strategy, visitNodeFn, expandNodesFn, maybeEarlyExitFn) {
if (maybeEarlyExitFn && maybeEarlyExitFn(state, node)) {
return;
}
else if (strategy === "BreadthFirst" /* BreadthFirst */) {
visitNodeFn(state, node);
}
for (const child of expandNodesFn(state, node, nodesById)) {
traverseRecursion(state, nodesById, child, strategy, visitNodeFn, expandNodesFn, maybeEarlyExitFn);
}
if (strategy === "DepthFirst" /* DepthFirst */) {
visitNodeFn(state, node);
}
var _a;
return __awaiter(this, void 0, void 0, function* () {
const trace = state.traceManager.entry("Traversal", traverseRecursion.name);
(_a = state.maybeCancellationToken) === null || _a === void 0 ? void 0 : _a.throwIfCancelled();
if (maybeEarlyExitFn && (yield maybeEarlyExitFn(state, node))) {
return;
}
else if (strategy === "BreadthFirst" /* BreadthFirst */) {
yield visitNodeFn(state, node);
}
for (const child of yield expandNodesFn(state, node, nodesById)) {
// eslint-disable-next-line no-await-in-loop
yield traverseRecursion(state, nodesById, child, strategy, visitNodeFn, expandNodesFn, maybeEarlyExitFn);
}
if (strategy === "DepthFirst" /* DepthFirst */) {
yield visitNodeFn(state, node);
}
trace.exit();
});
}
//# sourceMappingURL=traversal.js.map
{
"name": "@microsoft/powerquery-parser",
"version": "0.6.1",
"version": "0.6.2",
"description": "A parser for the Power Query/M formula language.",

@@ -5,0 +5,0 @@ "author": "Microsoft",

Sorry, the diff of this file is not supported yet