@@ -33,3 +33,3 @@ import type { parseNonNegativeInteger, Scanner } from "@ark/util"; | ||
| export type quantify<pattern extends string, min extends number, max extends number | null> = tryFastPath<pattern, min, max>; | ||
| type tryFastPath<pattern extends string, min extends number, max extends number | null> = max extends 0 ? "" : string extends pattern ? string : `${bigint}` extends pattern ? `${bigint}` : min extends 0 ? max extends 1 ? "" | pattern : max extends number ? loopFromZero<pattern, max, "", []> : // max is null, all we can do is append ${string} | ||
| type tryFastPath<pattern extends string, min extends number, max extends number | null> = max extends 0 ? "" : string extends pattern ? string : min extends 0 ? max extends 1 ? "" | pattern : max extends number ? loopFromZero<pattern, max, "", []> : // max is null, all we can do is append ${string} | ||
| "" | `${pattern}${string}` : loopUntilMin<pattern, min, max, "", []>; | ||
@@ -36,0 +36,0 @@ type loopFromZero<base extends string, max extends number, acc extends string, repetitions extends 1[]> = repetitions["length"] extends max ? acc : loopFromZero<base, max, acc | `${acc}${base}`, [...repetitions, 1]>; |
+5
-4
@@ -19,8 +19,9 @@ import type { ErrorMessage, inferred } from "@ark/util"; | ||
| inferNamedCaptures: ctx["names"] extends NamedCaptures ? ctx["names"] : {}; | ||
| inferExecArray: RegexExecArray<[ | ||
| pattern, | ||
| ...this["inferCaptures"] | ||
| ], this["inferNamedCaptures"], this["flags"]>; | ||
| flags: ctx["flags"] extends Flags ? ctx["flags"] : ""; | ||
| test(s: string): s is pattern; | ||
| exec(s: string): RegexExecArray<[ | ||
| pattern, | ||
| ...this["inferCaptures"] | ||
| ], this["inferNamedCaptures"], this["flags"]> | null; | ||
| exec(s: string): this["inferExecArray"] | null; | ||
| exec(s: string): never; | ||
@@ -27,0 +28,0 @@ } |
+2
-2
@@ -355,6 +355,6 @@ import type { contains, ErrorMessage, noSuggest, NumberLiteral, setIndex, unionKeyOf, writeUnclosedGroupMessage, writeUnmatchedGroupCloseMessage, ZeroWidthSpace } from "@ark/util"; | ||
| type anchorsAway<pattern extends string> = pattern extends `${StartAnchorMarker}${infer startStripped}` ? startStripped extends `${infer bothStripped}${EndAnchorMarker}` ? bothStripped : startStripped : pattern extends `${infer endStripped}${EndAnchorMarker}` ? endStripped : pattern; | ||
| type appendNonRedundant<base extends string, suffix extends string> = string extends base ? string extends suffix ? string : `${base}${suffix}` : `${bigint}` extends base ? `${bigint}` extends suffix ? `${bigint}` : `${base}${suffix}` : `${base}${suffix}`; | ||
| type prependNonRedundant<base extends string, prefix extends string> = string extends base ? string extends prefix ? string : `${prefix}${base}` : `${bigint}` extends base ? `${bigint}` extends prefix ? `${bigint}` : `${prefix}${base}` : `${prefix}${base}`; | ||
| type appendNonRedundant<base extends string, suffix extends string> = string extends base ? string extends suffix ? string : `${base}${suffix}` : `${base}${suffix}`; | ||
| type prependNonRedundant<base extends string, prefix extends string> = string extends base ? string extends prefix ? string : `${prefix}${base}` : `${prefix}${base}`; | ||
| export declare const writeMidAnchorError: <anchor extends Anchor>(anchor: anchor) => writeMidAnchorError<anchor>; | ||
| type writeMidAnchorError<anchor extends Anchor> = `Anchor ${anchor} may not appear mid-pattern`; | ||
| export {}; |
+2
-2
| { | ||
| "name": "@ark/regex", | ||
| "description": "A drop-in replacement for new RegExp() with types", | ||
| "version": "0.0.3", | ||
| "version": "0.0.4", | ||
| "license": "MIT", | ||
@@ -32,3 +32,3 @@ "author": { | ||
| "dependencies": { | ||
| "@ark/util": "0.55.0" | ||
| "@ark/util": "0.56.0" | ||
| }, | ||
@@ -35,0 +35,0 @@ "publishConfig": { |
48182
-0.38%+ Added
- Removed
Updated