Select Git revision
transformer.mjs
pathfinder.mjs 10.42 KiB
/**
* Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
* Node module: @schukai/monster
*
* This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
* The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
*
* For those who do not wish to adhere to the AGPLv3, a commercial license is available.
* Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
* For more information about purchasing a commercial license, please contact schukai GmbH.
*
* SPDX-License-Identifier: AGPL-3.0
*/
import { Base } from "../types/base.mjs";
import {
isArray,
isInteger,
isObject,
isPrimitive,
isString,
} from "../types/is.mjs";
import { Stack } from "../types/stack.mjs";
import {
validateInteger,
validateBoolean,
validateString,
} from "../types/validate.mjs";
export { Pathfinder, DELIMITER, WILDCARD };
/**
* path separator
*
* @private
* @type {string}
*/
const DELIMITER = ".";
/**
* @private
* @type {string}
*/
const WILDCARD = "*";
/**
* Pathfinder is a class to find a path to an object.
*
* With the help of the pathfinder, values can be read and written from an object construct.
*
* ```
* new Pathfinder({
* a: {
* b: {
* f: [
* {
* g: false,
* }
* ],
* }
* }
* }).getVia("a.b.f.0.g"); // ↦ false
* ```
*
* if a value is not present or has the wrong type, a corresponding exception is thrown.
*
* ```
* new Pathfinder({}).getVia("a.b.f.0.g"); // ↦ Error
* ```
*