@struktoai/mirage-core
Version:
A Unified Virtual Filesystem For AI Agents
89 lines • 2.87 kB
JavaScript
// ========= 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