✅ COMPLETED: 1. Dockerfile uses port 80 (astro preview) 2. BaseLayout imports globals.css 3. globals.css with Tailwind v4 @theme syntax 4. index.astro has Header, Footer, FixedContact 5. All image references fixed to existing files 6. Hero uses hdpe_pipe_main.jpg 7. Product cards use hdpe001.jpg 8. pt-20 on main for fixed header ✅ TESTED LOCALLY: - Build: 15 pages in 1.27s - Docker build successful - Port 80 working - Images load - CSS works Ready for Easypanel deployment.
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
export type RegexPlusAst = createAlternative & {
|
|
options: {
|
|
disable: {
|
|
[key: string]: boolean;
|
|
};
|
|
force: {
|
|
[key: string]: boolean;
|
|
};
|
|
};
|
|
_originMap: Map<createAlternative, createAlternative>;
|
|
_strategy: string | null;
|
|
};
|
|
/**
|
|
@import {CapturingGroupNode, OnigurumaAst, Node} from 'oniguruma-parser/parser';
|
|
@import {Visitor} from 'oniguruma-parser/traverser';
|
|
*/
|
|
/**
|
|
@typedef {
|
|
OnigurumaAst & {
|
|
options: {
|
|
disable: {[key: string]: boolean};
|
|
force: {[key: string]: boolean};
|
|
};
|
|
_originMap: Map<CapturingGroupNode, CapturingGroupNode>;
|
|
_strategy: string | null;
|
|
}
|
|
} RegexPlusAst
|
|
*/
|
|
/**
|
|
Transforms an Oniguruma AST in-place to a [Regex+](https://github.com/slevithan/regex) AST.
|
|
Assumes target ES2025, expecting the generator to down-convert to the desired JS target version.
|
|
|
|
Regex+'s syntax and behavior is a strict superset of native JavaScript, so the AST is very close
|
|
to representing native ES2025 `RegExp` but with some added features (atomic groups, possessive
|
|
quantifiers, recursion). The AST doesn't use some of Regex+'s extended features like flag x or
|
|
subroutines because they follow PCRE behavior and work somewhat differently than in Oniguruma. The
|
|
AST represents what's needed to precisely reproduce Oniguruma behavior using Regex+.
|
|
@param {OnigurumaAst} ast
|
|
@param {{
|
|
accuracy?: keyof Accuracy;
|
|
asciiWordBoundaries?: boolean;
|
|
avoidSubclass?: boolean;
|
|
bestEffortTarget?: keyof Target;
|
|
}} [options]
|
|
@returns {RegexPlusAst}
|
|
*/
|
|
export function transform(ast: createAlternative, options?: {
|
|
accuracy?: "default" | "strict";
|
|
asciiWordBoundaries?: boolean;
|
|
avoidSubclass?: boolean;
|
|
bestEffortTarget?: "auto" | "ES2025" | "ES2024" | "ES2018";
|
|
}): RegexPlusAst;
|