UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

89 lines • 2.87 kB
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= import { NodeType as NT } from "../../shell/types.js"; // Sentinels delimiting an inert atom in a brace-expansion template: an // already-expanded chunk that never contributes brace metacharacters, // matching bash's ordering where brace expansion runs before parameter // and command substitution. Shell input cannot contain NUL, so the // sentinels cannot collide with template text. export const INERT_OPEN = '\u0000'; export const INERT_CLOSE = '\u0001'; // GNU sequence-expression grammar for `{x..y[..step]}`: numeric // endpoints (optionally signed), or single alphabetic characters. export const NUM_SEQ = /^([+-]?[0-9]+)\.\.([+-]?[0-9]+)(?:\.\.([+-]?[0-9]+))?$/; export const CHAR_SEQ = /^([A-Za-z])\.\.([A-Za-z])(?:\.\.([+-]?[0-9]+))?$/; // Node types that may carry a brace-expandable word. export const BRACE_WORD_TYPES = new Set([ NT.CONCATENATION, NT.BRACE_EXPRESSION, ]); // Children of a brace word whose raw text joins the template as // literal, brace-eligible text; everything else expands first and // joins as an inert atom. export const BRACE_LITERAL_TYPES = new Set([ NT.WORD, NT.NUMBER, NT.BRACE_EXPRESSION, ]); // Arithmetic operator tokens from the parser that pass through as-is // when the expression text is reconstructed for the shared evaluator // (shell/arith.ts). export const ARITH_OPERATORS = new Set([ '+', '-', '*', '/', '%', '**', '==', '!=', '<', '>', '<=', '>=', '<<', '>>', '&', '|', '^', '~', '&&', '||', '!', '?', ':', '(', ')', ',', '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '&=', '^=', '|=', '++', '--', ]); // Arithmetic delimiter tokens that mark the start/end of $((...)), $[...], and // the (( ... )) arithmetic command. export const ARITH_DELIMITERS = new Set(['$((', '((', '))', '$[', ']']); // What a backslash escapes in the word of a `${v:-word}` inside double // quotes: the double-quote set plus the closing brace. export const OPERAND_DQUOTE_ESCAPES = new Set(['$', '`', '"', '\\', '}']); //# sourceMappingURL=constants.js.map